diff options
author | Jake Ehrlich <jakehehrlich@google.com> | 2017-11-15 19:13:31 +0000 |
---|---|---|
committer | Jake Ehrlich <jakehehrlich@google.com> | 2017-11-15 19:13:31 +0000 |
commit | d49c92b12433a641b089611fa3ca8f53005c97a0 (patch) | |
tree | 175d62e0f9c9528899e620669daccc36bbbda937 /llvm/test/tools/llvm-objcopy/binary-remove-middle.test | |
parent | 03d0cd6a81db286369eb55b31e9279dc9d3d7f56 (diff) | |
download | bcm5719-llvm-d49c92b12433a641b089611fa3ca8f53005c97a0.tar.gz bcm5719-llvm-d49c92b12433a641b089611fa3ca8f53005c97a0.zip |
[llvm-objcopy] Change -O binary to respect section removal and behave like GNU objcopy
The original -O binary implementation just copied segment data from the
object and dumped it into a file. This doesn't take into account any
operations performed on objects such as section removal. GNU objcopy has
some specific behavior that we'd also like to respect. For instance
using -O binary and -j <some_section> will dump <some_section> to a
file. This change implements GNU objcopy style -O binary to as close of
an approximation as I can determine.
Differential Revision: https://reviews.llvm.org/D39713
llvm-svn: 318324
Diffstat (limited to 'llvm/test/tools/llvm-objcopy/binary-remove-middle.test')
-rw-r--r-- | llvm/test/tools/llvm-objcopy/binary-remove-middle.test | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objcopy/binary-remove-middle.test b/llvm/test/tools/llvm-objcopy/binary-remove-middle.test new file mode 100644 index 00000000000..6d69907a4a7 --- /dev/null +++ b/llvm/test/tools/llvm-objcopy/binary-remove-middle.test @@ -0,0 +1,48 @@ +# RUN: yaml2obj %s -o %t +# RUN: llvm-objcopy -R .text2 -O binary %t %t2 +# RUN: od -Ax -v -t x1 %t2 | FileCheck %s +# RUN: wc -c %t2 | FileCheck %s -check-prefix=SIZE + +!ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_EXEC + Machine: EM_X86_64 +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + Address: 0x1000 + AddressAlign: 0x1000 + Content: "c3c3c3c3" + Size: 0x1000 + - Name: .text2 + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + Address: 0x2000 + AddressAlign: 0x1000 + Content: "DEADBEEF" + Size: 0x1000 + - Name: .text3 + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + Address: 0x3000 + AddressAlign: 0x1000 + Content: "32323232" + Size: 0x1000 +ProgramHeaders: + - Type: PT_LOAD + Flags: [ PF_R ] + VAddr: 0x1000 + PAddr: 0x1000 + Sections: + - Section: .text + - Section: .text2 + - Section: .text3 + +# CHECK: 000000 c3 c3 c3 c3 +# CHECK: 001000 00 00 00 00 +# CHECK: 002000 32 32 32 32 + +# SIZE: 12288 |