xref: /llvm-project/llvm/test/tools/llvm-objcopy/ELF/identical-segments.test (revision a7a447be0fa934505f0c423fb97b91a68c1cc715)
16e4dc6f2SAlexander Shaposhnikov# This test tests that if two possible parent segments have the same offset that
26e4dc6f2SAlexander Shaposhnikov# they're disambiguated based on their original index. This ensures that cycles
36e4dc6f2SAlexander Shaposhnikov# do not occur.
46e4dc6f2SAlexander Shaposhnikov
56e4dc6f2SAlexander Shaposhnikov# RUN: yaml2obj %s -o %t
66e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy %t %t2
76e4dc6f2SAlexander Shaposhnikov# RUN: llvm-readobj --program-headers %t2 | FileCheck %s
86e4dc6f2SAlexander Shaposhnikov
96e4dc6f2SAlexander Shaposhnikov!ELF
106e4dc6f2SAlexander ShaposhnikovFileHeader:
116e4dc6f2SAlexander Shaposhnikov  Class:           ELFCLASS64
126e4dc6f2SAlexander Shaposhnikov  Data:            ELFDATA2LSB
136e4dc6f2SAlexander Shaposhnikov  Type:            ET_EXEC
146e4dc6f2SAlexander Shaposhnikov  Machine:         EM_X86_64
156e4dc6f2SAlexander ShaposhnikovSections:
166e4dc6f2SAlexander Shaposhnikov  - Name:            .text
176e4dc6f2SAlexander Shaposhnikov    Type:            SHT_PROGBITS
186e4dc6f2SAlexander Shaposhnikov    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
196e4dc6f2SAlexander Shaposhnikov    AddressAlign:    0x1000
206e4dc6f2SAlexander Shaposhnikov    Size:            4096
216e4dc6f2SAlexander Shaposhnikov  - Name:            .text2
226e4dc6f2SAlexander Shaposhnikov    Type:            SHT_PROGBITS
236e4dc6f2SAlexander Shaposhnikov    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
246e4dc6f2SAlexander Shaposhnikov    AddressAlign:    0x1000
256e4dc6f2SAlexander Shaposhnikov    Size:            4096
266e4dc6f2SAlexander ShaposhnikovProgramHeaders:
276e4dc6f2SAlexander Shaposhnikov  - Type:     PT_LOAD
286e4dc6f2SAlexander Shaposhnikov    Flags:    [ PF_X, PF_R ]
29*a7a447beSGeorgii Rymar    FirstSec: .text2
30*a7a447beSGeorgii Rymar    LastSec:  .text2
316e4dc6f2SAlexander Shaposhnikov  - Type:     PT_LOAD
326e4dc6f2SAlexander Shaposhnikov    Flags:    [ PF_X, PF_R ]
33*a7a447beSGeorgii Rymar    FirstSec: .text
34*a7a447beSGeorgii Rymar    LastSec:  .text2
356e4dc6f2SAlexander Shaposhnikov  - Type:     PT_LOAD
366e4dc6f2SAlexander Shaposhnikov    Flags:    [ PF_X, PF_R ]
37*a7a447beSGeorgii Rymar    FirstSec: .text
38*a7a447beSGeorgii Rymar    LastSec:  .text2
396e4dc6f2SAlexander Shaposhnikov
406e4dc6f2SAlexander Shaposhnikov#CHECK:     ProgramHeaders [
416e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  ProgramHeader {
426e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Type: PT_LOAD (0x1)
436e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Offset: 0x2000
446e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    VirtualAddress: 0x0
456e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    PhysicalAddress: 0x0
466e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    FileSize: 4096
476e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    MemSize: 4096
486e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Flags [ (0x5)
496e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:      PF_R (0x4)
506e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:      PF_X (0x1)
516e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    ]
526e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Alignment: 4096
536e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  }
546e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  ProgramHeader {
556e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Type: PT_LOAD (0x1)
566e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Offset: 0x1000
576e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    VirtualAddress: 0x0
586e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    PhysicalAddress: 0x0
596e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    FileSize: 8192
606e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    MemSize: 8192
616e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Flags [ (0x5)
626e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:      PF_R (0x4)
636e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:      PF_X (0x1)
646e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    ]
656e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Alignment: 4096
666e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  }
676e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  ProgramHeader {
686e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Type: PT_LOAD (0x1)
696e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Offset: 0x1000
706e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    VirtualAddress: 0x0
716e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    PhysicalAddress: 0x0
726e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    FileSize: 8192
736e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    MemSize: 8192
746e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Flags [ (0x5)
756e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:      PF_R (0x4)
766e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:      PF_X (0x1)
776e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    ]
786e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Alignment: 4096
796e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  }
806e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:]
81