1 ; This test checks that the COFF object emitter works for the most basic
4 ; RUN: llc -filetype=obj -mtriple i686-pc-win32 %s -o %t
5 ; RUN: coff-dump.py %abs_tmp | FileCheck %s
6 ; RUN: llc -filetype=obj -mtriple x86_64-pc-win32 %s -o %t
8 @.str = private constant [12 x i8] c"Hello World\00" ; <[12 x i8]*> [#uses=1]
10 define i32 @main() nounwind {
12 %call = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([12 x i8]* @.str, i32 0, i32 0)) nounwind ; <i32> [#uses=0]
16 declare i32 @printf(i8* nocapture, ...) nounwind
19 ; CHECK: MachineType = IMAGE_FILE_MACHINE_I386 (0x14C)
20 ; CHECK: NumberOfSections = 2
21 ; CHECK: TimeDateStamp = {{[0-9]+}}
22 ; CHECK: PointerToSymbolTable = 0x99
23 ; CHECK: NumberOfSymbols = 7
24 ; CHECK: SizeOfOptionalHeader = 0
25 ; CHECK: Characteristics = 0x0
29 ; CHECK: VirtualSize = 0
30 ; CHECK: VirtualAddress = 0
31 ; CHECK: SizeOfRawData = 21
32 ; CHECK: PointerToRawData = 0x64
33 ; CHECK: PointerToRelocations = 0x79
34 ; CHECK: PointerToLineNumbers = 0x0
35 ; CHECK: NumberOfRelocations = 2
36 ; CHECK: NumberOfLineNumbers = 0
37 ; CHECK: Charateristics = 0x60500020
38 ; CHECK: IMAGE_SCN_CNT_CODE
39 ; CHECK: IMAGE_SCN_ALIGN_16BYTES
40 ; CHECK: IMAGE_SCN_MEM_EXECUTE
41 ; CHECK: IMAGE_SCN_MEM_READ
42 ; CHECK: SectionData =
43 ; CHECK: 83 EC 04 C7 04 24 00 00 - 00 00 E8 00 00 00 00 31 |.....$.........1|
44 ; CHECK: C0 83 C4 04 C3 |.....|
45 ; CHECK: Relocations = [
47 ; CHECK: VirtualAddress = 0x6
48 ; CHECK: SymbolTableIndex = 5
49 ; CHECK: Type = IMAGE_REL_I386_DIR32 (6)
50 ; CHECK: SymbolName = _main
53 ; CHECK: VirtualAddress = 0xB
54 ; CHECK: SymbolTableIndex = 6
55 ; CHECK: Type = IMAGE_REL_I386_REL32 (20)
56 ; CHECK: SymbolName = L_.str
62 ; CHECK: VirtualSize = 0
63 ; CHECK: VirtualAddress = 0
64 ; CHECK: SizeOfRawData = 12
65 ; CHECK: PointerToRawData = 0x8D
66 ; CHECK: PointerToRelocations = 0x0
67 ; CHECK: PointerToLineNumbers = 0x0
68 ; CHECK: NumberOfRelocations = 0
69 ; CHECK: NumberOfLineNumbers = 0
70 ; CHECK: Charateristics = 0xC0100040
71 ; CHECK: IMAGE_SCN_CNT_INITIALIZED_DATA
72 ; CHECK: IMAGE_SCN_ALIGN_1BYTES
73 ; CHECK: IMAGE_SCN_MEM_READ
74 ; CHECK: IMAGE_SCN_MEM_WRITE
75 ; CHECK: SectionData =
76 ; CHECK: 48 65 6C 6C 6F 20 57 6F - 72 6C 64 00 |Hello World.|
77 ; CHECK: Relocations = None
84 ; CHECK: SectionNumber = 1
85 ; CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
86 ; CHECK: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
87 ; CHECK: StorageClass = IMAGE_SYM_CLASS_STATIC (3)
88 ; CHECK: NumberOfAuxSymbols = 1
89 ; CHECK: AuxillaryData =
90 ; CHECK: 15 00 00 00 02 00 00 00 - 00 00 00 00 01 00 00 00 |................|
96 ; CHECK: SectionNumber = 2
97 ; CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
98 ; CHECK: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
99 ; CHECK: StorageClass = IMAGE_SYM_CLASS_STATIC (3)
100 ; CHECK: NumberOfAuxSymbols = 1
101 ; CHECK: AuxillaryData =
102 ; CHECK: 0C 00 00 00 00 00 00 00 - 00 00 00 00 02 00 00 00 |................|
106 ; CHECK: Name = _main
108 ; CHECK: SectionNumber = 1
109 ; CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
110 ; CHECK: ComplexType = IMAGE_SYM_DTYPE_FUNCTION (2)
111 ; CHECK: StorageClass = IMAGE_SYM_CLASS_EXTERNAL (2)
112 ; CHECK: NumberOfAuxSymbols = 0
113 ; CHECK: AuxillaryData =
116 ; CHECK: Name = L_.str
118 ; CHECK: SectionNumber = 2
119 ; CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
120 ; CHECK: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
121 ; CHECK: StorageClass = IMAGE_SYM_CLASS_STATIC (3)
122 ; CHECK: NumberOfAuxSymbols = 0
123 ; CHECK: AuxillaryData =
126 ; CHECK: Name = _printf
128 ; CHECK: SectionNumber = 0
129 ; CHECK: SimpleType = IMAGE_SYM_TYPE_NULL (0)
130 ; CHECK: ComplexType = IMAGE_SYM_DTYPE_NULL (0)
131 ; CHECK: StorageClass = IMAGE_SYM_CLASS_EXTERNAL (2)
132 ; CHECK: NumberOfAuxSymbols = 0
133 ; CHECK: AuxillaryData =