• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
11FileHeader:
12  Class:           ELFCLASS64
13  Data:            ELFDATA2LSB
14  Type:            ET_EXEC
15  Machine:         EM_X86_64
16Sections:
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
42ProgramHeaders:
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