1# RUN: yaml2obj --docnum=1 %s -o %t
2# RUN: llvm-ifs --input-format=ELF --output-format=IFS --output=- %t | FileCheck %s -DTARGET="{ ObjectFormat: ELF, Arch: x86_64, Endianness: little, BitWidth: 64 }"
3# RUN: llvm-ifs --input-format=ELF --output-format=IFS --output=- --hint-ifs-target="x86_64-linux-gnu" %t | FileCheck %s -DTARGET="x86_64-linux-gnu"
4
5--- !ELF
6FileHeader:
7  Class:           ELFCLASS64
8  Data:            ELFDATA2LSB
9  Type:            ET_DYN
10  Machine:         EM_X86_64
11Sections:
12  - Name:            .dynstr
13    Type:            SHT_STRTAB
14    Flags:           [ SHF_ALLOC ]
15    Address:         0x0000
16    Content:         "00"
17  - Name:            .dynamic
18    Type:            SHT_DYNAMIC
19    Flags:           [ SHF_ALLOC ]
20    Address:         0x0000000000000008
21    Link:            .dynstr
22    AddressAlign:    0x0000000000000008
23    EntSize:         0x0000000000000010
24    Entries:
25      - Tag:             DT_STRSZ
26        Value:           0x0000000000000001
27      - Tag:             DT_STRTAB
28        Value:           0x0000000000000000
29      - Tag:             DT_SYMTAB
30        Value:           0x0000000000000000
31      - Tag:             DT_NULL
32        Value:           0x0000000000000000
33ProgramHeaders:
34  - Type:     PT_LOAD
35    Flags:    [ PF_R ]
36    VAddr:    0x0000
37    Align:    8
38    FirstSec: .dynstr
39    LastSec:  .dynamic
40  - Type:     PT_DYNAMIC
41    Flags:    [ PF_X, PF_R ]
42    VAddr:    0x0008
43    FirstSec: .dynamic
44    LastSec:  .dynamic
45
46# CHECK:      --- !ifs-v1
47# CHECK-NEXT: IfsVersion: {{[1-9]\d*\.(0|([1-9]\d*))}}
48# CHECK-NEXT: Target: [[TARGET]]
49# CHECK-NEXT: Symbols: []
50# CHECK-NEXT: ...
51
52# HINTERR: error: Triple hint does not match the actual [[MSG]]
53
54# RUN: yaml2obj --docnum=1 %s -o %t
55# RUN: not llvm-ifs --input-format=ELF --output-format=IFS --output=%t.tbe --hint-ifs-target="aarch64-linux-gnu" %t 2>&1 | FileCheck %s -DMSG=architecture --check-prefix=HINTERR
56
57--- !ELF
58FileHeader:
59  Class:           ELFCLASS64
60  Data:            ELFDATA2MSB
61  Type:            ET_DYN
62  Machine:         EM_X86_64
63Sections:
64  - Name:            .dynstr
65    Type:            SHT_STRTAB
66    Flags:           [ SHF_ALLOC ]
67    Address:         0x0000
68    Content:         "00"
69  - Name:            .dynamic
70    Type:            SHT_DYNAMIC
71    Flags:           [ SHF_ALLOC ]
72    Address:         0x0000000000000008
73    Link:            .dynstr
74    AddressAlign:    0x0000000000000008
75    EntSize:         0x0000000000000010
76    Entries:
77      - Tag:             DT_STRSZ
78        Value:           0x0000000000000001
79      - Tag:             DT_STRTAB
80        Value:           0x0000000000000000
81      - Tag:             DT_SYMTAB
82        Value:           0x0000000000000000
83      - Tag:             DT_NULL
84        Value:           0x0000000000000000
85ProgramHeaders:
86  - Type:     PT_LOAD
87    Flags:    [ PF_R ]
88    VAddr:    0x0000
89    Align:    8
90    FirstSec: .dynstr
91    LastSec:  .dynamic
92  - Type:     PT_DYNAMIC
93    Flags:    [ PF_X, PF_R ]
94    VAddr:    0x0008
95    FirstSec: .dynamic
96    LastSec:  .dynamic
97
98# RUN: yaml2obj --docnum=2 %s -o %t
99# RUN: not llvm-ifs --input-format=ELF --output-format=IFS --output=%t.tbe --hint-ifs-target="x86_64-unknown-linux-gnu" %t 2>&1 | FileCheck %s -DMSG="endianness" --check-prefix=HINTERR
100
101--- !ELF
102FileHeader:
103  Class:           ELFCLASS32
104  Data:            ELFDATA2LSB
105  Type:            ET_DYN
106  Machine:         EM_X86_64
107Sections:
108  - Name:            .dynstr
109    Type:            SHT_STRTAB
110    Flags:           [ SHF_ALLOC ]
111    Address:         0x0000
112    Content:         "00"
113  - Name:            .dynamic
114    Type:            SHT_DYNAMIC
115    Flags:           [ SHF_ALLOC ]
116    Address:         0x0000000000000008
117    Link:            .dynstr
118    AddressAlign:    0x0000000000000008
119    EntSize:         0x0000000000000010
120    Entries:
121      - Tag:             DT_STRSZ
122        Value:           0x0000000000000001
123      - Tag:             DT_STRTAB
124        Value:           0x0000000000000000
125      - Tag:             DT_SYMTAB
126        Value:           0x0000000000000000
127      - Tag:             DT_NULL
128        Value:           0x0000000000000000
129ProgramHeaders:
130  - Type:     PT_LOAD
131    Flags:    [ PF_R ]
132    VAddr:    0x0000
133    Align:    8
134    FirstSec: .dynstr
135    LastSec:  .dynamic
136  - Type:     PT_DYNAMIC
137    Flags:    [ PF_X, PF_R ]
138    VAddr:    0x0008
139    FirstSec: .dynamic
140    LastSec:  .dynamic
141
142# RUN: yaml2obj --docnum=3 %s -o %t
143# RUN: not llvm-ifs --input-format=ELF --output-format=IFS --output=%t.tbe --hint-ifs-target="x86_64-unknown-linux-gnu" %t 2>&1 | FileCheck %s -DMSG="bit width" --check-prefix=HINTERR
144