[lib/ObjectYAML] - Improve and cleanup error reporting in ELFState<ELFT> class.
[llvm-complete.git] / test / tools / yaml2obj / program-header.yaml
blobaaada115a2cdfaa43b6e0ecbf6d99afc5458cad2
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
84 # ERR: error: unknown section referenced: '.foo' by program header
85 # ERR: error: unknown section referenced: '.bar' by program header
87 --- !ELF
88 FileHeader:
89   Class:   ELFCLASS64
90   Data:    ELFDATA2LSB
91   Type:    ET_EXEC
92   Machine: EM_X86_64
93 ProgramHeaders:
94   - Type: PT_LOAD
95     Sections:
96       - Section: .foo
97       - Section: .bar