diff options
author | James Henderson <jh7370@my.bristol.ac.uk> | 2019-04-02 14:11:13 +0000 |
---|---|---|
committer | James Henderson <jh7370@my.bristol.ac.uk> | 2019-04-02 14:11:13 +0000 |
commit | 38cb238f752cefe5fde8bf6cb73dacc3fec8f89d (patch) | |
tree | 44472d3158aeffed95ebcef7854b3c1ef93960ed /llvm/test/tools/llvm-objcopy/ELF | |
parent | 68ad5c34e076475cf5691ead29c1ae6515272b75 (diff) | |
download | bcm5719-llvm-38cb238f752cefe5fde8bf6cb73dacc3fec8f89d.tar.gz bcm5719-llvm-38cb238f752cefe5fde8bf6cb73dacc3fec8f89d.zip |
[llvm-objcopy]Allow llvm-objcopy to be used on an ELF file with no section headers
This patch fixes https://bugs.llvm.org/show_bug.cgi?id=41293 and
https://bugs.llvm.org/show_bug.cgi?id=41045. llvm-objcopy assumed that
it could always read a section header string table. This isn't the case
when the sections were previously all stripped, and the e_shstrndx field
was set to 0. This patch fixes this. It also fixes a double space in an
error message relating to this issue, and prevents llvm-objcopy from
adding extra space for non-existent section headers, meaning that
--strip-sections on the output of a previous --strip-sections run
produces identical output, simplifying the test.
Reviewed by: rupprecht, grimar
Differential Revision: https://reviews.llvm.org/D59989
llvm-svn: 357475
Diffstat (limited to 'llvm/test/tools/llvm-objcopy/ELF')
-rw-r--r-- | llvm/test/tools/llvm-objcopy/ELF/copy-after-strip-sections.test | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objcopy/ELF/copy-after-strip-sections.test b/llvm/test/tools/llvm-objcopy/ELF/copy-after-strip-sections.test new file mode 100644 index 00000000000..3b61649b263 --- /dev/null +++ b/llvm/test/tools/llvm-objcopy/ELF/copy-after-strip-sections.test @@ -0,0 +1,26 @@ +# llvm-objcopy's --strip-sections removes the section headers. It should be +# possible to run the tool on the output after this operation. Performing any +# subsequent stripping operation, or copying the object, should produce +# identical output. + +# RUN: yaml2obj %s -o %t.in +# RUN: llvm-objcopy %t.in %t.stripped --strip-sections +# RUN: llvm-objcopy %t.stripped %t.stripped2 --strip-sections +# RUN: llvm-objcopy %t.stripped2 %t.out +# RUN: cmp %t.stripped %t.stripped2 +# RUN: cmp %t.stripped %t.out + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_EXEC + Machine: EM_X86_64 +Sections: + - Name: .text + Type: SHT_PROGBITS + Content: 'facefeed' +ProgramHeaders: + - Type: PT_LOAD + Sections: + - Section: .text |