880b6d52f095873eb51627a0e7a75285365d3ff1
[oota-llvm.git] / test / tools / llvm-readobj / codeview-linetables.test
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ; The following two object files were generated using the following command:
3 ;   D:\> cl /Z7 /c source.c
4 ; with the following contents of D:\source.c:
5 ;   void z(void);
6 ;
7 ;   void x(void) {
8 ;     z();
9 ;   }
10 ;
11 ;   void y(void) {
12 ;     z();
13 ;   }
14 ;
15 ;   void f(void) {
16 ;     x();
17 ;     y();
18 ;     z();
19 ;   }
20 ; using 32-/64-bit versions of CL v17.00.61030 and v18.00.21005.1 respectively.
21 RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifunction-linetables.obj.coff-2012-i368 \
22 RUN:   | FileCheck %s -check-prefix MFUN32
23 RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifunction-linetables.obj.coff-2013-i368 \
24 RUN:   | FileCheck %s -check-prefix MFUN32
25 RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifunction-linetables.obj.coff-2012-x86_64 \
26 RUN:   | FileCheck %s -check-prefix MFUN64
27 RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifunction-linetables.obj.coff-2013-x86_64 \
28 RUN:   | FileCheck %s -check-prefix MFUN64
29
30 MFUN32:      CodeViewDebugInfo [
31 MFUN32-NEXT:   Magic: 0x4
32 MFUN32-NEXT:   Subsection [
33 MFUN32-NEXT:     Type: 0xF1
34 MFUN32-NEXT:     PayloadSize: 0x52
35 MFUN32:        ]
36 MFUN32-NEXT:   Subsection [
37 MFUN32-NEXT:     Type: 0xF5
38 MFUN32-NEXT:     PayloadSize: 0x24
39 MFUN32:        ]
40 MFUN32-NEXT:   Subsection [
41 MFUN32-NEXT:     Type: 0xF1
42 MFUN32-NEXT:     PayloadSize: 0x4B
43 MFUN32:          ProcStart {
44 MFUN32-NEXT:       DisplayName: x
45 MFUN32-NEXT:       Section: _x
46 MFUN32-NEXT:       CodeSize: 0xA
47 MFUN32-NEXT:     }
48 MFUN32-NEXT:     ProcEnd
49 MFUN32:        ]
50 MFUN32-NEXT:   Subsection [
51 MFUN32-NEXT:     Type: 0xF2
52 MFUN32-NEXT:     PayloadSize: 0x30
53 MFUN32:          LinkageName: _x
54 MFUN32-NEXT:   ]
55 MFUN32-NEXT:   Subsection [
56 MFUN32-NEXT:     Type: 0xF5
57 MFUN32-NEXT:     PayloadSize: 0x24
58 MFUN32:        ]
59 MFUN32-NEXT:   Subsection [
60 MFUN32-NEXT:     Type: 0xF1
61 MFUN32-NEXT:     PayloadSize: 0x4B
62 MFUN32:          ProcStart {
63 MFUN32-NEXT:       DisplayName: y
64 MFUN32-NEXT:       Section: _y
65 MFUN32-NEXT:       CodeSize: 0xA
66 MFUN32-NEXT:     }
67 MFUN32-NEXT:     ProcEnd
68 MFUN32:        ]
69 MFUN32-NEXT:   Subsection [
70 MFUN32-NEXT:     Type: 0xF2
71 MFUN32-NEXT:     PayloadSize: 0x30
72 MFUN32:          LinkageName: _y
73 MFUN32-NEXT:   ]
74 MFUN32-NEXT:   Subsection [
75 MFUN32-NEXT:     Type: 0xF5
76 MFUN32-NEXT:     PayloadSize: 0x24
77 MFUN32:        ]
78 MFUN32-NEXT:   Subsection [
79 MFUN32-NEXT:     Type: 0xF1
80 MFUN32-NEXT:     PayloadSize: 0x4B
81 MFUN32:          ProcStart {
82 MFUN32-NEXT:       DisplayName: f
83 MFUN32-NEXT:       Section: _f
84 MFUN32-NEXT:       CodeSize: 0x14
85 MFUN32-NEXT:     }
86 MFUN32-NEXT:     ProcEnd
87 MFUN32:        ]
88 MFUN32-NEXT:   Subsection [
89 MFUN32-NEXT:     Type: 0xF2
90 MFUN32-NEXT:     PayloadSize: 0x40
91 MFUN32:          LinkageName: _f
92 MFUN32-NEXT:   ]
93 MFUN32-NEXT:   Subsection [
94 MFUN32-NEXT:     Type: 0xF4
95 MFUN32-NEXT:     PayloadSize: 0x18
96 MFUN32:        ]
97 MFUN32-NEXT:   Subsection [
98 MFUN32-NEXT:     Type: 0xF3
99 MFUN32-NEXT:     PayloadSize: 0x46
100 MFUN32:        ]
101 MFUN32-NEXT:   Subsection [
102 MFUN32-NEXT:     Type: 0xF1
103 MFUN32-NEXT:     PayloadSize: 0x8
104 MFUN32:        ]
105 MFUN32-NEXT:   FunctionLineTable [
106 MFUN32-NEXT:     LinkageName: _x
107 MFUN32-NEXT:     Flags: 0x0
108 MFUN32-NEXT:     CodeSize: 0xA
109 MFUN32-NEXT:     FilenameSegment [
110 MFUN32-NEXT:       Filename: d:\source.c
111 MFUN32-NEXT:       +0x0: 3
112 MFUN32-NEXT:       +0x3: 4
113 MFUN32-NEXT:       +0x8: 5
114 MFUN32-NEXT:     ]
115 MFUN32-NEXT:   ]
116 MFUN32-NEXT:   FunctionLineTable [
117 MFUN32-NEXT:     LinkageName: _y
118 MFUN32-NEXT:     Flags: 0x0
119 MFUN32-NEXT:     CodeSize: 0xA
120 MFUN32-NEXT:     FilenameSegment [
121 MFUN32-NEXT:       Filename: d:\source.c
122 MFUN32-NEXT:       +0x0: 7
123 MFUN32-NEXT:       +0x3: 8
124 MFUN32-NEXT:       +0x8: 9
125 MFUN32-NEXT:     ]
126 MFUN32-NEXT:   ]
127 MFUN32-NEXT:   FunctionLineTable [
128 MFUN32-NEXT:     LinkageName: _f
129 MFUN32-NEXT:     Flags: 0x0
130 MFUN32-NEXT:     CodeSize: 0x14
131 MFUN32-NEXT:     FilenameSegment [
132 MFUN32-NEXT:       Filename: d:\source.c
133 MFUN32-NEXT:       +0x0: 11
134 MFUN32-NEXT:       +0x3: 12
135 MFUN32-NEXT:       +0x8: 13
136 MFUN32-NEXT:       +0xD: 14
137 MFUN32-NEXT:       +0x12: 15
138 MFUN32-NEXT:     ]
139 MFUN32-NEXT:   ]
140 MFUN32-NEXT: ]
141
142 MFUN64:      CodeViewDebugInfo [
143 MFUN64-NEXT:   Magic: 0x4
144 MFUN64-NEXT:   Subsection [
145 MFUN64-NEXT:     Type: 0xF1
146 MFUN64-NEXT:     PayloadSize: 0x52
147 MFUN64:        ]
148 MFUN64-NEXT:   Subsection [
149 MFUN64-NEXT:     Type: 0xF1
150 MFUN64-NEXT:     PayloadSize: 0x4B
151 MFUN64:          ProcStart {
152 MFUN64-NEXT:       DisplayName: x
153 MFUN64-NEXT:       Section: x
154 MFUN64-NEXT:       CodeSize: 0xE
155 MFUN64-NEXT:     }
156 MFUN64-NEXT:     ProcEnd
157 MFUN64:        ]
158 MFUN64-NEXT:   Subsection [
159 MFUN64-NEXT:     Type: 0xF2
160 MFUN64-NEXT:     PayloadSize: 0x30
161 MFUN64:          LinkageName: x
162 MFUN64-NEXT:   ]
163 MFUN64-NEXT:   Subsection [
164 MFUN64-NEXT:     Type: 0xF1
165 MFUN64-NEXT:     PayloadSize: 0x4B
166 MFUN64:          ProcStart {
167 MFUN64-NEXT:       DisplayName: y
168 MFUN64-NEXT:       Section: y
169 MFUN64-NEXT:       CodeSize: 0xE
170 MFUN64-NEXT:     }
171 MFUN64-NEXT:     ProcEnd
172 MFUN64:        ]
173 MFUN64-NEXT:   Subsection [
174 MFUN64-NEXT:     Type: 0xF2
175 MFUN64-NEXT:     PayloadSize: 0x30
176 MFUN64:          LinkageName: y
177 MFUN64-NEXT:   ]
178 MFUN64-NEXT:   Subsection [
179 MFUN64-NEXT:     Type: 0xF1
180 MFUN64-NEXT:     PayloadSize: 0x4B
181 MFUN64:          ProcStart {
182 MFUN64-NEXT:       DisplayName: f
183 MFUN64-NEXT:       Section: f
184 MFUN64-NEXT:       CodeSize: 0x18
185 MFUN64-NEXT:     }
186 MFUN64-NEXT:     ProcEnd
187 MFUN64:        ]
188 MFUN64-NEXT:   Subsection [
189 MFUN64-NEXT:     Type: 0xF2
190 MFUN64-NEXT:     PayloadSize: 0x40
191 MFUN64:          LinkageName: f
192 MFUN64-NEXT:   ]
193 MFUN64-NEXT:   Subsection [
194 MFUN64-NEXT:     Type: 0xF4
195 MFUN64-NEXT:     PayloadSize: 0x18
196 MFUN64:        ]
197 MFUN64-NEXT:   Subsection [
198 MFUN64-NEXT:     Type: 0xF3
199 MFUN64-NEXT:     PayloadSize: 0xD
200 MFUN64:        ]
201 MFUN64-NEXT:   Subsection [
202 MFUN64-NEXT:     Type: 0xF1
203 MFUN64-NEXT:     PayloadSize: 0x8
204 MFUN64:        ]
205 MFUN64-NEXT:   FunctionLineTable [
206 MFUN64-NEXT:     LinkageName: x
207 MFUN64-NEXT:     Flags: 0x0
208 MFUN64-NEXT:     CodeSize: 0xE
209 MFUN64-NEXT:     FilenameSegment [
210 MFUN64-NEXT:       Filename: d:\source.c
211 MFUN64-NEXT:       +0x0: 3
212 MFUN64-NEXT:       +0x4: 4
213 MFUN64-NEXT:       +0x9: 5
214 MFUN64-NEXT:     ]
215 MFUN64-NEXT:   ]
216 MFUN64-NEXT:   FunctionLineTable [
217 MFUN64-NEXT:     LinkageName: y
218 MFUN64-NEXT:     Flags: 0x0
219 MFUN64-NEXT:     CodeSize: 0xE
220 MFUN64-NEXT:     FilenameSegment [
221 MFUN64-NEXT:       Filename: d:\source.c
222 MFUN64-NEXT:       +0x0: 7
223 MFUN64-NEXT:       +0x4: 8
224 MFUN64-NEXT:       +0x9: 9
225 MFUN64-NEXT:     ]
226 MFUN64-NEXT:   ]
227 MFUN64-NEXT:   FunctionLineTable [
228 MFUN64-NEXT:     LinkageName: f
229 MFUN64-NEXT:     Flags: 0x0
230 MFUN64-NEXT:     CodeSize: 0x18
231 MFUN64-NEXT:     FilenameSegment [
232 MFUN64-NEXT:       Filename: d:\source.c
233 MFUN64-NEXT:       +0x0: 11
234 MFUN64-NEXT:       +0x4: 12
235 MFUN64-NEXT:       +0x9: 13
236 MFUN64-NEXT:       +0xE: 14
237 MFUN64-NEXT:       +0x13: 15
238 MFUN64-NEXT:     ]
239 MFUN64-NEXT:   ]
240 MFUN64-NEXT: ]
241
242 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
243 ; The following two object files were generated using the following command:
244 ;   D:\> cl /Z7 /c input.c
245 ; with the following contents of D:\input.c:
246 ;   void g(void);
247 ;
248 ;   void f(void) {
249 ;   #line 1 "one.c"
250 ;     g();
251 ;   #line 2 "two.c"
252 ;     g();
253 ;   #line 7 "one.c"
254 ;     g();
255 ;   }
256 ; using 32-/64-bit versions of CL v17.00.61030 and v18.00.21005.1 respectively.
257 RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifile-linetables.obj.coff-2012-i368 \
258 RUN:   | FileCheck %s -check-prefix MFILE32
259 RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifile-linetables.obj.coff-2013-i368 \
260 RUN:   | FileCheck %s -check-prefix MFILE32
261 RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifile-linetables.obj.coff-2012-x86_64 \
262 RUN:   | FileCheck %s -check-prefix MFILE64
263 RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifile-linetables.obj.coff-2013-x86_64 \
264 RUN:   | FileCheck %s -check-prefix MFILE64
265
266 MFILE32:      CodeViewDebugInfo [
267 MFILE32-NEXT:   Magic: 0x4
268 MFILE32-NEXT:   Subsection [
269 MFILE32-NEXT:     Type: 0xF1
270 MFILE32-NEXT:     PayloadSize: 0x51
271 MFILE32:        ]
272 MFILE32-NEXT:   Subsection [
273 MFILE32-NEXT:     Type: 0xF5
274 MFILE32-NEXT:     PayloadSize: 0x24
275 MFILE32:        ]
276 MFILE32-NEXT:   Subsection [
277 MFILE32-NEXT:     Type: 0xF1
278 MFILE32-NEXT:     PayloadSize: 0x4B
279 MFILE32:          ProcStart {
280 MFILE32-NEXT:       DisplayName: f
281 MFILE32-NEXT:       Section: _f
282 MFILE32-NEXT:       CodeSize: 0x14
283 MFILE32-NEXT:     }
284 MFILE32-NEXT:     ProcEnd
285 MFILE32:        ]
286 MFILE32-NEXT:   Subsection [
287 MFILE32-NEXT:     Type: 0xF2
288 MFILE32-NEXT:     PayloadSize: 0x64
289 MFILE32:          LinkageName: _f
290 MFILE32-NEXT:   ]
291 MFILE32-NEXT:   Subsection [
292 MFILE32-NEXT:     Type: 0xF4
293 MFILE32-NEXT:     PayloadSize: 0x28
294 MFILE32:        ]
295 MFILE32-NEXT:   Subsection [
296 MFILE32-NEXT:     Type: 0xF3
297 MFILE32-NEXT:     PayloadSize: 0x57
298 MFILE32:        ]
299 MFILE32-NEXT:   Subsection [
300 MFILE32-NEXT:     Type: 0xF1
301 MFILE32-NEXT:     PayloadSize: 0x8
302 MFILE32:        ]
303 MFILE32-NEXT:   FunctionLineTable [
304 MFILE32-NEXT:     LinkageName: _f
305 MFILE32-NEXT:     Flags: 0x0
306 MFILE32-NEXT:     CodeSize: 0x14
307 MFILE32-NEXT:     FilenameSegment [
308 MFILE32-NEXT:       Filename: d:\input.c
309 MFILE32-NEXT:       +0x0: 3
310 MFILE32-NEXT:     ]
311 MFILE32-NEXT:     FilenameSegment [
312 MFILE32-NEXT:       Filename: d:\one.c
313 MFILE32-NEXT:       +0x3: 1
314 MFILE32-NEXT:     ]
315 MFILE32-NEXT:     FilenameSegment [
316 MFILE32-NEXT:       Filename: d:\two.c
317 MFILE32-NEXT:       +0x8: 2
318 MFILE32-NEXT:     ]
319 MFILE32-NEXT:     FilenameSegment [
320 MFILE32-NEXT:       Filename: d:\one.c
321 MFILE32-NEXT:       +0xD: 7
322 MFILE32-NEXT:       +0x12: 8
323 MFILE32-NEXT:     ]
324 MFILE32-NEXT:   ]
325 MFILE32-NEXT: ]
326
327 MFILE64:      CodeViewDebugInfo [
328 MFILE64-NEXT:   Magic: 0x4
329 MFILE64-NEXT:   Subsection [
330 MFILE64-NEXT:     Type: 0xF1
331 MFILE64-NEXT:     PayloadSize: 0x51
332 MFILE64:        ]
333 MFILE64-NEXT:   Subsection [
334 MFILE64-NEXT:     Type: 0xF1
335 MFILE64-NEXT:     PayloadSize: 0x4B
336 MFILE64:          ProcStart {
337 MFILE64-NEXT:       DisplayName: f
338 MFILE64-NEXT:       Section: f
339 MFILE64-NEXT:       CodeSize: 0x18
340 MFILE64-NEXT:     }
341 MFILE64-NEXT:     ProcEnd
342 MFILE64:        ]
343 MFILE64-NEXT:   Subsection [
344 MFILE64-NEXT:     Type: 0xF2
345 MFILE64-NEXT:     PayloadSize: 0x64
346 MFILE64:          LinkageName: f
347 MFILE64-NEXT:   ]
348 MFILE64-NEXT:   Subsection [
349 MFILE64-NEXT:     Type: 0xF4
350 MFILE64-NEXT:     PayloadSize: 0x28
351 MFILE64:        ]
352 MFILE64-NEXT:   Subsection [
353 MFILE64-NEXT:     Type: 0xF3
354 MFILE64-NEXT:     PayloadSize: 0x1E
355 MFILE64:        ]
356 MFILE64-NEXT:   Subsection [
357 MFILE64-NEXT:     Type: 0xF1
358 MFILE64-NEXT:     PayloadSize: 0x8
359 MFILE64:        ]
360 MFILE64-NEXT:   FunctionLineTable [
361 MFILE64-NEXT:     LinkageName: f
362 MFILE64-NEXT:     Flags: 0x0
363 MFILE64-NEXT:     CodeSize: 0x18
364 MFILE64-NEXT:     FilenameSegment [
365 MFILE64-NEXT:       Filename: d:\input.c
366 MFILE64-NEXT:       +0x0: 3
367 MFILE64-NEXT:     ]
368 MFILE64-NEXT:     FilenameSegment [
369 MFILE64-NEXT:       Filename: d:\one.c
370 MFILE64-NEXT:       +0x4: 1
371 MFILE64-NEXT:     ]
372 MFILE64-NEXT:     FilenameSegment [
373 MFILE64-NEXT:       Filename: d:\two.c
374 MFILE64-NEXT:       +0x9: 2
375 MFILE64-NEXT:     ]
376 MFILE64-NEXT:     FilenameSegment [
377 MFILE64-NEXT:       Filename: d:\one.c
378 MFILE64-NEXT:       +0xE: 7
379 MFILE64-NEXT:       +0x13: 8
380 MFILE64-NEXT:     ]
381 MFILE64-NEXT:   ]
382 MFILE64-NEXT: ]
383
384 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
385 ; The following object files were generated using the following command:
386 ;   C:\src> cl /Z7 /Gy /c test.cc
387 ; with the following contents of C:\src\test.cc:
388 ;   int f()
389 ;   {
390 ;     return 0;
391 ;   }
392 ;
393 ;   int g()
394 ;   {
395 ;     return 0;
396 ;   }
397 ; using 32-version of CL v17.00.61030 and v18.00.21005.1 respectively.
398 RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/comdat-function-linetables.obj.coff-2012-i386 \
399 RUN:   | FileCheck %s -check-prefix MCOMDAT
400 RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/comdat-function-linetables.obj.coff-2013-i386 \
401 RUN:   | FileCheck %s -check-prefix MCOMDAT
402
403 MCOMDAT:      ProcStart {
404 MCOMDAT-NEXT:   DisplayName: f
405 MCOMDAT-NEXT:   Section: ?f@@YAHXZ
406 MCOMDAT-NEXT:   CodeSize: 0x7
407 MCOMDAT-NEXT: }
408 MCOMDAT:      FunctionLineTable [
409 MCOMDAT-NEXT:   LinkageName: ?f@@YAHXZ
410 MCOMDAT-NEXT:   Flags: 0x0
411 MCOMDAT-NEXT:   CodeSize: 0x7
412 MCOMDAT-NEXT:   FilenameSegment [
413 MCOMDAT-NEXT:     Filename: c:\src\test.cc
414 MCOMDAT-NEXT:     +0x0: 2
415 MCOMDAT-NEXT:     +0x3: 3
416 MCOMDAT-NEXT:     +0x5: 4
417 MCOMDAT-NEXT:   ]
418 MCOMDAT-NEXT: ]
419 MCOMDAT:      ProcStart {
420 MCOMDAT-NEXT:   DisplayName: g
421 MCOMDAT-NEXT:   Section: ?g@@YAHXZ
422 MCOMDAT-NEXT:   CodeSize: 0x7
423 MCOMDAT-NEXT: }
424 MCOMDAT:      FunctionLineTable [
425 MCOMDAT-NEXT:   LinkageName: ?g@@YAHXZ
426 MCOMDAT-NEXT:   Flags: 0x0
427 MCOMDAT-NEXT:   CodeSize: 0x7
428 MCOMDAT-NEXT:   FilenameSegment [
429 MCOMDAT-NEXT:     Filename: c:\src\test.cc
430 MCOMDAT-NEXT:     +0x0: 7
431 MCOMDAT-NEXT:     +0x3: 8
432 MCOMDAT-NEXT:     +0x5: 9
433 MCOMDAT-NEXT:   ]
434 MCOMDAT-NEXT: ]