1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00
llvm-mirror/test/tools/llvm-objcopy/two-seg-remove-first.test
Jake Ehrlich 20e541caa9 [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
2017-11-15 19:13:31 +00:00

62 lines
1.6 KiB
Plaintext

# RUN: yaml2obj %s -o %t
# RUN: llvm-objcopy -R .text -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
- Name: .text4
Type: SHT_PROGBITS
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
Address: 0x4000
AddressAlign: 0x1000
Content: "FFFFFFFF"
Size: 0x1000
ProgramHeaders:
- Type: PT_LOAD
Flags: [ PF_R ]
VAddr: 0x1000
PAddr: 0x1000
Sections:
- Section: .text
- Section: .text2
- Type: PT_LOAD
Flags: [ PF_R ]
VAddr: 0x1000
PAddr: 0x1000
Sections:
- Section: .text3
- Section: .text4
# CHECK: 000000 de ad be ef
# CHECK: 001000 32 32 32 32
# CHECK: 002000 ff ff ff ff
# SIZE: 12288