753 lines · plain
1# REQUIRES: system-linux2 3# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %s -o %t.o4# RUN: %clang %cflags -gdwarf-5 %t.o -o %t.exe5# RUN: llvm-bolt %t.exe -o %t.bolt --update-debug-sections --debug-thread-count=4 --cu-processing-batch-size=46# RUN: llvm-dwarfdump --show-form --verbose --debug-info %t.bolt | FileCheck --check-prefix=POSTCHECK %s7 8## This test checks that BOLT handles backward cross CU references for dwarf59## when -fdebug-types-sections is specified.10 11# The assembly was manually modified to do cross CU reference.12 13# POSTCHECK: Type Unit14# POSTCHECK-SAME: version = 0x000515# POSTCHECK: Type Unit16# POSTCHECK-SAME: version = 0x000517# POSTCHECK: Type Unit18# POSTCHECK-SAME: version = 0x000519# POSTCHECK: Type Unit20# POSTCHECK-SAME: version = 0x000521# POSTCHECK: Compile Unit22# POSTCHECK-SAME: version = 0x000523# POSTCHECK: DW_TAG_structure_type [10]24# POSTCHECK: DW_TAG_structure_type [10]25# POSTCHECK: Compile Unit26# POSTCHECK-SAME: version = 0x000527# POSTCHECK: DW_TAG_variable [9]28# POSTCHECK: DW_TAG_variable [12]29# POSTCHECK: DW_AT_type [DW_FORM_ref_addr] (0x{{[0-9a-f]+}} "Foo")30 31 32# main.cpp33# struct Foo {34# char *c1;35# char *c2;36# char *c3;37# };38# struct Foo2 {39# char *c1;40# char *c2;41# };42# int main(int argc, char *argv[]) {43# Foo f;44# f.c1 = argv[argc];45# f.c2 = argv[argc + 1];46# f.c3 = argv[argc + 2];47# Foo2 f2;48# f.c1 = argv[argc + 3];49# f.c2 = argv[argc + 4];50# return 0;51# }52 53# helper.cpp54# struct Foo2a {55# char *c1;56# char *c2;57# char *c3;58# };59# struct Foo3 {60# char *c1;61# char *c2;62# };63#64# int foo() {65# Foo2a f;66# Foo3 f2;67# return 0;68# }69 70 .text71 .file "llvm-link"72 .globl main # -- Begin function main73 .p2align 4, 0x9074 .type main,@function75main: # @main76.Lfunc_begin0:77 .file 1 "/dwarf5-types-backward-cross-reference-test" "main.cpp" md5 0x13f000d932d7bb7e6986b96c183027b978 .loc 1 10 0 # main.cpp:10:079 .cfi_startproc80# %bb.0: # %entry81 pushq %rbp82 .cfi_def_cfa_offset 1683 .cfi_offset %rbp, -1684 movq %rsp, %rbp85 .cfi_def_cfa_register %rbp86 movl $0, -4(%rbp)87 movl %edi, -8(%rbp)88 movq %rsi, -16(%rbp)89.Ltmp0:90 .loc 1 12 9 prologue_end # main.cpp:12:991 movq -16(%rbp), %rax92 movslq -8(%rbp), %rcx93 movq (%rax,%rcx,8), %rax94 .loc 1 12 7 is_stmt 0 # main.cpp:12:795 movq %rax, -40(%rbp)96 .loc 1 13 9 is_stmt 1 # main.cpp:13:997 movq -16(%rbp), %rax98 .loc 1 13 14 is_stmt 0 # main.cpp:13:1499 movl -8(%rbp), %ecx100 .loc 1 13 19 # main.cpp:13:19101 addl $1, %ecx102 .loc 1 13 9 # main.cpp:13:9103 movslq %ecx, %rcx104 movq (%rax,%rcx,8), %rax105 .loc 1 13 7 # main.cpp:13:7106 movq %rax, -32(%rbp)107 .loc 1 14 9 is_stmt 1 # main.cpp:14:9108 movq -16(%rbp), %rax109 .loc 1 14 14 is_stmt 0 # main.cpp:14:14110 movl -8(%rbp), %ecx111 .loc 1 14 19 # main.cpp:14:19112 addl $2, %ecx113 .loc 1 14 9 # main.cpp:14:9114 movslq %ecx, %rcx115 movq (%rax,%rcx,8), %rax116 .loc 1 14 7 # main.cpp:14:7117 movq %rax, -24(%rbp)118 .loc 1 16 9 is_stmt 1 # main.cpp:16:9119 movq -16(%rbp), %rax120 .loc 1 16 14 is_stmt 0 # main.cpp:16:14121 movl -8(%rbp), %ecx122 .loc 1 16 19 # main.cpp:16:19123 addl $3, %ecx124 .loc 1 16 9 # main.cpp:16:9125 movslq %ecx, %rcx126 movq (%rax,%rcx,8), %rax127 .loc 1 16 7 # main.cpp:16:7128 movq %rax, -40(%rbp)129 .loc 1 17 9 is_stmt 1 # main.cpp:17:9130 movq -16(%rbp), %rax131 .loc 1 17 14 is_stmt 0 # main.cpp:17:14132 movl -8(%rbp), %ecx133 .loc 1 17 19 # main.cpp:17:19134 addl $4, %ecx135 .loc 1 17 9 # main.cpp:17:9136 movslq %ecx, %rcx137 movq (%rax,%rcx,8), %rax138 .loc 1 17 7 # main.cpp:17:7139 movq %rax, -32(%rbp)140 .loc 1 18 2 is_stmt 1 # main.cpp:18:2141 xorl %eax, %eax142 .loc 1 18 2 epilogue_begin is_stmt 0 # main.cpp:18:2143 popq %rbp144 .cfi_def_cfa %rsp, 8145 retq146.Ltmp1:147.Lfunc_end0:148 .size main, .Lfunc_end0-main149 .cfi_endproc150 # -- End function151 .globl _Z3foov # -- Begin function _Z3foov152 .p2align 4, 0x90153 .type _Z3foov,@function154_Z3foov: # @_Z3foov155.Lfunc_begin1:156 .file 2 "/dwarf5-types-backward-cross-reference-test" "helper.cpp" md5 0x650c984f17ca3a4e7785e30e6ca8f130157 .loc 2 11 0 is_stmt 1 # helper.cpp:11:0158 .cfi_startproc159# %bb.0: # %entry160 pushq %rbp161 .cfi_def_cfa_offset 16162 .cfi_offset %rbp, -16163 movq %rsp, %rbp164 .cfi_def_cfa_register %rbp165.Ltmp2:166 .loc 2 14 3 prologue_end # helper.cpp:14:3167 xorl %eax, %eax168 .loc 2 14 3 epilogue_begin is_stmt 0 # helper.cpp:14:3169 popq %rbp170 .cfi_def_cfa %rsp, 8171 retq172.Ltmp3:173.Lfunc_end1:174 .size _Z3foov, .Lfunc_end1-_Z3foov175 .cfi_endproc176 # -- End function177 .section .debug_info,"G",@progbits,7448148824980338162,comdat178 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit179.Ldebug_info_start0:180 .short 5 # DWARF version number181 .byte 2 # DWARF Unit Type182 .byte 8 # Address Size (in bytes)183 .long .debug_abbrev # Offset Into Abbrev. Section184 .quad 7448148824980338162 # Type Signature185 .long 35 # Type DIE Offset186 .byte 1 # Abbrev [1] 0x18:0x37 DW_TAG_type_unit187 .short 33 # DW_AT_language188 .long .Lline_table_start0 # DW_AT_stmt_list189 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base190 .byte 2 # Abbrev [2] 0x23:0x22 DW_TAG_structure_type191 .byte 5 # DW_AT_calling_convention192 .byte 15 # DW_AT_name193 .byte 24 # DW_AT_byte_size194 .byte 1 # DW_AT_decl_file195 .byte 1 # DW_AT_decl_line196 .byte 3 # Abbrev [3] 0x29:0x9 DW_TAG_member197 .byte 12 # DW_AT_name198 .long 69 # DW_AT_type199 .byte 1 # DW_AT_decl_file200 .byte 2 # DW_AT_decl_line201 .byte 0 # DW_AT_data_member_location202 .byte 3 # Abbrev [3] 0x32:0x9 DW_TAG_member203 .byte 13 # DW_AT_name204 .long 69 # DW_AT_type205 .byte 1 # DW_AT_decl_file206 .byte 3 # DW_AT_decl_line207 .byte 8 # DW_AT_data_member_location208 .byte 3 # Abbrev [3] 0x3b:0x9 DW_TAG_member209 .byte 14 # DW_AT_name210 .long 69 # DW_AT_type211 .byte 1 # DW_AT_decl_file212 .byte 4 # DW_AT_decl_line213 .byte 16 # DW_AT_data_member_location214 .byte 0 # End Of Children Mark215 .byte 4 # Abbrev [4] 0x45:0x5 DW_TAG_pointer_type216 .long 74 # DW_AT_type217 .byte 5 # Abbrev [5] 0x4a:0x4 DW_TAG_base_type218 .byte 10 # DW_AT_name219 .byte 6 # DW_AT_encoding220 .byte 1 # DW_AT_byte_size221 .byte 0 # End Of Children Mark222.Ldebug_info_end0:223 .section .debug_info,"G",@progbits,5322170643381124694,comdat224 .long .Ldebug_info_end1-.Ldebug_info_start1 # Length of Unit225.Ldebug_info_start1:226 .short 5 # DWARF version number227 .byte 2 # DWARF Unit Type228 .byte 8 # Address Size (in bytes)229 .long .debug_abbrev # Offset Into Abbrev. Section230 .quad 5322170643381124694 # Type Signature231 .long 35 # Type DIE Offset232 .byte 1 # Abbrev [1] 0x18:0x2e DW_TAG_type_unit233 .short 33 # DW_AT_language234 .long .Lline_table_start0 # DW_AT_stmt_list235 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base236 .byte 2 # Abbrev [2] 0x23:0x19 DW_TAG_structure_type237 .byte 5 # DW_AT_calling_convention238 .byte 17 # DW_AT_name239 .byte 16 # DW_AT_byte_size240 .byte 1 # DW_AT_decl_file241 .byte 6 # DW_AT_decl_line242 .byte 3 # Abbrev [3] 0x29:0x9 DW_TAG_member243 .byte 12 # DW_AT_name244 .long 60 # DW_AT_type245 .byte 1 # DW_AT_decl_file246 .byte 7 # DW_AT_decl_line247 .byte 0 # DW_AT_data_member_location248 .byte 3 # Abbrev [3] 0x32:0x9 DW_TAG_member249 .byte 13 # DW_AT_name250 .long 60 # DW_AT_type251 .byte 1 # DW_AT_decl_file252 .byte 8 # DW_AT_decl_line253 .byte 8 # DW_AT_data_member_location254 .byte 0 # End Of Children Mark255 .byte 4 # Abbrev [4] 0x3c:0x5 DW_TAG_pointer_type256 .long 65 # DW_AT_type257 .byte 5 # Abbrev [5] 0x41:0x4 DW_TAG_base_type258 .byte 10 # DW_AT_name259 .byte 6 # DW_AT_encoding260 .byte 1 # DW_AT_byte_size261 .byte 0 # End Of Children Mark262.Ldebug_info_end1:263 .section .debug_info,"G",@progbits,1175092228111723119,comdat264 .long .Ldebug_info_end2-.Ldebug_info_start2 # Length of Unit265.Ldebug_info_start2:266 .short 5 # DWARF version number267 .byte 2 # DWARF Unit Type268 .byte 8 # Address Size (in bytes)269 .long .debug_abbrev # Offset Into Abbrev. Section270 .quad 1175092228111723119 # Type Signature271 .long 35 # Type DIE Offset272 .byte 1 # Abbrev [1] 0x18:0x37 DW_TAG_type_unit273 .short 33 # DW_AT_language274 .long .Lline_table_start0 # DW_AT_stmt_list275 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base276 .byte 2 # Abbrev [2] 0x23:0x22 DW_TAG_structure_type277 .byte 5 # DW_AT_calling_convention278 .byte 18 # DW_AT_name279 .byte 24 # DW_AT_byte_size280 .byte 2 # DW_AT_decl_file281 .byte 1 # DW_AT_decl_line282 .byte 3 # Abbrev [3] 0x29:0x9 DW_TAG_member283 .byte 12 # DW_AT_name284 .long 69 # DW_AT_type285 .byte 2 # DW_AT_decl_file286 .byte 2 # DW_AT_decl_line287 .byte 0 # DW_AT_data_member_location288 .byte 3 # Abbrev [3] 0x32:0x9 DW_TAG_member289 .byte 13 # DW_AT_name290 .long 69 # DW_AT_type291 .byte 2 # DW_AT_decl_file292 .byte 3 # DW_AT_decl_line293 .byte 8 # DW_AT_data_member_location294 .byte 3 # Abbrev [3] 0x3b:0x9 DW_TAG_member295 .byte 14 # DW_AT_name296 .long 69 # DW_AT_type297 .byte 2 # DW_AT_decl_file298 .byte 4 # DW_AT_decl_line299 .byte 16 # DW_AT_data_member_location300 .byte 0 # End Of Children Mark301 .byte 4 # Abbrev [4] 0x45:0x5 DW_TAG_pointer_type302 .long 74 # DW_AT_type303 .byte 5 # Abbrev [5] 0x4a:0x4 DW_TAG_base_type304 .byte 10 # DW_AT_name305 .byte 6 # DW_AT_encoding306 .byte 1 # DW_AT_byte_size307 .byte 0 # End Of Children Mark308.Ldebug_info_end2:309 .section .debug_info,"G",@progbits,12995149649732825572,comdat310 .long .Ldebug_info_end3-.Ldebug_info_start3 # Length of Unit311.Ldebug_info_start3:312 .short 5 # DWARF version number313 .byte 2 # DWARF Unit Type314 .byte 8 # Address Size (in bytes)315 .long .debug_abbrev # Offset Into Abbrev. Section316 .quad -5451594423976726044 # Type Signature317 .long 35 # Type DIE Offset318 .byte 1 # Abbrev [1] 0x18:0x2e DW_TAG_type_unit319 .short 33 # DW_AT_language320 .long .Lline_table_start0 # DW_AT_stmt_list321 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base322 .byte 2 # Abbrev [2] 0x23:0x19 DW_TAG_structure_type323 .byte 5 # DW_AT_calling_convention324 .byte 19 # DW_AT_name325 .byte 16 # DW_AT_byte_size326 .byte 2 # DW_AT_decl_file327 .byte 6 # DW_AT_decl_line328 .byte 3 # Abbrev [3] 0x29:0x9 DW_TAG_member329 .byte 12 # DW_AT_name330 .long 60 # DW_AT_type331 .byte 2 # DW_AT_decl_file332 .byte 7 # DW_AT_decl_line333 .byte 0 # DW_AT_data_member_location334 .byte 3 # Abbrev [3] 0x32:0x9 DW_TAG_member335 .byte 13 # DW_AT_name336 .long 60 # DW_AT_type337 .byte 2 # DW_AT_decl_file338 .byte 8 # DW_AT_decl_line339 .byte 8 # DW_AT_data_member_location340 .byte 0 # End Of Children Mark341 .byte 4 # Abbrev [4] 0x3c:0x5 DW_TAG_pointer_type342 .long 65 # DW_AT_type343 .byte 5 # Abbrev [5] 0x41:0x4 DW_TAG_base_type344 .byte 10 # DW_AT_name345 .byte 6 # DW_AT_encoding346 .byte 1 # DW_AT_byte_size347 .byte 0 # End Of Children Mark348.Ldebug_info_end3:349 .section .debug_abbrev,"",@progbits350 .byte 1 # Abbreviation Code351 .byte 65 # DW_TAG_type_unit352 .byte 1 # DW_CHILDREN_yes353 .byte 19 # DW_AT_language354 .byte 5 # DW_FORM_data2355 .byte 16 # DW_AT_stmt_list356 .byte 23 # DW_FORM_sec_offset357 .byte 114 # DW_AT_str_offsets_base358 .byte 23 # DW_FORM_sec_offset359 .byte 0 # EOM(1)360 .byte 0 # EOM(2)361 .byte 2 # Abbreviation Code362 .byte 19 # DW_TAG_structure_type363 .byte 1 # DW_CHILDREN_yes364 .byte 54 # DW_AT_calling_convention365 .byte 11 # DW_FORM_data1366 .byte 3 # DW_AT_name367 .byte 37 # DW_FORM_strx1368 .byte 11 # DW_AT_byte_size369 .byte 11 # DW_FORM_data1370 .byte 58 # DW_AT_decl_file371 .byte 11 # DW_FORM_data1372 .byte 59 # DW_AT_decl_line373 .byte 11 # DW_FORM_data1374 .byte 0 # EOM(1)375 .byte 0 # EOM(2)376 .byte 3 # Abbreviation Code377 .byte 13 # DW_TAG_member378 .byte 0 # DW_CHILDREN_no379 .byte 3 # DW_AT_name380 .byte 37 # DW_FORM_strx1381 .byte 73 # DW_AT_type382 .byte 19 # DW_FORM_ref4383 .byte 58 # DW_AT_decl_file384 .byte 11 # DW_FORM_data1385 .byte 59 # DW_AT_decl_line386 .byte 11 # DW_FORM_data1387 .byte 56 # DW_AT_data_member_location388 .byte 11 # DW_FORM_data1389 .byte 0 # EOM(1)390 .byte 0 # EOM(2)391 .byte 4 # Abbreviation Code392 .byte 15 # DW_TAG_pointer_type393 .byte 0 # DW_CHILDREN_no394 .byte 73 # DW_AT_type395 .byte 19 # DW_FORM_ref4396 .byte 0 # EOM(1)397 .byte 0 # EOM(2)398 .byte 5 # Abbreviation Code399 .byte 36 # DW_TAG_base_type400 .byte 0 # DW_CHILDREN_no401 .byte 3 # DW_AT_name402 .byte 37 # DW_FORM_strx1403 .byte 62 # DW_AT_encoding404 .byte 11 # DW_FORM_data1405 .byte 11 # DW_AT_byte_size406 .byte 11 # DW_FORM_data1407 .byte 0 # EOM(1)408 .byte 0 # EOM(2)409 .byte 6 # Abbreviation Code410 .byte 17 # DW_TAG_compile_unit411 .byte 1 # DW_CHILDREN_yes412 .byte 37 # DW_AT_producer413 .byte 37 # DW_FORM_strx1414 .byte 19 # DW_AT_language415 .byte 5 # DW_FORM_data2416 .byte 3 # DW_AT_name417 .byte 37 # DW_FORM_strx1418 .byte 114 # DW_AT_str_offsets_base419 .byte 23 # DW_FORM_sec_offset420 .byte 16 # DW_AT_stmt_list421 .byte 23 # DW_FORM_sec_offset422 .byte 27 # DW_AT_comp_dir423 .byte 37 # DW_FORM_strx1424 .byte 17 # DW_AT_low_pc425 .byte 27 # DW_FORM_addrx426 .byte 18 # DW_AT_high_pc427 .byte 6 # DW_FORM_data4428 .byte 115 # DW_AT_addr_base429 .byte 23 # DW_FORM_sec_offset430 .byte 0 # EOM(1)431 .byte 0 # EOM(2)432 .byte 7 # Abbreviation Code433 .byte 46 # DW_TAG_subprogram434 .byte 1 # DW_CHILDREN_yes435 .byte 17 # DW_AT_low_pc436 .byte 27 # DW_FORM_addrx437 .byte 18 # DW_AT_high_pc438 .byte 6 # DW_FORM_data4439 .byte 64 # DW_AT_frame_base440 .byte 24 # DW_FORM_exprloc441 .byte 3 # DW_AT_name442 .byte 37 # DW_FORM_strx1443 .byte 58 # DW_AT_decl_file444 .byte 11 # DW_FORM_data1445 .byte 59 # DW_AT_decl_line446 .byte 11 # DW_FORM_data1447 .byte 73 # DW_AT_type448 .byte 19 # DW_FORM_ref4449 .byte 63 # DW_AT_external450 .byte 25 # DW_FORM_flag_present451 .byte 0 # EOM(1)452 .byte 0 # EOM(2)453 .byte 8 # Abbreviation Code454 .byte 5 # DW_TAG_formal_parameter455 .byte 0 # DW_CHILDREN_no456 .byte 2 # DW_AT_location457 .byte 24 # DW_FORM_exprloc458 .byte 3 # DW_AT_name459 .byte 37 # DW_FORM_strx1460 .byte 58 # DW_AT_decl_file461 .byte 11 # DW_FORM_data1462 .byte 59 # DW_AT_decl_line463 .byte 11 # DW_FORM_data1464 .byte 73 # DW_AT_type465 .byte 19 # DW_FORM_ref4466 .byte 0 # EOM(1)467 .byte 0 # EOM(2)468 .byte 9 # Abbreviation Code469 .byte 52 # DW_TAG_variable470 .byte 0 # DW_CHILDREN_no471 .byte 2 # DW_AT_location472 .byte 24 # DW_FORM_exprloc473 .byte 3 # DW_AT_name474 .byte 37 # DW_FORM_strx1475 .byte 58 # DW_AT_decl_file476 .byte 11 # DW_FORM_data1477 .byte 59 # DW_AT_decl_line478 .byte 11 # DW_FORM_data1479 .byte 73 # DW_AT_type480 .byte 19 # DW_FORM_ref4481 .byte 0 # EOM(1)482 .byte 0 # EOM(2)483 .byte 10 # Abbreviation Code484 .byte 19 # DW_TAG_structure_type485 .byte 0 # DW_CHILDREN_no486 .byte 60 # DW_AT_declaration487 .byte 25 # DW_FORM_flag_present488 .byte 105 # DW_AT_signature489 .byte 32 # DW_FORM_ref_sig8490 .byte 0 # EOM(1)491 .byte 0 # EOM(2)492 .byte 11 # Abbreviation Code493 .byte 46 # DW_TAG_subprogram494 .byte 1 # DW_CHILDREN_yes495 .byte 17 # DW_AT_low_pc496 .byte 27 # DW_FORM_addrx497 .byte 18 # DW_AT_high_pc498 .byte 6 # DW_FORM_data4499 .byte 64 # DW_AT_frame_base500 .byte 24 # DW_FORM_exprloc501 .byte 110 # DW_AT_linkage_name502 .byte 37 # DW_FORM_strx1503 .byte 3 # DW_AT_name504 .byte 37 # DW_FORM_strx1505 .byte 58 # DW_AT_decl_file506 .byte 11 # DW_FORM_data1507 .byte 59 # DW_AT_decl_line508 .byte 11 # DW_FORM_data1509 .byte 73 # DW_AT_type510 .byte 19 # DW_FORM_ref4511 .byte 63 # DW_AT_external512 .byte 25 # DW_FORM_flag_present513 .byte 0 # EOM(1)514 .byte 0 # EOM(2)515 .byte 12 # Abbreviation Code <-- Manually added abbrev decl516 .byte 52 # DW_TAG_variable517 .byte 0 # DW_CHILDREN_no518 .byte 2 # DW_AT_location519 .byte 24 # DW_FORM_exprloc520 .byte 3 # DW_AT_name521 .byte 37 # DW_FORM_strx1522 .byte 58 # DW_AT_decl_file523 .byte 11 # DW_FORM_data1524 .byte 59 # DW_AT_decl_line525 .byte 11 # DW_FORM_data1526 .byte 73 # DW_AT_type527 .byte 16 # DW_FORM_ref_addr528 .byte 0 # EOM(1)529 .byte 0 # EOM(2)530 .byte 0 # EOM(3)531 .section .debug_info,"",@progbits532.Lcu_begin0:533 .long .Ldebug_info_end4-.Ldebug_info_start4 # Length of Unit534.Ldebug_info_start4:535 .short 5 # DWARF version number536 .byte 1 # DWARF Unit Type537 .byte 8 # Address Size (in bytes)538 .long .debug_abbrev # Offset Into Abbrev. Section539 .byte 6 # Abbrev [6] 0xc:0x78 DW_TAG_compile_unit540 .byte 0 # DW_AT_producer541 .short 33 # DW_AT_language542 .byte 1 # DW_AT_name543 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base544 .long .Lline_table_start0 # DW_AT_stmt_list545 .byte 2 # DW_AT_comp_dir546 .byte 0 # DW_AT_low_pc547 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc548 .long .Laddr_table_base0 # DW_AT_addr_base549 .byte 7 # Abbrev [7] 0x23:0x3c DW_TAG_subprogram550 .byte 0 # DW_AT_low_pc551 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc552 .byte 1 # DW_AT_frame_base553 .byte 86554 .byte 4 # DW_AT_name555 .byte 1 # DW_AT_decl_file556 .byte 10 # DW_AT_decl_line557 .long 95 # DW_AT_type558 # DW_AT_external559 .byte 8 # Abbrev [8] 0x32:0xb DW_TAG_formal_parameter560 .byte 2 # DW_AT_location561 .byte 145562 .byte 120563 .byte 8 # DW_AT_name564 .byte 1 # DW_AT_decl_file565 .byte 10 # DW_AT_decl_line566 .long 95 # DW_AT_type567 .byte 8 # Abbrev [8] 0x3d:0xb DW_TAG_formal_parameter568 .byte 2 # DW_AT_location569 .byte 145570 .byte 112571 .byte 9 # DW_AT_name572 .byte 1 # DW_AT_decl_file573 .byte 10 # DW_AT_decl_line574 .long 99 # DW_AT_type575 .byte 9 # Abbrev [9] 0x48:0xb DW_TAG_variable576 .byte 2 # DW_AT_location577 .byte 145578 .byte 88579 .byte 11 # DW_AT_name580 .byte 1 # DW_AT_decl_file581 .byte 11 # DW_AT_decl_line582 .long 113 # DW_AT_type583 .byte 9 # Abbrev [9] 0x53:0xb DW_TAG_variable584 .byte 2 # DW_AT_location585 .byte 145586 .byte 72587 .byte 16 # DW_AT_name588 .byte 1 # DW_AT_decl_file589 .byte 15 # DW_AT_decl_line590 .long 122 # DW_AT_type591 .byte 0 # End Of Children Mark592 .byte 5 # Abbrev [5] 0x5f:0x4 DW_TAG_base_type593 .byte 5 # DW_AT_name594 .byte 5 # DW_AT_encoding595 .byte 4 # DW_AT_byte_size596 .byte 4 # Abbrev [4] 0x63:0x5 DW_TAG_pointer_type597 .long 104 # DW_AT_type598 .byte 4 # Abbrev [4] 0x68:0x5 DW_TAG_pointer_type599 .long 109 # DW_AT_type600 .byte 5 # Abbrev [5] 0x6d:0x4 DW_TAG_base_type601 .byte 10 # DW_AT_name602 .byte 6 # DW_AT_encoding603 .byte 1 # DW_AT_byte_size604 .Lmanual_label:605 .byte 10 # Abbrev [10] 0x71:0x9 DW_TAG_structure_type606 # DW_AT_declaration607 .quad 7448148824980338162 # DW_AT_signature608 .byte 10 # Abbrev [10] 0x7a:0x9 DW_TAG_structure_type609 # DW_AT_declaration610 .quad 5322170643381124694 # DW_AT_signature611 .byte 0 # End Of Children Mark612.Ldebug_info_end4:613.Lcu_begin1:614 .long .Ldebug_info_end5-.Ldebug_info_start5 # Length of Unit615.Ldebug_info_start5:616 .short 5 # DWARF version number617 .byte 1 # DWARF Unit Type618 .byte 8 # Address Size (in bytes)619 .long .debug_abbrev # Offset Into Abbrev. Section620 .byte 6 # Abbrev [6] 0xc:0x55 DW_TAG_compile_unit621 .byte 0 # DW_AT_producer622 .short 33 # DW_AT_language623 .byte 3 # DW_AT_name624 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base625 .long .Lline_table_start0 # DW_AT_stmt_list626 .byte 2 # DW_AT_comp_dir627 .byte 1 # DW_AT_low_pc628 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc629 .long .Laddr_table_base0 # DW_AT_addr_base630 .byte 11 # Abbrev [11] 0x23:0x27 DW_TAG_subprogram631 .byte 1 # DW_AT_low_pc632 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc633 .byte 1 # DW_AT_frame_base634 .byte 86635 .byte 6 # DW_AT_linkage_name636 .byte 7 # DW_AT_name637 .byte 2 # DW_AT_decl_file638 .byte 11 # DW_AT_decl_line639 .long 74 # DW_AT_type640 # DW_AT_external641 .byte 9 # Abbrev [9] 0x33:0xb DW_TAG_variable642 .byte 2 # DW_AT_location643 .byte 145644 .byte 104645 .byte 11 # DW_AT_name646 .byte 2 # DW_AT_decl_file647 .byte 12 # DW_AT_decl_line648 .long 78 # DW_AT_type649 .byte 12 # Abbrev [12] 0x3e:0xb DW_TAG_variable <-- Manually modified s/9/12650 .byte 2 # DW_AT_location651 .byte 145652 .byte 88653 .byte 16 # DW_AT_name654 .byte 2 # DW_AT_decl_file655 .byte 13 # DW_AT_decl_line656 .long .Lmanual_label # DW_AT_type <-- Manually modified657 .byte 0 # End Of Children Mark658 .byte 5 # Abbrev [5] 0x4a:0x4 DW_TAG_base_type659 .byte 5 # DW_AT_name660 .byte 5 # DW_AT_encoding661 .byte 4 # DW_AT_byte_size662 .byte 10 # Abbrev [10] 0x4e:0x9 DW_TAG_structure_type663 # DW_AT_declaration664 .quad 1175092228111723119 # DW_AT_signature665 .byte 10 # Abbrev [10] 0x57:0x9 DW_TAG_structure_type666 # DW_AT_declaration667 .quad -5451594423976726044 # DW_AT_signature668 .byte 0 # End Of Children Mark669.Ldebug_info_end5:670 .section .debug_str_offsets,"",@progbits671 .long 84 # Length of String Offsets Set672 .short 5673 .short 0674.Lstr_offsets_base0:675 .section .debug_str,"MS",@progbits,1676.Linfo_string0:677 .asciz "clang version 17.0.0 (https://github.com/llvm/llvm-project.git 73027ae39b1492e5b6033358a13b86d7d1e781ae)" # string offset=0678.Linfo_string1:679 .asciz "main.cpp" # string offset=105680.Linfo_string2:681 .asciz "/dwarf5-types-backward-reference-test" # string offset=114682.Linfo_string3:683 .asciz "helper.cpp" # string offset=189684.Linfo_string4:685 .asciz "main" # string offset=200686.Linfo_string5:687 .asciz "int" # string offset=205688.Linfo_string6:689 .asciz "_Z3foov" # string offset=209690.Linfo_string7:691 .asciz "foo" # string offset=217692.Linfo_string8:693 .asciz "argc" # string offset=221694.Linfo_string9:695 .asciz "argv" # string offset=226696.Linfo_string10:697 .asciz "char" # string offset=231698.Linfo_string11:699 .asciz "f" # string offset=236700.Linfo_string12:701 .asciz "c1" # string offset=238702.Linfo_string13:703 .asciz "c2" # string offset=241704.Linfo_string14:705 .asciz "c3" # string offset=244706.Linfo_string15:707 .asciz "Foo" # string offset=247708.Linfo_string16:709 .asciz "f2" # string offset=251710.Linfo_string17:711 .asciz "Foo2" # string offset=254712.Linfo_string18:713 .asciz "Foo2a" # string offset=259714.Linfo_string19:715 .asciz "Foo3" # string offset=265716 .section .debug_str_offsets,"",@progbits717 .long .Linfo_string0718 .long .Linfo_string1719 .long .Linfo_string2720 .long .Linfo_string3721 .long .Linfo_string4722 .long .Linfo_string5723 .long .Linfo_string6724 .long .Linfo_string7725 .long .Linfo_string8726 .long .Linfo_string9727 .long .Linfo_string10728 .long .Linfo_string11729 .long .Linfo_string12730 .long .Linfo_string13731 .long .Linfo_string14732 .long .Linfo_string15733 .long .Linfo_string16734 .long .Linfo_string17735 .long .Linfo_string18736 .long .Linfo_string19737 .section .debug_addr,"",@progbits738 .long .Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution739.Ldebug_addr_start0:740 .short 5 # DWARF version number741 .byte 8 # Address size742 .byte 0 # Segment selector size743.Laddr_table_base0:744 .quad .Lfunc_begin0745 .quad .Lfunc_begin1746.Ldebug_addr_end0:747 .ident "clang version 17.0.0 (https://github.com/llvm/llvm-project.git 73027ae39b1492e5b6033358a13b86d7d1e781ae)"748 .ident "clang version 17.0.0 (https://github.com/llvm/llvm-project.git 73027ae39b1492e5b6033358a13b86d7d1e781ae)"749 .section ".note.GNU-stack","",@progbits750 .addrsig751 .section .debug_line,"",@progbits752.Lline_table_start0:753