Recommit r371023 "[lib/ObjectYAML] - Stop calling error(1) when mapping the st_other...
[llvm-complete.git] / test / tools / yaml2obj / program-header.yaml
blob4072e274b26fbb3079a14a51c734309b590ffc97
1 # RUN: yaml2obj --docnum=1 %s -o %t
2 # RUN: llvm-readobj -l %t | FileCheck %s
4 --- !ELF
5 FileHeader:
6   Class:           ELFCLASS64
7   Data:            ELFDATA2LSB
8   Type:            ET_EXEC
9   Machine:         EM_X86_64
10 Sections:
11   - Name:            .text
12     Type:            SHT_PROGBITS
13     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
14     AddressAlign:    0x0000000000001000
15     Content:         "00000000"
16   - Name:            .init
17     Type:            SHT_PROGBITS
18     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
19     Content:         "00000000"
20     AddressAlign:    0x0000000000000010
21   - Name:            .data
22     Type:            SHT_PROGBITS
23     Flags:           [ SHF_ALLOC ]
24     Content:         "00000000"
25     AddressAlign:    0x0000000000001000
26 ProgramHeaders:
27   - Type: PT_LOAD
28     Flags: [ PF_X, PF_R ]
29     VAddr: 0xAAAA1000
30     PAddr: 0xFFFF1000
31     Sections:
32       - Section: .text
33       - Section: .init
34   - Type: PT_LOAD
35     Flags: [ PF_R ]
36     VAddr: 0xAAAA2000
37     PAddr: 0xFFFF2000
38     Sections:
39       - Section: .data
40   - Type: PT_GNU_EH_FRAME
41   - Type: PT_GNU_STACK
42   - Type: PT_GNU_RELRO
44 #CHECK:     ProgramHeaders [
45 #CHECK-NEXT:   ProgramHeader {
46 #CHECK-NEXT:    Type: PT_LOAD
47 #CHECK-NEXT:    Offset: 0x1000
48 #CHECK-NEXT:    VirtualAddress: 0xAAAA1000
49 #CHECK-NEXT:    PhysicalAddress: 0xFFFF1000
50 #CHECK-NEXT:    FileSize: 20
51 #CHECK-NEXT:    MemSize: 20
52 #CHECK-NEXT:    Flags [
53 #CHECK-NEXT:      PF_R
54 #CHECK-NEXT:      PF_X
55 #CHECK-NEXT:    ]
56 #CHECK-NEXT:    Alignment: 4096
57 #CHECK-NEXT:  }
58 #CHECK-NEXT:  ProgramHeader {
59 #CHECK-NEXT:    Type: PT_LOAD
60 #CHECK-NEXT:    Offset: 0x2000
61 #CHECK-NEXT:    VirtualAddress: 0xAAAA2000
62 #CHECK-NEXT:    PhysicalAddress: 0xFFFF2000
63 #CHECK-NEXT:    FileSize: 4
64 #CHECK-NEXT:    MemSize: 4
65 #CHECK-NEXT:    Flags [
66 #CHECK-NEXT:      PF_R
67 #CHECK-NEXT:    ]
68 #CHECK-NEXT:    Alignment: 4096
69 #CHECK-NEXT:  }
70 #CHECK-NEXT:  ProgramHeader {
71 #CHECK-NEXT:    Type: PT_GNU_EH_FRAME (0x6474E550)
72 #CHECK:       }
73 #CHECK-NEXT:  ProgramHeader {
74 #CHECK-NEXT:    Type: PT_GNU_STACK (0x6474E551)
75 #CHECK:       }
76 #CHECK-NEXT:  ProgramHeader {
77 #CHECK-NEXT:    Type: PT_GNU_RELRO (0x6474E552)
78 #CHECK:       }
79 #CHECK-NEXT:]
81 ## Check we do not allow referencing sections that do not exist.
82 # RUN: not yaml2obj --docnum=2 %s -o %t 2>&1 | FileCheck %s --check-prefix=ERR
83 # ERR: error: Unknown section referenced: '.foo' by program header.
85 --- !ELF
86 FileHeader:
87   Class:           ELFCLASS64
88   Data:            ELFDATA2LSB
89   Type:            ET_EXEC
90   Machine:         EM_X86_64
91 ProgramHeaders:
92   - Type: PT_LOAD
93     Sections:
94       - Section: .foo