1# RUN: yaml2obj %p/Inputs/hello32.yaml -o %t.obj
2# RUN: lld-link -safeseh:no %t.obj %p/Inputs/std32.lib /subsystem:console \
3# RUN:   /entry:main@0 /out:%t.exe /appcontainer
4# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=HEADER %s
5# RUN: llvm-readobj --coff-imports %t.exe | FileCheck -check-prefix=IMPORTS %s
6# RUN: llvm-readobj --coff-basereloc %t.exe | FileCheck -check-prefix=BASEREL %s
7
8HEADER:      Format: COFF-i386
9HEADER-NEXT: Arch: i386
10HEADER-NEXT: AddressSize: 32bit
11HEADER-NEXT: ImageFileHeader {
12HEADER-NEXT:   Machine: IMAGE_FILE_MACHINE_I386 (0x14C)
13HEADER-NEXT:   SectionCount: 4
14HEADER-NEXT:   TimeDateStamp:
15HEADER-NEXT:   PointerToSymbolTable: 0x0
16HEADER-NEXT:   SymbolCount: 0
17HEADER-NEXT:   StringTableSize: 0
18HEADER-NEXT:   OptionalHeaderSize: 224
19HEADER-NEXT:   Characteristics [ (0x102)
20HEADER-NEXT:     IMAGE_FILE_32BIT_MACHINE (0x100)
21HEADER-NEXT:     IMAGE_FILE_EXECUTABLE_IMAGE (0x2)
22HEADER-NEXT:   ]
23HEADER-NEXT: }
24HEADER-NEXT: ImageOptionalHeader {
25HEADER-NEXT:   Magic: 0x10B
26HEADER-NEXT:   MajorLinkerVersion: 14
27HEADER-NEXT:   MinorLinkerVersion: 0
28HEADER-NEXT:   SizeOfCode: 512
29HEADER-NEXT:   SizeOfInitializedData: 1536
30HEADER-NEXT:   SizeOfUninitializedData: 0
31HEADER-NEXT:   AddressOfEntryPoint: 0x1000
32HEADER-NEXT:   BaseOfCode: 0x1000
33HEADER-NEXT:   BaseOfData: 0x0
34HEADER-NEXT:   ImageBase: 0x400000
35HEADER-NEXT:   SectionAlignment: 4096
36HEADER-NEXT:   FileAlignment: 512
37HEADER-NEXT:   MajorOperatingSystemVersion: 6
38HEADER-NEXT:   MinorOperatingSystemVersion: 0
39HEADER-NEXT:   MajorImageVersion: 0
40HEADER-NEXT:   MinorImageVersion: 0
41HEADER-NEXT:   MajorSubsystemVersion: 6
42HEADER-NEXT:   MinorSubsystemVersion: 0
43HEADER-NEXT:   SizeOfImage: 20480
44HEADER-NEXT:   SizeOfHeaders: 1024
45HEADER-NEXT:   Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI (0x3)
46HEADER-NEXT:   Characteristics [ (0x9140)
47HEADER-NEXT:     IMAGE_DLL_CHARACTERISTICS_APPCONTAINER (0x1000)
48HEADER-NEXT:     IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE (0x40)
49HEADER-NEXT:     IMAGE_DLL_CHARACTERISTICS_NX_COMPAT (0x100)
50HEADER-NEXT:     IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE (0x8000)
51HEADER-NEXT:   ]
52HEADER-NEXT:   SizeOfStackReserve: 1048576
53HEADER-NEXT:   SizeOfStackCommit: 4096
54HEADER-NEXT:   SizeOfHeapReserve: 1048576
55HEADER-NEXT:   SizeOfHeapCommit: 4096
56HEADER-NEXT:   NumberOfRvaAndSize: 16
57HEADER-NEXT:   DataDirectory {
58HEADER-NEXT:     ExportTableRVA: 0x0
59HEADER-NEXT:     ExportTableSize: 0x0
60HEADER-NEXT:     ImportTableRVA: 0x2000
61HEADER-NEXT:     ImportTableSize: 0x28
62HEADER-NEXT:     ResourceTableRVA: 0x0
63HEADER-NEXT:     ResourceTableSize: 0x0
64HEADER-NEXT:     ExceptionTableRVA: 0x0
65HEADER-NEXT:     ExceptionTableSize: 0x0
66HEADER-NEXT:     CertificateTableRVA: 0x0
67HEADER-NEXT:     CertificateTableSize: 0x0
68HEADER-NEXT:     BaseRelocationTableRVA: 0x4000
69HEADER-NEXT:     BaseRelocationTableSize: 0x10
70HEADER-NEXT:     DebugRVA: 0x0
71HEADER-NEXT:     DebugSize: 0x0
72HEADER-NEXT:     ArchitectureRVA: 0x0
73HEADER-NEXT:     ArchitectureSize: 0x0
74HEADER-NEXT:     GlobalPtrRVA: 0x0
75HEADER-NEXT:     GlobalPtrSize: 0x0
76HEADER-NEXT:     TLSTableRVA: 0x0
77HEADER-NEXT:     TLSTableSize: 0x0
78HEADER-NEXT:     LoadConfigTableRVA: 0x0
79HEADER-NEXT:     LoadConfigTableSize: 0x0
80HEADER-NEXT:     BoundImportRVA: 0x0
81HEADER-NEXT:     BoundImportSize: 0x0
82HEADER-NEXT:     IATRVA: 0x2034
83HEADER-NEXT:     IATSize: 0xC
84HEADER-NEXT:     DelayImportDescriptorRVA: 0x0
85HEADER-NEXT:     DelayImportDescriptorSize: 0x0
86HEADER-NEXT:     CLRRuntimeHeaderRVA: 0x0
87HEADER-NEXT:     CLRRuntimeHeaderSize: 0x0
88HEADER-NEXT:     ReservedRVA: 0x0
89HEADER-NEXT:     ReservedSize: 0x0
90HEADER-NEXT:   }
91HEADER-NEXT: }
92HEADER-NEXT: DOSHeader {
93HEADER-NEXT:   Magic: MZ
94HEADER-NEXT:   UsedBytesInTheLastPage: 120
95HEADER-NEXT:   FileSizeInPages: 1
96HEADER-NEXT:   NumberOfRelocationItems: 0
97HEADER-NEXT:   HeaderSizeInParagraphs: 4
98HEADER-NEXT:   MinimumExtraParagraphs: 0
99HEADER-NEXT:   MaximumExtraParagraphs: 0
100HEADER-NEXT:   InitialRelativeSS: 0
101HEADER-NEXT:   InitialSP: 0
102HEADER-NEXT:   Checksum: 0
103HEADER-NEXT:   InitialIP: 0
104HEADER-NEXT:   InitialRelativeCS: 0
105HEADER-NEXT:   AddressOfRelocationTable: 64
106HEADER-NEXT:   OverlayNumber: 0
107HEADER-NEXT:   OEMid: 0
108HEADER-NEXT:   OEMinfo: 0
109HEADER-NEXT:   AddressOfNewExeHeader: 120
110HEADER-NEXT: }
111
112IMPORTS: Format: COFF-i386
113IMPORTS: Arch: i386
114IMPORTS: AddressSize: 32bit
115IMPORTS: Import {
116IMPORTS:   Name: std32.dll
117IMPORTS:   ImportLookupTableRVA: 0x2028
118IMPORTS:   ImportAddressTableRVA: 0x2034
119IMPORTS:   Symbol: ExitProcess (0)
120IMPORTS:   Symbol: MessageBoxA (1)
121IMPORTS: }
122
123BASEREL: BaseReloc [
124BASEREL:   Entry {
125BASEREL:     Type: HIGHLOW
126BASEREL:     Address: 0x1005
127BASEREL:   }
128BASEREL:   Entry {
129BASEREL:     Type: HIGHLOW
130BASEREL:     Address: 0x100C
131BASEREL:   }
132BASEREL: ]
133