Home | History | Annotate | Download | only in llvm-objcopy
      1 # This test tests how ParentSegment is set for Segments. In particular this test
      2 # tests that if a chain of parents forms, the offsets are chosen for parents
      3 # first despite the order of the list. It also tests multiple branches of the
      4 # code that assigns parents.
      5 
      6 # RUN: yaml2obj %s -o %t
      7 # RUN: llvm-objcopy %t %t2
      8 # RUN: llvm-readobj -program-headers %t2 | FileCheck %s
      9 
     10 !ELF
     11 FileHeader:
     12   Class:           ELFCLASS64
     13   Data:            ELFDATA2LSB
     14   Type:            ET_EXEC
     15   Machine:         EM_X86_64
     16 Sections:
     17   - Name:            .text
     18     Type:            SHT_PROGBITS
     19     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
     20     AddressAlign:    0x1000
     21     Size:            4096
     22   - Name:            .text2
     23     Type:            SHT_PROGBITS
     24     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
     25     AddressAlign:    0x1000
     26     Size:            4096
     27   - Name:            .text3
     28     Type:            SHT_PROGBITS
     29     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
     30     AddressAlign:    0x1000
     31     Size:            4096
     32   - Name:            .text4
     33     Type:            SHT_PROGBITS
     34     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
     35     AddressAlign:    0x1000
     36     Size:            4096
     37   - Name:            .text5
     38     Type:            SHT_PROGBITS
     39     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
     40     AddressAlign:    0x1000
     41     Size:            4096
     42 ProgramHeaders:
     43   - Type: PT_LOAD
     44     Flags: [ PF_X, PF_R ]
     45     Sections:
     46       - Section: .text
     47       - Section: .text2
     48   - Type: PT_LOAD
     49     Flags: [ PF_X, PF_R ]
     50     Sections:
     51       - Section: .text4
     52       - Section: .text5
     53   - Type: PT_LOAD
     54     Flags: [ PF_X, PF_R ]
     55     Sections:
     56       - Section: .text3
     57       - Section: .text4
     58   - Type: PT_LOAD
     59     Flags: [ PF_X, PF_R ]
     60     Sections:
     61       - Section: .text2
     62       - Section: .text3
     63 
     64 #CHECK:     ProgramHeaders [
     65 #CHECK-NEXT:  ProgramHeader {
     66 #CHECK-NEXT:    Type: PT_LOAD (0x1)
     67 #CHECK-NEXT:    Offset: 0x1000
     68 #CHECK-NEXT:    VirtualAddress: 0x0
     69 #CHECK-NEXT:    PhysicalAddress: 0x0
     70 #CHECK-NEXT:    FileSize: 8192
     71 #CHECK-NEXT:    MemSize: 8192
     72 #CHECK-NEXT:    Flags [ (0x5)
     73 #CHECK-NEXT:      PF_R (0x4)
     74 #CHECK-NEXT:      PF_X (0x1)
     75 #CHECK-NEXT:    ]
     76 #CHECK-NEXT:    Alignment: 4096
     77 #CHECK-NEXT:  }
     78 #CHECK-NEXT:  ProgramHeader {
     79 #CHECK-NEXT:    Type: PT_LOAD (0x1)
     80 #CHECK-NEXT:    Offset: 0x4000
     81 #CHECK-NEXT:    VirtualAddress: 0x0
     82 #CHECK-NEXT:    PhysicalAddress: 0x0
     83 #CHECK-NEXT:    FileSize: 8192
     84 #CHECK-NEXT:    MemSize: 8192
     85 #CHECK-NEXT:    Flags [ (0x5)
     86 #CHECK-NEXT:      PF_R (0x4)
     87 #CHECK-NEXT:      PF_X (0x1)
     88 #CHECK-NEXT:    ]
     89 #CHECK-NEXT:    Alignment: 4096
     90 #CHECK-NEXT:  }
     91 #CHECK-NEXT:  ProgramHeader {
     92 #CHECK-NEXT:    Type: PT_LOAD (0x1)
     93 #CHECK-NEXT:    Offset: 0x3000
     94 #CHECK-NEXT:    VirtualAddress: 0x0
     95 #CHECK-NEXT:    PhysicalAddress: 0x0
     96 #CHECK-NEXT:    FileSize: 8192
     97 #CHECK-NEXT:    MemSize: 8192
     98 #CHECK-NEXT:    Flags [ (0x5)
     99 #CHECK-NEXT:      PF_R (0x4)
    100 #CHECK-NEXT:      PF_X (0x1)
    101 #CHECK-NEXT:    ]
    102 #CHECK-NEXT:    Alignment: 4096
    103 #CHECK-NEXT:  }
    104 #CHECK-NEXT:  ProgramHeader {
    105 #CHECK-NEXT:    Type: PT_LOAD (0x1)
    106 #CHECK-NEXT:    Offset: 0x2000
    107 #CHECK-NEXT:    VirtualAddress: 0x0
    108 #CHECK-NEXT:    PhysicalAddress: 0x0
    109 #CHECK-NEXT:    FileSize: 8192
    110 #CHECK-NEXT:    MemSize: 8192
    111 #CHECK-NEXT:    Flags [ (0x5)
    112 #CHECK-NEXT:      PF_R (0x4)
    113 #CHECK-NEXT:      PF_X (0x1)
    114 #CHECK-NEXT:    ]
    115 #CHECK-NEXT:    Alignment: 4096
    116 #CHECK-NEXT:  }
    117 #CHECK-NEXT:]
    118