llvm.org GIT mirror llvm / fdb7e91
llvm-dwarfdump: Add dwo parsing to --statistics. Add check for, and parsing of, .dwo files to Statistics.cpp; create a new getNon SkeletonUnitDie function for DWARFUnit.h Reviewers: dblaikie Differential Revision: https://review.llvm.org/D61755 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@360380 91177308-0d34-0410-b5e6-96231b3b80d8 Caroline Tice 5 months ago
4 changed file(s) with 1463 addition(s) and 1 deletion(s). Raw diff Collapse all Expand all
384384 return DWARFDie(this, &DieArray[0]);
385385 }
386386
387 DWARFDie getNonSkeletonUnitDIE(bool ExtractUnitDIEOnly = true) {
388 parseDWO();
389 if (DWO)
390 return DWO->getUnitDIE(ExtractUnitDIEOnly);
391 return getUnitDIE(ExtractUnitDIEOnly);
392 }
393
387394 const char *getCompilationDir();
388395 Optional getDWOId() {
389396 extractDIEsIfNeeded(/*CUDieOnly*/ true);
0 .text
1 .file "fibonacci.cc"
2 .globl _Z8real_fibiPi # -- Begin function _Z8real_fibiPi
3 .p2align 4, 0x90
4 .type _Z8real_fibiPi,@function
5 _Z8real_fibiPi: # @_Z8real_fibiPi
6 .Lfunc_begin0:
7 .file 1 "/usr/local/google3/cmtice/llvm.tot2/build/test/tools/llvm-dwarfdump/X86/Output/statistics-dwo.test.tmp" "fibonacci.cc"
8 .loc 1 5 0 # fibonacci.cc:5:0
9 .cfi_startproc
10 # %bb.0: # %entry
11 #DEBUG_VALUE: real_fib:x <- $edi
12 #DEBUG_VALUE: real_fib:answers <- $rsi
13 #DEBUG_VALUE: real_fib:x <- $edi
14 pushq %rbp
15 .cfi_def_cfa_offset 16
16 pushq %r14
17 .cfi_def_cfa_offset 24
18 pushq %rbx
19 .cfi_def_cfa_offset 32
20 .cfi_offset %rbx, -32
21 .cfi_offset %r14, -24
22 .cfi_offset %rbp, -16
23 .loc 1 8 7 prologue_end # fibonacci.cc:8:7
24 movslq %edi, %rbp
25 movl (%rsi,%rbp,4), %eax
26 .loc 1 8 20 is_stmt 0 # fibonacci.cc:8:20
27 cmpl $-1, %eax
28 .Ltmp0:
29 .loc 1 8 7 # fibonacci.cc:8:7
30 je .LBB0_1
31 .Ltmp1:
32 # %bb.2: # %cleanup
33 #DEBUG_VALUE: real_fib:answers <- $rsi
34 #DEBUG_VALUE: real_fib:x <- $edi
35 .loc 1 15 1 is_stmt 1 # fibonacci.cc:15:1
36 popq %rbx
37 .cfi_def_cfa_offset 24
38 popq %r14
39 .cfi_def_cfa_offset 16
40 popq %rbp
41 .cfi_def_cfa_offset 8
42 retq
43 .Ltmp2:
44 .LBB0_1: # %if.end
45 .cfi_def_cfa_offset 32
46 #DEBUG_VALUE: real_fib:answers <- $rsi
47 #DEBUG_VALUE: real_fib:x <- $edi
48 .loc 1 0 1 is_stmt 0 # fibonacci.cc:0:1
49 movq %rsi, %rbx
50 .Ltmp3:
51 #DEBUG_VALUE: real_fib:answers <- $rbx
52 .loc 1 11 22 is_stmt 1 # fibonacci.cc:11:22
53 leal -1(%rbp), %edi
54 .Ltmp4:
55 .loc 1 11 12 is_stmt 0 # fibonacci.cc:11:12
56 callq _Z8real_fibiPi
57 movl %eax, %r14d
58 .loc 1 11 47 # fibonacci.cc:11:47
59 leal -2(%rbp), %edi
60 .loc 1 11 37 # fibonacci.cc:11:37
61 movq %rbx, %rsi
62 callq _Z8real_fibiPi
63 .loc 1 11 35 # fibonacci.cc:11:35
64 addl %r14d, %eax
65 .Ltmp5:
66 #DEBUG_VALUE: real_fib:result <- $eax
67 .loc 1 12 16 is_stmt 1 # fibonacci.cc:12:16
68 movl %eax, (%rbx,%rbp,4)
69 .loc 1 15 1 # fibonacci.cc:15:1
70 popq %rbx
71 .Ltmp6:
72 .cfi_def_cfa_offset 24
73 popq %r14
74 .cfi_def_cfa_offset 16
75 popq %rbp
76 .cfi_def_cfa_offset 8
77 retq
78 .Ltmp7:
79 .Lfunc_end0:
80 .size _Z8real_fibiPi, .Lfunc_end0-_Z8real_fibiPi
81 .cfi_endproc
82 # -- End function
83 .globl _Z3fibi # -- Begin function _Z3fibi
84 .p2align 4, 0x90
85 .type _Z3fibi,@function
86 _Z3fibi: # @_Z3fibi
87 .Lfunc_begin1:
88 .loc 1 19 0 # fibonacci.cc:19:0
89 .cfi_startproc
90 # %bb.0: # %entry
91 #DEBUG_VALUE: fib:x <- $edi
92 movl $-1, %eax
93 #DEBUG_VALUE: fib:x <- $edi
94 .Ltmp8:
95 .loc 1 23 9 prologue_end # fibonacci.cc:23:9
96 cmpl $10, %edi
97 .Ltmp9:
98 .loc 1 23 7 is_stmt 0 # fibonacci.cc:23:7
99 jg .LBB1_2
100 .Ltmp10:
101 # %bb.1: # %for.body.preheader
102 #DEBUG_VALUE: fib:x <- $edi
103 subq $56, %rsp
104 .cfi_def_cfa_offset 64
105 .Ltmp11:
106 .loc 1 27 16 is_stmt 1 # fibonacci.cc:27:16
107 pcmpeqd %xmm0, %xmm0
108 movdqa %xmm0, (%rsp)
109 movdqu %xmm0, 28(%rsp)
110 movdqa %xmm0, 16(%rsp)
111 movabsq $4294967296, %rax # imm = 0x100000000
112 .Ltmp12:
113 #DEBUG_VALUE: fib:i <- undef
114 #DEBUG_VALUE: fib:i <- [DW_OP_plus_uconst 1, DW_OP_stack_value] undef
115 .loc 1 29 14 # fibonacci.cc:29:14
116 movq %rax, (%rsp)
117 .loc 1 31 14 # fibonacci.cc:31:14
118 movl $1, 8(%rsp)
119 movq %rsp, %rsi
120 .loc 1 33 10 # fibonacci.cc:33:10
121 callq _Z8real_fibiPi
122 .Ltmp13:
123 .loc 1 0 10 is_stmt 0 # fibonacci.cc:0:10
124 addq $56, %rsp
125 .cfi_def_cfa_offset 8
126 .LBB1_2: # %cleanup
127 .loc 1 34 1 is_stmt 1 # fibonacci.cc:34:1
128 retq
129 .Ltmp14:
130 .Lfunc_end1:
131 .size _Z3fibi, .Lfunc_end1-_Z3fibi
132 .cfi_endproc
133 # -- End function
134 .globl main # -- Begin function main
135 .p2align 4, 0x90
136 .type main,@function
137 main: # @main
138 .Lfunc_begin2:
139 .loc 1 37 0 # fibonacci.cc:37:0
140 .cfi_startproc
141 # %bb.0: # %entry
142 #DEBUG_VALUE: main:argc <- $edi
143 #DEBUG_VALUE: main:argv <- $rsi
144 #DEBUG_VALUE: fib:x <- 3
145 pushq %rbp
146 .cfi_def_cfa_offset 16
147 pushq %r14
148 .cfi_def_cfa_offset 24
149 pushq %rbx
150 .cfi_def_cfa_offset 32
151 subq $48, %rsp
152 .cfi_def_cfa_offset 80
153 .cfi_offset %rbx, -32
154 .cfi_offset %r14, -24
155 .cfi_offset %rbp, -16
156 .loc 1 27 16 prologue_end # fibonacci.cc:27:16
157 pcmpeqd %xmm0, %xmm0
158 movdqa %xmm0, (%rsp)
159 movdqu %xmm0, 28(%rsp)
160 movdqa %xmm0, 16(%rsp)
161 movabsq $4294967296, %r14 # imm = 0x100000000
162 .Ltmp15:
163 #DEBUG_VALUE: fib:i <- undef
164 #DEBUG_VALUE: fib:i <- [DW_OP_plus_uconst 1, DW_OP_stack_value] undef
165 .loc 1 29 14 # fibonacci.cc:29:14
166 movq %r14, (%rsp)
167 .loc 1 31 14 # fibonacci.cc:31:14
168 movl $1, 8(%rsp)
169 movq %rsp, %rbx
170 .loc 1 33 10 # fibonacci.cc:33:10
171 movl $3, %edi
172 .Ltmp16:
173 movq %rbx, %rsi
174 .Ltmp17:
175 callq _Z8real_fibiPi
176 .Ltmp18:
177 #DEBUG_VALUE: main:result <- $eax
178 .loc 1 41 3 # fibonacci.cc:41:3
179 movl $.L.str, %edi
180 movl %eax, %esi
181 xorl %eax, %eax
182 .Ltmp19:
183 callq printf
184 .Ltmp20:
185 .loc 1 27 16 # fibonacci.cc:27:16
186 pcmpeqd %xmm0, %xmm0
187 .Ltmp21:
188 #DEBUG_VALUE: fib:x <- 4
189 .loc 1 27 16 is_stmt 0 # fibonacci.cc:27:16
190 movdqa %xmm0, (%rsp)
191 movdqu %xmm0, 28(%rsp)
192 movdqa %xmm0, 16(%rsp)
193 .Ltmp22:
194 #DEBUG_VALUE: fib:i <- undef
195 #DEBUG_VALUE: fib:i <- [DW_OP_plus_uconst 1, DW_OP_stack_value] undef
196 .loc 1 29 14 is_stmt 1 # fibonacci.cc:29:14
197 movq %r14, (%rsp)
198 .loc 1 31 14 # fibonacci.cc:31:14
199 movl $1, 8(%rsp)
200 .loc 1 33 10 # fibonacci.cc:33:10
201 movl $4, %edi
202 movq %rbx, %rsi
203 callq _Z8real_fibiPi
204 .Ltmp23:
205 #DEBUG_VALUE: main:result <- $eax
206 .loc 1 43 3 # fibonacci.cc:43:3
207 movl $.L.str.1, %edi
208 movl %eax, %esi
209 xorl %eax, %eax
210 .Ltmp24:
211 callq printf
212 .Ltmp25:
213 .loc 1 27 16 # fibonacci.cc:27:16
214 pcmpeqd %xmm0, %xmm0
215 .Ltmp26:
216 #DEBUG_VALUE: fib:x <- 5
217 .loc 1 27 16 is_stmt 0 # fibonacci.cc:27:16
218 movdqa %xmm0, (%rsp)
219 movdqu %xmm0, 28(%rsp)
220 movdqa %xmm0, 16(%rsp)
221 .Ltmp27:
222 #DEBUG_VALUE: fib:i <- undef
223 #DEBUG_VALUE: fib:i <- [DW_OP_plus_uconst 1, DW_OP_stack_value] undef
224 .loc 1 29 14 is_stmt 1 # fibonacci.cc:29:14
225 movq %r14, (%rsp)
226 .loc 1 31 14 # fibonacci.cc:31:14
227 movl $1, 8(%rsp)
228 .loc 1 33 10 # fibonacci.cc:33:10
229 movl $5, %edi
230 movq %rbx, %rsi
231 callq _Z8real_fibiPi
232 .Ltmp28:
233 #DEBUG_VALUE: main:result <- $eax
234 .loc 1 45 3 # fibonacci.cc:45:3
235 movl $.L.str.2, %edi
236 movl %eax, %esi
237 xorl %eax, %eax
238 .Ltmp29:
239 callq printf
240 .Ltmp30:
241 .loc 1 27 16 # fibonacci.cc:27:16
242 pcmpeqd %xmm0, %xmm0
243 .Ltmp31:
244 #DEBUG_VALUE: fib:x <- 6
245 .loc 1 27 16 is_stmt 0 # fibonacci.cc:27:16
246 movdqa %xmm0, (%rsp)
247 movdqu %xmm0, 28(%rsp)
248 movdqa %xmm0, 16(%rsp)
249 .Ltmp32:
250 #DEBUG_VALUE: fib:i <- undef
251 #DEBUG_VALUE: fib:i <- [DW_OP_plus_uconst 1, DW_OP_stack_value] undef
252 .loc 1 29 14 is_stmt 1 # fibonacci.cc:29:14
253 movq %r14, (%rsp)
254 .loc 1 31 14 # fibonacci.cc:31:14
255 movl $1, 8(%rsp)
256 .loc 1 33 10 # fibonacci.cc:33:10
257 movl $6, %edi
258 movq %rbx, %rsi
259 callq _Z8real_fibiPi
260 .Ltmp33:
261 #DEBUG_VALUE: main:result <- $eax
262 .loc 1 47 3 # fibonacci.cc:47:3
263 movl $.L.str.3, %edi
264 movl %eax, %esi
265 xorl %eax, %eax
266 .Ltmp34:
267 callq printf
268 .Ltmp35:
269 .loc 1 27 16 # fibonacci.cc:27:16
270 pcmpeqd %xmm0, %xmm0
271 .Ltmp36:
272 #DEBUG_VALUE: fib:x <- 7
273 .loc 1 27 16 is_stmt 0 # fibonacci.cc:27:16
274 movdqa %xmm0, (%rsp)
275 movdqu %xmm0, 28(%rsp)
276 movdqa %xmm0, 16(%rsp)
277 .Ltmp37:
278 #DEBUG_VALUE: fib:i <- undef
279 #DEBUG_VALUE: fib:i <- [DW_OP_plus_uconst 1, DW_OP_stack_value] undef
280 .loc 1 29 14 is_stmt 1 # fibonacci.cc:29:14
281 movq %r14, (%rsp)
282 .loc 1 31 14 # fibonacci.cc:31:14
283 movl $1, 8(%rsp)
284 .loc 1 33 10 # fibonacci.cc:33:10
285 movl $7, %edi
286 movq %rbx, %rsi
287 callq _Z8real_fibiPi
288 .Ltmp38:
289 #DEBUG_VALUE: main:result <- $eax
290 .loc 1 49 3 # fibonacci.cc:49:3
291 movl $.L.str.4, %edi
292 movl %eax, %esi
293 xorl %eax, %eax
294 .Ltmp39:
295 callq printf
296 .Ltmp40:
297 .loc 1 27 16 # fibonacci.cc:27:16
298 pcmpeqd %xmm0, %xmm0
299 .Ltmp41:
300 #DEBUG_VALUE: fib:x <- 8
301 .loc 1 27 16 is_stmt 0 # fibonacci.cc:27:16
302 movdqa %xmm0, (%rsp)
303 movdqu %xmm0, 28(%rsp)
304 movdqa %xmm0, 16(%rsp)
305 .Ltmp42:
306 #DEBUG_VALUE: fib:i <- undef
307 #DEBUG_VALUE: fib:i <- [DW_OP_plus_uconst 1, DW_OP_stack_value] undef
308 .loc 1 29 14 is_stmt 1 # fibonacci.cc:29:14
309 movq %r14, (%rsp)
310 .loc 1 31 14 # fibonacci.cc:31:14
311 movl $1, 8(%rsp)
312 .loc 1 33 10 # fibonacci.cc:33:10
313 movl $8, %edi
314 movq %rbx, %rsi
315 callq _Z8real_fibiPi
316 movl %eax, %ebp
317 .Ltmp43:
318 #DEBUG_VALUE: main:result <- $ebp
319 .loc 1 51 3 # fibonacci.cc:51:3
320 movl $.L.str.5, %edi
321 movl %eax, %esi
322 xorl %eax, %eax
323 callq printf
324 .loc 1 52 3 # fibonacci.cc:52:3
325 movl $.L.str.6, %edi
326 movl %ebp, %esi
327 xorl %eax, %eax
328 callq printf
329 .Ltmp44:
330 .loc 1 27 16 # fibonacci.cc:27:16
331 pcmpeqd %xmm0, %xmm0
332 .Ltmp45:
333 #DEBUG_VALUE: fib:x <- 10
334 .loc 1 27 16 is_stmt 0 # fibonacci.cc:27:16
335 movdqa %xmm0, (%rsp)
336 movdqu %xmm0, 28(%rsp)
337 movdqa %xmm0, 16(%rsp)
338 .Ltmp46:
339 #DEBUG_VALUE: fib:i <- undef
340 #DEBUG_VALUE: fib:i <- [DW_OP_plus_uconst 1, DW_OP_stack_value] undef
341 .loc 1 29 14 is_stmt 1 # fibonacci.cc:29:14
342 movq %r14, (%rsp)
343 .loc 1 31 14 # fibonacci.cc:31:14
344 movl $1, 8(%rsp)
345 .loc 1 33 10 # fibonacci.cc:33:10
346 movl $10, %edi
347 movq %rbx, %rsi
348 callq _Z8real_fibiPi
349 .Ltmp47:
350 #DEBUG_VALUE: main:result <- $eax
351 .loc 1 54 3 # fibonacci.cc:54:3
352 movl $.L.str.7, %edi
353 movl %eax, %esi
354 xorl %eax, %eax
355 .Ltmp48:
356 callq printf
357 .loc 1 56 3 # fibonacci.cc:56:3
358 xorl %eax, %eax
359 addq $48, %rsp
360 .cfi_def_cfa_offset 32
361 popq %rbx
362 .cfi_def_cfa_offset 24
363 popq %r14
364 .cfi_def_cfa_offset 16
365 popq %rbp
366 .cfi_def_cfa_offset 8
367 retq
368 .Ltmp49:
369 .Lfunc_end2:
370 .size main, .Lfunc_end2-main
371 .cfi_endproc
372 # -- End function
373 .type .L.str,@object # @.str
374 .section .rodata.str1.1,"aMS",@progbits,1
375 .L.str:
376 .asciz "fibonacci(3) = %d\n"
377 .size .L.str, 19
378
379 .type .L.str.1,@object # @.str.1
380 .L.str.1:
381 .asciz "fibonacci(4) = %d\n"
382 .size .L.str.1, 19
383
384 .type .L.str.2,@object # @.str.2
385 .L.str.2:
386 .asciz "fibonacci(5) = %d\n"
387 .size .L.str.2, 19
388
389 .type .L.str.3,@object # @.str.3
390 .L.str.3:
391 .asciz "fibonacci(6) = %d\n"
392 .size .L.str.3, 19
393
394 .type .L.str.4,@object # @.str.4
395 .L.str.4:
396 .asciz "fibonacci(7) = %d\n"
397 .size .L.str.4, 19
398
399 .type .L.str.5,@object # @.str.5
400 .L.str.5:
401 .asciz "fibonacci(8) = %d\n"
402 .size .L.str.5, 19
403
404 .type .L.str.6,@object # @.str.6
405 .L.str.6:
406 .asciz "fibonacci(9) = %d\n"
407 .size .L.str.6, 19
408
409 .type .L.str.7,@object # @.str.7
410 .L.str.7:
411 .asciz "fibonacci(10) = %d\n"
412 .size .L.str.7, 20
413
414 .section .debug_str,"MS",@progbits,1
415 .Lskel_string0:
416 .asciz "/usr/local/google3/cmtice/llvm.tot2/build/test/tools/llvm-dwarfdump/X86/Output/statistics-dwo.test.tmp" # string offset=0
417 .Lskel_string1:
418 .asciz "fib" # string offset=71
419 .Lskel_string2:
420 .asciz "main" # string offset=75
421 .Lskel_string3:
422 .asciz "statistics-fib.split-dwarf.dwo" # string offset=80
423 .section .debug_loc.dwo,"e",@progbits
424 .Ldebug_loc0:
425 .byte 3
426 .byte 0
427 .long .Ltmp4-.Lfunc_begin0
428 .short 1 # Loc expr size
429 .byte 85 # super-register DW_OP_reg5
430 .byte 0
431 .Ldebug_loc1:
432 .byte 3
433 .byte 0
434 .long .Ltmp3-.Lfunc_begin0
435 .short 1 # Loc expr size
436 .byte 84 # DW_OP_reg4
437 .byte 3
438 .byte 9
439 .long .Ltmp6-.Ltmp3
440 .short 1 # Loc expr size
441 .byte 83 # DW_OP_reg3
442 .byte 0
443 .Ldebug_loc2:
444 .byte 3
445 .byte 10
446 .long .Lfunc_end0-.Ltmp5
447 .short 1 # Loc expr size
448 .byte 80 # super-register DW_OP_reg0
449 .byte 0
450 .Ldebug_loc3:
451 .byte 3
452 .byte 1
453 .long .Ltmp13-.Lfunc_begin1
454 .short 1 # Loc expr size
455 .byte 85 # super-register DW_OP_reg5
456 .byte 0
457 .Ldebug_loc4:
458 .byte 3
459 .byte 2
460 .long .Ltmp16-.Lfunc_begin2
461 .short 1 # Loc expr size
462 .byte 85 # super-register DW_OP_reg5
463 .byte 0
464 .Ldebug_loc5:
465 .byte 3
466 .byte 2
467 .long .Ltmp17-.Lfunc_begin2
468 .short 1 # Loc expr size
469 .byte 84 # DW_OP_reg4
470 .byte 0
471 .Ldebug_loc6:
472 .byte 3
473 .byte 11
474 .long .Ltmp19-.Ltmp18
475 .short 1 # Loc expr size
476 .byte 80 # super-register DW_OP_reg0
477 .byte 3
478 .byte 12
479 .long .Ltmp24-.Ltmp23
480 .short 1 # Loc expr size
481 .byte 80 # super-register DW_OP_reg0
482 .byte 3
483 .byte 13
484 .long .Ltmp29-.Ltmp28
485 .short 1 # Loc expr size
486 .byte 80 # super-register DW_OP_reg0
487 .byte 3
488 .byte 14
489 .long .Ltmp34-.Ltmp33
490 .short 1 # Loc expr size
491 .byte 80 # super-register DW_OP_reg0
492 .byte 3
493 .byte 15
494 .long .Ltmp39-.Ltmp38
495 .short 1 # Loc expr size
496 .byte 80 # super-register DW_OP_reg0
497 .byte 3
498 .byte 16
499 .long .Ltmp47-.Ltmp43
500 .short 1 # Loc expr size
501 .byte 86 # super-register DW_OP_reg6
502 .byte 3
503 .byte 17
504 .long .Ltmp48-.Ltmp47
505 .short 1 # Loc expr size
506 .byte 80 # super-register DW_OP_reg0
507 .byte 0
508 .Ldebug_loc7:
509 .byte 3
510 .byte 3
511 .long .Lfunc_end2-.Ltmp21
512 .short 3 # Loc expr size
513 .byte 17 # DW_OP_consts
514 .byte 4 # 4
515 .byte 159 # DW_OP_stack_value
516 .byte 0
517 .Ldebug_loc8:
518 .byte 3
519 .byte 4
520 .long .Lfunc_end2-.Ltmp26
521 .short 3 # Loc expr size
522 .byte 17 # DW_OP_consts
523 .byte 5 # 5
524 .byte 159 # DW_OP_stack_value
525 .byte 0
526 .Ldebug_loc9:
527 .byte 3
528 .byte 5
529 .long .Lfunc_end2-.Ltmp31
530 .short 3 # Loc expr size
531 .byte 17 # DW_OP_consts
532 .byte 6 # 6
533 .byte 159 # DW_OP_stack_value
534 .byte 0
535 .Ldebug_loc10:
536 .byte 3
537 .byte 6
538 .long .Lfunc_end2-.Ltmp36
539 .short 3 # Loc expr size
540 .byte 17 # DW_OP_consts
541 .byte 7 # 7
542 .byte 159 # DW_OP_stack_value
543 .byte 0
544 .Ldebug_loc11:
545 .byte 3
546 .byte 7
547 .long .Lfunc_end2-.Ltmp41
548 .short 3 # Loc expr size
549 .byte 17 # DW_OP_consts
550 .byte 8 # 8
551 .byte 159 # DW_OP_stack_value
552 .byte 0
553 .Ldebug_loc12:
554 .byte 3
555 .byte 8
556 .long .Lfunc_end2-.Ltmp45
557 .short 3 # Loc expr size
558 .byte 17 # DW_OP_consts
559 .byte 10 # 10
560 .byte 159 # DW_OP_stack_value
561 .byte 0
562 .section .debug_abbrev,"",@progbits
563 .byte 1 # Abbreviation Code
564 .byte 17 # DW_TAG_compile_unit
565 .byte 1 # DW_CHILDREN_yes
566 .byte 16 # DW_AT_stmt_list
567 .byte 23 # DW_FORM_sec_offset
568 # .byte 27 # DW_AT_comp_dir
569 # .byte 14 # DW_FORM_strp
570 .ascii "\264B" # DW_AT_GNU_pubnames
571 .byte 25 # DW_FORM_flag_present
572 .ascii "\260B" # DW_AT_GNU_dwo_name
573 .byte 14 # DW_FORM_strp
574 .ascii "\261B" # DW_AT_GNU_dwo_id
575 .byte 7 # DW_FORM_data8
576 .ascii "\262B" # DW_AT_GNU_ranges_base
577 .byte 23 # DW_FORM_sec_offset
578 .ascii "\263B" # DW_AT_GNU_addr_base
579 .byte 23 # DW_FORM_sec_offset
580 .byte 17 # DW_AT_low_pc
581 .byte 1 # DW_FORM_addr
582 .byte 18 # DW_AT_high_pc
583 .byte 6 # DW_FORM_data4
584 .byte 0 # EOM(1)
585 .byte 0 # EOM(2)
586 .byte 2 # Abbreviation Code
587 .byte 46 # DW_TAG_subprogram
588 .byte 0 # DW_CHILDREN_no
589 .byte 3 # DW_AT_name
590 .byte 14 # DW_FORM_strp
591 .byte 0 # EOM(1)
592 .byte 0 # EOM(2)
593 .byte 3 # Abbreviation Code
594 .byte 46 # DW_TAG_subprogram
595 .byte 1 # DW_CHILDREN_yes
596 .byte 17 # DW_AT_low_pc
597 .byte 1 # DW_FORM_addr
598 .byte 18 # DW_AT_high_pc
599 .byte 6 # DW_FORM_data4
600 .byte 3 # DW_AT_name
601 .byte 14 # DW_FORM_strp
602 .byte 0 # EOM(1)
603 .byte 0 # EOM(2)
604 .byte 4 # Abbreviation Code
605 .byte 29 # DW_TAG_inlined_subroutine
606 .byte 0 # DW_CHILDREN_no
607 .byte 49 # DW_AT_abstract_origin
608 .byte 19 # DW_FORM_ref4
609 .byte 85 # DW_AT_ranges
610 .byte 23 # DW_FORM_sec_offset
611 .byte 88 # DW_AT_call_file
612 .byte 11 # DW_FORM_data1
613 .byte 89 # DW_AT_call_line
614 .byte 11 # DW_FORM_data1
615 .byte 0 # EOM(1)
616 .byte 0 # EOM(2)
617 .byte 5 # Abbreviation Code
618 .byte 29 # DW_TAG_inlined_subroutine
619 .byte 0 # DW_CHILDREN_no
620 .byte 49 # DW_AT_abstract_origin
621 .byte 19 # DW_FORM_ref4
622 .byte 17 # DW_AT_low_pc
623 .byte 1 # DW_FORM_addr
624 .byte 18 # DW_AT_high_pc
625 .byte 6 # DW_FORM_data4
626 .byte 88 # DW_AT_call_file
627 .byte 11 # DW_FORM_data1
628 .byte 89 # DW_AT_call_line
629 .byte 11 # DW_FORM_data1
630 .byte 0 # EOM(1)
631 .byte 0 # EOM(2)
632 .byte 0 # EOM(3)
633 .section .debug_info,"",@progbits
634 .Lcu_begin0:
635 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
636 .Ldebug_info_start0:
637 .short 4 # DWARF version number
638 .long .debug_abbrev # Offset Into Abbrev. Section
639 .byte 8 # Address Size (in bytes)
640 .byte 1 # Abbrev [1] 0xb:0xbe DW_TAG_compile_unit
641 .long .Lline_table_start0 # DW_AT_stmt_list
642 # .long .Lskel_string0 # DW_AT_comp_dir
643 # DW_AT_GNU_pubnames
644 .long .Lskel_string3 # DW_AT_GNU_dwo_name
645 .quad -7268627715780183436 # DW_AT_GNU_dwo_id
646 .long .debug_ranges # DW_AT_GNU_ranges_base
647 .long .Laddr_table_base0 # DW_AT_GNU_addr_base
648 .quad .Lfunc_begin0 # DW_AT_low_pc
649 .long .Lfunc_end2-.Lfunc_begin0 # DW_AT_high_pc
650 .byte 2 # Abbrev [2] 0x34:0x5 DW_TAG_subprogram
651 .long .Lskel_string1 # DW_AT_name
652 .byte 3 # Abbrev [3] 0x39:0x8f DW_TAG_subprogram
653 .quad .Lfunc_begin2 # DW_AT_low_pc
654 .long .Lfunc_end2-.Lfunc_begin2 # DW_AT_high_pc
655 .long .Lskel_string2 # DW_AT_name
656 .byte 4 # Abbrev [4] 0x4a:0xb DW_TAG_inlined_subroutine
657 .long 52 # DW_AT_abstract_origin
658 .long .Ldebug_ranges1 # DW_AT_ranges
659 .byte 1 # DW_AT_call_file
660 .byte 40 # DW_AT_call_line
661 .byte 5 # Abbrev [5] 0x55:0x13 DW_TAG_inlined_subroutine
662 .long 52 # DW_AT_abstract_origin
663 .quad .Ltmp21 # DW_AT_low_pc
664 .long .Ltmp23-.Ltmp21 # DW_AT_high_pc
665 .byte 1 # DW_AT_call_file
666 .byte 42 # DW_AT_call_line
667 .byte 5 # Abbrev [5] 0x68:0x13 DW_TAG_inlined_subroutine
668 .long 52 # DW_AT_abstract_origin
669 .quad .Ltmp26 # DW_AT_low_pc
670 .long .Ltmp28-.Ltmp26 # DW_AT_high_pc
671 .byte 1 # DW_AT_call_file
672 .byte 44 # DW_AT_call_line
673 .byte 5 # Abbrev [5] 0x7b:0x13 DW_TAG_inlined_subroutine
674 .long 52 # DW_AT_abstract_origin
675 .quad .Ltmp31 # DW_AT_low_pc
676 .long .Ltmp33-.Ltmp31 # DW_AT_high_pc
677 .byte 1 # DW_AT_call_file
678 .byte 46 # DW_AT_call_line
679 .byte 5 # Abbrev [5] 0x8e:0x13 DW_TAG_inlined_subroutine
680 .long 52 # DW_AT_abstract_origin
681 .quad .Ltmp36 # DW_AT_low_pc
682 .long .Ltmp38-.Ltmp36 # DW_AT_high_pc
683 .byte 1 # DW_AT_call_file
684 .byte 48 # DW_AT_call_line
685 .byte 5 # Abbrev [5] 0xa1:0x13 DW_TAG_inlined_subroutine
686 .long 52 # DW_AT_abstract_origin
687 .quad .Ltmp41 # DW_AT_low_pc
688 .long .Ltmp43-.Ltmp41 # DW_AT_high_pc
689 .byte 1 # DW_AT_call_file
690 .byte 50 # DW_AT_call_line
691 .byte 5 # Abbrev [5] 0xb4:0x13 DW_TAG_inlined_subroutine
692 .long 52 # DW_AT_abstract_origin
693 .quad .Ltmp45 # DW_AT_low_pc
694 .long .Ltmp47-.Ltmp45 # DW_AT_high_pc
695 .byte 1 # DW_AT_call_file
696 .byte 53 # DW_AT_call_line
697 .byte 0 # End Of Children Mark
698 .byte 0 # End Of Children Mark
699 .Ldebug_info_end0:
700 .section .debug_ranges,"",@progbits
701 .Ldebug_ranges0:
702 .quad .Lfunc_begin2-.Lfunc_begin0
703 .quad .Ltmp18-.Lfunc_begin0
704 .quad .Ltmp20-.Lfunc_begin0
705 .quad .Ltmp21-.Lfunc_begin0
706 .quad .Ltmp25-.Lfunc_begin0
707 .quad .Ltmp26-.Lfunc_begin0
708 .quad .Ltmp30-.Lfunc_begin0
709 .quad .Ltmp31-.Lfunc_begin0
710 .quad .Ltmp35-.Lfunc_begin0
711 .quad .Ltmp36-.Lfunc_begin0
712 .quad .Ltmp40-.Lfunc_begin0
713 .quad .Ltmp41-.Lfunc_begin0
714 .quad .Ltmp44-.Lfunc_begin0
715 .quad .Ltmp45-.Lfunc_begin0
716 .quad 0
717 .quad 0
718 .Ldebug_ranges1:
719 .quad .Lfunc_begin2-.Lfunc_begin0
720 .quad .Ltmp18-.Lfunc_begin0
721 .quad .Ltmp20-.Lfunc_begin0
722 .quad .Ltmp21-.Lfunc_begin0
723 .quad .Ltmp25-.Lfunc_begin0
724 .quad .Ltmp26-.Lfunc_begin0
725 .quad .Ltmp30-.Lfunc_begin0
726 .quad .Ltmp31-.Lfunc_begin0
727 .quad .Ltmp35-.Lfunc_begin0
728 .quad .Ltmp36-.Lfunc_begin0
729 .quad .Ltmp40-.Lfunc_begin0
730 .quad .Ltmp41-.Lfunc_begin0
731 .quad .Ltmp44-.Lfunc_begin0
732 .quad .Ltmp45-.Lfunc_begin0
733 .quad 0
734 .quad 0
735 .section .debug_macinfo,"",@progbits
736 .byte 0 # End Of Macro List Mark
737 .section .debug_str.dwo,"eMS",@progbits,1
738 .Linfo_string0:
739 .asciz "_Z3fibi" # string offset=0
740 .Linfo_string1:
741 .asciz "fib" # string offset=8
742 .Linfo_string2:
743 .asciz "int" # string offset=12
744 .Linfo_string3:
745 .asciz "x" # string offset=16
746 .Linfo_string4:
747 .asciz "answers" # string offset=18
748 .Linfo_string5:
749 .asciz "__ARRAY_SIZE_TYPE__" # string offset=26
750 .Linfo_string6:
751 .asciz "i" # string offset=46
752 .Linfo_string7:
753 .asciz "_Z8real_fibiPi" # string offset=48
754 .Linfo_string8:
755 .asciz "real_fib" # string offset=63
756 .Linfo_string9:
757 .asciz "main" # string offset=72
758 .Linfo_string10:
759 .asciz "result" # string offset=77
760 .Linfo_string11:
761 .asciz "argc" # string offset=84
762 .Linfo_string12:
763 .asciz "argv" # string offset=89
764 .Linfo_string13:
765 .asciz "char" # string offset=94
766 .Linfo_string14:
767 .asciz "clang version 9.0.0 (trunk 358316)" # string offset=99
768 .Linfo_string15:
769 .asciz "fibonacci.cc" # string offset=134
770 .Linfo_string16:
771 .asciz "statistics-fib.split-dwarf.dwo" # string offset=147
772 .section .debug_str_offsets.dwo,"e",@progbits
773 .long 0
774 .long 8
775 .long 12
776 .long 16
777 .long 18
778 .long 26
779 .long 46
780 .long 48
781 .long 63
782 .long 72
783 .long 77
784 .long 84
785 .long 89
786 .long 94
787 .long 99
788 .long 134
789 .long 147
790 .section .debug_info.dwo,"e",@progbits
791 .long .Ldebug_info_dwo_end0-.Ldebug_info_dwo_start0 # Length of Unit
792 .Ldebug_info_dwo_start0:
793 .short 4 # DWARF version number
794 .long 0 # Offset Into Abbrev. Section
795 .byte 8 # Address Size (in bytes)
796 .byte 1 # Abbrev [1] 0xb:0x1d6 DW_TAG_compile_unit
797 .byte 14 # DW_AT_producer
798 .short 4 # DW_AT_language
799 .byte 15 # DW_AT_name
800 .byte 16 # DW_AT_GNU_dwo_name
801 .quad -7268627715780183436 # DW_AT_GNU_dwo_id
802 .byte 2 # Abbrev [2] 0x19:0x35 DW_TAG_subprogram
803 .byte 0 # DW_AT_low_pc
804 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
805 .byte 1 # DW_AT_frame_base
806 .byte 87
807 .byte 7 # DW_AT_linkage_name
808 .byte 8 # DW_AT_name
809 .byte 1 # DW_AT_decl_file
810 .byte 4 # DW_AT_decl_line
811 .long 148 # DW_AT_type
812 # DW_AT_external
813 .byte 3 # Abbrev [3] 0x29:0xc DW_TAG_formal_parameter
814 .long .Ldebug_loc0-.debug_loc.dwo # DW_AT_location
815 .byte 3 # DW_AT_name
816 .byte 1 # DW_AT_decl_file
817 .byte 4 # DW_AT_decl_line
818 .long 148 # DW_AT_type
819 .byte 3 # Abbrev [3] 0x35:0xc DW_TAG_formal_parameter
820 .long .Ldebug_loc1-.debug_loc.dwo # DW_AT_location
821 .byte 4 # DW_AT_name
822 .byte 1 # DW_AT_decl_file
823 .byte 4 # DW_AT_decl_line
824 .long 461 # DW_AT_type
825 .byte 4 # Abbrev [4] 0x41:0xc DW_TAG_variable
826 .long .Ldebug_loc2-.debug_loc.dwo # DW_AT_location
827 .byte 10 # DW_AT_name
828 .byte 1 # DW_AT_decl_file
829 .byte 6 # DW_AT_decl_line
830 .long 148 # DW_AT_type
831 .byte 0 # End Of Children Mark
832 .byte 5 # Abbrev [5] 0x4e:0x23 DW_TAG_subprogram
833 .byte 1 # DW_AT_low_pc
834 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc
835 .byte 1 # DW_AT_frame_base
836 .byte 87
837 .long 113 # DW_AT_abstract_origin
838 .byte 6 # Abbrev [6] 0x5a:0x9 DW_TAG_formal_parameter
839 .long .Ldebug_loc3-.debug_loc.dwo # DW_AT_location
840 .long 123 # DW_AT_abstract_origin
841 .byte 7 # Abbrev [7] 0x63:0x8 DW_TAG_variable
842 .byte 2 # DW_AT_location
843 .byte 145
844 .byte 0
845 .long 131 # DW_AT_abstract_origin
846 .byte 8 # Abbrev [8] 0x6b:0x5 DW_TAG_variable
847 .long 139 # DW_AT_abstract_origin
848 .byte 0 # End Of Children Mark
849 .byte 9 # Abbrev [9] 0x71:0x23 DW_TAG_subprogram
850 .byte 0 # DW_AT_linkage_name
851 .byte 1 # DW_AT_name
852 .byte 1 # DW_AT_decl_file
853 .byte 18 # DW_AT_decl_line
854 .long 148 # DW_AT_type
855 # DW_AT_external
856 .byte 1 # DW_AT_inline
857 .byte 10 # Abbrev [10] 0x7b:0x8 DW_TAG_formal_parameter
858 .byte 3 # DW_AT_name
859 .byte 1 # DW_AT_decl_file
860 .byte 18 # DW_AT_decl_line
861 .long 148 # DW_AT_type
862 .byte 11 # Abbrev [11] 0x83:0x8 DW_TAG_variable
863 .byte 4 # DW_AT_name
864 .byte 1 # DW_AT_decl_file
865 .byte 20 # DW_AT_decl_line
866 .long 152 # DW_AT_type
867 .byte 11 # Abbrev [11] 0x8b:0x8 DW_TAG_variable
868 .byte 6 # DW_AT_name
869 .byte 1 # DW_AT_decl_file
870 .byte 21 # DW_AT_decl_line
871 .long 148 # DW_AT_type
872 .byte 0 # End Of Children Mark
873 .byte 12 # Abbrev [12] 0x94:0x4 DW_TAG_base_type
874 .byte 2 # DW_AT_name
875 .byte 5 # DW_AT_encoding
876 .byte 4 # DW_AT_byte_size
877 .byte 13 # Abbrev [13] 0x98:0xc DW_TAG_array_type
878 .long 148 # DW_AT_type
879 .byte 14 # Abbrev [14] 0x9d:0x6 DW_TAG_subrange_type
880 .long 164 # DW_AT_type
881 .byte 11 # DW_AT_count
882 .byte 0 # End Of Children Mark
883 .byte 15 # Abbrev [15] 0xa4:0x4 DW_TAG_base_type
884 .byte 5 # DW_AT_name
885 .byte 8 # DW_AT_byte_size
886 .byte 7 # DW_AT_encoding
887 .byte 16 # Abbrev [16] 0xa8:0x125 DW_TAG_subprogram
888 .byte 2 # DW_AT_low_pc
889 .long .Lfunc_end2-.Lfunc_begin2 # DW_AT_high_pc
890 .byte 1 # DW_AT_frame_base
891 .byte 87
892 .byte 9 # DW_AT_name
893 .byte 1 # DW_AT_decl_file
894 .byte 36 # DW_AT_decl_line
895 .long 148 # DW_AT_type
896 # DW_AT_external
897 .byte 3 # Abbrev [3] 0xb7:0xc DW_TAG_formal_parameter
898 .long .Ldebug_loc4-.debug_loc.dwo # DW_AT_location
899 .byte 11 # DW_AT_name
900 .byte 1 # DW_AT_decl_file
901 .byte 36 # DW_AT_decl_line
902 .long 148 # DW_AT_type
903 .byte 3 # Abbrev [3] 0xc3:0xc DW_TAG_formal_parameter
904 .long .Ldebug_loc5-.debug_loc.dwo # DW_AT_location
905 .byte 12 # DW_AT_name
906 .byte 1 # DW_AT_decl_file
907 .byte 36 # DW_AT_decl_line
908 .long 466 # DW_AT_type
909 .byte 4 # Abbrev [4] 0xcf:0xc DW_TAG_variable
910 .long .Ldebug_loc6-.debug_loc.dwo # DW_AT_location
911 .byte 10 # DW_AT_name
912 .byte 1 # DW_AT_decl_file
913 .byte 38 # DW_AT_decl_line
914 .long 148 # DW_AT_type
915 .byte 17 # Abbrev [17] 0xdb:0x1f DW_TAG_inlined_subroutine
916 .long 113 # DW_AT_abstract_origin
917 .long .Ldebug_ranges0-.debug_ranges # DW_AT_ranges
918 .byte 1 # DW_AT_call_file
919 .byte 40 # DW_AT_call_line
920 .byte 18 # Abbrev [18] 0xe6:0x6 DW_TAG_formal_parameter
921 .byte 3 # DW_AT_const_value
922 .long 123 # DW_AT_abstract_origin
923 .byte 7 # Abbrev [7] 0xec:0x8 DW_TAG_variable
924 .byte 2 # DW_AT_location
925 .byte 145
926 .byte 0
927 .long 131 # DW_AT_abstract_origin
928 .byte 8 # Abbrev [8] 0xf4:0x5 DW_TAG_variable
929 .long 139 # DW_AT_abstract_origin
930 .byte 0 # End Of Children Mark
931 .byte 19 # Abbrev [19] 0xfa:0x23 DW_TAG_inlined_subroutine
932 .long 113 # DW_AT_abstract_origin
933 .byte 3 # DW_AT_low_pc
934 .long .Ltmp23-.Ltmp21 # DW_AT_high_pc
935 .byte 1 # DW_AT_call_file
936 .byte 42 # DW_AT_call_line
937 .byte 6 # Abbrev [6] 0x106:0x9 DW_TAG_formal_parameter
938 .long .Ldebug_loc7-.debug_loc.dwo # DW_AT_location
939 .long 123 # DW_AT_abstract_origin
940 .byte 7 # Abbrev [7] 0x10f:0x8 DW_TAG_variable
941 .byte 2 # DW_AT_location
942 .byte 145
943 .byte 0
944 .long 131 # DW_AT_abstract_origin
945 .byte 8 # Abbrev [8] 0x117:0x5 DW_TAG_variable
946 .long 139 # DW_AT_abstract_origin
947 .byte 0 # End Of Children Mark
948 .byte 19 # Abbrev [19] 0x11d:0x23 DW_TAG_inlined_subroutine
949 .long 113 # DW_AT_abstract_origin
950 .byte 4 # DW_AT_low_pc
951 .long .Ltmp28-.Ltmp26 # DW_AT_high_pc
952 .byte 1 # DW_AT_call_file
953 .byte 44 # DW_AT_call_line
954 .byte 6 # Abbrev [6] 0x129:0x9 DW_TAG_formal_parameter
955 .long .Ldebug_loc8-.debug_loc.dwo # DW_AT_location
956 .long 123 # DW_AT_abstract_origin
957 .byte 7 # Abbrev [7] 0x132:0x8 DW_TAG_variable
958 .byte 2 # DW_AT_location
959 .byte 145
960 .byte 0
961 .long 131 # DW_AT_abstract_origin
962 .byte 8 # Abbrev [8] 0x13a:0x5 DW_TAG_variable
963 .long 139 # DW_AT_abstract_origin
964 .byte 0 # End Of Children Mark
965 .byte 19 # Abbrev [19] 0x140:0x23 DW_TAG_inlined_subroutine
966 .long 113 # DW_AT_abstract_origin
967 .byte 5 # DW_AT_low_pc
968 .long .Ltmp33-.Ltmp31 # DW_AT_high_pc
969 .byte 1 # DW_AT_call_file
970 .byte 46 # DW_AT_call_line
971 .byte 6 # Abbrev [6] 0x14c:0x9 DW_TAG_formal_parameter
972 .long .Ldebug_loc9-.debug_loc.dwo # DW_AT_location
973 .long 123 # DW_AT_abstract_origin
974 .byte 7 # Abbrev [7] 0x155:0x8 DW_TAG_variable
975 .byte 2 # DW_AT_location
976 .byte 145
977 .byte 0
978 .long 131 # DW_AT_abstract_origin
979 .byte 8 # Abbrev [8] 0x15d:0x5 DW_TAG_variable
980 .long 139 # DW_AT_abstract_origin
981 .byte 0 # End Of Children Mark
982 .byte 19 # Abbrev [19] 0x163:0x23 DW_TAG_inlined_subroutine
983 .long 113 # DW_AT_abstract_origin
984 .byte 6 # DW_AT_low_pc
985 .long .Ltmp38-.Ltmp36 # DW_AT_high_pc
986 .byte 1 # DW_AT_call_file
987 .byte 48 # DW_AT_call_line
988 .byte 6 # Abbrev [6] 0x16f:0x9 DW_TAG_formal_parameter
989 .long .Ldebug_loc10-.debug_loc.dwo # DW_AT_location
990 .long 123 # DW_AT_abstract_origin
991 .byte 7 # Abbrev [7] 0x178:0x8 DW_TAG_variable
992 .byte 2 # DW_AT_location
993 .byte 145
994 .byte 0
995 .long 131 # DW_AT_abstract_origin
996 .byte 8 # Abbrev [8] 0x180:0x5 DW_TAG_variable
997 .long 139 # DW_AT_abstract_origin
998 .byte 0 # End Of Children Mark
999 .byte 19 # Abbrev [19] 0x186:0x23 DW_TAG_inlined_subroutine
1000 .long 113 # DW_AT_abstract_origin
1001 .byte 7 # DW_AT_low_pc
1002 .long .Ltmp43-.Ltmp41 # DW_AT_high_pc
1003 .byte 1 # DW_AT_call_file
1004 .byte 50 # DW_AT_call_line
1005 .byte 6 # Abbrev [6] 0x192:0x9 DW_TAG_formal_parameter
1006 .long .Ldebug_loc11-.debug_loc.dwo # DW_AT_location
1007 .long 123 # DW_AT_abstract_origin
1008 .byte 7 # Abbrev [7] 0x19b:0x8 DW_TAG_variable
1009 .byte 2 # DW_AT_location
1010 .byte 145
1011 .byte 0
1012 .long 131 # DW_AT_abstract_origin
1013 .byte 8 # Abbrev [8] 0x1a3:0x5 DW_TAG_variable
1014 .long 139 # DW_AT_abstract_origin
1015 .byte 0 # End Of Children Mark
1016 .byte 19 # Abbrev [19] 0x1a9:0x23 DW_TAG_inlined_subroutine
1017 .long 113 # DW_AT_abstract_origin
1018 .byte 8 # DW_AT_low_pc
1019 .long .Ltmp47-.Ltmp45 # DW_AT_high_pc
1020 .byte 1 # DW_AT_call_file
1021 .byte 53 # DW_AT_call_line
1022 .byte 6 # Abbrev [6] 0x1b5:0x9 DW_TAG_formal_parameter
1023 .long .Ldebug_loc12-.debug_loc.dwo # DW_AT_location
1024 .long 123 # DW_AT_abstract_origin
1025 .byte 7 # Abbrev [7] 0x1be:0x8 DW_TAG_variable
1026 .byte 2 # DW_AT_location
1027 .byte 145
1028 .byte 0
1029 .long 131 # DW_AT_abstract_origin
1030 .byte 8 # Abbrev [8] 0x1c6:0x5 DW_TAG_variable
1031 .long 139 # DW_AT_abstract_origin
1032 .byte 0 # End Of Children Mark
1033 .byte 0 # End Of Children Mark
1034 .byte 20 # Abbrev [20] 0x1cd:0x5 DW_TAG_pointer_type
1035 .long 148 # DW_AT_type
1036 .byte 20 # Abbrev [20] 0x1d2:0x5 DW_TAG_pointer_type
1037 .long 471 # DW_AT_type
1038 .byte 20 # Abbrev [20] 0x1d7:0x5 DW_TAG_pointer_type
1039 .long 476 # DW_AT_type
1040 .byte 12 # Abbrev [12] 0x1dc:0x4 DW_TAG_base_type
1041 .byte 13 # DW_AT_name
1042 .byte 6 # DW_AT_encoding
1043 .byte 1 # DW_AT_byte_size
1044 .byte 0 # End Of Children Mark
1045 .Ldebug_info_dwo_end0:
1046 .section .debug_abbrev.dwo,"e",@progbits
1047 .byte 1 # Abbreviation Code
1048 .byte 17 # DW_TAG_compile_unit
1049 .byte 1 # DW_CHILDREN_yes
1050 .byte 37 # DW_AT_producer
1051 .ascii "\202>" # DW_FORM_GNU_str_index
1052 .byte 19 # DW_AT_language
1053 .byte 5 # DW_FORM_data2
1054 .byte 3 # DW_AT_name
1055 .ascii "\202>" # DW_FORM_GNU_str_index
1056 .ascii "\260B" # DW_AT_GNU_dwo_name
1057 .ascii "\202>" # DW_FORM_GNU_str_index
1058 .ascii "\261B" # DW_AT_GNU_dwo_id
1059 .byte 7 # DW_FORM_data8
1060 .byte 0 # EOM(1)
1061 .byte 0 # EOM(2)
1062 .byte 2 # Abbreviation Code
1063 .byte 46 # DW_TAG_subprogram
1064 .byte 1 # DW_CHILDREN_yes
1065 .byte 17 # DW_AT_low_pc
1066 .ascii "\201>" # DW_FORM_GNU_addr_index
1067 .byte 18 # DW_AT_high_pc
1068 .byte 6 # DW_FORM_data4
1069 .byte 64 # DW_AT_frame_base
1070 .byte 24 # DW_FORM_exprloc
1071 .byte 110 # DW_AT_linkage_name
1072 .ascii "\202>" # DW_FORM_GNU_str_index
1073 .byte 3 # DW_AT_name
1074 .ascii "\202>" # DW_FORM_GNU_str_index
1075 .byte 58 # DW_AT_decl_file
1076 .byte 11 # DW_FORM_data1
1077 .byte 59 # DW_AT_decl_line
1078 .byte 11 # DW_FORM_data1
1079 .byte 73 # DW_AT_type
1080 .byte 19 # DW_FORM_ref4
1081 .byte 63 # DW_AT_external
1082 .byte 25 # DW_FORM_flag_present
1083 .byte 0 # EOM(1)
1084 .byte 0 # EOM(2)
1085 .byte 3 # Abbreviation Code
1086 .byte 5 # DW_TAG_formal_parameter
1087 .byte 0 # DW_CHILDREN_no
1088 .byte 2 # DW_AT_location
1089 .byte 23 # DW_FORM_sec_offset
1090 .byte 3 # DW_AT_name
1091 .ascii "\202>" # DW_FORM_GNU_str_index
1092 .byte 58 # DW_AT_decl_file
1093 .byte 11 # DW_FORM_data1
1094 .byte 59 # DW_AT_decl_line
1095 .byte 11 # DW_FORM_data1
1096 .byte 73 # DW_AT_type
1097 .byte 19 # DW_FORM_ref4
1098 .byte 0 # EOM(1)
1099 .byte 0 # EOM(2)
1100 .byte 4 # Abbreviation Code
1101 .byte 52 # DW_TAG_variable
1102 .byte 0 # DW_CHILDREN_no
1103 .byte 2 # DW_AT_location
1104 .byte 23 # DW_FORM_sec_offset
1105 .byte 3 # DW_AT_name
1106 .ascii "\202>" # DW_FORM_GNU_str_index
1107 .byte 58 # DW_AT_decl_file
1108 .byte 11 # DW_FORM_data1
1109 .byte 59 # DW_AT_decl_line
1110 .byte 11 # DW_FORM_data1
1111 .byte 73 # DW_AT_type
1112 .byte 19 # DW_FORM_ref4
1113 .byte 0 # EOM(1)
1114 .byte 0 # EOM(2)
1115 .byte 5 # Abbreviation Code
1116 .byte 46 # DW_TAG_subprogram
1117 .byte 1 # DW_CHILDREN_yes
1118 .byte 17 # DW_AT_low_pc
1119 .ascii "\201>" # DW_FORM_GNU_addr_index
1120 .byte 18 # DW_AT_high_pc
1121 .byte 6 # DW_FORM_data4
1122 .byte 64 # DW_AT_frame_base
1123 .byte 24 # DW_FORM_exprloc
1124 .byte 49 # DW_AT_abstract_origin
1125 .byte 19 # DW_FORM_ref4
1126 .byte 0 # EOM(1)
1127 .byte 0 # EOM(2)
1128 .byte 6 # Abbreviation Code
1129 .byte 5 # DW_TAG_formal_parameter
1130 .byte 0 # DW_CHILDREN_no
1131 .byte 2 # DW_AT_location
1132 .byte 23 # DW_FORM_sec_offset
1133 .byte 49 # DW_AT_abstract_origin
1134 .byte 19 # DW_FORM_ref4
1135 .byte 0 # EOM(1)
1136 .byte 0 # EOM(2)
1137 .byte 7 # Abbreviation Code
1138 .byte 52 # DW_TAG_variable
1139 .byte 0 # DW_CHILDREN_no
1140 .byte 2 # DW_AT_location
1141 .byte 24 # DW_FORM_exprloc
1142 .byte 49 # DW_AT_abstract_origin
1143 .byte 19 # DW_FORM_ref4
1144 .byte 0 # EOM(1)
1145 .byte 0 # EOM(2)
1146 .byte 8 # Abbreviation Code
1147 .byte 52 # DW_TAG_variable
1148 .byte 0 # DW_CHILDREN_no
1149 .byte 49 # DW_AT_abstract_origin
1150 .byte 19 # DW_FORM_ref4
1151 .byte 0 # EOM(1)
1152 .byte 0 # EOM(2)
1153 .byte 9 # Abbreviation Code
1154 .byte 46 # DW_TAG_subprogram
1155 .byte 1 # DW_CHILDREN_yes
1156 .byte 110 # DW_AT_linkage_name
1157 .ascii "\202>" # DW_FORM_GNU_str_index
1158 .byte 3 # DW_AT_name
1159 .ascii "\202>" # DW_FORM_GNU_str_index
1160 .byte 58 # DW_AT_decl_file
1161 .byte 11 # DW_FORM_data1
1162 .byte 59 # DW_AT_decl_line
1163 .byte 11 # DW_FORM_data1
1164 .byte 73 # DW_AT_type
1165 .byte 19 # DW_FORM_ref4
1166 .byte 63 # DW_AT_external
1167 .byte 25 # DW_FORM_flag_present
1168 .byte 32 # DW_AT_inline
1169 .byte 11 # DW_FORM_data1
1170 .byte 0 # EOM(1)
1171 .byte 0 # EOM(2)
1172 .byte 10 # Abbreviation Code
1173 .byte 5 # DW_TAG_formal_parameter
1174 .byte 0 # DW_CHILDREN_no
1175 .byte 3 # DW_AT_name
1176 .ascii "\202>" # DW_FORM_GNU_str_index
1177 .byte 58 # DW_AT_decl_file
1178 .byte 11 # DW_FORM_data1
1179 .byte 59 # DW_AT_decl_line
1180 .byte 11 # DW_FORM_data1
1181 .byte 73 # DW_AT_type
1182 .byte 19 # DW_FORM_ref4
1183 .byte 0 # EOM(1)
1184 .byte 0 # EOM(2)
1185 .byte 11 # Abbreviation Code
1186 .byte 52 # DW_TAG_variable
1187 .byte 0 # DW_CHILDREN_no
1188 .byte 3 # DW_AT_name
1189 .ascii "\202>" # DW_FORM_GNU_str_index
1190 .byte 58 # DW_AT_decl_file
1191 .byte 11 # DW_FORM_data1
1192 .byte 59 # DW_AT_decl_line
1193 .byte 11 # DW_FORM_data1
1194 .byte 73 # DW_AT_type
1195 .byte 19 # DW_FORM_ref4
1196 .byte 0 # EOM(1)
1197 .byte 0 # EOM(2)
1198 .byte 12 # Abbreviation Code
1199 .byte 36 # DW_TAG_base_type
1200 .byte 0 # DW_CHILDREN_no
1201 .byte 3 # DW_AT_name
1202 .ascii "\202>" # DW_FORM_GNU_str_index
1203 .byte 62 # DW_AT_encoding
1204 .byte 11 # DW_FORM_data1
1205 .byte 11 # DW_AT_byte_size
1206 .byte 11 # DW_FORM_data1
1207 .byte 0 # EOM(1)
1208 .byte 0 # EOM(2)
1209 .byte 13 # Abbreviation Code
1210 .byte 1 # DW_TAG_array_type
1211 .byte 1 # DW_CHILDREN_yes
1212 .byte 73 # DW_AT_type
1213 .byte 19 # DW_FORM_ref4
1214 .byte 0 # EOM(1)
1215 .byte 0 # EOM(2)
1216 .byte 14 # Abbreviation Code
1217 .byte 33 # DW_TAG_subrange_type
1218 .byte 0 # DW_CHILDREN_no
1219 .byte 73 # DW_AT_type
1220 .byte 19 # DW_FORM_ref4
1221 .byte 55 # DW_AT_count
1222 .byte 11 # DW_FORM_data1
1223 .byte 0 # EOM(1)
1224 .byte 0 # EOM(2)
1225 .byte 15 # Abbreviation Code
1226 .byte 36 # DW_TAG_base_type
1227 .byte 0 # DW_CHILDREN_no
1228 .byte 3 # DW_AT_name
1229 .ascii "\202>" # DW_FORM_GNU_str_index
1230 .byte 11 # DW_AT_byte_size
1231 .byte 11 # DW_FORM_data1
1232 .byte 62 # DW_AT_encoding
1233 .byte 11 # DW_FORM_data1
1234 .byte 0 # EOM(1)
1235 .byte 0 # EOM(2)
1236 .byte 16 # Abbreviation Code
1237 .byte 46 # DW_TAG_subprogram
1238 .byte 1 # DW_CHILDREN_yes
1239 .byte 17 # DW_AT_low_pc
1240 .ascii "\201>" # DW_FORM_GNU_addr_index
1241 .byte 18 # DW_AT_high_pc
1242 .byte 6 # DW_FORM_data4
1243 .byte 64 # DW_AT_frame_base
1244 .byte 24 # DW_FORM_exprloc
1245 .byte 3 # DW_AT_name
1246 .ascii "\202>" # DW_FORM_GNU_str_index
1247 .byte 58 # DW_AT_decl_file
1248 .byte 11 # DW_FORM_data1
1249 .byte 59 # DW_AT_decl_line
1250 .byte 11 # DW_FORM_data1
1251 .byte 73 # DW_AT_type
1252 .byte 19 # DW_FORM_ref4
1253 .byte 63 # DW_AT_external
1254 .byte 25 # DW_FORM_flag_present
1255 .byte 0 # EOM(1)
1256 .byte 0 # EOM(2)
1257 .byte 17 # Abbreviation Code
1258 .byte 29 # DW_TAG_inlined_subroutine
1259 .byte 1 # DW_CHILDREN_yes
1260 .byte 49 # DW_AT_abstract_origin
1261 .byte 19 # DW_FORM_ref4
1262 .byte 85 # DW_AT_ranges
1263 .byte 23 # DW_FORM_sec_offset
1264 .byte 88 # DW_AT_call_file
1265 .byte 11 # DW_FORM_data1
1266 .byte 89 # DW_AT_call_line
1267 .byte 11 # DW_FORM_data1
1268 .byte 0 # EOM(1)
1269 .byte 0 # EOM(2)
1270 .byte 18 # Abbreviation Code
1271 .byte 5 # DW_TAG_formal_parameter
1272 .byte 0 # DW_CHILDREN_no
1273 .byte 28 # DW_AT_const_value
1274 .byte 13 # DW_FORM_sdata
1275 .byte 49 # DW_AT_abstract_origin
1276 .byte 19 # DW_FORM_ref4
1277 .byte 0 # EOM(1)
1278 .byte 0 # EOM(2)
1279 .byte 19 # Abbreviation Code
1280 .byte 29 # DW_TAG_inlined_subroutine
1281 .byte 1 # DW_CHILDREN_yes
1282 .byte 49 # DW_AT_abstract_origin
1283 .byte 19 # DW_FORM_ref4
1284 .byte 17 # DW_AT_low_pc
1285 .ascii "\201>" # DW_FORM_GNU_addr_index
1286 .byte 18 # DW_AT_high_pc
1287 .byte 6 # DW_FORM_data4
1288 .byte 88 # DW_AT_call_file
1289 .byte 11 # DW_FORM_data1
1290 .byte 89 # DW_AT_call_line
1291 .byte 11 # DW_FORM_data1
1292 .byte 0 # EOM(1)
1293 .byte 0 # EOM(2)
1294 .byte 20 # Abbreviation Code
1295 .byte 15 # DW_TAG_pointer_type
1296 .byte 0 # DW_CHILDREN_no
1297 .byte 73 # DW_AT_type
1298 .byte 19 # DW_FORM_ref4
1299 .byte 0 # EOM(1)
1300 .byte 0 # EOM(2)
1301 .byte 0 # EOM(3)
1302 .section .debug_addr,"",@progbits
1303 .Laddr_table_base0:
1304 .quad .Lfunc_begin0
1305 .quad .Lfunc_begin1
1306 .quad .Lfunc_begin2
1307 .quad .Ltmp21
1308 .quad .Ltmp26
1309 .quad .Ltmp31
1310 .quad .Ltmp36
1311 .quad .Ltmp41
1312 .quad .Ltmp45
1313 .quad .Ltmp3
1314 .quad .Ltmp5
1315 .quad .Ltmp18
1316 .quad .Ltmp23
1317 .quad .Ltmp28
1318 .quad .Ltmp33
1319 .quad .Ltmp38
1320 .quad .Ltmp43
1321 .quad .Ltmp47
1322 .section .debug_gnu_pubnames,"",@progbits
1323 .long .LpubNames_end0-.LpubNames_begin0 # Length of Public Names Info
1324 .LpubNames_begin0:
1325 .short 2 # DWARF Version
1326 .long .Lcu_begin0 # Offset of Compilation Unit Info
1327 .long 201 # Compilation Unit Length
1328 .long 113 # DIE offset
1329 .byte 48 # Attributes: FUNCTION, EXTERNAL
1330 .asciz "fib" # External Name
1331 .long 25 # DIE offset
1332 .byte 48 # Attributes: FUNCTION, EXTERNAL
1333 .asciz "real_fib" # External Name
1334 .long 168 # DIE offset
1335 .byte 48 # Attributes: FUNCTION, EXTERNAL
1336 .asciz "main" # External Name
1337 .long 0 # End Mark
1338 .LpubNames_end0:
1339 .section .debug_gnu_pubtypes,"",@progbits
1340 .long .LpubTypes_end0-.LpubTypes_begin0 # Length of Public Types Info
1341 .LpubTypes_begin0:
1342 .short 2 # DWARF Version
1343 .long .Lcu_begin0 # Offset of Compilation Unit Info
1344 .long 201 # Compilation Unit Length
1345 .long 148 # DIE offset
1346 .byte 144 # Attributes: TYPE, STATIC
1347 .asciz "int" # External Name
1348 .long 476 # DIE offset
1349 .byte 144 # Attributes: TYPE, STATIC
1350 .asciz "char" # External Name
1351 .long 0 # End Mark
1352 .LpubTypes_end0:
1353
1354 .ident "clang version 9.0.0 (trunk 358316)"
1355 .section ".note.GNU-stack","",@progbits
1356 .addrsig
1357 .section .debug_line,"",@progbits
1358 .Lline_table_start0:
0 # Test of the llmv-dwarfdump --statistics with split dwarf (dwo files)
1 # (version 3).
2 #
3 # Create a directory in which to put all files, so .o file can find .dwo file.
4 RUN: rm -rf %t && mkdir -p %t
5 RUN: cp -f %S/Inputs/statistics-fib.split-dwarf.s %t/.
6 RUN: cd %t
7 RUN: llvm-mc -triple x86_64-unknown-linux-gnu statistics-fib.split-dwarf.s -filetype=obj -split-dwarf-file statistics-fib.split-dwarf.dwo -o statistics-fib.split-dwarf.o
8 RUN: llvm-dwarfdump --statistics statistics-fib.split-dwarf.o | FileCheck %s
9
10 # Source program - A version of Fibonacci
11 # Compilation options: -gsplit-dwarf -O3 -c -S
12 #
13 # int
14 # real_fib (int x, int answers[11])
15 # {
16 # int result;
17 #
18 # if ((answers)[x] != -1)
19 # return (answers)[x];
20 #
21 # result = real_fib(x-1, answers) + real_fib(x-2, answers);
22 # (answers)[x] = result;
23 #
24 # return result;
25 # }
26 #
27 # int
28 # fib (int x)
29 # {
30 # int answers[11];
31 # int i;
32 #
33 # if (x > 10)
34 # return -1;
35 #
36 # for (i = 0; i < 11; i++)
37 # answers[i] = -1;
38 #
39 # answers[0] = 0;
40 # answers[1] = 1;
41 # answers[2] = 1;
42 #
43 # return real_fib(x, answers);
44 # }
45 #
46 # int main (int argc, char **argv)
47 # {
48 # int result;
49 #
50 # result = fib(3);
51 # printf ("fibonacci(3) = %d\n", result);
52 # result = fib(4);
53 # printf ("fibonacci(4) = %d\n", result);
54 # result = fib(5);
55 # printf ("fibonacci(5) = %d\n", result);
56 # result = fib(6);
57 # printf ("fibonacci(6) = %d\n", result);
58 # result = fib(7);
59 # printf ("fibonacci(7) = %d\n", result);
60 # result = fib(8);
61 # printf ("fibonacci(8) = %d\n", result);
62 # result = fib(9);
63 # printf ("fibonacci(9) = %d\n", result);
64 # result = fib(10);
65 # printf ("fibonacci(10) = %d\n", result);
66 #
67 # return 0;
68 # }
69 #
70
71 CHECK: "version":3
72 CHECK: "source functions":3
73 CHECK: "source functions with location":3
74 CHECK: "inlined functions":7
75 CHECK: "inlined funcs with abstract origins":7
76 CHECK: "unique source variables":9
77 CHECK: "source variables":30
78
79 # Ideally the value below would be 33 but currently it's not.
80 CHECK: "variables with location":22
81 CHECK: "call site entries":7
82 CHECK: "scope bytes total":2817
83 CHECK: "scope bytes covered":506
84 CHECK: "total function size":594
85 CHECK: "total inlined function size":345
86 CHECK: "total formal params":12
87 CHECK: "formal params with source location":12
88 CHECK: "formal params with type":12
89 CHECK: "formal params with binary location":12
90 CHECK: "total vars":18
91 CHECK: "vars with source location":18
92 CHECK: "vars with type":18
93
94 # Ideally the value below would be 18, but currently it's not.
95 CHECK: "vars with binary location":10
322322 GlobalStats GlobalStats;
323323 StringMap Statistics;
324324 for (const auto &CU : static_cast(&DICtx)->compile_units())
325 if (DWARFDie CUDie = CU->getUnitDIE(false))
325 if (DWARFDie CUDie = CU->getNonSkeletonUnitDIE(false))
326326 collectStatsRecursive(CUDie, "/", "g", 0, 0, 0, Statistics, GlobalStats);
327327
328328 /// The version number should be increased every time the algorithm is changed