test: Fix coff-dump section array indicies to 1 based to match file format.
[oota-llvm.git] / test / MC / COFF / symbol-fragment-offset.ll
1 ; The purpose of this test is to see if the COFF object writer is emitting the\r
2 ; proper relocations for multiple pieces of data in a single data fragment.\r
3 \r
4 ; RUN: llc -filetype=obj -mtriple i686-pc-win32 %s -o %t\r
5 ; RUN: coff-dump.py %abs_tmp | FileCheck %s\r
6 ; RUN: llc -filetype=obj -mtriple x86_64-pc-win32 %s -o %t\r
7 \r
8 @.str = private constant [7 x i8] c"Hello \00"    ; <[7 x i8]*> [#uses=1]\r
9 @str = internal constant [7 x i8] c"World!\00"    ; <[7 x i8]*> [#uses=1]\r
10 \r
11 define i32 @main() nounwind {\r
12 entry:\r
13   %call = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([7 x i8]* @.str, i32 0, i32 0)) nounwind ; <i32> [#uses=0]\r
14   %puts = tail call i32 @puts(i8* getelementptr inbounds ([7 x i8]* @str, i32 0, i32 0)) ; <i32> [#uses=0]\r
15   ret i32 0\r
16 }\r
17 \r
18 declare i32 @printf(i8* nocapture, ...) nounwind\r
19 \r
20 declare i32 @puts(i8* nocapture) nounwind\r
21 \r
22 ; CHECK: {\r
23 ; CHECK:   MachineType              = IMAGE_FILE_MACHINE_I386 (0x14C)\r
24 ; CHECK:   NumberOfSections         = 2\r
25 ; CHECK:   TimeDateStamp            = {{[0-9]+}}\r
26 ; CHECK:   PointerToSymbolTable     = 0xBB\r
27 ; CHECK:   NumberOfSymbols          = 9\r
28 ; CHECK:   SizeOfOptionalHeader     = 0\r
29 ; CHECK:   Characteristics          = 0x0\r
30 ; CHECK:   Sections                 = [\r
31 ; CHECK:     1 = {\r
32 ; CHECK:       Name                     = .text\r
33 ; CHECK:       VirtualSize              = 0\r
34 ; CHECK:       VirtualAddress           = 0\r
35 ; CHECK:       SizeOfRawData            = 33\r
36 ; CHECK:       PointerToRawData         = 0x64\r
37 ; CHECK:       PointerToRelocations     = 0x85\r
38 ; CHECK:       PointerToLineNumbers     = 0x0\r
39 ; CHECK:       NumberOfRelocations      = 4\r
40 ; CHECK:       NumberOfLineNumbers      = 0\r
41 ; CHECK:       Charateristics           = 0x60500020\r
42 ; CHECK:         IMAGE_SCN_CNT_CODE\r
43 ; CHECK:         IMAGE_SCN_ALIGN_16BYTES\r
44 ; CHECK:         IMAGE_SCN_MEM_EXECUTE\r
45 ; CHECK:         IMAGE_SCN_MEM_READ\r
46 ; CHECK:       SectionData              =\r
47 ; CHECK:         83 EC 04 C7 04 24 00 00 - 00 00 E8 00 00 00 00 C7 |.....$..........|\r
48 ; CHECK:         04 24 00 00 00 00 E8 00 - 00 00 00 31 C0 83 C4 04 |.$.........1....|\r
49 ; CHECK:         C3                                                |.|\r
50 \r
51 ; CHECK:       Relocations              = [\r
52 ; CHECK:         0 = {\r
53 ; CHECK:           VirtualAddress           = 0x6\r
54 ; CHECK:           SymbolTableIndex         = 5\r
55 ; CHECK:           Type                     = IMAGE_REL_I386_DIR32 (6)\r
56 ; CHECK:           SymbolName               = _main\r
57 ; CHECK:         }\r
58 ; CHECK:         1 = {\r
59 ; CHECK:           VirtualAddress           = 0xB\r
60 ; CHECK:           SymbolTableIndex         = 6\r
61 ; CHECK:           Type                     = IMAGE_REL_I386_REL32 (20)\r
62 ; CHECK:           SymbolName               = L_.str\r
63 ; CHECK:         }\r
64 ; CHECK:         2 = {\r
65 ; CHECK:           VirtualAddress           = 0x12\r
66 ; CHECK:           SymbolTableIndex         = 7\r
67 ; CHECK:           Type                     = IMAGE_REL_I386_DIR32 (6)\r
68 ; CHECK:           SymbolName               = _printf\r
69 ; CHECK:         }\r
70 ; CHECK:         3 = {\r
71 ; CHECK:           VirtualAddress           = 0x17\r
72 ; CHECK:           SymbolTableIndex         = 8\r
73 ; CHECK:           Type                     = IMAGE_REL_I386_REL32 (20)\r
74 ; CHECK:           SymbolName               = _str\r
75 ; CHECK:         }\r
76 ; CHECK:       ]\r
77 ; CHECK:     }\r
78 ; CHECK:     2 = {\r
79 ; CHECK:       Name                     = .data\r
80 ; CHECK:       VirtualSize              = 0\r
81 ; CHECK:       VirtualAddress           = 0\r
82 ; CHECK:       SizeOfRawData            = 14\r
83 ; CHECK:       PointerToRawData         = 0xAD\r
84 ; CHECK:       PointerToRelocations     = 0x0\r
85 ; CHECK:       PointerToLineNumbers     = 0x0\r
86 ; CHECK:       NumberOfRelocations      = 0\r
87 ; CHECK:       NumberOfLineNumbers      = 0\r
88 ; CHECK:       Charateristics           = 0xC0100040\r
89 ; CHECK:         IMAGE_SCN_CNT_INITIALIZED_DATA\r
90 ; CHECK:         IMAGE_SCN_ALIGN_1BYTES\r
91 ; CHECK:         IMAGE_SCN_MEM_READ\r
92 ; CHECK:         IMAGE_SCN_MEM_WRITE\r
93 ; CHECK:       SectionData              =\r
94 ; CHECK:         48 65 6C 6C 6F 20 00 57 - 6F 72 6C 64 21 00       |Hello .World!.|\r
95 \r
96 ; CHECK:       Relocations              = None\r
97 ; CHECK:     }\r
98 ; CHECK:   ]\r
99 ; CHECK:   Symbols                  = [\r
100 ; CHECK:     0 = {\r
101 ; CHECK:       Name                     = .text\r
102 ; CHECK:       Value                    = 0\r
103 ; CHECK:       SectionNumber            = 1\r
104 ; CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)\r
105 ; CHECK:       ComplexType              = IMAGE_SYM_DTYPE_NULL (0)\r
106 ; CHECK:       StorageClass             = IMAGE_SYM_CLASS_STATIC (3)\r
107 ; CHECK:       NumberOfAuxSymbols       = 1\r
108 ; CHECK:       AuxillaryData            =\r
109 ; CHECK:         21 00 00 00 04 00 00 00 - 00 00 00 00 01 00 00 00 |!...............|\r
110 ; CHECK:         00 00                                             |..|\r
111 \r
112 ; CHECK:     }\r
113 ; CHECK:     1 = {\r
114 ; CHECK:       Name                     = .data\r
115 ; CHECK:       Value                    = 0\r
116 ; CHECK:       SectionNumber            = 2\r
117 ; CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)\r
118 ; CHECK:       ComplexType              = IMAGE_SYM_DTYPE_NULL (0)\r
119 ; CHECK:       StorageClass             = IMAGE_SYM_CLASS_STATIC (3)\r
120 ; CHECK:       NumberOfAuxSymbols       = 1\r
121 ; CHECK:       AuxillaryData            =\r
122 ; CHECK:         0E 00 00 00 00 00 00 00 - 00 00 00 00 02 00 00 00 |................|\r
123 ; CHECK:         00 00                                             |..|\r
124 \r
125 ; CHECK:     }\r
126 ; CHECK:     2 = {\r
127 ; CHECK:       Name                     = _main\r
128 ; CHECK:       Value                    = 0\r
129 ; CHECK:       SectionNumber            = 1\r
130 ; CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)\r
131 ; CHECK:       ComplexType              = IMAGE_SYM_DTYPE_FUNCTION (2)\r
132 ; CHECK:       StorageClass             = IMAGE_SYM_CLASS_EXTERNAL (2)\r
133 ; CHECK:       NumberOfAuxSymbols       = 0\r
134 ; CHECK:       AuxillaryData            =\r
135 \r
136 ; CHECK:     }\r
137 ; CHECK:     3 = {\r
138 ; CHECK:       Name                     = L_.str\r
139 ; CHECK:       Value                    = 0\r
140 ; CHECK:       SectionNumber            = 2\r
141 ; CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)\r
142 ; CHECK:       ComplexType              = IMAGE_SYM_DTYPE_NULL (0)\r
143 ; CHECK:       StorageClass             = IMAGE_SYM_CLASS_STATIC (3)\r
144 ; CHECK:       NumberOfAuxSymbols       = 0\r
145 ; CHECK:       AuxillaryData            =\r
146 \r
147 ; CHECK:     }\r
148 ; CHECK:     4 = {\r
149 ; CHECK:       Name                     = _printf\r
150 ; CHECK:       Value                    = 0\r
151 ; CHECK:       SectionNumber            = 0\r
152 ; CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)\r
153 ; CHECK:       ComplexType              = IMAGE_SYM_DTYPE_NULL (0)\r
154 ; CHECK:       StorageClass             = IMAGE_SYM_CLASS_EXTERNAL (2)\r
155 ; CHECK:       NumberOfAuxSymbols       = 0\r
156 ; CHECK:       AuxillaryData            =\r
157 \r
158 ; CHECK:     }\r
159 ; CHECK:     5 = {\r
160 ; CHECK:       Name                     = _str\r
161 ; CHECK:       Value                    = 7\r
162 ; CHECK:       SectionNumber            = 2\r
163 ; CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)\r
164 ; CHECK:       ComplexType              = IMAGE_SYM_DTYPE_NULL (0)\r
165 ; CHECK:       StorageClass             = IMAGE_SYM_CLASS_STATIC (3)\r
166 ; CHECK:       NumberOfAuxSymbols       = 0\r
167 ; CHECK:       AuxillaryData            =\r
168 \r
169 ; CHECK:     }\r
170 ; CHECK:     6 = {\r
171 ; CHECK:       Name                     = _puts\r
172 ; CHECK:       Value                    = 0\r
173 ; CHECK:       SectionNumber            = 0\r
174 ; CHECK:       SimpleType               = IMAGE_SYM_TYPE_NULL (0)\r
175 ; CHECK:       ComplexType              = IMAGE_SYM_DTYPE_NULL (0)\r
176 ; CHECK:       StorageClass             = IMAGE_SYM_CLASS_EXTERNAL (2)\r
177 ; CHECK:       NumberOfAuxSymbols       = 0\r
178 ; CHECK:       AuxillaryData            =\r
179 \r
180 ; CHECK:     }\r
181 ; CHECK:   ]\r
182 ; CHECK: }\r