1# REQUIRES: system-linux 2 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 7 8## This test checks that BOLT handles correctly backward and forward cross CU references 9## for DWARF4 with -fdebug-types-section 10 11# POSTCHECK: version = 0x0004 12# POSTCHECK: DW_TAG_variable [10] 13# POSTCHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000112 "Foo2a") 14 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") 20 21# main.cpp 22# struct Foo { 23# char *c1; 24# char *c2; 25# char *c3; 26# }; 27# struct Foo2 { 28# char *c1; 29# char *c2; 30# }; 31# int main(int argc, char *argv[]) { 32# Foo f; 33# f.c1 = argv[argc]; 34# f.c2 = argv[argc + 1]; 35# f.c3 = argv[argc + 2]; 36# Foo2 f2; 37# f.c1 = argv[argc + 3]; 38# f.c2 = argv[argc + 4]; 39# return 0; 40# } 41 42# helper.cpp 43# struct Foo2a { 44# char *c1; 45# char *c2; 46# char *c3; 47# }; 48# struct Foo3 { 49# char *c1; 50# char *c2; 51# }; 52# 53# int foo() { 54# Foo2a f; 55# Foo3 f2; 56# return 0; 57# } 58 59# helper1.cpp 60# struct Foo3a { 61# char *c1; 62# char *c2; 63# char *c3; 64# }; 65# struct Foo4 { 66# char *c1; 67# char *c2; 68# }; 69# 70# int foo2() { 71# Foo3a f; 72# Foo4 f2; 73# return 0; 74# } 75 76 77 .text 78 .file "llvm-link" 79 .globl main # -- Begin function main 80 .p2align 4, 0x90 81 .type main,@function 82main: # @main 83.Lfunc_begin0: 84 .file 1 "/dwarf4-types-forward-cross-reference-test" "main.cpp" 85 .loc 1 10 0 # main.cpp:10:0 86 .cfi_startproc 87# %bb.0: # %entry 88 pushq %rbp 89 .cfi_def_cfa_offset 16 90 .cfi_offset %rbp, -16 91 movq %rsp, %rbp 92 .cfi_def_cfa_register %rbp 93 movl $0, -4(%rbp) 94 movl %edi, -8(%rbp) 95 movq %rsi, -16(%rbp) 96.Ltmp0: 97 .loc 1 12 9 prologue_end # main.cpp:12:9 98 movq -16(%rbp), %rax 99 movslq -8(%rbp), %rcx 100 movq (%rax,%rcx,8), %rax 101 .loc 1 12 7 is_stmt 0 # main.cpp:12:7 102 movq %rax, -40(%rbp) 103 .loc 1 13 9 is_stmt 1 # main.cpp:13:9 104 movq -16(%rbp), %rax 105 .loc 1 13 14 is_stmt 0 # main.cpp:13:14 106 movl -8(%rbp), %ecx 107 .loc 1 13 19 # main.cpp:13:19 108 addl $1, %ecx 109 .loc 1 13 9 # main.cpp:13:9 110 movslq %ecx, %rcx 111 movq (%rax,%rcx,8), %rax 112 .loc 1 13 7 # main.cpp:13:7 113 movq %rax, -32(%rbp) 114 .loc 1 14 9 is_stmt 1 # main.cpp:14:9 115 movq -16(%rbp), %rax 116 .loc 1 14 14 is_stmt 0 # main.cpp:14:14 117 movl -8(%rbp), %ecx 118 .loc 1 14 19 # main.cpp:14:19 119 addl $2, %ecx 120 .loc 1 14 9 # main.cpp:14:9 121 movslq %ecx, %rcx 122 movq (%rax,%rcx,8), %rax 123 .loc 1 14 7 # main.cpp:14:7 124 movq %rax, -24(%rbp) 125 .loc 1 16 9 is_stmt 1 # main.cpp:16:9 126 movq -16(%rbp), %rax 127 .loc 1 16 14 is_stmt 0 # main.cpp:16:14 128 movl -8(%rbp), %ecx 129 .loc 1 16 19 # main.cpp:16:19 130 addl $3, %ecx 131 .loc 1 16 9 # main.cpp:16:9 132 movslq %ecx, %rcx 133 movq (%rax,%rcx,8), %rax 134 .loc 1 16 7 # main.cpp:16:7 135 movq %rax, -40(%rbp) 136 .loc 1 17 9 is_stmt 1 # main.cpp:17:9 137 movq -16(%rbp), %rax 138 .loc 1 17 14 is_stmt 0 # main.cpp:17:14 139 movl -8(%rbp), %ecx 140 .loc 1 17 19 # main.cpp:17:19 141 addl $4, %ecx 142 .loc 1 17 9 # main.cpp:17:9 143 movslq %ecx, %rcx 144 movq (%rax,%rcx,8), %rax 145 .loc 1 17 7 # main.cpp:17:7 146 movq %rax, -32(%rbp) 147 .loc 1 18 2 is_stmt 1 # main.cpp:18:2 148 xorl %eax, %eax 149 .loc 1 18 2 epilogue_begin is_stmt 0 # main.cpp:18:2 150 popq %rbp 151 .cfi_def_cfa %rsp, 8 152 retq 153.Ltmp1: 154.Lfunc_end0: 155 .size main, .Lfunc_end0-main 156 .cfi_endproc 157 # -- End function 158 .globl _Z3foov # -- Begin function _Z3foov 159 .p2align 4, 0x90 160 .type _Z3foov,@function 161_Z3foov: # @_Z3foov 162.Lfunc_begin1: 163 .file 2 "/dwarf4-types-forward-cross-reference-test" "helper.cpp" 164 .loc 2 11 0 is_stmt 1 # helper.cpp:11:0 165 .cfi_startproc 166# %bb.0: # %entry 167 pushq %rbp 168 .cfi_def_cfa_offset 16 169 .cfi_offset %rbp, -16 170 movq %rsp, %rbp 171 .cfi_def_cfa_register %rbp 172.Ltmp2: 173 .loc 2 14 3 prologue_end # helper.cpp:14:3 174 xorl %eax, %eax 175 .loc 2 14 3 epilogue_begin is_stmt 0 # helper.cpp:14:3 176 popq %rbp 177 .cfi_def_cfa %rsp, 8 178 retq 179.Ltmp3: 180.Lfunc_end1: 181 .size _Z3foov, .Lfunc_end1-_Z3foov 182 .cfi_endproc 183 # -- End function 184 .globl _Z4foo2v # -- Begin function _Z4foo2v 185 .p2align 4, 0x90 186 .type _Z4foo2v,@function 187_Z4foo2v: # @_Z4foo2v 188.Lfunc_begin2: 189 .file 3 "/dwarf4-types-forward-cross-reference-test" "helper1.cpp" 190 .loc 3 11 0 is_stmt 1 # helper1.cpp:11:0 191 .cfi_startproc 192# %bb.0: # %entry 193 pushq %rbp 194 .cfi_def_cfa_offset 16 195 .cfi_offset %rbp, -16 196 movq %rsp, %rbp 197 .cfi_def_cfa_register %rbp 198.Ltmp4: 199 .loc 3 14 3 prologue_end # helper1.cpp:14:3 200 xorl %eax, %eax 201 .loc 3 14 3 epilogue_begin is_stmt 0 # helper1.cpp:14:3 202 popq %rbp 203 .cfi_def_cfa %rsp, 8 204 retq 205.Ltmp5: 206.Lfunc_end2: 207 .size _Z4foo2v, .Lfunc_end2-_Z4foo2v 208 .cfi_endproc 209 # -- End function 210 .section .debug_types,"G",@progbits,7448148824980338162,comdat 211 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit 212.Ldebug_info_start0: 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 253.Ldebug_info_end0: 254 .section .debug_types,"G",@progbits,5322170643381124694,comdat 255 .long .Ldebug_info_end1-.Ldebug_info_start1 # Length of Unit 256.Ldebug_info_start1: 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 291.Ldebug_info_end1: 292 .section .debug_types,"G",@progbits,1175092228111723119,comdat 293 .long .Ldebug_info_end2-.Ldebug_info_start2 # Length of Unit 294.Ldebug_info_start2: 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 335.Ldebug_info_end2: 336 .section .debug_types,"G",@progbits,12995149649732825572,comdat 337 .long .Ldebug_info_end3-.Ldebug_info_start3 # Length of Unit 338.Ldebug_info_start3: 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 373.Ldebug_info_end3: 374 .section .debug_types,"G",@progbits,10693860647081617285,comdat 375 .long .Ldebug_info_end4-.Ldebug_info_start4 # Length of Unit 376.Ldebug_info_start4: 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 417.Ldebug_info_end4: 418 .section .debug_types,"G",@progbits,17604755499357858397,comdat 419 .long .Ldebug_info_end5-.Ldebug_info_start5 # Length of Unit 420.Ldebug_info_start5: 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 455.Ldebug_info_end5: 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 464 .byte 0 # EOM(1) 465 .byte 0 # EOM(2) 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 471 .byte 3 # DW_AT_name 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 479 .byte 0 # EOM(1) 480 .byte 0 # EOM(2) 481 .byte 3 # Abbreviation Code 482 .byte 13 # DW_TAG_member 483 .byte 0 # DW_CHILDREN_no 484 .byte 3 # DW_AT_name 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 494 .byte 0 # EOM(1) 495 .byte 0 # EOM(2) 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 501 .byte 0 # EOM(1) 502 .byte 0 # EOM(2) 503 .byte 5 # Abbreviation Code 504 .byte 36 # DW_TAG_base_type 505 .byte 0 # DW_CHILDREN_no 506 .byte 3 # DW_AT_name 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 512 .byte 0 # EOM(1) 513 .byte 0 # EOM(2) 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 521 .byte 3 # DW_AT_name 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 531 .byte 0 # EOM(1) 532 .byte 0 # EOM(2) 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 542 .byte 3 # DW_AT_name 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 552 .byte 0 # EOM(1) 553 .byte 0 # EOM(2) 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 559 .byte 3 # DW_AT_name 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 567 .byte 0 # EOM(1) 568 .byte 0 # EOM(2) 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 574 .byte 3 # DW_AT_name 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 582 .byte 0 # EOM(1) 583 .byte 0 # EOM(2) 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 591 .byte 0 # EOM(1) 592 .byte 0 # EOM(2) 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 604 .byte 3 # DW_AT_name 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 614 .byte 0 # EOM(1) 615 .byte 0 # EOM(2) 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 621 .byte 3 # DW_AT_name 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 629 .byte 0 # EOM(1) 630 .byte 0 # EOM(2) 631 .byte 0 # EOM(3) 632 .section .debug_info,"",@progbits 633.Lcu_begin0: 634 .long .Ldebug_info_end6-.Ldebug_info_start6 # Length of Unit 635.Ldebug_info_start6: 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 651 .byte 86 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 656 # DW_AT_external 657 .byte 8 # Abbrev [8] 0x43:0xe DW_TAG_formal_parameter 658 .byte 2 # DW_AT_location 659 .byte 145 660 .byte 120 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 667 .byte 145 668 .byte 112 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 675 .byte 145 676 .byte 88 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 683 .byte 145 684 .byte 72 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 704 # DW_AT_declaration 705 .quad 7448148824980338162 # DW_AT_signature 706 .byte 10 # Abbrev [10] 0x9d:0x9 DW_TAG_structure_type 707 # DW_AT_declaration 708 .quad 5322170643381124694 # DW_AT_signature 709 .byte 0 # End Of Children Mark 710.Ldebug_info_end6: 711.Lcu_begin1: 712 .long .Ldebug_info_end7-.Ldebug_info_start7 # Length of Unit 713.Ldebug_info_start7: 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 729 .byte 86 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 735 # DW_AT_external 736 .byte 12 # Abbrev [12] 0x47:0xe DW_TAG_variable2 <-- Manually modified s/9/12 737 .byte 2 # DW_AT_location 738 .byte 145 739 .byte 104 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 746 .byte 145 747 .byte 88 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 757.Lmanual_label: 758 .byte 10 # Abbrev [10] 0x6b:0x9 DW_TAG_structure_type 759 # DW_AT_declaration 760 .quad 1175092228111723119 # DW_AT_signature 761 .byte 10 # Abbrev [10] 0x74:0x9 DW_TAG_structure_type 762 # DW_AT_declaration 763 .quad -5451594423976726044 # DW_AT_signature 764 .byte 0 # End Of Children Mark 765.Ldebug_info_end7: 766.Lcu_begin2: 767 .long .Ldebug_info_end8-.Ldebug_info_start8 # Length of Unit 768.Ldebug_info_start8: 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 784 .byte 86 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 790 # DW_AT_external 791 .byte 9 # Abbrev [9] 0x47:0xe DW_TAG_variable 792 .byte 2 # DW_AT_location 793 .byte 145 794 .byte 104 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 801 .byte 145 802 .byte 88 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 812.Lmanual_label2: 813 .byte 10 # Abbrev [10] 0x6b:0x9 DW_TAG_structure_type 814 # DW_AT_declaration 815 .quad -7752883426627934331 # DW_AT_signature 816 .byte 10 # Abbrev [10] 0x74:0x9 DW_TAG_structure_type 817 # DW_AT_declaration 818 .quad -841988574351693219 # DW_AT_signature 819 .byte 0 # End Of Children Mark 820.Ldebug_info_end8: 821 .section .debug_str,"MS",@progbits,1 822.Linfo_string0: 823 .asciz "clang version 17.0.0 (https://github.com/llvm/llvm-project.git 73027ae39b1492e5b6033358a13b86d7d1e781ae)" # string offset=0 824.Linfo_string1: 825 .asciz "main.cpp" # string offset=105 826.Linfo_string2: 827 .asciz "/dwarf4-types-forward-cross-reference-test" # string offset=114 828.Linfo_string3: 829 .asciz "helper.cpp" # string offset=194 830.Linfo_string4: 831 .asciz "helper1.cpp" # string offset=205 832.Linfo_string5: 833 .asciz "main" # string offset=217 834.Linfo_string6: 835 .asciz "int" # string offset=222 836.Linfo_string7: 837 .asciz "_Z3foov" # string offset=226 838.Linfo_string8: 839 .asciz "foo" # string offset=234 840.Linfo_string9: 841 .asciz "_Z4foo2v" # string offset=238 842.Linfo_string10: 843 .asciz "foo2" # string offset=247 844.Linfo_string11: 845 .asciz "argc" # string offset=252 846.Linfo_string12: 847 .asciz "argv" # string offset=257 848.Linfo_string13: 849 .asciz "char" # string offset=262 850.Linfo_string14: 851 .asciz "f" # string offset=267 852.Linfo_string15: 853 .asciz "c1" # string offset=269 854.Linfo_string16: 855 .asciz "c2" # string offset=272 856.Linfo_string17: 857 .asciz "c3" # string offset=275 858.Linfo_string18: 859 .asciz "Foo" # string offset=278 860.Linfo_string19: 861 .asciz "f2" # string offset=282 862.Linfo_string20: 863 .asciz "Foo2" # string offset=285 864.Linfo_string21: 865 .asciz "Foo2a" # string offset=290 866.Linfo_string22: 867 .asciz "Foo3" # string offset=296 868.Linfo_string23: 869 .asciz "Foo3a" # string offset=301 870.Linfo_string24: 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 876 .addrsig 877 .section .debug_line,"",@progbits 878.Lline_table_start0: 879