1# RUN: yaml2obj %s --docnum=1 -o %t.arm
2# RUN: llvm-readobj -h %t.arm \
3# RUN:  | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.arm --check-prefix ARM
4
5#      ARM:File: [[FILE]]
6# ARM-NEXT:Format: COFF-ARM
7# ARM-NEXT:Arch: thumb
8# ARM-NEXT:AddressSize: 32bit
9# ARM-NEXT:ImageFileHeader {
10# ARM-NEXT:  Machine: IMAGE_FILE_MACHINE_ARMNT (0x1C4)
11# ARM-NEXT:  SectionCount: 0
12# ARM-NEXT:  TimeDateStamp: 1970-01-01 00:00:00 (0x0)
13# ARM-NEXT:  PointerToSymbolTable: 0x0
14# ARM-NEXT:  SymbolCount: 0
15# ARM-NEXT:  StringTableSize: 0
16# ARM-NEXT:  OptionalHeaderSize: 0
17# ARM-NEXT:  Characteristics [ (0x0)
18# ARM-NEXT:  ]
19# ARM-NEXT:}
20# ARM-NOT:{{.}}
21
22--- !COFF
23header:
24  Machine:         IMAGE_FILE_MACHINE_ARMNT
25  Characteristics: [  ]
26sections:
27symbols:
28
29# RUN: yaml2obj %s --docnum=2 -o %t.arm64
30# RUN: llvm-readobj -h %t.arm64 \
31# RUN:  | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.arm64 --check-prefix ARM64
32
33#      ARM64:File: [[FILE]]
34# ARM64-NEXT:Format: COFF-ARM64
35# ARM64-NEXT:Arch: aarch64
36# ARM64-NEXT:AddressSize: 64bit
37# ARM64-NEXT:ImageFileHeader {
38# ARM64-NEXT:  Machine: IMAGE_FILE_MACHINE_ARM64 (0xAA64)
39# ARM64-NEXT:  SectionCount: 0
40# ARM64-NEXT:  TimeDateStamp: 1970-01-01 00:00:00 (0x0)
41# ARM64-NEXT:  PointerToSymbolTable: 0x0
42# ARM64-NEXT:  SymbolCount: 0
43# ARM64-NEXT:  StringTableSize: 0
44# ARM64-NEXT:  OptionalHeaderSize: 0
45# ARM64-NEXT:  Characteristics [ (0x0)
46# ARM64-NEXT:  ]
47# ARM64-NEXT:}
48# ARM64-NOT:{{.}}
49
50--- !COFF
51header:
52  Machine:         IMAGE_FILE_MACHINE_ARM64
53  Characteristics: [  ]
54sections:
55symbols:
56
57# RUN: yaml2obj %s --docnum=3 -o %t.i386
58# RUN: llvm-readobj -h %t.i386 \
59# RUN:  | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.i386 --check-prefix I386
60
61#      I386:File: [[FILE]]
62# I386-NEXT:Format: COFF-i386
63# I386-NEXT:Arch: i386
64# I386-NEXT:AddressSize: 32bit
65# I386-NEXT:ImageFileHeader {
66# I386-NEXT:  Machine: IMAGE_FILE_MACHINE_I386 (0x14C)
67# I386-NEXT:  SectionCount: 0
68# I386-NEXT:  TimeDateStamp: 1970-01-01 00:00:00 (0x0)
69# I386-NEXT:  PointerToSymbolTable: 0x0
70# I386-NEXT:  SymbolCount: 0
71# I386-NEXT:  StringTableSize: 0
72# I386-NEXT:  OptionalHeaderSize: 0
73# I386-NEXT:  Characteristics [ (0x0)
74# I386-NEXT:  ]
75# I386-NEXT:}
76# I386-NOT:{{.}}
77
78--- !COFF
79header:
80  Machine:         IMAGE_FILE_MACHINE_I386
81  Characteristics: [  ]
82sections:
83symbols:
84
85# RUN: yaml2obj %s --docnum=4 -o %t.x86-64
86# RUN: llvm-readobj -h %t.x86-64 \
87# RUN:  | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.x86-64 --check-prefix X86-64
88
89#      X86-64:File: [[FILE]]
90# X86-64-NEXT:Format: COFF-x86-64
91# X86-64-NEXT:Arch: x86_64
92# X86-64-NEXT:AddressSize: 64bit
93# X86-64-NEXT:ImageFileHeader {
94# X86-64-NEXT:  Machine: IMAGE_FILE_MACHINE_AMD64 (0x8664)
95# X86-64-NEXT:  SectionCount: 0
96# X86-64-NEXT:  TimeDateStamp: 1970-01-01 00:00:00 (0x0)
97# X86-64-NEXT:  PointerToSymbolTable: 0x0
98# X86-64-NEXT:  SymbolCount: 0
99# X86-64-NEXT:  StringTableSize: 0
100# X86-64-NEXT:  OptionalHeaderSize: 0
101# X86-64-NEXT:  Characteristics [ (0x0)
102# X86-64-NEXT:  ]
103# X86-64-NEXT:}
104# X86-64-NOT:{{.}}
105
106--- !COFF
107header:
108  Machine:         IMAGE_FILE_MACHINE_AMD64
109  Characteristics: [  ]
110sections:
111symbols:
112
113# RUN: yaml2obj %s --docnum=5 -o %t.i386
114# RUN: llvm-readobj -h %t.i386 \
115# RUN:  | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.i386 --check-prefix I386-CUSTOM-HEADER
116
117#      I386-CUSTOM-HEADER:File: [[FILE]]
118# I386-CUSTOM-HEADER-NEXT:Format: COFF-i386
119# I386-CUSTOM-HEADER-NEXT:Arch: i386
120# I386-CUSTOM-HEADER-NEXT:AddressSize: 32bit
121# I386-CUSTOM-HEADER-NEXT:ImageFileHeader {
122# I386-CUSTOM-HEADER-NEXT:  Machine: IMAGE_FILE_MACHINE_I386 (0x14C)
123# I386-CUSTOM-HEADER-NEXT:  SectionCount: 0
124# I386-CUSTOM-HEADER-NEXT:  TimeDateStamp: 1970-01-01 00:00:00 (0x0)
125# I386-CUSTOM-HEADER-NEXT:  PointerToSymbolTable: 0x0
126# I386-CUSTOM-HEADER-NEXT:  SymbolCount: 0
127# I386-CUSTOM-HEADER-NEXT:  StringTableSize: 0
128# I386-CUSTOM-HEADER-NEXT:  OptionalHeaderSize: 224
129# I386-CUSTOM-HEADER-NEXT:  Characteristics [ (0x102)
130# I386-CUSTOM-HEADER-NEXT:    IMAGE_FILE_32BIT_MACHINE (0x100)
131# I386-CUSTOM-HEADER-NEXT:    IMAGE_FILE_EXECUTABLE_IMAGE (0x2)
132# I386-CUSTOM-HEADER-NEXT:  ]
133# I386-CUSTOM-HEADER-NEXT:}
134# I386-CUSTOM-HEADER-NEXT:ImageOptionalHeader {
135# I386-CUSTOM-HEADER-NEXT:  Magic: 0x10B
136# I386-CUSTOM-HEADER-NEXT:  MajorLinkerVersion: 0
137# I386-CUSTOM-HEADER-NEXT:  MinorLinkerVersion: 0
138# I386-CUSTOM-HEADER-NEXT:  SizeOfCode: 0
139# I386-CUSTOM-HEADER-NEXT:  SizeOfInitializedData: 0
140# I386-CUSTOM-HEADER-NEXT:  SizeOfUninitializedData: 0
141# I386-CUSTOM-HEADER-NEXT:  AddressOfEntryPoint: 0x1000
142# I386-CUSTOM-HEADER-NEXT:  BaseOfCode: 0x0
143# I386-CUSTOM-HEADER-NEXT:  BaseOfData: 0x0
144# I386-CUSTOM-HEADER-NEXT:  ImageBase: 0x400000
145# I386-CUSTOM-HEADER-NEXT:  SectionAlignment: 4096
146# I386-CUSTOM-HEADER-NEXT:  FileAlignment: 512
147# I386-CUSTOM-HEADER-NEXT:  MajorOperatingSystemVersion: 6
148# I386-CUSTOM-HEADER-NEXT:  MinorOperatingSystemVersion: 0
149# I386-CUSTOM-HEADER-NEXT:  MajorImageVersion: 0
150# I386-CUSTOM-HEADER-NEXT:  MinorImageVersion: 0
151# I386-CUSTOM-HEADER-NEXT:  MajorSubsystemVersion: 6
152# I386-CUSTOM-HEADER-NEXT:  MinorSubsystemVersion: 0
153# I386-CUSTOM-HEADER-NEXT:  SizeOfImage: 4096
154# I386-CUSTOM-HEADER-NEXT:  SizeOfHeaders: 512
155# I386-CUSTOM-HEADER-NEXT:  Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI (0x3)
156# I386-CUSTOM-HEADER-NEXT:  Characteristics [ (0x8140)
157# I386-CUSTOM-HEADER-NEXT:    IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE (0x40)
158# I386-CUSTOM-HEADER-NEXT:    IMAGE_DLL_CHARACTERISTICS_NX_COMPAT (0x100)
159# I386-CUSTOM-HEADER-NEXT:    IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE (0x8000)
160# I386-CUSTOM-HEADER-NEXT:  ]
161# I386-CUSTOM-HEADER-NEXT:  SizeOfStackReserve: 1048576
162# I386-CUSTOM-HEADER-NEXT:  SizeOfStackCommit: 4096
163# I386-CUSTOM-HEADER-NEXT:  SizeOfHeapReserve: 1048576
164# I386-CUSTOM-HEADER-NEXT:  SizeOfHeapCommit: 4096
165# I386-CUSTOM-HEADER-NEXT:  NumberOfRvaAndSize: 16
166# I386-CUSTOM-HEADER-NEXT:  DataDirectory {
167# I386-CUSTOM-HEADER-NEXT:    ExportTableRVA: 0x0
168# I386-CUSTOM-HEADER-NEXT:    ExportTableSize: 0x0
169# I386-CUSTOM-HEADER-NEXT:    ImportTableRVA: 0x0
170# I386-CUSTOM-HEADER-NEXT:    ImportTableSize: 0x0
171# I386-CUSTOM-HEADER-NEXT:    ResourceTableRVA: 0x0
172# I386-CUSTOM-HEADER-NEXT:    ResourceTableSize: 0x0
173# I386-CUSTOM-HEADER-NEXT:    ExceptionTableRVA: 0x0
174# I386-CUSTOM-HEADER-NEXT:    ExceptionTableSize: 0x0
175# I386-CUSTOM-HEADER-NEXT:    CertificateTableRVA: 0x0
176# I386-CUSTOM-HEADER-NEXT:    CertificateTableSize: 0x0
177# I386-CUSTOM-HEADER-NEXT:    BaseRelocationTableRVA: 0x0
178# I386-CUSTOM-HEADER-NEXT:    BaseRelocationTableSize: 0x0
179# I386-CUSTOM-HEADER-NEXT:    DebugRVA: 0x0
180# I386-CUSTOM-HEADER-NEXT:    DebugSize: 0x0
181# I386-CUSTOM-HEADER-NEXT:    ArchitectureRVA: 0x0
182# I386-CUSTOM-HEADER-NEXT:    ArchitectureSize: 0x0
183# I386-CUSTOM-HEADER-NEXT:    GlobalPtrRVA: 0x0
184# I386-CUSTOM-HEADER-NEXT:    GlobalPtrSize: 0x0
185# I386-CUSTOM-HEADER-NEXT:    TLSTableRVA: 0x0
186# I386-CUSTOM-HEADER-NEXT:    TLSTableSize: 0x0
187# I386-CUSTOM-HEADER-NEXT:    LoadConfigTableRVA: 0x0
188# I386-CUSTOM-HEADER-NEXT:    LoadConfigTableSize: 0x0
189# I386-CUSTOM-HEADER-NEXT:    BoundImportRVA: 0x0
190# I386-CUSTOM-HEADER-NEXT:    BoundImportSize: 0x0
191# I386-CUSTOM-HEADER-NEXT:    IATRVA: 0x0
192# I386-CUSTOM-HEADER-NEXT:    IATSize: 0x0
193# I386-CUSTOM-HEADER-NEXT:    DelayImportDescriptorRVA: 0x0
194# I386-CUSTOM-HEADER-NEXT:    DelayImportDescriptorSize: 0x0
195# I386-CUSTOM-HEADER-NEXT:    CLRRuntimeHeaderRVA: 0x0
196# I386-CUSTOM-HEADER-NEXT:    CLRRuntimeHeaderSize: 0x0
197# I386-CUSTOM-HEADER-NEXT:    ReservedRVA: 0x0
198# I386-CUSTOM-HEADER-NEXT:    ReservedSize: 0x0
199# I386-CUSTOM-HEADER-NEXT:  }
200# I386-CUSTOM-HEADER-NEXT:}
201# I386-CUSTOM-HEADER-NEXT:DOSHeader {
202# I386-CUSTOM-HEADER-NEXT:  Magic: MZ
203# I386-CUSTOM-HEADER-NEXT:  UsedBytesInTheLastPage: 0
204# I386-CUSTOM-HEADER-NEXT:  FileSizeInPages: 0
205# I386-CUSTOM-HEADER-NEXT:  NumberOfRelocationItems: 0
206# I386-CUSTOM-HEADER-NEXT:  HeaderSizeInParagraphs: 0
207# I386-CUSTOM-HEADER-NEXT:  MinimumExtraParagraphs: 0
208# I386-CUSTOM-HEADER-NEXT:  MaximumExtraParagraphs: 0
209# I386-CUSTOM-HEADER-NEXT:  InitialRelativeSS: 0
210# I386-CUSTOM-HEADER-NEXT:  InitialSP: 0
211# I386-CUSTOM-HEADER-NEXT:  Checksum: 0
212# I386-CUSTOM-HEADER-NEXT:  InitialIP: 0
213# I386-CUSTOM-HEADER-NEXT:  InitialRelativeCS: 0
214# I386-CUSTOM-HEADER-NEXT:  AddressOfRelocationTable: 64
215# I386-CUSTOM-HEADER-NEXT:  OverlayNumber: 0
216# I386-CUSTOM-HEADER-NEXT:  OEMid: 0
217# I386-CUSTOM-HEADER-NEXT:  OEMinfo: 0
218# I386-CUSTOM-HEADER-NEXT:  AddressOfNewExeHeader: 128
219# I386-CUSTOM-HEADER-NEXT:}
220# I386-CUSTOM-HEADER-NOT:{{.}}
221
222--- !COFF
223OptionalHeader:
224  AddressOfEntryPoint: 4096
225  ImageBase:       4194304
226  SectionAlignment: 4096
227  FileAlignment:   512
228  MajorOperatingSystemVersion: 6
229  MinorOperatingSystemVersion: 0
230  MajorImageVersion: 0
231  MinorImageVersion: 0
232  MajorSubsystemVersion: 6
233  MinorSubsystemVersion: 0
234  Subsystem:       IMAGE_SUBSYSTEM_WINDOWS_CUI
235  DLLCharacteristics: [ IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE, IMAGE_DLL_CHARACTERISTICS_NX_COMPAT, IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE ]
236  SizeOfStackReserve: 1048576
237  SizeOfStackCommit: 4096
238  SizeOfHeapReserve: 1048576
239  SizeOfHeapCommit: 4096
240  ExportTable:
241    RelativeVirtualAddress: 0
242    Size:            0
243  ImportTable:
244    RelativeVirtualAddress: 0
245    Size:            0
246  ResourceTable:
247    RelativeVirtualAddress: 0
248    Size:            0
249  ExceptionTable:
250    RelativeVirtualAddress: 0
251    Size:            0
252  CertificateTable:
253    RelativeVirtualAddress: 0
254    Size:            0
255  BaseRelocationTable:
256    RelativeVirtualAddress: 0
257    Size:            0
258  Debug:
259    RelativeVirtualAddress: 0
260    Size:            0
261  Architecture:
262    RelativeVirtualAddress: 0
263    Size:            0
264  GlobalPtr:
265    RelativeVirtualAddress: 0
266    Size:            0
267  TlsTable:
268    RelativeVirtualAddress: 0
269    Size:            0
270  LoadConfigTable:
271    RelativeVirtualAddress: 0
272    Size:            0
273  BoundImport:
274    RelativeVirtualAddress: 0
275    Size:            0
276  IAT:
277    RelativeVirtualAddress: 0
278    Size:            0
279  DelayImportDescriptor:
280    RelativeVirtualAddress: 0
281    Size:            0
282  ClrRuntimeHeader:
283    RelativeVirtualAddress: 0
284    Size:            0
285header:
286  Machine:         IMAGE_FILE_MACHINE_I386
287  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_32BIT_MACHINE ]
288sections:
289symbols:         []
290...
291
292# RUN: yaml2obj %s --docnum=6 -o %t.unknown
293# RUN: llvm-readobj -h %t.unknown \
294# RUN:  | FileCheck %s --strict-whitespace --match-full-lines --check-prefix UNKNOWN
295
296#      UNKNOWN:Format: COFF-<unknown arch>
297# UNKNOWN-NEXT:Arch: unknown
298# UNKNOWN-NEXT:AddressSize: 32bit
299# UNKNOWN-NEXT:ImageFileHeader {
300# UNKNOWN-NEXT:  Machine: IMAGE_FILE_MACHINE_UNKNOWN (0x0)
301# UNKNOWN-NEXT:  SectionCount: 0
302# UNKNOWN-NEXT:  TimeDateStamp: 1970-01-01 00:00:00 (0x0)
303# UNKNOWN-NEXT:  PointerToSymbolTable: 0x0
304# UNKNOWN-NEXT:  SymbolCount: 0
305# UNKNOWN-NEXT:  StringTableSize: 0
306# UNKNOWN-NEXT:  OptionalHeaderSize: 0
307# UNKNOWN-NEXT:  Characteristics [ (0x0)
308# UNKNOWN-NEXT:  ]
309# UNKNOWN-NEXT:}
310# UNKNOWN-NOT:{{.}}
311
312--- !COFF
313header:
314  Machine:         IMAGE_FILE_MACHINE_UNKNOWN
315  Characteristics: [  ]
316sections:
317symbols:
318
319# RUN: llvm-readobj -h %p/Inputs/magic.coff-importlib \
320# RUN:   | FileCheck %s --strict-whitespace --match-full-lines --check-prefix IMPORTLIB
321
322#      IMPORTLIB:Format: COFF-import-file
323# IMPORTLIB-NEXT:Type: code
324# IMPORTLIB-NEXT:Name type: noprefix
325# IMPORTLIB-NEXT:Symbol: __imp__func
326# IMPORTLIB-NEXT:Symbol: _func
327# IMPORTLIB-NOT:{{.}}
328