1# RUN: yaml2obj --docnum=1 %s -o %t1
2# RUN: llvm-objdump -p %t1 | FileCheck %s --strict-whitespace --match-full-lines --check-prefix=ELF64
3
4#      ELF64:Dynamic Section:
5# ELF64-NEXT:  NEEDED               D
6# ELF64-NEXT:  PLTRELSZ             0x0000000000000010
7# ELF64-NEXT:  PLTGOT               0x0000000000001000
8# ELF64-NEXT:  HASH                 0x0000000000001000
9# ELF64-NEXT:  STRTAB               0x0000000000001000
10# ELF64-NEXT:  SYMTAB               0x0000000000001000
11# ELF64-NEXT:  RELA                 0x0000000000001000
12# ELF64-NEXT:  RELASZ               0x0000000000000010
13# ELF64-NEXT:  RELAENT              0x0000000000000789
14# ELF64-NEXT:  STRSZ                0x0000000000000010
15# ELF64-NEXT:  SYMENT               0x0000000000000987
16# ELF64-NEXT:  INIT                 0x0000000000001000
17# ELF64-NEXT:  FINI                 0x0000000000001000
18# ELF64-NEXT:  SONAME               U
19# ELF64-NEXT:  RPATH                f
20# ELF64-NEXT:  SYMBOLIC             0x1234567890abcdef
21# ELF64-NEXT:  REL                  0x0000000000001000
22# ELF64-NEXT:  RELSZ                0x0000000000000010
23# ELF64-NEXT:  RELENT               0x0000000000000123
24# ELF64-NEXT:  PLTREL               0x0000000000000007
25# ELF64-NEXT:  DEBUG                0xfedcba0987654321
26# ELF64-NEXT:  TEXTREL              0x1122334455667788
27# ELF64-NEXT:  JMPREL               0x0000000000001000
28# ELF64-NEXT:  BIND_NOW             0x8877665544332211
29# ELF64-NEXT:  INIT_ARRAY           0x0000000000001000
30# ELF64-NEXT:  FINI_ARRAY           0x0000000000001000
31# ELF64-NEXT:  INIT_ARRAYSZ         0x0000000000000010
32# ELF64-NEXT:  FINI_ARRAYSZ         0x0000000000000010
33# ELF64-NEXT:  RUNPATH              w
34# ELF64-NEXT:  FLAGS                0xaabbccddeeff9900
35# ELF64-NEXT:  PREINIT_ARRAY        0x0000000000001000
36# ELF64-NEXT:  PREINIT_ARRAYSZ      0x0000000000000010
37# ELF64-NEXT:  SYMTAB_SHNDX         0x0000000000001000
38# ELF64-NEXT:  RELRSZ               0x0000000000000010
39# ELF64-NEXT:  RELR                 0x0000000000001000
40# ELF64-NEXT:  RELRENT              0x0000000000004321
41# ELF64-NEXT:  ANDROID_REL          0x0000000000001000
42# ELF64-NEXT:  ANDROID_RELSZ        0x0000000000000010
43# ELF64-NEXT:  ANDROID_RELA         0x0000000000001000
44# ELF64-NEXT:  ANDROID_RELASZ       0x0000000000000010
45# ELF64-NEXT:  ANDROID_RELR         0x0000000000001000
46# ELF64-NEXT:  ANDROID_RELRSZ       0x0000000000000010
47# ELF64-NEXT:  ANDROID_RELRENT      0x0000000000001234
48# ELF64-NEXT:  GNU_HASH             0x0000000000001000
49# ELF64-NEXT:  TLSDESC_PLT          0x0000000000001000
50# ELF64-NEXT:  TLSDESC_GOT          0x0000000000001000
51# ELF64-NEXT:  RELACOUNT            0x0000000000000000
52# ELF64-NEXT:  RELCOUNT             0x0000000000000000
53# ELF64-NEXT:  FLAGS_1              0x0000000087654321
54# ELF64-NEXT:  VERSYM               0x0000000000001000
55# ELF64-NEXT:  VERDEF               0x0000000000001000
56# ELF64-NEXT:  VERDEFNUM            0x0000000000000000
57# ELF64-NEXT:  VERNEED              0x0000000000001000
58# ELF64-NEXT:  VERNEEDNUM           0x0000000000000000
59# ELF64-NEXT:  AUXILIARY            D
60# ELF64-NEXT:  FILTER               U
61# ELF64-NEXT:  <unknown:>0x12345678 0x8765432187654321
62# ELF64-NEXT:  <unknown:>0x6abcdef0 0x9988776655443322
63# ELF64-NEXT:  <unknown:>0x76543210 0x5555666677778888
64# ELF64-NOT:{{.}}
65
66--- !ELF
67FileHeader:
68  Class:   ELFCLASS64
69  Data:    ELFDATA2LSB
70  Type:    ET_EXEC
71  Machine: EM_X86_64
72Sections:
73  - Name:    .dynstr
74    Type:    SHT_STRTAB
75    Address: 0x1000
76    Size:    0x10
77    Content: "004400550066007700"
78  - Name:    .dynamic
79    Type:    SHT_DYNAMIC
80    Address: 0x1010
81    Link:    1
82    Entries:
83     - Tag:   DT_NEEDED
84       Value: 0x1
85     - Tag:   DT_PLTRELSZ
86       Value: 0x10
87     - Tag:   DT_PLTGOT
88       Value: 0x1000
89     - Tag:   DT_HASH
90       Value: 0x1000
91     - Tag:   DT_STRTAB
92       Value: 0x1000
93     - Tag:   DT_SYMTAB
94       Value: 0x1000
95     - Tag:   DT_RELA
96       Value: 0x1000
97     - Tag:   DT_RELASZ
98       Value: 0x10
99     - Tag:   DT_RELAENT
100       Value: 0x789
101     - Tag:   DT_STRSZ
102       Value: 0x10
103     - Tag:   DT_SYMENT
104       Value: 0x987
105     - Tag:   DT_INIT
106       Value: 0x1000
107     - Tag:   DT_FINI
108       Value: 0x1000
109     - Tag:   DT_SONAME
110       Value: 0x3
111     - Tag:   DT_RPATH
112       Value: 0x5
113     - Tag:   DT_SYMBOLIC
114       Value: 0x1234567890abcdef
115     - Tag:   DT_REL
116       Value: 0x1000
117     - Tag:   DT_RELSZ
118       Value: 0x10
119     - Tag:   DT_RELENT
120       Value: 0x123
121     - Tag:   DT_PLTREL
122       Value: 0x7
123     - Tag:   DT_DEBUG
124       Value: 0xfedcba0987654321
125     - Tag:   DT_TEXTREL
126       Value: 0x1122334455667788
127     - Tag:   DT_JMPREL
128       Value: 0x1000
129     - Tag:   DT_BIND_NOW
130       Value: 0x8877665544332211
131     - Tag:   DT_INIT_ARRAY
132       Value: 0x1000
133     - Tag:   DT_FINI_ARRAY
134       Value: 0x1000
135     - Tag:   DT_INIT_ARRAYSZ
136       Value: 0x10
137     - Tag:   DT_FINI_ARRAYSZ
138       Value: 0x10
139     - Tag:   DT_RUNPATH
140       Value: 0x7
141     - Tag:   DT_FLAGS
142       Value: 0xaabbccddeeff9900
143     - Tag:   DT_PREINIT_ARRAY
144       Value: 0x1000
145     - Tag:   DT_PREINIT_ARRAYSZ
146       Value: 0x10
147     - Tag:   DT_SYMTAB_SHNDX
148       Value: 0x1000
149     - Tag:   DT_RELRSZ
150       Value: 0x10
151     - Tag:   DT_RELR
152       Value: 0x1000
153     - Tag:   DT_RELRENT
154       Value: 0x4321
155     - Tag:   DT_ANDROID_REL
156       Value: 0x1000
157     - Tag:   DT_ANDROID_RELSZ
158       Value: 0x10
159     - Tag:   DT_ANDROID_RELA
160       Value: 0x1000
161     - Tag:   DT_ANDROID_RELASZ
162       Value: 0x10
163     - Tag:   DT_ANDROID_RELR
164       Value: 0x1000
165     - Tag:   DT_ANDROID_RELRSZ
166       Value: 0x10
167     - Tag:   DT_ANDROID_RELRENT
168       Value: 0x1234
169     - Tag:   DT_GNU_HASH
170       Value: 0x1000
171     - Tag:   DT_TLSDESC_PLT
172       Value: 0x1000
173     - Tag:   DT_TLSDESC_GOT
174       Value: 0x1000
175     - Tag:   DT_RELACOUNT
176       Value: 0x0
177     - Tag:   DT_RELCOUNT
178       Value: 0x0
179     - Tag:   DT_FLAGS_1
180       Value: 0x87654321
181     - Tag:   DT_VERSYM
182       Value: 0x1000
183     - Tag:   DT_VERDEF
184       Value: 0x1000
185     - Tag:   DT_VERDEFNUM
186       Value: 0x0
187     - Tag:   DT_VERNEED
188       Value: 0x1000
189     - Tag:   DT_VERNEEDNUM
190       Value: 0x0
191     - Tag:   DT_AUXILIARY
192       Value: 0x1
193     - Tag:   DT_FILTER
194       Value: 0x3
195## Show behaviour for unknown values in special and unmarked ranges.
196## An arbitrary unknown value outside of the special ranges.
197     - Tag:   0x12345678
198       Value: 0x8765432187654321
199## An OS specific tag.
200     - Tag:   0x6abcdef0
201       Value: 0x9988776655443322
202## A processor specific tags.
203     - Tag:   0x76543210
204       Value: 0x5555666677778888
205     - Tag:   DT_NULL
206       Value: 0x0
207ProgramHeaders:
208  - Type: PT_LOAD
209    VAddr: 0x1000
210    Sections:
211      - Section: .dynstr
212      - Section: .dynamic
213  - Type: PT_DYNAMIC
214    VAddr: 0x1010
215    Sections:
216      - Section: .dynamic
217
218# RUN: yaml2obj --docnum=2 %s > %t2
219# RUN: llvm-objdump -p %t2 | FileCheck %s --strict-whitespace --match-full-lines --check-prefix=ELF32
220
221#      ELF32:Dynamic Section:
222# ELF32-NEXT:  NEEDED               D
223# ELF32-NEXT:  PLTRELSZ             0x00000010
224# ELF32-NEXT:  PLTGOT               0x00001000
225# ELF32-NEXT:  HASH                 0x00001000
226# ELF32-NEXT:  STRTAB               0x00001000
227# ELF32-NEXT:  SYMTAB               0x00001000
228# ELF32-NEXT:  RELA                 0x00001000
229# ELF32-NEXT:  RELASZ               0x00000010
230# ELF32-NEXT:  RELAENT              0x00000789
231# ELF32-NEXT:  STRSZ                0x00000010
232# ELF32-NEXT:  SYMENT               0x00000987
233# ELF32-NEXT:  INIT                 0x00001000
234# ELF32-NEXT:  FINI                 0x00001000
235# ELF32-NEXT:  SONAME               U
236# ELF32-NEXT:  RPATH                f
237# ELF32-NEXT:  SYMBOLIC             0x12345678
238# ELF32-NEXT:  REL                  0x00001000
239# ELF32-NEXT:  RELSZ                0x00000010
240# ELF32-NEXT:  RELENT               0x00000123
241# ELF32-NEXT:  PLTREL               0x00000007
242# ELF32-NEXT:  DEBUG                0xfedcba09
243# ELF32-NEXT:  TEXTREL              0x11223344
244# ELF32-NEXT:  JMPREL               0x00001000
245# ELF32-NEXT:  BIND_NOW             0x88776655
246# ELF32-NEXT:  INIT_ARRAY           0x00001000
247# ELF32-NEXT:  FINI_ARRAY           0x00001000
248# ELF32-NEXT:  INIT_ARRAYSZ         0x00000010
249# ELF32-NEXT:  FINI_ARRAYSZ         0x00000010
250# ELF32-NEXT:  RUNPATH              w
251# ELF32-NEXT:  FLAGS                0xaabbccdd
252# ELF32-NEXT:  PREINIT_ARRAY        0x00001000
253# ELF32-NEXT:  PREINIT_ARRAYSZ      0x00000010
254# ELF32-NEXT:  SYMTAB_SHNDX         0x00001000
255# ELF32-NEXT:  RELRSZ               0x00000010
256# ELF32-NEXT:  RELR                 0x00001000
257# ELF32-NEXT:  RELRENT              0x00004321
258# ELF32-NEXT:  ANDROID_REL          0x00001000
259# ELF32-NEXT:  ANDROID_RELSZ        0x00000010
260# ELF32-NEXT:  ANDROID_RELA         0x00001000
261# ELF32-NEXT:  ANDROID_RELASZ       0x00000010
262# ELF32-NEXT:  ANDROID_RELR         0x00001000
263# ELF32-NEXT:  ANDROID_RELRSZ       0x00000010
264# ELF32-NEXT:  ANDROID_RELRENT      0x00001234
265# ELF32-NEXT:  GNU_HASH             0x00001000
266# ELF32-NEXT:  TLSDESC_PLT          0x00001000
267# ELF32-NEXT:  TLSDESC_GOT          0x00001000
268# ELF32-NEXT:  RELACOUNT            0x00000000
269# ELF32-NEXT:  RELCOUNT             0x00000000
270# ELF32-NEXT:  FLAGS_1              0x87654321
271# ELF32-NEXT:  VERSYM               0x00001000
272# ELF32-NEXT:  VERDEF               0x00001000
273# ELF32-NEXT:  VERDEFNUM            0x00000000
274# ELF32-NEXT:  VERNEED              0x00001000
275# ELF32-NEXT:  VERNEEDNUM           0x00000000
276# ELF32-NEXT:  AUXILIARY            D
277# ELF32-NEXT:  FILTER               U
278# ELF32-NEXT:  <unknown:>0x12345678 0x87654321
279# ELF32-NEXT:  <unknown:>0x6abcdef0 0x99887766
280# ELF32-NEXT:  <unknown:>0x76543210 0x55556666
281
282--- !ELF
283FileHeader:
284  Class:   ELFCLASS32
285  Data:    ELFDATA2LSB
286  Type:    ET_EXEC
287  Machine: EM_386
288Sections:
289  - Name:    .dynstr
290    Type:    SHT_STRTAB
291    Address: 0x1000
292    Size:    0x10
293    Content: "004400550066007700"
294  - Name:    .dynamic
295    Type:    SHT_DYNAMIC
296    Address: 0x1010
297    Link:    1
298    Entries:
299     - Tag:   DT_NEEDED
300       Value: 0x1
301     - Tag:   DT_PLTRELSZ
302       Value: 0x10
303     - Tag:   DT_PLTGOT
304       Value: 0x1000
305     - Tag:   DT_HASH
306       Value: 0x1000
307     - Tag:   DT_STRTAB
308       Value: 0x1000
309     - Tag:   DT_SYMTAB
310       Value: 0x1000
311     - Tag:   DT_RELA
312       Value: 0x1000
313     - Tag:   DT_RELASZ
314       Value: 0x10
315     - Tag:   DT_RELAENT
316       Value: 0x789
317     - Tag:   DT_STRSZ
318       Value: 0x10
319     - Tag:   DT_SYMENT
320       Value: 0x987
321     - Tag:   DT_INIT
322       Value: 0x1000
323     - Tag:   DT_FINI
324       Value: 0x1000
325     - Tag:   DT_SONAME
326       Value: 0x3
327     - Tag:   DT_RPATH
328       Value: 0x5
329     - Tag:   DT_SYMBOLIC
330       Value: 0x12345678
331     - Tag:   DT_REL
332       Value: 0x1000
333     - Tag:   DT_RELSZ
334       Value: 0x10
335     - Tag:   DT_RELENT
336       Value: 0x123
337     - Tag:   DT_PLTREL
338       Value: 0x7
339     - Tag:   DT_DEBUG
340       Value: 0xfedcba09
341     - Tag:   DT_TEXTREL
342       Value: 0x11223344
343     - Tag:   DT_JMPREL
344       Value: 0x1000
345     - Tag:   DT_BIND_NOW
346       Value: 0x88776655
347     - Tag:   DT_INIT_ARRAY
348       Value: 0x1000
349     - Tag:   DT_FINI_ARRAY
350       Value: 0x1000
351     - Tag:   DT_INIT_ARRAYSZ
352       Value: 0x10
353     - Tag:   DT_FINI_ARRAYSZ
354       Value: 0x10
355     - Tag:   DT_RUNPATH
356       Value: 0x7
357     - Tag:   DT_FLAGS
358       Value: 0xaabbccdd
359     - Tag:   DT_PREINIT_ARRAY
360       Value: 0x1000
361     - Tag:   DT_PREINIT_ARRAYSZ
362       Value: 0x10
363     - Tag:   DT_SYMTAB_SHNDX
364       Value: 0x1000
365     - Tag:   DT_RELRSZ
366       Value: 0x10
367     - Tag:   DT_RELR
368       Value: 0x1000
369     - Tag:   DT_RELRENT
370       Value: 0x4321
371     - Tag:   DT_ANDROID_REL
372       Value: 0x1000
373     - Tag:   DT_ANDROID_RELSZ
374       Value: 0x10
375     - Tag:   DT_ANDROID_RELA
376       Value: 0x1000
377     - Tag:   DT_ANDROID_RELASZ
378       Value: 0x10
379     - Tag:   DT_ANDROID_RELR
380       Value: 0x1000
381     - Tag:   DT_ANDROID_RELRSZ
382       Value: 0x10
383     - Tag:   DT_ANDROID_RELRENT
384       Value: 0x1234
385     - Tag:   DT_GNU_HASH
386       Value: 0x1000
387     - Tag:   DT_TLSDESC_PLT
388       Value: 0x1000
389     - Tag:   DT_TLSDESC_GOT
390       Value: 0x1000
391     - Tag:   DT_RELACOUNT
392       Value: 0x0
393     - Tag:   DT_RELCOUNT
394       Value: 0x0
395     - Tag:   DT_FLAGS_1
396       Value: 0x87654321
397     - Tag:   DT_VERSYM
398       Value: 0x1000
399     - Tag:   DT_VERDEF
400       Value: 0x1000
401     - Tag:   DT_VERDEFNUM
402       Value: 0x0
403     - Tag:   DT_VERNEED
404       Value: 0x1000
405     - Tag:   DT_VERNEEDNUM
406       Value: 0x0
407     - Tag:   DT_AUXILIARY
408       Value: 0x1
409     - Tag:   DT_FILTER
410       Value: 0x3
411## Show behaviour for unknown values in special and unmarked ranges.
412## An arbitrary unknown value outside of the special ranges.
413     - Tag:   0x12345678
414       Value: 0x87654321
415## An OS specific tag.
416     - Tag:   0x6abcdef0
417       Value: 0x99887766
418## A processor specific tags.
419     - Tag:   0x76543210
420       Value: 0x55556666
421     - Tag:   DT_NULL
422       Value: 0x0
423ProgramHeaders:
424  - Type: PT_LOAD
425    VAddr: 0x1000
426    Sections:
427      - Section: .dynstr
428      - Section: .dynamic
429  - Type: PT_DYNAMIC
430    VAddr: 0x1010
431    Sections:
432      - Section: .dynamic
433