16e4dc6f2SAlexander Shaposhnikov# RUN: yaml2obj %s -o %t 26e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy -R .text2 %t %t2 3298ea3f5SJordan Rupprecht# RUN: llvm-readobj --file-headers --sections --program-headers %t2 | FileCheck %s 46e4dc6f2SAlexander Shaposhnikov 56e4dc6f2SAlexander Shaposhnikov!ELF 66e4dc6f2SAlexander ShaposhnikovFileHeader: 76e4dc6f2SAlexander Shaposhnikov Class: ELFCLASS64 86e4dc6f2SAlexander Shaposhnikov Data: ELFDATA2LSB 96e4dc6f2SAlexander Shaposhnikov Type: ET_EXEC 106e4dc6f2SAlexander Shaposhnikov Machine: EM_X86_64 116e4dc6f2SAlexander ShaposhnikovSections: 126e4dc6f2SAlexander Shaposhnikov - Name: .text 136e4dc6f2SAlexander Shaposhnikov Type: SHT_PROGBITS 146e4dc6f2SAlexander Shaposhnikov Flags: [ SHF_ALLOC, SHF_EXECINSTR ] 156e4dc6f2SAlexander Shaposhnikov Address: 0x1000 166e4dc6f2SAlexander Shaposhnikov AddressAlign: 0x1000 176e4dc6f2SAlexander Shaposhnikov Size: 0x1000 186e4dc6f2SAlexander Shaposhnikov - Name: .text2 196e4dc6f2SAlexander Shaposhnikov Type: SHT_PROGBITS 206e4dc6f2SAlexander Shaposhnikov Flags: [ SHF_ALLOC, SHF_EXECINSTR ] 216e4dc6f2SAlexander Shaposhnikov Address: 0x2000 226e4dc6f2SAlexander Shaposhnikov AddressAlign: 0x1000 236e4dc6f2SAlexander Shaposhnikov Size: 0x1000 246e4dc6f2SAlexander Shaposhnikov - Name: .text3 256e4dc6f2SAlexander Shaposhnikov Type: SHT_PROGBITS 266e4dc6f2SAlexander Shaposhnikov Flags: [ SHF_ALLOC, SHF_EXECINSTR ] 276e4dc6f2SAlexander Shaposhnikov Address: 0x3000 286e4dc6f2SAlexander Shaposhnikov AddressAlign: 0x1000 296e4dc6f2SAlexander Shaposhnikov Size: 0x1000 306e4dc6f2SAlexander ShaposhnikovProgramHeaders: 316e4dc6f2SAlexander Shaposhnikov - Type: PT_LOAD 326e4dc6f2SAlexander Shaposhnikov Flags: [ PF_R ] 336e4dc6f2SAlexander Shaposhnikov VAddr: 0x1000 34*a7a447beSGeorgii Rymar FirstSec: .text 35*a7a447beSGeorgii Rymar LastSec: .text 366e4dc6f2SAlexander Shaposhnikov - Type: PT_LOAD 376e4dc6f2SAlexander Shaposhnikov Flags: [ PF_X, PF_R ] 386e4dc6f2SAlexander Shaposhnikov VAddr: 0x3000 39*a7a447beSGeorgii Rymar FirstSec: .text3 40*a7a447beSGeorgii Rymar LastSec: .text3 412779987dSGeorge Rimar## TODO (grimar): without the following line (i.e. without an empty symbol table), 422779987dSGeorge Rimar## llvm-objcopy adds an empty .strtab section. It doesn't look correct. 432779987dSGeorge RimarSymbols: [] 446e4dc6f2SAlexander Shaposhnikov 45c7e6d14cSEugene Leviant#CHECK: SectionHeaderCount: 4 466e4dc6f2SAlexander Shaposhnikov 476e4dc6f2SAlexander Shaposhnikov# CHECK: Sections [ 486e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section { 496e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Index: 0 506e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: (0) 516e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: SHT_NULL (0x0) 526e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Flags [ (0x0) 536e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ] 546e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Address: 0x0 556e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Offset: 0x0 566e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 0 576e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Link: 0 586e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Info: 0 596e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: AddressAlignment: 0 606e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: EntrySize: 0 616e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 626e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section { 636e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Index: 1 646e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: .text 656e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: SHT_PROGBITS (0x1) 666e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Flags [ (0x6) 676e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: SHF_ALLOC (0x2) 686e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: SHF_EXECINSTR (0x4) 696e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ] 706e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Address: 0x1000 716e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Offset: 0x1000 726e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 4096 736e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Link: 0 746e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Info: 0 756e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: AddressAlignment: 4096 766e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: EntrySize: 0 776e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 786e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section { 796e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Index: 2 806e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: .text3 816e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: SHT_PROGBITS (0x1) 826e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Flags [ (0x6) 836e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: SHF_ALLOC (0x2) 846e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: SHF_EXECINSTR (0x4) 856e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ] 866e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Address: 0x3000 876e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Offset: 0x2000 886e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 4096 896e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Link: 0 906e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Info: 0 916e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: AddressAlignment: 4096 926e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: EntrySize: 0 936e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 946e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section { 956e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Index: 3 966e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: .shstrtab 976e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: SHT_STRTAB (0x3) 986e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Flags [ (0x0) 996e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ] 1006e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Address: 0x0 1016e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Offset: 1026e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 1036e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Link: 0 1046e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Info: 0 1056e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: AddressAlignment: 1 1066e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: EntrySize: 0 1076e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 1086e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ] 1096e4dc6f2SAlexander Shaposhnikov 1106e4dc6f2SAlexander Shaposhnikov 1116e4dc6f2SAlexander Shaposhnikov# CHECK: ProgramHeaders [ 1126e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ProgramHeader { 1136e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: PT_LOAD (0x1) 1146e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Offset: 0x1000 1156e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: VirtualAddress: 0x1000 1166e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: PhysicalAddress: 0x1000 1176e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: FileSize: 4096 1186e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: MemSize: 4096 1196e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Flags [ (0x4) 1206e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: PF_R (0x4) 1216e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ] 1226e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Alignment: 4096 1236e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 1246e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ProgramHeader { 1256e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: PT_LOAD (0x1) 1266e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Offset: 0x2000 1276e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: VirtualAddress: 0x3000 1286e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: PhysicalAddress: 0x3000 1296e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: FileSize: 4096 1306e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: MemSize: 4096 1316e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Flags [ (0x5) 1326e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: PF_R (0x4) 1336e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: PF_X (0x1) 1346e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ] 1356e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Alignment: 4096 1366e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 1376e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:] 138