Modify llvm-readobj to dump symbol record bytes.
[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:          FunctionName: _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:          FunctionName: _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:          FunctionName: _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:     FunctionName: _x
107 MFUN32-NEXT:     CodeSize: 0xA
108 MFUN32-NEXT:     FilenameSegment [
109 MFUN32-NEXT:       Filename: d:\source.c
110 MFUN32-NEXT:       +0x0: 3
111 MFUN32-NEXT:       +0x3: 4
112 MFUN32-NEXT:       +0x8: 5
113 MFUN32-NEXT:     ]
114 MFUN32-NEXT:   ]
115 MFUN32-NEXT:   FunctionLineTable [
116 MFUN32-NEXT:     FunctionName: _y
117 MFUN32-NEXT:     CodeSize: 0xA
118 MFUN32-NEXT:     FilenameSegment [
119 MFUN32-NEXT:       Filename: d:\source.c
120 MFUN32-NEXT:       +0x0: 7
121 MFUN32-NEXT:       +0x3: 8
122 MFUN32-NEXT:       +0x8: 9
123 MFUN32-NEXT:     ]
124 MFUN32-NEXT:   ]
125 MFUN32-NEXT:   FunctionLineTable [
126 MFUN32-NEXT:     FunctionName: _f
127 MFUN32-NEXT:     CodeSize: 0x14
128 MFUN32-NEXT:     FilenameSegment [
129 MFUN32-NEXT:       Filename: d:\source.c
130 MFUN32-NEXT:       +0x0: 11
131 MFUN32-NEXT:       +0x3: 12
132 MFUN32-NEXT:       +0x8: 13
133 MFUN32-NEXT:       +0xD: 14
134 MFUN32-NEXT:       +0x12: 15
135 MFUN32-NEXT:     ]
136 MFUN32-NEXT:   ]
137 MFUN32-NEXT: ]
138
139 MFUN64:      CodeViewDebugInfo [
140 MFUN64-NEXT:   Magic: 0x4
141 MFUN64-NEXT:   Subsection [
142 MFUN64-NEXT:     Type: 0xF1
143 MFUN64-NEXT:     PayloadSize: 0x52
144 MFUN64:        ]
145 MFUN64-NEXT:   Subsection [
146 MFUN64-NEXT:     Type: 0xF1
147 MFUN64-NEXT:     PayloadSize: 0x4B
148 MFUN64:          ProcStart {
149 MFUN64-NEXT:       DisplayName: x
150 MFUN64-NEXT:       Section: x
151 MFUN64-NEXT:       CodeSize: 0xE
152 MFUN64-NEXT:     }
153 MFUN64-NEXT:     ProcEnd
154 MFUN64:        ]
155 MFUN64-NEXT:   Subsection [
156 MFUN64-NEXT:     Type: 0xF2
157 MFUN64-NEXT:     PayloadSize: 0x30
158 MFUN64:          FunctionName: x
159 MFUN64-NEXT:   ]
160 MFUN64-NEXT:   Subsection [
161 MFUN64-NEXT:     Type: 0xF1
162 MFUN64-NEXT:     PayloadSize: 0x4B
163 MFUN64:          ProcStart {
164 MFUN64-NEXT:       DisplayName: y
165 MFUN64-NEXT:       Section: y
166 MFUN64-NEXT:       CodeSize: 0xE
167 MFUN64-NEXT:     }
168 MFUN64-NEXT:     ProcEnd
169 MFUN64:        ]
170 MFUN64-NEXT:   Subsection [
171 MFUN64-NEXT:     Type: 0xF2
172 MFUN64-NEXT:     PayloadSize: 0x30
173 MFUN64:          FunctionName: y
174 MFUN64-NEXT:   ]
175 MFUN64-NEXT:   Subsection [
176 MFUN64-NEXT:     Type: 0xF1
177 MFUN64-NEXT:     PayloadSize: 0x4B
178 MFUN64:          ProcStart {
179 MFUN64-NEXT:       DisplayName: f
180 MFUN64-NEXT:       Section: f
181 MFUN64-NEXT:       CodeSize: 0x18
182 MFUN64-NEXT:     }
183 MFUN64-NEXT:     ProcEnd
184 MFUN64:        ]
185 MFUN64-NEXT:   Subsection [
186 MFUN64-NEXT:     Type: 0xF2
187 MFUN64-NEXT:     PayloadSize: 0x40
188 MFUN64:          FunctionName: f
189 MFUN64-NEXT:   ]
190 MFUN64-NEXT:   Subsection [
191 MFUN64-NEXT:     Type: 0xF4
192 MFUN64-NEXT:     PayloadSize: 0x18
193 MFUN64:        ]
194 MFUN64-NEXT:   Subsection [
195 MFUN64-NEXT:     Type: 0xF3
196 MFUN64-NEXT:     PayloadSize: 0xD
197 MFUN64:        ]
198 MFUN64-NEXT:   Subsection [
199 MFUN64-NEXT:     Type: 0xF1
200 MFUN64-NEXT:     PayloadSize: 0x8
201 MFUN64:        ]
202 MFUN64-NEXT:   FunctionLineTable [
203 MFUN64-NEXT:     FunctionName: x
204 MFUN64-NEXT:     CodeSize: 0xE
205 MFUN64-NEXT:     FilenameSegment [
206 MFUN64-NEXT:       Filename: d:\source.c
207 MFUN64-NEXT:       +0x0: 3
208 MFUN64-NEXT:       +0x4: 4
209 MFUN64-NEXT:       +0x9: 5
210 MFUN64-NEXT:     ]
211 MFUN64-NEXT:   ]
212 MFUN64-NEXT:   FunctionLineTable [
213 MFUN64-NEXT:     FunctionName: y
214 MFUN64-NEXT:     CodeSize: 0xE
215 MFUN64-NEXT:     FilenameSegment [
216 MFUN64-NEXT:       Filename: d:\source.c
217 MFUN64-NEXT:       +0x0: 7
218 MFUN64-NEXT:       +0x4: 8
219 MFUN64-NEXT:       +0x9: 9
220 MFUN64-NEXT:     ]
221 MFUN64-NEXT:   ]
222 MFUN64-NEXT:   FunctionLineTable [
223 MFUN64-NEXT:     FunctionName: f
224 MFUN64-NEXT:     CodeSize: 0x18
225 MFUN64-NEXT:     FilenameSegment [
226 MFUN64-NEXT:       Filename: d:\source.c
227 MFUN64-NEXT:       +0x0: 11
228 MFUN64-NEXT:       +0x4: 12
229 MFUN64-NEXT:       +0x9: 13
230 MFUN64-NEXT:       +0xE: 14
231 MFUN64-NEXT:       +0x13: 15
232 MFUN64-NEXT:     ]
233 MFUN64-NEXT:   ]
234 MFUN64-NEXT: ]
235
236 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
237 ; The following two object files were generated using the following command:
238 ;   D:\> cl /Z7 /c input.c
239 ; with the following contents of D:\input.c:
240 ;   void g(void);
241 ;
242 ;   void f(void) {
243 ;   #line 1 "one.c"
244 ;     g();
245 ;   #line 2 "two.c"
246 ;     g();
247 ;   #line 7 "one.c"
248 ;     g();
249 ;   }
250 ; using 32-/64-bit versions of CL v17.00.61030 and v18.00.21005.1 respectively.
251 RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifile-linetables.obj.coff-2012-i368 \
252 RUN:   | FileCheck %s -check-prefix MFILE32
253 RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifile-linetables.obj.coff-2013-i368 \
254 RUN:   | FileCheck %s -check-prefix MFILE32
255 RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifile-linetables.obj.coff-2012-x86_64 \
256 RUN:   | FileCheck %s -check-prefix MFILE64
257 RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/multifile-linetables.obj.coff-2013-x86_64 \
258 RUN:   | FileCheck %s -check-prefix MFILE64
259
260 MFILE32:      CodeViewDebugInfo [
261 MFILE32-NEXT:   Magic: 0x4
262 MFILE32-NEXT:   Subsection [
263 MFILE32-NEXT:     Type: 0xF1
264 MFILE32-NEXT:     PayloadSize: 0x51
265 MFILE32:        ]
266 MFILE32-NEXT:   Subsection [
267 MFILE32-NEXT:     Type: 0xF5
268 MFILE32-NEXT:     PayloadSize: 0x24
269 MFILE32:        ]
270 MFILE32-NEXT:   Subsection [
271 MFILE32-NEXT:     Type: 0xF1
272 MFILE32-NEXT:     PayloadSize: 0x4B
273 MFILE32:          ProcStart {
274 MFILE32-NEXT:       DisplayName: f
275 MFILE32-NEXT:       Section: _f
276 MFILE32-NEXT:       CodeSize: 0x14
277 MFILE32-NEXT:     }
278 MFILE32-NEXT:     ProcEnd
279 MFILE32:        ]
280 MFILE32-NEXT:   Subsection [
281 MFILE32-NEXT:     Type: 0xF2
282 MFILE32-NEXT:     PayloadSize: 0x64
283 MFILE32:          FunctionName: _f
284 MFILE32-NEXT:   ]
285 MFILE32-NEXT:   Subsection [
286 MFILE32-NEXT:     Type: 0xF4
287 MFILE32-NEXT:     PayloadSize: 0x28
288 MFILE32:        ]
289 MFILE32-NEXT:   Subsection [
290 MFILE32-NEXT:     Type: 0xF3
291 MFILE32-NEXT:     PayloadSize: 0x57
292 MFILE32:        ]
293 MFILE32-NEXT:   Subsection [
294 MFILE32-NEXT:     Type: 0xF1
295 MFILE32-NEXT:     PayloadSize: 0x8
296 MFILE32:        ]
297 MFILE32-NEXT:   FunctionLineTable [
298 MFILE32-NEXT:     FunctionName: _f
299 MFILE32-NEXT:     CodeSize: 0x14
300 MFILE32-NEXT:     FilenameSegment [
301 MFILE32-NEXT:       Filename: d:\input.c
302 MFILE32-NEXT:       +0x0: 3
303 MFILE32-NEXT:     ]
304 MFILE32-NEXT:     FilenameSegment [
305 MFILE32-NEXT:       Filename: d:\one.c
306 MFILE32-NEXT:       +0x3: 1
307 MFILE32-NEXT:     ]
308 MFILE32-NEXT:     FilenameSegment [
309 MFILE32-NEXT:       Filename: d:\two.c
310 MFILE32-NEXT:       +0x8: 2
311 MFILE32-NEXT:     ]
312 MFILE32-NEXT:     FilenameSegment [
313 MFILE32-NEXT:       Filename: d:\one.c
314 MFILE32-NEXT:       +0xD: 7
315 MFILE32-NEXT:       +0x12: 8
316 MFILE32-NEXT:     ]
317 MFILE32-NEXT:   ]
318 MFILE32-NEXT: ]
319
320 MFILE64:      CodeViewDebugInfo [
321 MFILE64-NEXT:   Magic: 0x4
322 MFILE64-NEXT:   Subsection [
323 MFILE64-NEXT:     Type: 0xF1
324 MFILE64-NEXT:     PayloadSize: 0x51
325 MFILE64:        ]
326 MFILE64-NEXT:   Subsection [
327 MFILE64-NEXT:     Type: 0xF1
328 MFILE64-NEXT:     PayloadSize: 0x4B
329 MFILE64:          ProcStart {
330 MFILE64-NEXT:       DisplayName: f
331 MFILE64-NEXT:       Section: f
332 MFILE64-NEXT:       CodeSize: 0x18
333 MFILE64-NEXT:     }
334 MFILE64-NEXT:     ProcEnd
335 MFILE64:        ]
336 MFILE64-NEXT:   Subsection [
337 MFILE64-NEXT:     Type: 0xF2
338 MFILE64-NEXT:     PayloadSize: 0x64
339 MFILE64:          FunctionName: f
340 MFILE64-NEXT:   ]
341 MFILE64-NEXT:   Subsection [
342 MFILE64-NEXT:     Type: 0xF4
343 MFILE64-NEXT:     PayloadSize: 0x28
344 MFILE64:        ]
345 MFILE64-NEXT:   Subsection [
346 MFILE64-NEXT:     Type: 0xF3
347 MFILE64-NEXT:     PayloadSize: 0x1E
348 MFILE64:        ]
349 MFILE64-NEXT:   Subsection [
350 MFILE64-NEXT:     Type: 0xF1
351 MFILE64-NEXT:     PayloadSize: 0x8
352 MFILE64:        ]
353 MFILE64-NEXT:   FunctionLineTable [
354 MFILE64-NEXT:     FunctionName: f
355 MFILE64-NEXT:     CodeSize: 0x18
356 MFILE64-NEXT:     FilenameSegment [
357 MFILE64-NEXT:       Filename: d:\input.c
358 MFILE64-NEXT:       +0x0: 3
359 MFILE64-NEXT:     ]
360 MFILE64-NEXT:     FilenameSegment [
361 MFILE64-NEXT:       Filename: d:\one.c
362 MFILE64-NEXT:       +0x4: 1
363 MFILE64-NEXT:     ]
364 MFILE64-NEXT:     FilenameSegment [
365 MFILE64-NEXT:       Filename: d:\two.c
366 MFILE64-NEXT:       +0x9: 2
367 MFILE64-NEXT:     ]
368 MFILE64-NEXT:     FilenameSegment [
369 MFILE64-NEXT:       Filename: d:\one.c
370 MFILE64-NEXT:       +0xE: 7
371 MFILE64-NEXT:       +0x13: 8
372 MFILE64-NEXT:     ]
373 MFILE64-NEXT:   ]
374 MFILE64-NEXT: ]
375
376 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
377 ; The following object files were generated using the following command:
378 ;   C:\src> cl /Z7 /Gy /c test.cc
379 ; with the following contents of C:\src\test.cc:
380 ;   int f()
381 ;   {
382 ;     return 0;
383 ;   }
384 ;
385 ;   int g()
386 ;   {
387 ;     return 0;
388 ;   }
389 ; using 32-version of CL v17.00.61030 and v18.00.21005.1 respectively.
390 RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/comdat-function-linetables.obj.coff-2012-i386 \
391 RUN:   | FileCheck %s -check-prefix MCOMDAT
392 RUN: llvm-readobj -s -codeview -section-symbols %p/Inputs/comdat-function-linetables.obj.coff-2013-i386 \
393 RUN:   | FileCheck %s -check-prefix MCOMDAT
394
395 MCOMDAT:      ProcStart {
396 MCOMDAT-NEXT:   DisplayName: f
397 MCOMDAT-NEXT:   Section: ?f@@YAHXZ
398 MCOMDAT-NEXT:   CodeSize: 0x7
399 MCOMDAT-NEXT: }
400 MCOMDAT:      FunctionLineTable [
401 MCOMDAT-NEXT:   FunctionName: ?f@@YAHXZ
402 MCOMDAT-NEXT:   CodeSize: 0x7
403 MCOMDAT-NEXT:   FilenameSegment [
404 MCOMDAT-NEXT:     Filename: c:\src\test.cc
405 MCOMDAT-NEXT:     +0x0: 2
406 MCOMDAT-NEXT:     +0x3: 3
407 MCOMDAT-NEXT:     +0x5: 4
408 MCOMDAT-NEXT:   ]
409 MCOMDAT-NEXT: ]
410 MCOMDAT:      ProcStart {
411 MCOMDAT-NEXT:   DisplayName: g
412 MCOMDAT-NEXT:   Section: ?g@@YAHXZ
413 MCOMDAT-NEXT:   CodeSize: 0x7
414 MCOMDAT-NEXT: }
415 MCOMDAT:      FunctionLineTable [
416 MCOMDAT-NEXT:   FunctionName: ?g@@YAHXZ
417 MCOMDAT-NEXT:   CodeSize: 0x7
418 MCOMDAT-NEXT:   FilenameSegment [
419 MCOMDAT-NEXT:     Filename: c:\src\test.cc
420 MCOMDAT-NEXT:     +0x0: 7
421 MCOMDAT-NEXT:     +0x3: 8
422 MCOMDAT-NEXT:     +0x5: 9
423 MCOMDAT-NEXT:   ]
424 MCOMDAT-NEXT: ]