xref: /llvm-project/llvm/test/tools/llvm-objcopy/ELF/segment-shift-section-remove.test (revision a7a447be0fa934505f0c423fb97b91a68c1cc715)
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