1e67db0e5c425a3594401d56ae41d7d2e36b9061
[oota-llvm.git] / test / MC / COFF / basic-coff.ll
1 ; This test checks that the COFF object emitter works for the most basic
2 ; programs.
3
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
7
8 @.str = private constant [12 x i8] c"Hello World\00" ; <[12 x i8]*> [#uses=1]
9
10 define i32 @main() nounwind {
11 entry:
12   %call = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([12 x i8]* @.str, i32 0, i32 0)) nounwind ; <i32> [#uses=0]
13   ret i32 0
14 }
15
16 declare i32 @printf(i8* nocapture, ...) nounwind
17
18 ; CHECK: {
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
26 ; CHECK:   Sections                 = [
27 ; CHECK:     0 = {
28 ; CHECK:       Name                     = .text
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              = [
46 ; CHECK:         0 = {
47 ; CHECK:           VirtualAddress           = 0x6
48 ; CHECK:           SymbolTableIndex         = 5
49 ; CHECK:           Type                     = IMAGE_REL_I386_DIR32 (6)
50 ; CHECK:           SymbolName               = _main
51 ; CHECK:         }
52 ; CHECK:         1 = {
53 ; CHECK:           VirtualAddress           = 0xB
54 ; CHECK:           SymbolTableIndex         = 6
55 ; CHECK:           Type                     = IMAGE_REL_I386_REL32 (20)
56 ; CHECK:           SymbolName               = L_.str
57 ; CHECK:         }
58 ; CHECK:       ]
59 ; CHECK:     }
60 ; CHECK:     1 = {
61 ; CHECK:       Name                     = .data
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
78 ; CHECK:     }
79 ; CHECK:   ]
80 ; CHECK:   Symbols                  = [
81 ; CHECK:     0 = {
82 ; CHECK:       Name                     = .text
83 ; CHECK:       Value                    = 0
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 |................|
91 ; CHECK:         00 00                                             |..|
92 ; CHECK:     }
93 ; CHECK:     1 = {
94 ; CHECK:       Name                     = .data
95 ; CHECK:       Value                    = 0
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 |................|
103 ; CHECK:         00 00                                             |..|
104 ; CHECK:     }
105 ; CHECK:     2 = {
106 ; CHECK:       Name                     = _main
107 ; CHECK:       Value                    = 0
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            =
114 ; CHECK:     }
115 ; CHECK:     3 = {
116 ; CHECK:       Name                     = L_.str
117 ; CHECK:       Value                    = 0
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            =
124 ; CHECK:     }
125 ; CHECK:     4 = {
126 ; CHECK:       Name                     = _printf
127 ; CHECK:       Value                    = 0
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            =
134 ; CHECK:     }
135 ; CHECK:   ]
136 ; CHECK: }