1# REQUIRES: system-linux 2 3# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %s -o %t.o 4# RUN: %clang %cflags -gdwarf-5 %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 7 8## This test checks that BOLT handles forward cross CU references for dwarf5 9## when -fdebug-types-sections is specified. 10 11## The assembly was manually modified to do cross CU reference. 12 13# POSTCHECK: Type Unit 14# POSTCHECK-SAME: version = 0x0005 15# POSTCHECK: Type Unit 16# POSTCHECK-SAME: version = 0x0005 17# POSTCHECK: Type Unit 18# POSTCHECK-SAME: version = 0x0005 19# POSTCHECK: Type Unit 20# POSTCHECK-SAME: version = 0x0005 21# POSTCHECK: Compile Unit 22# POSTCHECK-SAME: version = 0x0005 23# POSTCHECK: DW_TAG_variable [9] 24# POSTCHECK: DW_AT_type [DW_FORM_ref_addr] (0x{{[0-9a-f]+}} "Foo2a") 25# POSTCHECK: Compile Unit 26# POSTCHECK-SAME: version = 0x0005 27# POSTCHECK: DW_TAG_structure_type [11] 28 29 30# main.cpp 31# struct Foo { 32# char *c1; 33# char *c2; 34# char *c3; 35# }; 36# struct Foo2 { 37# char *c1; 38# char *c2; 39# }; 40# int main(int argc, char *argv[]) { 41# Foo f; 42# f.c1 = argv[argc]; 43# f.c2 = argv[argc + 1]; 44# f.c3 = argv[argc + 2]; 45# Foo2 f2; 46# f.c1 = argv[argc + 3]; 47# f.c2 = argv[argc + 4]; 48# return 0; 49# } 50 51# helper.cpp 52# struct Foo2a { 53# char *c1; 54# char *c2; 55# char *c3; 56# }; 57# struct Foo3 { 58# char *c1; 59# char *c2; 60# }; 61# 62# int foo() { 63# Foo2a f; 64# Foo3 f2; 65# return 0; 66# } 67 68 69 .text 70 .file "llvm-link" 71 .globl main # -- Begin function main 72 .p2align 4, 0x90 73 .type main,@function 74main: # @main 75.Lfunc_begin0: 76 .file 1 "dwarf5-types-dwarf5-types-cross-reference-test" "main.cpp" md5 0x13f000d932d7bb7e6986b96c183027b9 77 .loc 1 10 0 # main.cpp:10:0 78 .cfi_startproc 79# %bb.0: 80 pushq %rbp 81 .cfi_def_cfa_offset 16 82 .cfi_offset %rbp, -16 83 movq %rsp, %rbp 84 .cfi_def_cfa_register %rbp 85 movl $0, -4(%rbp) 86 movl %edi, -8(%rbp) 87 movq %rsi, -16(%rbp) 88.Ltmp0: 89 .loc 1 12 9 prologue_end # main.cpp:12:9 90 movq -16(%rbp), %rax 91 movslq -8(%rbp), %rcx 92 movq (%rax,%rcx,8), %rax 93 .loc 1 12 7 is_stmt 0 # main.cpp:12:7 94 movq %rax, -40(%rbp) 95 .loc 1 13 9 is_stmt 1 # main.cpp:13:9 96 movq -16(%rbp), %rax 97 .loc 1 13 14 is_stmt 0 # main.cpp:13:14 98 movl -8(%rbp), %ecx 99 .loc 1 13 19 # main.cpp:13:19 100 addl $1, %ecx 101 .loc 1 13 9 # main.cpp:13:9 102 movslq %ecx, %rcx 103 movq (%rax,%rcx,8), %rax 104 .loc 1 13 7 # main.cpp:13:7 105 movq %rax, -32(%rbp) 106 .loc 1 14 9 is_stmt 1 # main.cpp:14:9 107 movq -16(%rbp), %rax 108 .loc 1 14 14 is_stmt 0 # main.cpp:14:14 109 movl -8(%rbp), %ecx 110 .loc 1 14 19 # main.cpp:14:19 111 addl $2, %ecx 112 .loc 1 14 9 # main.cpp:14:9 113 movslq %ecx, %rcx 114 movq (%rax,%rcx,8), %rax 115 .loc 1 14 7 # main.cpp:14:7 116 movq %rax, -24(%rbp) 117 .loc 1 16 9 is_stmt 1 # main.cpp:16:9 118 movq -16(%rbp), %rax 119 .loc 1 16 14 is_stmt 0 # main.cpp:16:14 120 movl -8(%rbp), %ecx 121 .loc 1 16 19 # main.cpp:16:19 122 addl $3, %ecx 123 .loc 1 16 9 # main.cpp:16:9 124 movslq %ecx, %rcx 125 movq (%rax,%rcx,8), %rax 126 .loc 1 16 7 # main.cpp:16:7 127 movq %rax, -40(%rbp) 128 .loc 1 17 9 is_stmt 1 # main.cpp:17:9 129 movq -16(%rbp), %rax 130 .loc 1 17 14 is_stmt 0 # main.cpp:17:14 131 movl -8(%rbp), %ecx 132 .loc 1 17 19 # main.cpp:17:19 133 addl $4, %ecx 134 .loc 1 17 9 # main.cpp:17:9 135 movslq %ecx, %rcx 136 movq (%rax,%rcx,8), %rax 137 .loc 1 17 7 # main.cpp:17:7 138 movq %rax, -32(%rbp) 139 .loc 1 18 2 is_stmt 1 # main.cpp:18:2 140 xorl %eax, %eax 141 .loc 1 18 2 epilogue_begin is_stmt 0 # main.cpp:18:2 142 popq %rbp 143 .cfi_def_cfa %rsp, 8 144 retq 145.Ltmp1: 146.Lfunc_end0: 147 .size main, .Lfunc_end0-main 148 .cfi_endproc 149 # -- End function 150 .globl _Z3foov # -- Begin function _Z3foov 151 .p2align 4, 0x90 152 .type _Z3foov,@function 153_Z3foov: # @_Z3foov 154.Lfunc_begin1: 155 .file 2 "/dwarf5-types-dwarf5-types-cross-reference-test" "helper.cpp" md5 0x650c984f17ca3a4e7785e30e6ca8f130 156 .loc 2 11 0 is_stmt 1 # helper.cpp:11:0 157 .cfi_startproc 158# %bb.0: 159 pushq %rbp 160 .cfi_def_cfa_offset 16 161 .cfi_offset %rbp, -16 162 movq %rsp, %rbp 163 .cfi_def_cfa_register %rbp 164.Ltmp2: 165 .loc 2 14 3 prologue_end # helper.cpp:14:3 166 xorl %eax, %eax 167 .loc 2 14 3 epilogue_begin is_stmt 0 # helper.cpp:14:3 168 popq %rbp 169 .cfi_def_cfa %rsp, 8 170 retq 171.Ltmp3: 172.Lfunc_end1: 173 .size _Z3foov, .Lfunc_end1-_Z3foov 174 .cfi_endproc 175 # -- End function 176 .section .debug_info,"G",@progbits,7448148824980338162,comdat 177 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit 178.Ldebug_info_start0: 179 .short 5 # DWARF version number 180 .byte 2 # DWARF Unit Type 181 .byte 8 # Address Size (in bytes) 182 .long .debug_abbrev # Offset Into Abbrev. Section 183 .quad 7448148824980338162 # Type Signature 184 .long 35 # Type DIE Offset 185 .byte 1 # Abbrev [1] 0x18:0x37 DW_TAG_type_unit 186 .short 33 # DW_AT_language 187 .long .Lline_table_start0 # DW_AT_stmt_list 188 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base 189 .byte 2 # Abbrev [2] 0x23:0x22 DW_TAG_structure_type 190 .byte 5 # DW_AT_calling_convention 191 .byte 15 # DW_AT_name 192 .byte 24 # DW_AT_byte_size 193 .byte 1 # DW_AT_decl_file 194 .byte 1 # DW_AT_decl_line 195 .byte 3 # Abbrev [3] 0x29:0x9 DW_TAG_member 196 .byte 12 # DW_AT_name 197 .long 69 # DW_AT_type 198 .byte 1 # DW_AT_decl_file 199 .byte 2 # DW_AT_decl_line 200 .byte 0 # DW_AT_data_member_location 201 .byte 3 # Abbrev [3] 0x32:0x9 DW_TAG_member 202 .byte 13 # DW_AT_name 203 .long 69 # DW_AT_type 204 .byte 1 # DW_AT_decl_file 205 .byte 3 # DW_AT_decl_line 206 .byte 8 # DW_AT_data_member_location 207 .byte 3 # Abbrev [3] 0x3b:0x9 DW_TAG_member 208 .byte 14 # DW_AT_name 209 .long 69 # DW_AT_type 210 .byte 1 # DW_AT_decl_file 211 .byte 4 # DW_AT_decl_line 212 .byte 16 # DW_AT_data_member_location 213 .byte 0 # End Of Children Mark 214 .byte 4 # Abbrev [4] 0x45:0x5 DW_TAG_pointer_type 215 .long 74 # DW_AT_type 216 .byte 5 # Abbrev [5] 0x4a:0x4 DW_TAG_base_type 217 .byte 10 # DW_AT_name 218 .byte 6 # DW_AT_encoding 219 .byte 1 # DW_AT_byte_size 220 .byte 0 # End Of Children Mark 221.Ldebug_info_end0: 222 .section .debug_info,"G",@progbits,5322170643381124694,comdat 223 .long .Ldebug_info_end1-.Ldebug_info_start1 # Length of Unit 224.Ldebug_info_start1: 225 .short 5 # DWARF version number 226 .byte 2 # DWARF Unit Type 227 .byte 8 # Address Size (in bytes) 228 .long .debug_abbrev # Offset Into Abbrev. Section 229 .quad 5322170643381124694 # Type Signature 230 .long 35 # Type DIE Offset 231 .byte 1 # Abbrev [1] 0x18:0x2e DW_TAG_type_unit 232 .short 33 # DW_AT_language 233 .long .Lline_table_start0 # DW_AT_stmt_list 234 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base 235 .byte 2 # Abbrev [2] 0x23:0x19 DW_TAG_structure_type 236 .byte 5 # DW_AT_calling_convention 237 .byte 17 # DW_AT_name 238 .byte 16 # DW_AT_byte_size 239 .byte 1 # DW_AT_decl_file 240 .byte 6 # DW_AT_decl_line 241 .byte 3 # Abbrev [3] 0x29:0x9 DW_TAG_member 242 .byte 12 # DW_AT_name 243 .long 60 # DW_AT_type 244 .byte 1 # DW_AT_decl_file 245 .byte 7 # DW_AT_decl_line 246 .byte 0 # DW_AT_data_member_location 247 .byte 3 # Abbrev [3] 0x32:0x9 DW_TAG_member 248 .byte 13 # DW_AT_name 249 .long 60 # DW_AT_type 250 .byte 1 # DW_AT_decl_file 251 .byte 8 # DW_AT_decl_line 252 .byte 8 # DW_AT_data_member_location 253 .byte 0 # End Of Children Mark 254 .byte 4 # Abbrev [4] 0x3c:0x5 DW_TAG_pointer_type 255 .long 65 # DW_AT_type 256 .byte 5 # Abbrev [5] 0x41:0x4 DW_TAG_base_type 257 .byte 10 # DW_AT_name 258 .byte 6 # DW_AT_encoding 259 .byte 1 # DW_AT_byte_size 260 .byte 0 # End Of Children Mark 261.Ldebug_info_end1: 262 .section .debug_info,"G",@progbits,1175092228111723119,comdat 263 .long .Ldebug_info_end2-.Ldebug_info_start2 # Length of Unit 264.Ldebug_info_start2: 265 .short 5 # DWARF version number 266 .byte 2 # DWARF Unit Type 267 .byte 8 # Address Size (in bytes) 268 .long .debug_abbrev # Offset Into Abbrev. Section 269 .quad 1175092228111723119 # Type Signature 270 .long 35 # Type DIE Offset 271 .byte 1 # Abbrev [1] 0x18:0x37 DW_TAG_type_unit 272 .short 33 # DW_AT_language 273 .long .Lline_table_start0 # DW_AT_stmt_list 274 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base 275 .byte 2 # Abbrev [2] 0x23:0x22 DW_TAG_structure_type 276 .byte 5 # DW_AT_calling_convention 277 .byte 18 # DW_AT_name 278 .byte 24 # DW_AT_byte_size 279 .byte 2 # DW_AT_decl_file 280 .byte 1 # DW_AT_decl_line 281 .byte 3 # Abbrev [3] 0x29:0x9 DW_TAG_member 282 .byte 12 # DW_AT_name 283 .long 69 # DW_AT_type 284 .byte 2 # DW_AT_decl_file 285 .byte 2 # DW_AT_decl_line 286 .byte 0 # DW_AT_data_member_location 287 .byte 3 # Abbrev [3] 0x32:0x9 DW_TAG_member 288 .byte 13 # DW_AT_name 289 .long 69 # DW_AT_type 290 .byte 2 # DW_AT_decl_file 291 .byte 3 # DW_AT_decl_line 292 .byte 8 # DW_AT_data_member_location 293 .byte 3 # Abbrev [3] 0x3b:0x9 DW_TAG_member 294 .byte 14 # DW_AT_name 295 .long 69 # DW_AT_type 296 .byte 2 # DW_AT_decl_file 297 .byte 4 # DW_AT_decl_line 298 .byte 16 # DW_AT_data_member_location 299 .byte 0 # End Of Children Mark 300 .byte 4 # Abbrev [4] 0x45:0x5 DW_TAG_pointer_type 301 .long 74 # DW_AT_type 302 .byte 5 # Abbrev [5] 0x4a:0x4 DW_TAG_base_type 303 .byte 10 # DW_AT_name 304 .byte 6 # DW_AT_encoding 305 .byte 1 # DW_AT_byte_size 306 .byte 0 # End Of Children Mark 307.Ldebug_info_end2: 308 .section .debug_info,"G",@progbits,12995149649732825572,comdat 309 .long .Ldebug_info_end3-.Ldebug_info_start3 # Length of Unit 310.Ldebug_info_start3: 311 .short 5 # DWARF version number 312 .byte 2 # DWARF Unit Type 313 .byte 8 # Address Size (in bytes) 314 .long .debug_abbrev # Offset Into Abbrev. Section 315 .quad -5451594423976726044 # Type Signature 316 .long 35 # Type DIE Offset 317 .byte 1 # Abbrev [1] 0x18:0x2e DW_TAG_type_unit 318 .short 33 # DW_AT_language 319 .long .Lline_table_start0 # DW_AT_stmt_list 320 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base 321 .byte 2 # Abbrev [2] 0x23:0x19 DW_TAG_structure_type 322 .byte 5 # DW_AT_calling_convention 323 .byte 19 # DW_AT_name 324 .byte 16 # DW_AT_byte_size 325 .byte 2 # DW_AT_decl_file 326 .byte 6 # DW_AT_decl_line 327 .byte 3 # Abbrev [3] 0x29:0x9 DW_TAG_member 328 .byte 12 # DW_AT_name 329 .long 60 # DW_AT_type 330 .byte 2 # DW_AT_decl_file 331 .byte 7 # DW_AT_decl_line 332 .byte 0 # DW_AT_data_member_location 333 .byte 3 # Abbrev [3] 0x32:0x9 DW_TAG_member 334 .byte 13 # DW_AT_name 335 .long 60 # DW_AT_type 336 .byte 2 # DW_AT_decl_file 337 .byte 8 # DW_AT_decl_line 338 .byte 8 # DW_AT_data_member_location 339 .byte 0 # End Of Children Mark 340 .byte 4 # Abbrev [4] 0x3c:0x5 DW_TAG_pointer_type 341 .long 65 # DW_AT_type 342 .byte 5 # Abbrev [5] 0x41:0x4 DW_TAG_base_type 343 .byte 10 # DW_AT_name 344 .byte 6 # DW_AT_encoding 345 .byte 1 # DW_AT_byte_size 346 .byte 0 # End Of Children Mark 347.Ldebug_info_end3: 348 .section .debug_abbrev,"",@progbits 349 .byte 1 # Abbreviation Code 350 .byte 65 # DW_TAG_type_unit 351 .byte 1 # DW_CHILDREN_yes 352 .byte 19 # DW_AT_language 353 .byte 5 # DW_FORM_data2 354 .byte 16 # DW_AT_stmt_list 355 .byte 23 # DW_FORM_sec_offset 356 .byte 114 # DW_AT_str_offsets_base 357 .byte 23 # DW_FORM_sec_offset 358 .byte 0 # EOM(1) 359 .byte 0 # EOM(2) 360 .byte 2 # Abbreviation Code 361 .byte 19 # DW_TAG_structure_type 362 .byte 1 # DW_CHILDREN_yes 363 .byte 54 # DW_AT_calling_convention 364 .byte 11 # DW_FORM_data1 365 .byte 3 # DW_AT_name 366 .byte 37 # DW_FORM_strx1 367 .byte 11 # DW_AT_byte_size 368 .byte 11 # DW_FORM_data1 369 .byte 58 # DW_AT_decl_file 370 .byte 11 # DW_FORM_data1 371 .byte 59 # DW_AT_decl_line 372 .byte 11 # DW_FORM_data1 373 .byte 0 # EOM(1) 374 .byte 0 # EOM(2) 375 .byte 3 # Abbreviation Code 376 .byte 13 # DW_TAG_member 377 .byte 0 # DW_CHILDREN_no 378 .byte 3 # DW_AT_name 379 .byte 37 # DW_FORM_strx1 380 .byte 73 # DW_AT_type 381 .byte 19 # DW_FORM_ref4 382 .byte 58 # DW_AT_decl_file 383 .byte 11 # DW_FORM_data1 384 .byte 59 # DW_AT_decl_line 385 .byte 11 # DW_FORM_data1 386 .byte 56 # DW_AT_data_member_location 387 .byte 11 # DW_FORM_data1 388 .byte 0 # EOM(1) 389 .byte 0 # EOM(2) 390 .byte 4 # Abbreviation Code 391 .byte 15 # DW_TAG_pointer_type 392 .byte 0 # DW_CHILDREN_no 393 .byte 73 # DW_AT_type 394 .byte 19 # DW_FORM_ref4 395 .byte 0 # EOM(1) 396 .byte 0 # EOM(2) 397 .byte 5 # Abbreviation Code 398 .byte 36 # DW_TAG_base_type 399 .byte 0 # DW_CHILDREN_no 400 .byte 3 # DW_AT_name 401 .byte 37 # DW_FORM_strx1 402 .byte 62 # DW_AT_encoding 403 .byte 11 # DW_FORM_data1 404 .byte 11 # DW_AT_byte_size 405 .byte 11 # DW_FORM_data1 406 .byte 0 # EOM(1) 407 .byte 0 # EOM(2) 408 .byte 6 # Abbreviation Code 409 .byte 17 # DW_TAG_compile_unit 410 .byte 1 # DW_CHILDREN_yes 411 .byte 37 # DW_AT_producer 412 .byte 37 # DW_FORM_strx1 413 .byte 19 # DW_AT_language 414 .byte 5 # DW_FORM_data2 415 .byte 3 # DW_AT_name 416 .byte 37 # DW_FORM_strx1 417 .byte 114 # DW_AT_str_offsets_base 418 .byte 23 # DW_FORM_sec_offset 419 .byte 16 # DW_AT_stmt_list 420 .byte 23 # DW_FORM_sec_offset 421 .byte 27 # DW_AT_comp_dir 422 .byte 37 # DW_FORM_strx1 423 .byte 17 # DW_AT_low_pc 424 .byte 27 # DW_FORM_addrx 425 .byte 18 # DW_AT_high_pc 426 .byte 6 # DW_FORM_data4 427 .byte 115 # DW_AT_addr_base 428 .byte 23 # DW_FORM_sec_offset 429 .byte 0 # EOM(1) 430 .byte 0 # EOM(2) 431 .byte 7 # Abbreviation Code 432 .byte 46 # DW_TAG_subprogram 433 .byte 1 # DW_CHILDREN_yes 434 .byte 17 # DW_AT_low_pc 435 .byte 27 # DW_FORM_addrx 436 .byte 18 # DW_AT_high_pc 437 .byte 6 # DW_FORM_data4 438 .byte 64 # DW_AT_frame_base 439 .byte 24 # DW_FORM_exprloc 440 .byte 3 # DW_AT_name 441 .byte 37 # DW_FORM_strx1 442 .byte 58 # DW_AT_decl_file 443 .byte 11 # DW_FORM_data1 444 .byte 59 # DW_AT_decl_line 445 .byte 11 # DW_FORM_data1 446 .byte 73 # DW_AT_type 447 .byte 19 # DW_FORM_ref4 448 .byte 63 # DW_AT_external 449 .byte 25 # DW_FORM_flag_present 450 .byte 0 # EOM(1) 451 .byte 0 # EOM(2) 452 .byte 8 # Abbreviation Code 453 .byte 5 # DW_TAG_formal_parameter 454 .byte 0 # DW_CHILDREN_no 455 .byte 2 # DW_AT_location 456 .byte 24 # DW_FORM_exprloc 457 .byte 3 # DW_AT_name 458 .byte 37 # DW_FORM_strx1 459 .byte 58 # DW_AT_decl_file 460 .byte 11 # DW_FORM_data1 461 .byte 59 # DW_AT_decl_line 462 .byte 11 # DW_FORM_data1 463 .byte 73 # DW_AT_type 464 .byte 19 # DW_FORM_ref4 465 .byte 0 # EOM(1) 466 .byte 0 # EOM(2) 467 .byte 9 # Abbreviation Code 468 .byte 52 # DW_TAG_variable 469 .byte 0 # DW_CHILDREN_no 470 .byte 2 # DW_AT_location 471 .byte 24 # DW_FORM_exprloc 472 .byte 3 # DW_AT_name 473 .byte 37 # DW_FORM_strx1 474 .byte 58 # DW_AT_decl_file 475 .byte 11 # DW_FORM_data1 476 .byte 59 # DW_AT_decl_line 477 .byte 11 # DW_FORM_data1 478 .byte 73 # DW_AT_type 479 .byte 19 # DW_FORM_ref4 480 .byte 0 # EOM(1) 481 .byte 0 # EOM(2) 482 .byte 10 # Abbreviation Code 483 .byte 19 # DW_TAG_structure_type 484 .byte 0 # DW_CHILDREN_no 485 .byte 60 # DW_AT_declaration 486 .byte 25 # DW_FORM_flag_present 487 .byte 105 # DW_AT_signature 488 .byte 32 # DW_FORM_ref_sig8 489 .byte 0 # EOM(1) 490 .byte 0 # EOM(2) 491 .byte 11 # Abbreviation Code 492 .byte 46 # DW_TAG_subprogram 493 .byte 1 # DW_CHILDREN_yes 494 .byte 17 # DW_AT_low_pc 495 .byte 27 # DW_FORM_addrx 496 .byte 18 # DW_AT_high_pc 497 .byte 6 # DW_FORM_data4 498 .byte 64 # DW_AT_frame_base 499 .byte 24 # DW_FORM_exprloc 500 .byte 110 # DW_AT_linkage_name 501 .byte 37 # DW_FORM_strx1 502 .byte 3 # DW_AT_name 503 .byte 37 # DW_FORM_strx1 504 .byte 58 # DW_AT_decl_file 505 .byte 11 # DW_FORM_data1 506 .byte 59 # DW_AT_decl_line 507 .byte 11 # DW_FORM_data1 508 .byte 73 # DW_AT_type 509 .byte 19 # DW_FORM_ref4 510 .byte 63 # DW_AT_external 511 .byte 25 # DW_FORM_flag_present 512 .byte 0 # EOM(1) 513 .byte 0 # EOM(2) 514 .byte 12 # Abbreviation Code <-- Manually added abbrev decl 515 .byte 52 # DW_TAG_variable 516 .byte 0 # DW_CHILDREN_no 517 .byte 2 # DW_AT_location 518 .byte 24 # DW_FORM_exprloc 519 .byte 3 # DW_AT_name 520 .byte 37 # DW_FORM_strx1 521 .byte 58 # DW_AT_decl_file 522 .byte 11 # DW_FORM_data1 523 .byte 59 # DW_AT_decl_line 524 .byte 11 # DW_FORM_data1 525 .byte 73 # DW_AT_type 526 .byte 16 # DW_FORM_ref_addr 527 .byte 0 # EOM(1) 528 .byte 0 # EOM(2) 529 .byte 0 # EOM(3) 530 .section .debug_info,"",@progbits 531.Lcu_begin0: 532 .long .Ldebug_info_end4-.Ldebug_info_start4 # Length of Unit 533.Ldebug_info_start4: 534 .short 5 # DWARF version number 535 .byte 1 # DWARF Unit Type 536 .byte 8 # Address Size (in bytes) 537 .long .debug_abbrev # Offset Into Abbrev. Section 538 .byte 6 # Abbrev [6] 0xc:0x78 DW_TAG_compile_unit 539 .byte 0 # DW_AT_producer 540 .short 33 # DW_AT_language 541 .byte 1 # DW_AT_name 542 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base 543 .long .Lline_table_start0 # DW_AT_stmt_list 544 .byte 2 # DW_AT_comp_dir 545 .byte 0 # DW_AT_low_pc 546 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 547 .long .Laddr_table_base0 # DW_AT_addr_base 548 .byte 7 # Abbrev [7] 0x23:0x3c DW_TAG_subprogram 549 .byte 0 # DW_AT_low_pc 550 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 551 .byte 1 # DW_AT_frame_base 552 .byte 86 553 .byte 4 # DW_AT_name 554 .byte 1 # DW_AT_decl_file 555 .byte 10 # DW_AT_decl_line 556 .long 95 # DW_AT_type 557 # DW_AT_external 558 .byte 8 # Abbrev [8] 0x32:0xb DW_TAG_formal_parameter 559 .byte 2 # DW_AT_location 560 .byte 145 561 .byte 120 562 .byte 8 # DW_AT_name 563 .byte 1 # DW_AT_decl_file 564 .byte 10 # DW_AT_decl_line 565 .long 95 # DW_AT_type 566 .byte 8 # Abbrev [8] 0x3d:0xb DW_TAG_formal_parameter 567 .byte 2 # DW_AT_location 568 .byte 145 569 .byte 112 570 .byte 9 # DW_AT_name 571 .byte 1 # DW_AT_decl_file 572 .byte 10 # DW_AT_decl_line 573 .long 99 # DW_AT_type 574 .byte 12 # Abbrev [12] 0x48:0xb DW_TAG_variable <-- Manually modified s/9/12 575 .byte 2 # DW_AT_location 576 .byte 145 577 .byte 88 578 .byte 11 # DW_AT_name 579 .byte 1 # DW_AT_decl_file 580 .byte 11 # DW_AT_decl_line 581 .long .Lmanual_label # DW_AT_type <-- Manually modified 582 .byte 9 # Abbrev [9] 0x53:0xb DW_TAG_variable 583 .byte 2 # DW_AT_location 584 .byte 145 585 .byte 72 586 .byte 16 # DW_AT_name 587 .byte 1 # DW_AT_decl_file 588 .byte 15 # DW_AT_decl_line 589 .long 122 # DW_AT_type 590 .byte 0 # End Of Children Mark 591 .byte 5 # Abbrev [5] 0x5f:0x4 DW_TAG_base_type 592 .byte 5 # DW_AT_name 593 .byte 5 # DW_AT_encoding 594 .byte 4 # DW_AT_byte_size 595 .byte 4 # Abbrev [4] 0x63:0x5 DW_TAG_pointer_type 596 .long 104 # DW_AT_type 597 .byte 4 # Abbrev [4] 0x68:0x5 DW_TAG_pointer_type 598 .long 109 # DW_AT_type 599 .byte 5 # Abbrev [5] 0x6d:0x4 DW_TAG_base_type 600 .byte 10 # DW_AT_name 601 .byte 6 # DW_AT_encoding 602 .byte 1 # DW_AT_byte_size 603 .byte 10 # Abbrev [10] 0x71:0x9 DW_TAG_structure_type 604 # DW_AT_declaration 605 .quad 7448148824980338162 # DW_AT_signature 606 .byte 10 # Abbrev [10] 0x7a:0x9 DW_TAG_structure_type 607 # DW_AT_declaration 608 .quad 5322170643381124694 # DW_AT_signature 609 .byte 0 # End Of Children Mark 610.Ldebug_info_end4: 611.Lcu_begin1: 612 .long .Ldebug_info_end5-.Ldebug_info_start5 # Length of Unit 613.Ldebug_info_start5: 614 .short 5 # DWARF version number 615 .byte 1 # DWARF Unit Type 616 .byte 8 # Address Size (in bytes) 617 .long .debug_abbrev # Offset Into Abbrev. Section 618 .byte 6 # Abbrev [6] 0xc:0x55 DW_TAG_compile_unit 619 .byte 0 # DW_AT_producer 620 .short 33 # DW_AT_language 621 .byte 3 # DW_AT_name 622 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base 623 .long .Lline_table_start0 # DW_AT_stmt_list 624 .byte 2 # DW_AT_comp_dir 625 .byte 1 # DW_AT_low_pc 626 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc 627 .long .Laddr_table_base0 # DW_AT_addr_base 628 .byte 11 # Abbrev [11] 0x23:0x27 DW_TAG_subprogram 629 .byte 1 # DW_AT_low_pc 630 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc 631 .byte 1 # DW_AT_frame_base 632 .byte 86 633 .byte 6 # DW_AT_linkage_name 634 .byte 7 # DW_AT_name 635 .byte 2 # DW_AT_decl_file 636 .byte 11 # DW_AT_decl_line 637 .long 74 # DW_AT_type 638 # DW_AT_external 639 .byte 9 # Abbrev [9] 0x33:0xb DW_TAG_variable 640 .byte 2 # DW_AT_location 641 .byte 145 642 .byte 104 643 .byte 11 # DW_AT_name 644 .byte 2 # DW_AT_decl_file 645 .byte 12 # DW_AT_decl_line 646 .long 78 # DW_AT_type 647 .byte 9 # Abbrev [9] 0x3e:0xb DW_TAG_variable 648 .byte 2 # DW_AT_location 649 .byte 145 650 .byte 88 651 .byte 16 # DW_AT_name 652 .byte 2 # DW_AT_decl_file 653 .byte 13 # DW_AT_decl_line 654 .long 87 # DW_AT_type 655 .byte 0 # End Of Children Mark 656 .byte 5 # Abbrev [5] 0x4a:0x4 DW_TAG_base_type 657 .byte 5 # DW_AT_name 658 .byte 5 # DW_AT_encoding 659 .byte 4 # DW_AT_byte_size 660.Lmanual_label: 661 .byte 10 # Abbrev [10] 0x4e:0x9 DW_TAG_structure_type 662 # DW_AT_declaration 663 .quad 1175092228111723119 # DW_AT_signature 664 .byte 10 # Abbrev [10] 0x57:0x9 DW_TAG_structure_type 665 # DW_AT_declaration 666 .quad -5451594423976726044 # DW_AT_signature 667 .byte 0 # End Of Children Mark 668.Ldebug_info_end5: 669 .section .debug_str_offsets,"",@progbits 670 .long 84 # Length of String Offsets Set 671 .short 5 672 .short 0 673.Lstr_offsets_base0: 674 .section .debug_str,"MS",@progbits,1 675.Linfo_string0: 676 .asciz "clang version 15.0.0" # string offset=0 677.Linfo_string1: 678 .asciz "main.cpp" # string offset=146 679.Linfo_string2: 680 .asciz "/dwarf5-types-dwarf5-types-cross-reference-test" # string offset=155 681.Linfo_string3: 682 .asciz "helper.cpp" # string offset=240 683.Linfo_string4: 684 .asciz "main" # string offset=251 685.Linfo_string5: 686 .asciz "int" # string offset=256 687.Linfo_string6: 688 .asciz "_Z3foov" # string offset=260 689.Linfo_string7: 690 .asciz "foo" # string offset=268 691.Linfo_string8: 692 .asciz "argc" # string offset=272 693.Linfo_string9: 694 .asciz "argv" # string offset=277 695.Linfo_string10: 696 .asciz "char" # string offset=282 697.Linfo_string11: 698 .asciz "f" # string offset=287 699.Linfo_string12: 700 .asciz "c1" # string offset=289 701.Linfo_string13: 702 .asciz "c2" # string offset=292 703.Linfo_string14: 704 .asciz "c3" # string offset=295 705.Linfo_string15: 706 .asciz "Foo" # string offset=298 707.Linfo_string16: 708 .asciz "f2" # string offset=302 709.Linfo_string17: 710 .asciz "Foo2" # string offset=305 711.Linfo_string18: 712 .asciz "Foo2a" # string offset=310 713.Linfo_string19: 714 .asciz "Foo3" # string offset=316 715 .section .debug_str_offsets,"",@progbits 716 .long .Linfo_string0 717 .long .Linfo_string1 718 .long .Linfo_string2 719 .long .Linfo_string3 720 .long .Linfo_string4 721 .long .Linfo_string5 722 .long .Linfo_string6 723 .long .Linfo_string7 724 .long .Linfo_string8 725 .long .Linfo_string9 726 .long .Linfo_string10 727 .long .Linfo_string11 728 .long .Linfo_string12 729 .long .Linfo_string13 730 .long .Linfo_string14 731 .long .Linfo_string15 732 .long .Linfo_string16 733 .long .Linfo_string17 734 .long .Linfo_string18 735 .long .Linfo_string19 736 .section .debug_addr,"",@progbits 737 .long .Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution 738.Ldebug_addr_start0: 739 .short 5 # DWARF version number 740 .byte 8 # Address size 741 .byte 0 # Segment selector size 742.Laddr_table_base0: 743 .quad .Lfunc_begin0 744 .quad .Lfunc_begin1 745.Ldebug_addr_end0: 746 .ident "clang version 15.0.0" 747 .ident "clang version 15.0.0" 748 .section ".note.GNU-stack","",@progbits 749 .addrsig 750 .section .debug_line,"",@progbits 751.Lline_table_start0: 752