1 # REQUIRES: system-linux
3 # RUN: llvm-mc -dwarf-version=4 -filetype=obj -triple x86_64-unknown-linux %s -o %t.o
4 # RUN: %clang %cflags -gdwarf-4 %t.o -o %t.exe
5 # RUN: llvm-bolt %t.exe -o %t.bolt --update-debug-sections
6 # RUN: llvm-dwarfdump --show-form --verbose --debug-info %t.bolt | FileCheck --check-prefix=POSTCHECK %s
8 # This test checks that BOLT handles correctly backward and forward cross CU references
9 # for DWARF4 with -fdebug-types-section
11 # POSTCHECK: version = 0x0004
12 # POSTCHECK: DW_TAG_variable [10]
13 # POSTCHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000112 "Foo2a")
15 # POSTCHECK: version = 0x0004
16 # POSTCHECK: DW_TAG_variable [10]
17 # POSTCHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000094 "Foo")
18 # POSTCHECK: DW_TAG_variable [10]
19 # POSTCHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000190 "Foo3a")
31 # int main(int argc, char *argv[]) {
34 # f.c2 = argv[argc + 1];
35 # f.c3 = argv[argc + 2];
37 # f.c1 = argv[argc + 3];
38 # f.c2 = argv[argc + 4];
79 .globl main # -- Begin function main
84 .file 1 "/dwarf4-types-forward-cross-reference-test" "main.cpp"
85 .loc 1 10 0 # main.cpp:10:0
89 .cfi_def_cfa_offset 16
92 .cfi_def_cfa_register %rbp
97 .loc 1 12 9 prologue_end # main.cpp:12:9
100 movq
(%rax
,%rcx
,8), %rax
101 .loc 1 12 7 is_stmt 0 # main.cpp:12:7
103 .loc 1 13 9 is_stmt 1 # main.cpp:13:9
105 .loc 1 13 14 is_stmt 0 # main.cpp:13:14
107 .loc 1 13 19 # main.cpp:13:19
109 .loc 1 13 9 # main.cpp:13:9
111 movq
(%rax
,%rcx
,8), %rax
112 .loc 1 13 7 # main.cpp:13:7
114 .loc 1 14 9 is_stmt 1 # main.cpp:14:9
116 .loc 1 14 14 is_stmt 0 # main.cpp:14:14
118 .loc 1 14 19 # main.cpp:14:19
120 .loc 1 14 9 # main.cpp:14:9
122 movq
(%rax
,%rcx
,8), %rax
123 .loc 1 14 7 # main.cpp:14:7
125 .loc 1 16 9 is_stmt 1 # main.cpp:16:9
127 .loc 1 16 14 is_stmt 0 # main.cpp:16:14
129 .loc 1 16 19 # main.cpp:16:19
131 .loc 1 16 9 # main.cpp:16:9
133 movq
(%rax
,%rcx
,8), %rax
134 .loc 1 16 7 # main.cpp:16:7
136 .loc 1 17 9 is_stmt 1 # main.cpp:17:9
138 .loc 1 17 14 is_stmt 0 # main.cpp:17:14
140 .loc 1 17 19 # main.cpp:17:19
142 .loc 1 17 9 # main.cpp:17:9
144 movq
(%rax
,%rcx
,8), %rax
145 .loc 1 17 7 # main.cpp:17:7
147 .loc 1 18 2 is_stmt 1 # main.cpp:18:2
149 .loc 1 18 2 epilogue_begin is_stmt 0 # main.cpp:18:2
155 .size main, .Lfunc_end0-main
158 .globl _Z3foov # -- Begin function _Z3foov
160 .type _Z3foov,@function
163 .file 2 "/dwarf4-types-forward-cross-reference-test" "helper.cpp"
164 .loc 2 11 0 is_stmt 1 # helper.cpp:11:0
168 .cfi_def_cfa_offset 16
169 .cfi_offset %rbp, -16
171 .cfi_def_cfa_register %rbp
173 .loc 2 14 3 prologue_end # helper.cpp:14:3
175 .loc 2 14 3 epilogue_begin is_stmt 0 # helper.cpp:14:3
181 .size _Z3foov, .Lfunc_end1-_Z3foov
184 .globl _Z4foo2v # -- Begin function _Z4foo2v
186 .type _Z4foo2v,@function
187 _Z4foo2v
: # @_Z4foo2v
189 .file 3 "/dwarf4-types-forward-cross-reference-test" "helper1.cpp"
190 .loc 3 11 0 is_stmt 1 # helper1.cpp:11:0
194 .cfi_def_cfa_offset 16
195 .cfi_offset %rbp, -16
197 .cfi_def_cfa_register %rbp
199 .loc 3 14 3 prologue_end # helper1.cpp:14:3
201 .loc 3 14 3 epilogue_begin is_stmt 0 # helper1.cpp:14:3
207 .size _Z4foo2v, .Lfunc_end2-_Z4foo2v
210 .section .debug_types,"G",@progbits,7448148824980338162,comdat
211 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
213 .short 4 # DWARF version number
214 .long .debug_abbrev # Offset Into Abbrev. Section
215 .byte 8 # Address Size (in bytes)
216 .quad 7448148824980338162 # Type Signature
217 .long 30 # Type DIE Offset
218 .byte 1 # Abbrev [1] 0x17:0x42 DW_TAG_type_unit
219 .short 33 # DW_AT_language
220 .long .Lline_table_start0 # DW_AT_stmt_list
221 .byte 2 # Abbrev [2] 0x1e:0x2e DW_TAG_structure_type
222 .byte 5 # DW_AT_calling_convention
223 .long .Linfo_string18 # DW_AT_name
224 .byte 24 # DW_AT_byte_size
225 .byte 1 # DW_AT_decl_file
226 .byte 1 # DW_AT_decl_line
227 .byte 3 # Abbrev [3] 0x27:0xc DW_TAG_member
228 .long .Linfo_string15 # DW_AT_name
229 .long 76 # DW_AT_type
230 .byte 1 # DW_AT_decl_file
231 .byte 2 # DW_AT_decl_line
232 .byte 0 # DW_AT_data_member_location
233 .byte 3 # Abbrev [3] 0x33:0xc DW_TAG_member
234 .long .Linfo_string16 # DW_AT_name
235 .long 76 # DW_AT_type
236 .byte 1 # DW_AT_decl_file
237 .byte 3 # DW_AT_decl_line
238 .byte 8 # DW_AT_data_member_location
239 .byte 3 # Abbrev [3] 0x3f:0xc DW_TAG_member
240 .long .Linfo_string17 # DW_AT_name
241 .long 76 # DW_AT_type
242 .byte 1 # DW_AT_decl_file
243 .byte 4 # DW_AT_decl_line
244 .byte 16 # DW_AT_data_member_location
245 .byte 0 # End Of Children Mark
246 .byte 4 # Abbrev [4] 0x4c:0x5 DW_TAG_pointer_type
247 .long 81 # DW_AT_type
248 .byte 5 # Abbrev [5] 0x51:0x7 DW_TAG_base_type
249 .long .Linfo_string13 # DW_AT_name
250 .byte 6 # DW_AT_encoding
251 .byte 1 # DW_AT_byte_size
252 .byte 0 # End Of Children Mark
254 .section .debug_types,"G",@progbits,5322170643381124694,comdat
255 .long .Ldebug_info_end1-.Ldebug_info_start1 # Length of Unit
257 .short 4 # DWARF version number
258 .long .debug_abbrev # Offset Into Abbrev. Section
259 .byte 8 # Address Size (in bytes)
260 .quad 5322170643381124694 # Type Signature
261 .long 30 # Type DIE Offset
262 .byte 1 # Abbrev [1] 0x17:0x36 DW_TAG_type_unit
263 .short 33 # DW_AT_language
264 .long .Lline_table_start0 # DW_AT_stmt_list
265 .byte 2 # Abbrev [2] 0x1e:0x22 DW_TAG_structure_type
266 .byte 5 # DW_AT_calling_convention
267 .long .Linfo_string20 # DW_AT_name
268 .byte 16 # DW_AT_byte_size
269 .byte 1 # DW_AT_decl_file
270 .byte 6 # DW_AT_decl_line
271 .byte 3 # Abbrev [3] 0x27:0xc DW_TAG_member
272 .long .Linfo_string15 # DW_AT_name
273 .long 64 # DW_AT_type
274 .byte 1 # DW_AT_decl_file
275 .byte 7 # DW_AT_decl_line
276 .byte 0 # DW_AT_data_member_location
277 .byte 3 # Abbrev [3] 0x33:0xc DW_TAG_member
278 .long .Linfo_string16 # DW_AT_name
279 .long 64 # DW_AT_type
280 .byte 1 # DW_AT_decl_file
281 .byte 8 # DW_AT_decl_line
282 .byte 8 # DW_AT_data_member_location
283 .byte 0 # End Of Children Mark
284 .byte 4 # Abbrev [4] 0x40:0x5 DW_TAG_pointer_type
285 .long 69 # DW_AT_type
286 .byte 5 # Abbrev [5] 0x45:0x7 DW_TAG_base_type
287 .long .Linfo_string13 # DW_AT_name
288 .byte 6 # DW_AT_encoding
289 .byte 1 # DW_AT_byte_size
290 .byte 0 # End Of Children Mark
292 .section .debug_types,"G",@progbits,1175092228111723119,comdat
293 .long .Ldebug_info_end2-.Ldebug_info_start2 # Length of Unit
295 .short 4 # DWARF version number
296 .long .debug_abbrev # Offset Into Abbrev. Section
297 .byte 8 # Address Size (in bytes)
298 .quad 1175092228111723119 # Type Signature
299 .long 30 # Type DIE Offset
300 .byte 1 # Abbrev [1] 0x17:0x42 DW_TAG_type_unit
301 .short 33 # DW_AT_language
302 .long .Lline_table_start0 # DW_AT_stmt_list
303 .byte 2 # Abbrev [2] 0x1e:0x2e DW_TAG_structure_type
304 .byte 5 # DW_AT_calling_convention
305 .long .Linfo_string21 # DW_AT_name
306 .byte 24 # DW_AT_byte_size
307 .byte 2 # DW_AT_decl_file
308 .byte 1 # DW_AT_decl_line
309 .byte 3 # Abbrev [3] 0x27:0xc DW_TAG_member
310 .long .Linfo_string15 # DW_AT_name
311 .long 76 # DW_AT_type
312 .byte 2 # DW_AT_decl_file
313 .byte 2 # DW_AT_decl_line
314 .byte 0 # DW_AT_data_member_location
315 .byte 3 # Abbrev [3] 0x33:0xc DW_TAG_member
316 .long .Linfo_string16 # DW_AT_name
317 .long 76 # DW_AT_type
318 .byte 2 # DW_AT_decl_file
319 .byte 3 # DW_AT_decl_line
320 .byte 8 # DW_AT_data_member_location
321 .byte 3 # Abbrev [3] 0x3f:0xc DW_TAG_member
322 .long .Linfo_string17 # DW_AT_name
323 .long 76 # DW_AT_type
324 .byte 2 # DW_AT_decl_file
325 .byte 4 # DW_AT_decl_line
326 .byte 16 # DW_AT_data_member_location
327 .byte 0 # End Of Children Mark
328 .byte 4 # Abbrev [4] 0x4c:0x5 DW_TAG_pointer_type
329 .long 81 # DW_AT_type
330 .byte 5 # Abbrev [5] 0x51:0x7 DW_TAG_base_type
331 .long .Linfo_string13 # DW_AT_name
332 .byte 6 # DW_AT_encoding
333 .byte 1 # DW_AT_byte_size
334 .byte 0 # End Of Children Mark
336 .section .debug_types,"G",@progbits,12995149649732825572,comdat
337 .long .Ldebug_info_end3-.Ldebug_info_start3 # Length of Unit
339 .short 4 # DWARF version number
340 .long .debug_abbrev # Offset Into Abbrev. Section
341 .byte 8 # Address Size (in bytes)
342 .quad -5451594423976726044 # Type Signature
343 .long 30 # Type DIE Offset
344 .byte 1 # Abbrev [1] 0x17:0x36 DW_TAG_type_unit
345 .short 33 # DW_AT_language
346 .long .Lline_table_start0 # DW_AT_stmt_list
347 .byte 2 # Abbrev [2] 0x1e:0x22 DW_TAG_structure_type
348 .byte 5 # DW_AT_calling_convention
349 .long .Linfo_string22 # DW_AT_name
350 .byte 16 # DW_AT_byte_size
351 .byte 2 # DW_AT_decl_file
352 .byte 6 # DW_AT_decl_line
353 .byte 3 # Abbrev [3] 0x27:0xc DW_TAG_member
354 .long .Linfo_string15 # DW_AT_name
355 .long 64 # DW_AT_type
356 .byte 2 # DW_AT_decl_file
357 .byte 7 # DW_AT_decl_line
358 .byte 0 # DW_AT_data_member_location
359 .byte 3 # Abbrev [3] 0x33:0xc DW_TAG_member
360 .long .Linfo_string16 # DW_AT_name
361 .long 64 # DW_AT_type
362 .byte 2 # DW_AT_decl_file
363 .byte 8 # DW_AT_decl_line
364 .byte 8 # DW_AT_data_member_location
365 .byte 0 # End Of Children Mark
366 .byte 4 # Abbrev [4] 0x40:0x5 DW_TAG_pointer_type
367 .long 69 # DW_AT_type
368 .byte 5 # Abbrev [5] 0x45:0x7 DW_TAG_base_type
369 .long .Linfo_string13 # DW_AT_name
370 .byte 6 # DW_AT_encoding
371 .byte 1 # DW_AT_byte_size
372 .byte 0 # End Of Children Mark
374 .section .debug_types,"G",@progbits,10693860647081617285,comdat
375 .long .Ldebug_info_end4-.Ldebug_info_start4 # Length of Unit
377 .short 4 # DWARF version number
378 .long .debug_abbrev # Offset Into Abbrev. Section
379 .byte 8 # Address Size (in bytes)
380 .quad -7752883426627934331 # Type Signature
381 .long 30 # Type DIE Offset
382 .byte 1 # Abbrev [1] 0x17:0x42 DW_TAG_type_unit
383 .short 33 # DW_AT_language
384 .long .Lline_table_start0 # DW_AT_stmt_list
385 .byte 2 # Abbrev [2] 0x1e:0x2e DW_TAG_structure_type
386 .byte 5 # DW_AT_calling_convention
387 .long .Linfo_string23 # DW_AT_name
388 .byte 24 # DW_AT_byte_size
389 .byte 3 # DW_AT_decl_file
390 .byte 1 # DW_AT_decl_line
391 .byte 3 # Abbrev [3] 0x27:0xc DW_TAG_member
392 .long .Linfo_string15 # DW_AT_name
393 .long 76 # DW_AT_type
394 .byte 3 # DW_AT_decl_file
395 .byte 2 # DW_AT_decl_line
396 .byte 0 # DW_AT_data_member_location
397 .byte 3 # Abbrev [3] 0x33:0xc DW_TAG_member
398 .long .Linfo_string16 # DW_AT_name
399 .long 76 # DW_AT_type
400 .byte 3 # DW_AT_decl_file
401 .byte 3 # DW_AT_decl_line
402 .byte 8 # DW_AT_data_member_location
403 .byte 3 # Abbrev [3] 0x3f:0xc DW_TAG_member
404 .long .Linfo_string17 # DW_AT_name
405 .long 76 # DW_AT_type
406 .byte 3 # DW_AT_decl_file
407 .byte 4 # DW_AT_decl_line
408 .byte 16 # DW_AT_data_member_location
409 .byte 0 # End Of Children Mark
410 .byte 4 # Abbrev [4] 0x4c:0x5 DW_TAG_pointer_type
411 .long 81 # DW_AT_type
412 .byte 5 # Abbrev [5] 0x51:0x7 DW_TAG_base_type
413 .long .Linfo_string13 # DW_AT_name
414 .byte 6 # DW_AT_encoding
415 .byte 1 # DW_AT_byte_size
416 .byte 0 # End Of Children Mark
418 .section .debug_types,"G",@progbits,17604755499357858397,comdat
419 .long .Ldebug_info_end5-.Ldebug_info_start5 # Length of Unit
421 .short 4 # DWARF version number
422 .long .debug_abbrev # Offset Into Abbrev. Section
423 .byte 8 # Address Size (in bytes)
424 .quad -841988574351693219 # Type Signature
425 .long 30 # Type DIE Offset
426 .byte 1 # Abbrev [1] 0x17:0x36 DW_TAG_type_unit
427 .short 33 # DW_AT_language
428 .long .Lline_table_start0 # DW_AT_stmt_list
429 .byte 2 # Abbrev [2] 0x1e:0x22 DW_TAG_structure_type
430 .byte 5 # DW_AT_calling_convention
431 .long .Linfo_string24 # DW_AT_name
432 .byte 16 # DW_AT_byte_size
433 .byte 3 # DW_AT_decl_file
434 .byte 6 # DW_AT_decl_line
435 .byte 3 # Abbrev [3] 0x27:0xc DW_TAG_member
436 .long .Linfo_string15 # DW_AT_name
437 .long 64 # DW_AT_type
438 .byte 3 # DW_AT_decl_file
439 .byte 7 # DW_AT_decl_line
440 .byte 0 # DW_AT_data_member_location
441 .byte 3 # Abbrev [3] 0x33:0xc DW_TAG_member
442 .long .Linfo_string16 # DW_AT_name
443 .long 64 # DW_AT_type
444 .byte 3 # DW_AT_decl_file
445 .byte 8 # DW_AT_decl_line
446 .byte 8 # DW_AT_data_member_location
447 .byte 0 # End Of Children Mark
448 .byte 4 # Abbrev [4] 0x40:0x5 DW_TAG_pointer_type
449 .long 69 # DW_AT_type
450 .byte 5 # Abbrev [5] 0x45:0x7 DW_TAG_base_type
451 .long .Linfo_string13 # DW_AT_name
452 .byte 6 # DW_AT_encoding
453 .byte 1 # DW_AT_byte_size
454 .byte 0 # End Of Children Mark
456 .section .debug_abbrev,"",@progbits
457 .byte 1 # Abbreviation Code
458 .byte 65 # DW_TAG_type_unit
459 .byte 1 # DW_CHILDREN_yes
460 .byte 19 # DW_AT_language
461 .byte 5 # DW_FORM_data2
462 .byte 16 # DW_AT_stmt_list
463 .byte 23 # DW_FORM_sec_offset
466 .byte 2 # Abbreviation Code
467 .byte 19 # DW_TAG_structure_type
468 .byte 1 # DW_CHILDREN_yes
469 .byte 54 # DW_AT_calling_convention
470 .byte 11 # DW_FORM_data1
472 .byte 14 # DW_FORM_strp
473 .byte 11 # DW_AT_byte_size
474 .byte 11 # DW_FORM_data1
475 .byte 58 # DW_AT_decl_file
476 .byte 11 # DW_FORM_data1
477 .byte 59 # DW_AT_decl_line
478 .byte 11 # DW_FORM_data1
481 .byte 3 # Abbreviation Code
482 .byte 13 # DW_TAG_member
483 .byte 0 # DW_CHILDREN_no
485 .byte 14 # DW_FORM_strp
486 .byte 73 # DW_AT_type
487 .byte 19 # DW_FORM_ref4
488 .byte 58 # DW_AT_decl_file
489 .byte 11 # DW_FORM_data1
490 .byte 59 # DW_AT_decl_line
491 .byte 11 # DW_FORM_data1
492 .byte 56 # DW_AT_data_member_location
493 .byte 11 # DW_FORM_data1
496 .byte 4 # Abbreviation Code
497 .byte 15 # DW_TAG_pointer_type
498 .byte 0 # DW_CHILDREN_no
499 .byte 73 # DW_AT_type
500 .byte 19 # DW_FORM_ref4
503 .byte 5 # Abbreviation Code
504 .byte 36 # DW_TAG_base_type
505 .byte 0 # DW_CHILDREN_no
507 .byte 14 # DW_FORM_strp
508 .byte 62 # DW_AT_encoding
509 .byte 11 # DW_FORM_data1
510 .byte 11 # DW_AT_byte_size
511 .byte 11 # DW_FORM_data1
514 .byte 6 # Abbreviation Code
515 .byte 17 # DW_TAG_compile_unit
516 .byte 1 # DW_CHILDREN_yes
517 .byte 37 # DW_AT_producer
518 .byte 14 # DW_FORM_strp
519 .byte 19 # DW_AT_language
520 .byte 5 # DW_FORM_data2
522 .byte 14 # DW_FORM_strp
523 .byte 16 # DW_AT_stmt_list
524 .byte 23 # DW_FORM_sec_offset
525 .byte 27 # DW_AT_comp_dir
526 .byte 14 # DW_FORM_strp
527 .byte 17 # DW_AT_low_pc
528 .byte 1 # DW_FORM_addr
529 .byte 18 # DW_AT_high_pc
530 .byte 6 # DW_FORM_data4
533 .byte 7 # Abbreviation Code
534 .byte 46 # DW_TAG_subprogram
535 .byte 1 # DW_CHILDREN_yes
536 .byte 17 # DW_AT_low_pc
537 .byte 1 # DW_FORM_addr
538 .byte 18 # DW_AT_high_pc
539 .byte 6 # DW_FORM_data4
540 .byte 64 # DW_AT_frame_base
541 .byte 24 # DW_FORM_exprloc
543 .byte 14 # DW_FORM_strp
544 .byte 58 # DW_AT_decl_file
545 .byte 11 # DW_FORM_data1
546 .byte 59 # DW_AT_decl_line
547 .byte 11 # DW_FORM_data1
548 .byte 73 # DW_AT_type
549 .byte 19 # DW_FORM_ref4
550 .byte 63 # DW_AT_external
551 .byte 25 # DW_FORM_flag_present
554 .byte 8 # Abbreviation Code
555 .byte 5 # DW_TAG_formal_parameter
556 .byte 0 # DW_CHILDREN_no
557 .byte 2 # DW_AT_location
558 .byte 24 # DW_FORM_exprloc
560 .byte 14 # DW_FORM_strp
561 .byte 58 # DW_AT_decl_file
562 .byte 11 # DW_FORM_data1
563 .byte 59 # DW_AT_decl_line
564 .byte 11 # DW_FORM_data1
565 .byte 73 # DW_AT_type
566 .byte 19 # DW_FORM_ref4
569 .byte 9 # Abbreviation Code
570 .byte 52 # DW_TAG_variable
571 .byte 0 # DW_CHILDREN_no
572 .byte 2 # DW_AT_location
573 .byte 24 # DW_FORM_exprloc
575 .byte 14 # DW_FORM_strp
576 .byte 58 # DW_AT_decl_file
577 .byte 11 # DW_FORM_data1
578 .byte 59 # DW_AT_decl_line
579 .byte 11 # DW_FORM_data1
580 .byte 73 # DW_AT_type
581 .byte 19 # DW_FORM_ref4
584 .byte 10 # Abbreviation Code
585 .byte 19 # DW_TAG_structure_type
586 .byte 0 # DW_CHILDREN_no
587 .byte 60 # DW_AT_declaration
588 .byte 25 # DW_FORM_flag_present
589 .byte 105 # DW_AT_signature
590 .byte 32 # DW_FORM_ref_sig8
593 .byte 11 # 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 64 # DW_AT_frame_base
601 .byte 24 # DW_FORM_exprloc
602 .byte 110 # DW_AT_linkage_name
603 .byte 14 # DW_FORM_strp
605 .byte 14 # DW_FORM_strp
606 .byte 58 # DW_AT_decl_file
607 .byte 11 # DW_FORM_data1
608 .byte 59 # DW_AT_decl_line
609 .byte 11 # DW_FORM_data1
610 .byte 73 # DW_AT_type
611 .byte 19 # DW_FORM_ref4
612 .byte 63 # DW_AT_external
613 .byte 25 # DW_FORM_flag_present
616 .byte 12 # Abbreviation Code <-- Manually added abbrev decl
617 .byte 52 # DW_TAG_variable
618 .byte 0 # DW_CHILDREN_no
619 .byte 2 # DW_AT_location
620 .byte 24 # DW_FORM_exprloc
622 .byte 14 # DW_FORM_strp
623 .byte 58 # DW_AT_decl_file
624 .byte 11 # DW_FORM_data1
625 .byte 59 # DW_AT_decl_line
626 .byte 11 # DW_FORM_data1
627 .byte 73 # DW_AT_type
628 .byte 16 # DW_FORM_ref_addr
632 .section .debug_info,"",@progbits
634 .long .Ldebug_info_end6-.Ldebug_info_start6 # Length of Unit
636 .short 4 # DWARF version number
637 .long .debug_abbrev # Offset Into Abbrev. Section
638 .byte 8 # Address Size (in bytes)
639 .byte 6 # Abbrev [6] 0xb:0x9c DW_TAG_compile_unit
640 .long .Linfo_string0 # DW_AT_producer
641 .short 33 # DW_AT_language
642 .long .Linfo_string1 # DW_AT_name
643 .long .Lline_table_start0 # DW_AT_stmt_list
644 .long .Linfo_string2 # DW_AT_comp_dir
645 .quad .Lfunc_begin0 # DW_AT_low_pc
646 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
647 .byte 7 # Abbrev [7] 0x2a:0x52 DW_TAG_subprogram
648 .quad .Lfunc_begin0 # DW_AT_low_pc
649 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
650 .byte 1 # DW_AT_frame_base
652 .long .Linfo_string5 # DW_AT_name
653 .byte 1 # DW_AT_decl_file
654 .byte 10 # DW_AT_decl_line
655 .long 124 # DW_AT_type
657 .byte 8 # Abbrev [8] 0x43:0xe DW_TAG_formal_parameter
658 .byte 2 # DW_AT_location
661 .long .Linfo_string11 # DW_AT_name
662 .byte 1 # DW_AT_decl_file
663 .byte 10 # DW_AT_decl_line
664 .long 124 # DW_AT_type
665 .byte 8 # Abbrev [8] 0x51:0xe DW_TAG_formal_parameter
666 .byte 2 # DW_AT_location
669 .long .Linfo_string12 # DW_AT_name
670 .byte 1 # DW_AT_decl_file
671 .byte 10 # DW_AT_decl_line
672 .long 131 # DW_AT_type
673 .byte 9 # Abbrev [9] 0x5f:0xe DW_TAG_variable
674 .byte 2 # DW_AT_location
677 .long .Linfo_string14 # DW_AT_name
678 .byte 1 # DW_AT_decl_file
679 .byte 11 # DW_AT_decl_line
680 .long 148 # DW_AT_type
681 .byte 12 # Abbrev [12] 0x6d:0xe DW_TAG_variable <-- Manually modified s/9/12
682 .byte 2 # DW_AT_location
685 .long .Linfo_string19 # DW_AT_name
686 .byte 1 # DW_AT_decl_file
687 .byte 15 # DW_AT_decl_line
688 .long .Lmanual_label # DW_AT_type <-- Manually modified
689 .byte 0 # End Of Children Mark
690 .byte 5 # Abbrev [5] 0x7c:0x7 DW_TAG_base_type
691 .long .Linfo_string6 # DW_AT_name
692 .byte 5 # DW_AT_encoding
693 .byte 4 # DW_AT_byte_size
694 .byte 4 # Abbrev [4] 0x83:0x5 DW_TAG_pointer_type
695 .long 136 # DW_AT_type
696 .byte 4 # Abbrev [4] 0x88:0x5 DW_TAG_pointer_type
697 .long 141 # DW_AT_type
698 .byte 5 # Abbrev [5] 0x8d:0x7 DW_TAG_base_type
699 .long .Linfo_string13 # DW_AT_name
700 .byte 6 # DW_AT_encoding
701 .byte 1 # DW_AT_byte_size
702 .Lmanual_label_forward:
703 .byte 10 # Abbrev [10] 0x94:0x9 DW_TAG_structure_type
705 .quad 7448148824980338162 # DW_AT_signature
706 .byte 10 # Abbrev [10] 0x9d:0x9 DW_TAG_structure_type
708 .quad 5322170643381124694 # DW_AT_signature
709 .byte 0 # End Of Children Mark
712 .long .Ldebug_info_end7-.Ldebug_info_start7 # Length of Unit
714 .short 4 # DWARF version number
715 .long .debug_abbrev # Offset Into Abbrev. Section
716 .byte 8 # Address Size (in bytes)
717 .byte 6 # Abbrev [6] 0xb:0x73 DW_TAG_compile_unit
718 .long .Linfo_string0 # DW_AT_producer
719 .short 33 # DW_AT_language
720 .long .Linfo_string3 # DW_AT_name
721 .long .Lline_table_start0 # DW_AT_stmt_list
722 .long .Linfo_string2 # DW_AT_comp_dir
723 .quad .Lfunc_begin1 # DW_AT_low_pc
724 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc
725 .byte 11 # Abbrev [11] 0x2a:0x3a DW_TAG_subprogram
726 .quad .Lfunc_begin1 # DW_AT_low_pc
727 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc
728 .byte 1 # DW_AT_frame_base
730 .long .Linfo_string7 # DW_AT_linkage_name
731 .long .Linfo_string8 # DW_AT_name
732 .byte 2 # DW_AT_decl_file
733 .byte 11 # DW_AT_decl_line
734 .long 100 # DW_AT_type
736 .byte 12 # Abbrev [12] 0x47:0xe DW_TAG_variable2 <-- Manually modified s/9/12
737 .byte 2 # DW_AT_location
740 .long .Linfo_string14 # DW_AT_name
741 .byte 2 # DW_AT_decl_file
742 .byte 12 # DW_AT_decl_line
743 .long .Lmanual_label_forward # DW_AT_type <-- Manually modified
744 .byte 12 # Abbrev [12] 0x55:0xe DW_TAG_variable <-- Manually modified s/9/12
745 .byte 2 # DW_AT_location
748 .long .Linfo_string19 # DW_AT_name
749 .byte 2 # DW_AT_decl_file
750 .byte 13 # DW_AT_decl_line
751 .long .Lmanual_label2 # DW_AT_type <-- Manually modified
752 .byte 0 # End Of Children Mark
753 .byte 5 # Abbrev [5] 0x64:0x7 DW_TAG_base_type
754 .long .Linfo_string6 # DW_AT_name
755 .byte 5 # DW_AT_encoding
756 .byte 4 # DW_AT_byte_size
758 .byte 10 # Abbrev [10] 0x6b:0x9 DW_TAG_structure_type
760 .quad 1175092228111723119 # DW_AT_signature
761 .byte 10 # Abbrev [10] 0x74:0x9 DW_TAG_structure_type
763 .quad -5451594423976726044 # DW_AT_signature
764 .byte 0 # End Of Children Mark
767 .long .Ldebug_info_end8-.Ldebug_info_start8 # Length of Unit
769 .short 4 # DWARF version number
770 .long .debug_abbrev # Offset Into Abbrev. Section
771 .byte 8 # Address Size (in bytes)
772 .byte 6 # Abbrev [6] 0xb:0x73 DW_TAG_compile_unit
773 .long .Linfo_string0 # DW_AT_producer
774 .short 33 # DW_AT_language
775 .long .Linfo_string4 # DW_AT_name
776 .long .Lline_table_start0 # DW_AT_stmt_list
777 .long .Linfo_string2 # DW_AT_comp_dir
778 .quad .Lfunc_begin2 # DW_AT_low_pc
779 .long .Lfunc_end2-.Lfunc_begin2 # DW_AT_high_pc
780 .byte 11 # Abbrev [11] 0x2a:0x3a DW_TAG_subprogram
781 .quad .Lfunc_begin2 # DW_AT_low_pc
782 .long .Lfunc_end2-.Lfunc_begin2 # DW_AT_high_pc
783 .byte 1 # DW_AT_frame_base
785 .long .Linfo_string9 # DW_AT_linkage_name
786 .long .Linfo_string10 # DW_AT_name
787 .byte 3 # DW_AT_decl_file
788 .byte 11 # DW_AT_decl_line
789 .long 100 # DW_AT_type
791 .byte 9 # Abbrev [9] 0x47:0xe DW_TAG_variable
792 .byte 2 # DW_AT_location
795 .long .Linfo_string14 # DW_AT_name
796 .byte 3 # DW_AT_decl_file
797 .byte 12 # DW_AT_decl_line
798 .long 107 # DW_AT_type
799 .byte 9 # Abbrev [9] 0x55:0xe DW_TAG_variable
800 .byte 2 # DW_AT_location
803 .long .Linfo_string19 # DW_AT_name
804 .byte 3 # DW_AT_decl_file
805 .byte 13 # DW_AT_decl_line
806 .long 116 # DW_AT_type
807 .byte 0 # End Of Children Mark
808 .byte 5 # Abbrev [5] 0x64:0x7 DW_TAG_base_type
809 .long .Linfo_string6 # DW_AT_name
810 .byte 5 # DW_AT_encoding
811 .byte 4 # DW_AT_byte_size
813 .byte 10 # Abbrev [10] 0x6b:0x9 DW_TAG_structure_type
815 .quad -7752883426627934331 # DW_AT_signature
816 .byte 10 # Abbrev [10] 0x74:0x9 DW_TAG_structure_type
818 .quad -841988574351693219 # DW_AT_signature
819 .byte 0 # End Of Children Mark
821 .section .debug_str,"MS",@progbits,1
823 .asciz "clang version 17.0.0 (https://github.com/llvm/llvm-project.git 73027ae39b1492e5b6033358a13b86d7d1e781ae)" # string offset=0
825 .asciz "main.cpp" # string offset=105
827 .asciz "/dwarf4-types-forward-cross-reference-test" # string offset=114
829 .asciz "helper.cpp" # string offset=194
831 .asciz "helper1.cpp" # string offset=205
833 .asciz "main" # string offset=217
835 .asciz "int" # string offset=222
837 .asciz "_Z3foov" # string offset=226
839 .asciz "foo" # string offset=234
841 .asciz "_Z4foo2v" # string offset=238
843 .asciz "foo2" # string offset=247
845 .asciz "argc" # string offset=252
847 .asciz "argv" # string offset=257
849 .asciz "char" # string offset=262
851 .asciz "f" # string offset=267
853 .asciz "c1" # string offset=269
855 .asciz "c2" # string offset=272
857 .asciz "c3" # string offset=275
859 .asciz "Foo" # string offset=278
861 .asciz "f2" # string offset=282
863 .asciz "Foo2" # string offset=285
865 .asciz "Foo2a" # string offset=290
867 .asciz "Foo3" # string offset=296
869 .asciz "Foo3a" # string offset=301
871 .asciz "Foo4" # string offset=307
872 .ident "clang version 17.0.0 (https://github.com/llvm/llvm-project.git 73027ae39b1492e5b6033358a13b86d7d1e781ae)"
873 .ident "clang version 17.0.0 (https://github.com/llvm/llvm-project.git 73027ae39b1492e5b6033358a13b86d7d1e781ae)"
874 .ident "clang version 17.0.0 (https://github.com/llvm/llvm-project.git 73027ae39b1492e5b6033358a13b86d7d1e781ae)"
875 .section ".note.GNU-stack","",@progbits
877 .section .debug_line,"",@progbits