Skip to content

Commit

Permalink
[llvm-objcopy][ELF] Allow --dump-section to dump an empty non-SHT_NOB…
Browse files Browse the repository at this point in the history
…ITS section

This is the ELF part of D75949.

GNU objcopy from binutils 2.35 onwards will support an empty non-SHT_NOBITS section as
well
https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=e052e2ba295a65b6ea80cbc3f90495beca299c42

Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D79339
  • Loading branch information
MaskRay committed May 5, 2020
1 parent a11e90a commit 32b1933
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 1 deletion.
7 changes: 7 additions & 0 deletions llvm/test/tools/llvm-objcopy/ELF/dump-section.test
Expand Up @@ -4,9 +4,11 @@
# RUN: llvm-objcopy --dump-section .text=%t4 %t %t5
# RUN: llvm-objcopy --dump-section .foo=%t6 %t %t7
# RUN: not llvm-objcopy --dump-section .bar=%t8 %t %t9 2>&1 | FileCheck %s --check-prefix=NOBITS -DINPUT=%t
# RUN: llvm-objcopy --dump-section .empty=%t.empty %t /dev/null
# RUN: od -t x1 %t2 | FileCheck %s --ignore-case
# RUN: od -t x1 %t6 | FileCheck %s --ignore-case --check-prefix=NON-ALLOC
# RUN: wc -c %t2 | FileCheck %s --check-prefix=SIZE
# RUN: wc -c %t.empty | FileCheck %s --check-prefix=EMPTY
# RUN: diff %t2 %t3
# RUN: diff %t4 %t3

Expand All @@ -26,6 +28,9 @@ Sections:
Type: SHT_PROGBITS
Flags: [ SHF_WRITE ]
Content: "CAFE"
- Name: .empty
Type: SHT_PROGBITS
Flags: [ SHF_ALLOC ]
- Name: .bar
Type: SHT_NOBITS
Flags: [ SHF_WRITE ]
Expand All @@ -42,3 +47,5 @@ ProgramHeaders:
# SIZE: 4

# NOBITS: error: '[[INPUT]]': cannot dump section '.bar': it has no contents

# EMPTY: 0
2 changes: 1 addition & 1 deletion llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp
Expand Up @@ -288,7 +288,7 @@ static Error dumpSectionToFile(StringRef SecName, StringRef Filename,
Object &Obj) {
for (auto &Sec : Obj.sections()) {
if (Sec.Name == SecName) {
if (Sec.OriginalData.empty())
if (Sec.Type == SHT_NOBITS)
return createStringError(object_error::parse_failed,
"cannot dump section '%s': it has no contents",
SecName.str().c_str());
Expand Down

0 comments on commit 32b1933

Please sign in to comment.