130 lines · plain
1# This test is checking to ensure that if a section is removed in the presence2# of a segment that the segment maintains its shape and properties and that any3# section inside that segment maintains the relative positioning it had in the4# segment. Note worthy is that .text3 keeps its offset despite it being5# possible to place it after .text when .text2 is removed.6 7# RUN: yaml2obj %s -o %t8# RUN: llvm-objcopy -R .text2 %t %t29# RUN: llvm-readobj --file-headers --program-headers --sections %t2 | FileCheck %s10# RUN: od -t x1 -j 8192 -N 4 %t2 | FileCheck %s --check-prefix=DATA11 12!ELF13FileHeader:14 Class: ELFCLASS6415 Data: ELFDATA2LSB16 Type: ET_EXEC17 Machine: EM_X86_6418Sections:19 - Name: .text20 Type: SHT_PROGBITS21 Flags: [ SHF_ALLOC, SHF_EXECINSTR ]22 Address: 0x100023 AddressAlign: 0x100024 Size: 409625 - Name: .text226 Type: SHT_PROGBITS27 Flags: [ SHF_ALLOC, SHF_EXECINSTR ]28 Address: 0x200029 AddressAlign: 0x100030 Size: 409631 Content: "DEADBEEF"32 - Name: .text333 Type: SHT_PROGBITS34 Flags: [ SHF_ALLOC, SHF_EXECINSTR ]35 Address: 0x300036 AddressAlign: 0x100037 Size: 409638ProgramHeaders:39 - Type: PT_LOAD40 Flags: [ PF_X, PF_R ]41 FirstSec: .text42 LastSec: .text343## TODO (grimar): without the following line (i.e. without an empty symbol table),44## llvm-objcopy adds an empty .strtab section. It doesn't look correct.45Symbols: []46 47# Make sure that when we remove a section we overwrite it with zeros48# DATA: {{^[^[:blank:]]+}} 00 00 00 0049 50#CHECK: SectionHeaderCount: 451 52# CHECK: Sections [53# CHECK: Section {54# CHECK-NEXT: Index: 055# CHECK-NEXT: Name: (0)56# CHECK-NEXT: Type: SHT_NULL (0x0)57# CHECK-NEXT: Flags [ (0x0)58# CHECK-NEXT: ]59# CHECK-NEXT: Address: 0x060# CHECK-NEXT: Offset:61# CHECK-NEXT: Size:62# CHECK-NEXT: Link: 063# CHECK-NEXT: Info: 064# CHECK-NEXT: AddressAlignment: 065# CHECK-NEXT: EntrySize: 066# CHECK-NEXT: }67# CHECK-NEXT: Section {68# CHECK-NEXT: Index: 169# CHECK-NEXT: Name: .text70# CHECK-NEXT: Type: SHT_PROGBITS71# CHECK-NEXT: Flags [72# CHECK-NEXT: SHF_ALLOC73# CHECK-NEXT: SHF_EXECINSTR74# CHECK-NEXT: ]75# CHECK-NEXT: Address: 0x100076# CHECK-NEXT: Offset: 0x100077# CHECK-NEXT: Size:78# CHECK-NEXT: Link: 079# CHECK-NEXT: Info: 080# CHECK-NEXT: AddressAlignment: 409681# CHECK-NEXT: EntrySize: 082# CHECK-NEXT: }83# CHECK-NEXT: Section {84# CHECK-NEXT: Index: 285# CHECK-NEXT: Name: .text386# CHECK-NEXT: Type: SHT_PROGBITS (0x1)87# CHECK-NEXT: Flags [88# CHECK-NEXT: SHF_ALLOC89# CHECK-NEXT: SHF_EXECINSTR90# CHECK-NEXT: ]91# CHECK-NEXT: Address: 0x300092# CHECK-NEXT: Offset: 0x300093# CHECK-NEXT: Size:94# CHECK-NEXT: Link: 095# CHECK-NEXT: Info: 096# CHECK-NEXT: AddressAlignment: 409697# CHECK-NEXT: EntrySize: 098# CHECK-NEXT: }99# CHECK-NEXT: Section {100# CHECK-NEXT: Index: 3101# CHECK-NEXT: Name: .shstrtab102# CHECK-NEXT: Type: SHT_STRTAB (0x3)103# CHECK-NEXT: Flags [ (0x0)104# CHECK-NEXT: ]105# CHECK-NEXT: Address: 0x0106# CHECK-NEXT: Offset:107# CHECK-NEXT: Size:108# CHECK-NEXT: Link: 0109# CHECK-NEXT: Info: 0110# CHECK-NEXT: AddressAlignment: 1111# CHECK-NEXT: EntrySize: 0112# CHECK-NEXT: }113# CHECK-NEXT: ]114 115#CHECK: ProgramHeaders [116#CHECK-NEXT: ProgramHeader {117#CHECK-NEXT: Type: PT_LOAD (0x1)118#CHECK-NEXT: Offset: 0x1000119#CHECK-NEXT: VirtualAddress: 0x0120#CHECK-NEXT: PhysicalAddress: 0x0121#CHECK-NEXT: FileSize: 12288122#CHECK-NEXT: MemSize: 12288123#CHECK-NEXT: Flags [ (0x5)124#CHECK-NEXT: PF_R (0x4)125#CHECK-NEXT: PF_X (0x1)126#CHECK-NEXT: ]127#CHECK-NEXT: Alignment: 4096128#CHECK-NEXT: }129#CHECK-NEXT:]130