1# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %s -o %tmain.o 2# RUN: %clang %cflags -gdwarf-5 %tmain.o -o %tmain.exe 3# RUN: llvm-bolt %tmain.exe -o %tmain.exe.bolt --update-debug-sections 4# RUN: llvm-dwarfdump --debug-names %tmain.exe.bolt > %tlog.txt 5# RUN: cat %tlog.txt | FileCheck -check-prefix=BOLT %s 6 7## This test checks that BOLT correctly generates .debug_names section when there is transative 8## DW_AT_name/DW_AT_linkage_name resolution. 9 10# BOLT: Abbreviations [ 11# BOLT-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] { 12# BOLT-NEXT: Tag: DW_TAG_subprogram 13# BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 14# BOLT-NEXT: DW_IDX_parent: DW_FORM_flag_present 15# BOLT-NEXT: } 16# BOLT-NEXT: Abbreviation [[ABBREV2:0x[0-9a-f]*]] { 17# BOLT-NEXT: Tag: DW_TAG_class_type 18# BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 19# BOLT-NEXT: DW_IDX_parent: DW_FORM_flag_present 20# BOLT-NEXT: } 21# BOLT-NEXT: Abbreviation [[ABBREV3:0x[0-9a-f]*]] { 22# BOLT-NEXT: Tag: DW_TAG_inlined_subroutine 23# BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 24# BOLT-NEXT: DW_IDX_parent: DW_FORM_ref4 25# BOLT-NEXT: } 26# BOLT-NEXT: Abbreviation [[ABBREV4:0x[0-9a-f]*]] { 27# BOLT-NEXT: Tag: DW_TAG_base_type 28# BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 29# BOLT-NEXT: DW_IDX_parent: DW_FORM_flag_present 30# BOLT-NEXT: } 31# BOLT-NEXT: ] 32# BOLT-NEXT: Bucket 0 [ 33# BOLT-NEXT: Name 1 { 34# BOLT-NEXT: Hash: 0xD72418AA 35# BOLT-NEXT: String: {{.+}} "_ZL3fooi" 36# BOLT-NEXT: Entry @ {{.+}} { 37# BOLT-NEXT: Abbrev: [[ABBREV1]] 38# BOLT-NEXT: Tag: DW_TAG_subprogram 39# BOLT-NEXT: DW_IDX_die_offset: 0x000000ba 40# BOLT-NEXT: DW_IDX_parent: <parent not indexed> 41# BOLT-NEXT: } 42# BOLT-NEXT: } 43# BOLT-NEXT: ] 44# BOLT-NEXT: Bucket 1 [ 45# BOLT-NEXT: Name 2 { 46# BOLT-NEXT: Hash: 0x10614A06 47# BOLT-NEXT: String: {{.+}} "State" 48# BOLT-NEXT: Entry @ {{.+}} { 49# BOLT-NEXT: Abbrev: [[ABBREV2]] 50# BOLT-NEXT: Tag: DW_TAG_class_type 51# BOLT-NEXT: DW_IDX_die_offset: 0x0000002b 52# BOLT-NEXT: DW_IDX_parent: <parent not indexed> 53# BOLT-NEXT: } 54# BOLT-NEXT: Entry @ [[REF1:0x[0-9a-f]*]] { 55# BOLT-NEXT: Abbrev: [[ABBREV1]] 56# BOLT-NEXT: Tag: DW_TAG_subprogram 57# BOLT-NEXT: DW_IDX_die_offset: 0x00000089 58# BOLT-NEXT: DW_IDX_parent: <parent not indexed> 59# BOLT-NEXT: } 60# BOLT-NEXT: Entry @ {{.+}} { 61# BOLT-NEXT: Abbrev: [[ABBREV3]] 62# BOLT-NEXT: Tag: DW_TAG_inlined_subroutine 63# BOLT-NEXT: DW_IDX_die_offset: 0x000000a3 64# BOLT-NEXT: DW_IDX_parent: Entry @ [[REF1]] 65# BOLT-NEXT: } 66# BOLT-NEXT: } 67# BOLT-NEXT: ] 68# BOLT-NEXT: Bucket 2 [ 69# BOLT-NEXT: EMPTY 70# BOLT-NEXT: ] 71# BOLT-NEXT: Bucket 3 [ 72# BOLT-NEXT: Name 3 { 73# BOLT-NEXT: Hash: 0xB888030 74# BOLT-NEXT: String: {{.+}} "int" 75# BOLT-NEXT: Entry @ {{.+}} { 76# BOLT-NEXT: Abbrev: [[ABBREV4]] 77# BOLT-NEXT: Tag: DW_TAG_base_type 78# BOLT-NEXT: DW_IDX_die_offset: 0x00000085 79# BOLT-NEXT: DW_IDX_parent: <parent not indexed> 80# BOLT-NEXT: } 81# BOLT-NEXT: } 82# BOLT-NEXT: Name 4 { 83# BOLT-NEXT: Hash: 0x7C9A7F6A 84# BOLT-NEXT: String: {{.+}} "main" 85# BOLT-NEXT: Entry @ {{.+}} { 86# BOLT-NEXT: Abbrev: [[ABBREV1]] 87# BOLT-NEXT: Tag: DW_TAG_subprogram 88# BOLT-NEXT: DW_IDX_die_offset: 0x00000042 89# BOLT-NEXT: DW_IDX_parent: <parent not indexed> 90# BOLT-NEXT: } 91# BOLT-NEXT: } 92# BOLT-NEXT: ] 93# BOLT-NEXT: Bucket 4 [ 94# BOLT-NEXT: EMPTY 95# BOLT-NEXT: ] 96# BOLT-NEXT: Bucket 5 [ 97# BOLT-NEXT: Name 5 { 98# BOLT-NEXT: Hash: 0xB887389 99# BOLT-NEXT: String: {{.+}} "foo" 100# BOLT-NEXT: Entry @ {{.+}} { 101# BOLT-NEXT: Abbrev: [[ABBREV1]] 102# BOLT-NEXT: Tag: DW_TAG_subprogram 103# BOLT-NEXT: DW_IDX_die_offset: 0x000000ba 104# BOLT-NEXT: DW_IDX_parent: <parent not indexed> 105# BOLT-NEXT: } 106# BOLT-NEXT: } 107# BOLT-NEXT: Name 6 { 108# BOLT-NEXT: Hash: 0x7C952063 109# BOLT-NEXT: String: {{.+}} "char" 110# BOLT-NEXT: Entry @ {{.+}} { 111# BOLT-NEXT: Abbrev: [[ABBREV4]] 112# BOLT-NEXT: Tag: DW_TAG_base_type 113# BOLT-NEXT: DW_IDX_die_offset: 0x000000d9 114# BOLT-NEXT: DW_IDX_parent: <parent not indexed> 115# BOLT-NEXT: } 116# BOLT-NEXT: } 117# BOLT-NEXT: Name 7 { 118# BOLT-NEXT: Hash: 0xFBBDC812 119# BOLT-NEXT: String: {{.+}} "_ZN5StateC2Ev" 120# BOLT-NEXT: Entry @ {{.+}} { 121# BOLT-NEXT: Abbrev: [[ABBREV1]] 122# BOLT-NEXT: Tag: DW_TAG_subprogram 123# BOLT-NEXT: DW_IDX_die_offset: 0x00000089 124# BOLT-NEXT: DW_IDX_parent: <parent not indexed> 125# BOLT-NEXT: } 126# BOLT-NEXT: Entry @ {{.+}} { 127# BOLT-NEXT: Abbrev: [[ABBREV3]] 128# BOLT-NEXT: Tag: DW_TAG_inlined_subroutine 129# BOLT-NEXT: DW_IDX_die_offset: 0x000000a3 130# BOLT-NEXT: DW_IDX_parent: Entry @ [[REF1]] 131 132## static int foo(int i) { 133## return i ++; 134## } 135## class State { 136## public: 137## State() {[[clang::always_inline]] foo(3);} 138## }; 139## 140## int main(int argc, char* argv[]) { 141## State S; 142## return 0; 143## } 144 145## Test manually modified to redirect DW_TAG_inlined_subroutine to DW_TAG_subprogram with DW_AT_specification. 146 147 .text 148 .file "main.cpp" 149 .file 0 "abstractChainTwo" "main.cpp" md5 0x17ad726b6a1fd49ee59559a1302da539 150 .globl main # -- Begin function main 151 .p2align 4, 0x90 152 .type main,@function 153main: # @main 154.Lfunc_begin0: 155 .loc 0 9 0 # main.cpp:9:0 156.Ltmp0: 157 .loc 0 10 9 prologue_end # main.cpp:10:9 158 callq _ZN5StateC2Ev 159 .loc 0 11 3 # main.cpp:11:3 160 .loc 0 11 3 epilogue_begin is_stmt 0 # main.cpp:11:3 161 retq 162.Ltmp1: 163.Lfunc_end0: 164 .size main, .Lfunc_end0-main 165 # -- End function 166 .section .text._ZN5StateC2Ev,"axG",@progbits,_ZN5StateC2Ev,comdat 167 .weak _ZN5StateC2Ev # -- Begin function _ZN5StateC2Ev 168 .p2align 4, 0x90 169 .type _ZN5StateC2Ev,@function 170_ZN5StateC2Ev: # @_ZN5StateC2Ev 171.Lfunc_begin1: 172 .loc 0 6 0 is_stmt 1 # main.cpp:6:0 173 .cfi_startproc 174# %bb.0: 175 pushq %rbp 176 .cfi_def_cfa_offset 16 177 .cfi_offset %rbp, -16 178 movq %rsp, %rbp 179 .cfi_def_cfa_register %rbp 180 movq %rdi, -16(%rbp) 181 movl $3, -4(%rbp) 182.Ltmp2: 183 .loc 0 2 12 prologue_end # main.cpp:2:12 184 movl -4(%rbp), %eax 185 addl $1, %eax 186 movl %eax, -4(%rbp) 187.Ltmp3: 188 .loc 0 6 44 epilogue_begin # main.cpp:6:44 189 popq %rbp 190 .cfi_def_cfa %rsp, 8 191 retq 192.Ltmp4: 193.Lfunc_end1: 194 .size _ZN5StateC2Ev, .Lfunc_end1-_ZN5StateC2Ev 195 .cfi_endproc 196 # -- End function 197 .text 198 .p2align 4, 0x90 # -- Begin function _ZL3fooi 199 .type _ZL3fooi,@function 200_ZL3fooi: # @_ZL3fooi 201.Lfunc_begin2: 202 .loc 0 1 0 # main.cpp:1:0 203 .cfi_startproc 204# %bb.0: 205 pushq %rbp 206 .cfi_def_cfa_offset 16 207 .cfi_offset %rbp, -16 208 movq %rsp, %rbp 209 .cfi_def_cfa_register %rbp 210 movl %edi, -4(%rbp) 211.Ltmp5: 212 .loc 0 2 12 prologue_end # main.cpp:2:12 213 movl -4(%rbp), %eax 214 movl %eax, %ecx 215 addl $1, %ecx 216 movl %ecx, -4(%rbp) 217 .loc 0 2 3 epilogue_begin is_stmt 0 # main.cpp:2:3 218 popq %rbp 219 .cfi_def_cfa %rsp, 8 220 retq 221.Ltmp6: 222.Lfunc_end2: 223 .size _ZL3fooi, .Lfunc_end2-_ZL3fooi 224 .cfi_endproc 225 # -- End function 226 .section .debug_abbrev,"",@progbits 227 .byte 1 # Abbreviation Code 228 .byte 17 # DW_TAG_compile_unit 229 .byte 1 # DW_CHILDREN_yes 230 .byte 37 # DW_AT_producer 231 .byte 37 # DW_FORM_strx1 232 .byte 19 # DW_AT_language 233 .byte 5 # DW_FORM_data2 234 .byte 3 # DW_AT_name 235 .byte 37 # DW_FORM_strx1 236 .byte 114 # DW_AT_str_offsets_base 237 .byte 23 # DW_FORM_sec_offset 238 .byte 16 # DW_AT_stmt_list 239 .byte 23 # DW_FORM_sec_offset 240 .byte 27 # DW_AT_comp_dir 241 .byte 37 # DW_FORM_strx1 242 .byte 17 # DW_AT_low_pc 243 .byte 1 # DW_FORM_addr 244 .byte 85 # DW_AT_ranges 245 .byte 35 # DW_FORM_rnglistx 246 .byte 115 # DW_AT_addr_base 247 .byte 23 # DW_FORM_sec_offset 248 .byte 116 # DW_AT_rnglists_base 249 .byte 23 # DW_FORM_sec_offset 250 .byte 0 # EOM(1) 251 .byte 0 # EOM(2) 252 .byte 2 # Abbreviation Code 253 .byte 2 # DW_TAG_class_type 254 .byte 1 # DW_CHILDREN_yes 255 .byte 54 # DW_AT_calling_convention 256 .byte 11 # DW_FORM_data1 257 .byte 3 # DW_AT_name 258 .byte 37 # DW_FORM_strx1 259 .byte 11 # DW_AT_byte_size 260 .byte 11 # DW_FORM_data1 261 .byte 58 # DW_AT_decl_file 262 .byte 11 # DW_FORM_data1 263 .byte 59 # DW_AT_decl_line 264 .byte 11 # DW_FORM_data1 265 .byte 0 # EOM(1) 266 .byte 0 # EOM(2) 267 .byte 3 # Abbreviation Code 268 .byte 46 # DW_TAG_subprogram 269 .byte 1 # DW_CHILDREN_yes 270 .byte 3 # DW_AT_name 271 .byte 37 # DW_FORM_strx1 272 .byte 58 # DW_AT_decl_file 273 .byte 11 # DW_FORM_data1 274 .byte 59 # DW_AT_decl_line 275 .byte 11 # DW_FORM_data1 276 .byte 60 # DW_AT_declaration 277 .byte 25 # DW_FORM_flag_present 278 .byte 63 # DW_AT_external 279 .byte 25 # DW_FORM_flag_present 280 .byte 50 # DW_AT_accessibility 281 .byte 11 # DW_FORM_data1 282 .byte 0 # EOM(1) 283 .byte 0 # EOM(2) 284 .byte 4 # Abbreviation Code 285 .byte 5 # DW_TAG_formal_parameter 286 .byte 0 # DW_CHILDREN_no 287 .byte 73 # DW_AT_type 288 .byte 19 # DW_FORM_ref4 289 .byte 52 # DW_AT_artificial 290 .byte 25 # DW_FORM_flag_present 291 .byte 0 # EOM(1) 292 .byte 0 # EOM(2) 293 .byte 5 # Abbreviation Code 294 .byte 15 # DW_TAG_pointer_type 295 .byte 0 # DW_CHILDREN_no 296 .byte 73 # DW_AT_type 297 .byte 19 # DW_FORM_ref4 298 .byte 0 # EOM(1) 299 .byte 0 # EOM(2) 300 .byte 6 # Abbreviation Code 301 .byte 46 # DW_TAG_subprogram 302 .byte 1 # DW_CHILDREN_yes 303 .byte 17 # DW_AT_low_pc 304 .byte 27 # DW_FORM_addrx 305 .byte 18 # DW_AT_high_pc 306 .byte 6 # DW_FORM_data4 307 .byte 64 # DW_AT_frame_base 308 .byte 24 # DW_FORM_exprloc 309 .byte 3 # DW_AT_name 310 .byte 37 # DW_FORM_strx1 311 .byte 58 # DW_AT_decl_file 312 .byte 11 # DW_FORM_data1 313 .byte 59 # DW_AT_decl_line 314 .byte 11 # DW_FORM_data1 315 .byte 73 # DW_AT_type 316 .byte 19 # DW_FORM_ref4 317 .byte 63 # DW_AT_external 318 .byte 25 # DW_FORM_flag_present 319 .byte 0 # EOM(1) 320 .byte 0 # EOM(2) 321 .byte 7 # Abbreviation Code 322 .byte 5 # DW_TAG_formal_parameter 323 .byte 0 # DW_CHILDREN_no 324 .byte 2 # DW_AT_location 325 .byte 24 # DW_FORM_exprloc 326 .byte 3 # DW_AT_name 327 .byte 37 # DW_FORM_strx1 328 .byte 58 # DW_AT_decl_file 329 .byte 11 # DW_FORM_data1 330 .byte 59 # DW_AT_decl_line 331 .byte 11 # DW_FORM_data1 332 .byte 73 # DW_AT_type 333 .byte 19 # DW_FORM_ref4 334 .byte 0 # EOM(1) 335 .byte 0 # EOM(2) 336 .byte 8 # Abbreviation Code 337 .byte 52 # DW_TAG_variable 338 .byte 0 # DW_CHILDREN_no 339 .byte 2 # DW_AT_location 340 .byte 24 # DW_FORM_exprloc 341 .byte 3 # DW_AT_name 342 .byte 37 # DW_FORM_strx1 343 .byte 58 # DW_AT_decl_file 344 .byte 11 # DW_FORM_data1 345 .byte 59 # DW_AT_decl_line 346 .byte 11 # DW_FORM_data1 347 .byte 73 # DW_AT_type 348 .byte 19 # DW_FORM_ref4 349 .byte 0 # EOM(1) 350 .byte 0 # EOM(2) 351 .byte 9 # Abbreviation Code 352 .byte 46 # DW_TAG_subprogram 353 .byte 1 # DW_CHILDREN_yes 354 .byte 110 # DW_AT_linkage_name 355 .byte 37 # DW_FORM_strx1 356 .byte 3 # DW_AT_name 357 .byte 37 # DW_FORM_strx1 358 .byte 58 # DW_AT_decl_file 359 .byte 11 # DW_FORM_data1 360 .byte 59 # DW_AT_decl_line 361 .byte 11 # DW_FORM_data1 362 .byte 73 # DW_AT_type 363 .byte 19 # DW_FORM_ref4 364 .byte 32 # DW_AT_inline 365 .byte 33 # DW_FORM_implicit_const 366 .byte 1 367 .byte 0 # EOM(1) 368 .byte 0 # EOM(2) 369 .byte 10 # Abbreviation Code 370 .byte 5 # DW_TAG_formal_parameter 371 .byte 0 # DW_CHILDREN_no 372 .byte 3 # DW_AT_name 373 .byte 37 # DW_FORM_strx1 374 .byte 58 # DW_AT_decl_file 375 .byte 11 # DW_FORM_data1 376 .byte 59 # DW_AT_decl_line 377 .byte 11 # DW_FORM_data1 378 .byte 73 # DW_AT_type 379 .byte 19 # DW_FORM_ref4 380 .byte 0 # EOM(1) 381 .byte 0 # EOM(2) 382 .byte 11 # Abbreviation Code 383 .byte 36 # DW_TAG_base_type 384 .byte 0 # DW_CHILDREN_no 385 .byte 3 # DW_AT_name 386 .byte 37 # DW_FORM_strx1 387 .byte 62 # DW_AT_encoding 388 .byte 11 # DW_FORM_data1 389 .byte 11 # DW_AT_byte_size 390 .byte 11 # DW_FORM_data1 391 .byte 0 # EOM(1) 392 .byte 0 # EOM(2) 393 .byte 12 # Abbreviation Code 394 .byte 46 # DW_TAG_subprogram 395 .byte 1 # DW_CHILDREN_yes 396 .byte 17 # DW_AT_low_pc 397 .byte 27 # DW_FORM_addrx 398 .byte 18 # DW_AT_high_pc 399 .byte 6 # DW_FORM_data4 400 .byte 64 # DW_AT_frame_base 401 .byte 24 # DW_FORM_exprloc 402 .byte 100 # DW_AT_object_pointer 403 .byte 19 # DW_FORM_ref4 404 .byte 110 # DW_AT_linkage_name 405 .byte 37 # DW_FORM_strx1 406 .byte 71 # DW_AT_specification 407 .byte 19 # DW_FORM_ref4 408 .byte 0 # EOM(1) 409 .byte 0 # EOM(2) 410 .byte 13 # Abbreviation Code 411 .byte 5 # DW_TAG_formal_parameter 412 .byte 0 # DW_CHILDREN_no 413 .byte 2 # DW_AT_location 414 .byte 24 # DW_FORM_exprloc 415 .byte 3 # DW_AT_name 416 .byte 37 # DW_FORM_strx1 417 .byte 73 # DW_AT_type 418 .byte 19 # DW_FORM_ref4 419 .byte 52 # DW_AT_artificial 420 .byte 25 # DW_FORM_flag_present 421 .byte 0 # EOM(1) 422 .byte 0 # EOM(2) 423 .byte 14 # Abbreviation Code 424 .byte 29 # DW_TAG_inlined_subroutine 425 .byte 1 # DW_CHILDREN_yes 426 .byte 49 # DW_AT_abstract_origin 427 .byte 19 # DW_FORM_ref4 428 .byte 17 # DW_AT_low_pc 429 .byte 27 # DW_FORM_addrx 430 .byte 18 # DW_AT_high_pc 431 .byte 6 # DW_FORM_data4 432 .byte 88 # DW_AT_call_file 433 .byte 11 # DW_FORM_data1 434 .byte 89 # DW_AT_call_line 435 .byte 11 # DW_FORM_data1 436 .byte 87 # DW_AT_call_column 437 .byte 11 # DW_FORM_data1 438 .byte 0 # EOM(1) 439 .byte 0 # EOM(2) 440 .byte 15 # Abbreviation Code 441 .byte 5 # DW_TAG_formal_parameter 442 .byte 0 # DW_CHILDREN_no 443 .byte 2 # DW_AT_location 444 .byte 24 # DW_FORM_exprloc 445 .byte 49 # DW_AT_abstract_origin 446 .byte 19 # DW_FORM_ref4 447 .byte 0 # EOM(1) 448 .byte 0 # EOM(2) 449 .byte 16 # Abbreviation Code 450 .byte 46 # DW_TAG_subprogram 451 .byte 1 # DW_CHILDREN_yes 452 .byte 17 # DW_AT_low_pc 453 .byte 27 # DW_FORM_addrx 454 .byte 18 # DW_AT_high_pc 455 .byte 6 # DW_FORM_data4 456 .byte 64 # DW_AT_frame_base 457 .byte 24 # DW_FORM_exprloc 458 .byte 49 # DW_AT_abstract_origin 459 .byte 19 # DW_FORM_ref4 460 .byte 0 # EOM(1) 461 .byte 0 # EOM(2) 462 .byte 0 # EOM(3) 463 .section .debug_info,"",@progbits 464.Lcu_begin0: 465 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit 466.Ldebug_info_start0: 467 .short 5 # DWARF version number 468 .byte 1 # DWARF Unit Type 469 .byte 8 # Address Size (in bytes) 470 .long .debug_abbrev # Offset Into Abbrev. Section 471 .byte 1 # Abbrev [1] 0xc:0xd7 DW_TAG_compile_unit 472 .byte 0 # DW_AT_producer 473 .short 33 # DW_AT_language 474 .byte 1 # DW_AT_name 475 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base 476 .long .Lline_table_start0 # DW_AT_stmt_list 477 .byte 2 # DW_AT_comp_dir 478 .quad 0 # DW_AT_low_pc 479 .byte 0 # DW_AT_ranges 480 .long .Laddr_table_base0 # DW_AT_addr_base 481 .long .Lrnglists_table_base0 # DW_AT_rnglists_base 482 .byte 2 # Abbrev [2] 0x2b:0x12 DW_TAG_class_type 483 .byte 5 # DW_AT_calling_convention 484 .byte 3 # DW_AT_name 485 .byte 1 # DW_AT_byte_size 486 .byte 0 # DW_AT_decl_file 487 .byte 4 # DW_AT_decl_line 488 .byte 3 # Abbrev [3] 0x31:0xb DW_TAG_subprogram 489 .byte 3 # DW_AT_name 490 .byte 0 # DW_AT_decl_file 491 .byte 6 # DW_AT_decl_line 492 # DW_AT_declaration 493 # DW_AT_external 494 .byte 1 # DW_AT_accessibility 495 # DW_ACCESS_public 496 .byte 4 # Abbrev [4] 0x36:0x5 DW_TAG_formal_parameter 497 .long 61 # DW_AT_type 498 # DW_AT_artificial 499 .byte 0 # End Of Children Mark 500 .byte 0 # End Of Children Mark 501 .byte 5 # Abbrev [5] 0x3d:0x5 DW_TAG_pointer_type 502 .long 43 # DW_AT_type 503 .byte 6 # Abbrev [6] 0x42:0x31 DW_TAG_subprogram 504 .byte 0 # DW_AT_low_pc 505 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 506 .byte 1 # DW_AT_frame_base 507 .byte 86 508 .byte 8 # DW_AT_name 509 .byte 0 # DW_AT_decl_file 510 .byte 9 # DW_AT_decl_line 511 .long 133 # DW_AT_type 512 # DW_AT_external 513 .byte 7 # Abbrev [7] 0x51:0xb DW_TAG_formal_parameter 514 .byte 2 # DW_AT_location 515 .byte 145 516 .byte 120 517 .byte 10 # DW_AT_name 518 .byte 0 # DW_AT_decl_file 519 .byte 9 # DW_AT_decl_line 520 .long 133 # DW_AT_type 521 .byte 7 # Abbrev [7] 0x5c:0xb DW_TAG_formal_parameter 522 .byte 2 # DW_AT_location 523 .byte 145 524 .byte 112 525 .byte 11 # DW_AT_name 526 .byte 0 # DW_AT_decl_file 527 .byte 9 # DW_AT_decl_line 528 .long 207 # DW_AT_type 529 .byte 8 # Abbrev [8] 0x67:0xb DW_TAG_variable 530 .byte 2 # DW_AT_location 531 .byte 145 532 .byte 111 533 .byte 13 # DW_AT_name 534 .byte 0 # DW_AT_decl_file 535 .byte 10 # DW_AT_decl_line 536 .long 43 # DW_AT_type 537 .byte 0 # End Of Children Mark 538 .byte 9 # Abbrev [9] 0x73:0x12 DW_TAG_subprogram 539 .byte 4 # DW_AT_linkage_name 540 .byte 5 # DW_AT_name 541 .byte 0 # DW_AT_decl_file 542 .byte 1 # DW_AT_decl_line 543 .long 133 # DW_AT_type 544 # DW_AT_inline 545 .byte 10 # Abbrev [10] 0x7c:0x8 DW_TAG_formal_parameter 546 .byte 7 # DW_AT_name 547 .byte 0 # DW_AT_decl_file 548 .byte 1 # DW_AT_decl_line 549 .long 133 # DW_AT_type 550 .byte 0 # End Of Children Mark 551 .byte 11 # Abbrev [11] 0x85:0x4 DW_TAG_base_type 552 .byte 6 # DW_AT_name 553 .byte 5 # DW_AT_encoding 554 .byte 4 # DW_AT_byte_size 555 .byte 12 # Abbrev [12] 0x89:0x31 DW_TAG_subprogram 556 .byte 1 # DW_AT_low_pc 557 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc 558 .byte 1 # DW_AT_frame_base 559 .byte 86 560 .long 154 # DW_AT_object_pointer 561 .byte 9 # DW_AT_linkage_name 562 .long 49 # DW_AT_specification 563 .byte 13 # Abbrev [13] 0x9a:0x9 DW_TAG_formal_parameter 564 .byte 2 # DW_AT_location 565 .byte 145 566 .byte 112 567 .byte 14 # DW_AT_name 568 .long 221 # DW_AT_type 569 # DW_AT_artificial 570 .byte 14 # Abbrev [14] 0xa3:0x16 DW_TAG_inlined_subroutine 571 .long 137 # DW_AT_abstract_origin Manually Modified 572 .byte 2 # DW_AT_low_pc 573 .long .Ltmp3-.Ltmp2 # DW_AT_high_pc 574 .byte 0 # DW_AT_call_file 575 .byte 6 # DW_AT_call_line 576 .byte 37 # DW_AT_call_column 577 .byte 15 # Abbrev [15] 0xb0:0x8 DW_TAG_formal_parameter 578 .byte 2 # DW_AT_location 579 .byte 145 580 .byte 124 581 .long 124 # DW_AT_abstract_origin 582 .byte 0 # End Of Children Mark 583 .byte 0 # End Of Children Mark 584 .byte 16 # Abbrev [16] 0xba:0x15 DW_TAG_subprogram 585 .byte 3 # DW_AT_low_pc 586 .long .Lfunc_end2-.Lfunc_begin2 # DW_AT_high_pc 587 .byte 1 # DW_AT_frame_base 588 .byte 86 589 .long 115 # DW_AT_abstract_origin 590 .byte 15 # Abbrev [15] 0xc6:0x8 DW_TAG_formal_parameter 591 .byte 2 # DW_AT_location 592 .byte 145 593 .byte 124 594 .long 124 # DW_AT_abstract_origin 595 .byte 0 # End Of Children Mark 596 .byte 5 # Abbrev [5] 0xcf:0x5 DW_TAG_pointer_type 597 .long 212 # DW_AT_type 598 .byte 5 # Abbrev [5] 0xd4:0x5 DW_TAG_pointer_type 599 .long 217 # DW_AT_type 600 .byte 11 # Abbrev [11] 0xd9:0x4 DW_TAG_base_type 601 .byte 12 # DW_AT_name 602 .byte 6 # DW_AT_encoding 603 .byte 1 # DW_AT_byte_size 604 .byte 5 # Abbrev [5] 0xdd:0x5 DW_TAG_pointer_type 605 .long 43 # DW_AT_type 606 .byte 0 # End Of Children Mark 607.Ldebug_info_end0: 608 .section .debug_rnglists,"",@progbits 609 .long .Ldebug_list_header_end0-.Ldebug_list_header_start0 # Length 610.Ldebug_list_header_start0: 611 .short 5 # Version 612 .byte 8 # Address size 613 .byte 0 # Segment selector size 614 .long 1 # Offset entry count 615.Lrnglists_table_base0: 616 .long .Ldebug_ranges0-.Lrnglists_table_base0 617.Ldebug_ranges0: 618 .byte 1 # DW_RLE_base_addressx 619 .byte 0 # base address index 620 .byte 4 # DW_RLE_offset_pair 621 .uleb128 .Lfunc_begin0-.Lfunc_begin0 # starting offset 622 .uleb128 .Lfunc_end0-.Lfunc_begin0 # ending offset 623 .byte 4 # DW_RLE_offset_pair 624 .uleb128 .Lfunc_begin2-.Lfunc_begin0 # starting offset 625 .uleb128 .Lfunc_end2-.Lfunc_begin0 # ending offset 626 .byte 3 # DW_RLE_startx_length 627 .byte 1 # start index 628 .uleb128 .Lfunc_end1-.Lfunc_begin1 # length 629 .byte 0 # DW_RLE_end_of_list 630.Ldebug_list_header_end0: 631 .section .debug_str_offsets,"",@progbits 632 .long 64 # Length of String Offsets Set 633 .short 5 634 .short 0 635.Lstr_offsets_base0: 636 .section .debug_str,"MS",@progbits,1 637.Linfo_string0: 638 .asciz "clang version 20.0.0git" # string offset=0 639.Linfo_string1: 640 .asciz "main.cpp" # string offset=24 641.Linfo_string2: 642 .asciz "abstractChainTwo" # string offset=33 643.Linfo_string3: 644 .asciz "State" # string offset=88 645.Linfo_string4: 646 .asciz "main" # string offset=94 647.Linfo_string5: 648 .asciz "_ZL3fooi" # string offset=99 649.Linfo_string6: 650 .asciz "foo" # string offset=108 651.Linfo_string7: 652 .asciz "int" # string offset=112 653.Linfo_string8: 654 .asciz "i" # string offset=116 655.Linfo_string9: 656 .asciz "_ZN5StateC2Ev" # string offset=118 657.Linfo_string10: 658 .asciz "argc" # string offset=132 659.Linfo_string11: 660 .asciz "argv" # string offset=137 661.Linfo_string12: 662 .asciz "char" # string offset=142 663.Linfo_string13: 664 .asciz "S" # string offset=147 665.Linfo_string14: 666 .asciz "this" # string offset=149 667 .section .debug_str_offsets,"",@progbits 668 .long .Linfo_string0 669 .long .Linfo_string1 670 .long .Linfo_string2 671 .long .Linfo_string3 672 .long .Linfo_string5 673 .long .Linfo_string6 674 .long .Linfo_string7 675 .long .Linfo_string8 676 .long .Linfo_string4 677 .long .Linfo_string9 678 .long .Linfo_string10 679 .long .Linfo_string11 680 .long .Linfo_string12 681 .long .Linfo_string13 682 .long .Linfo_string14 683 .section .debug_addr,"",@progbits 684 .long .Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution 685.Ldebug_addr_start0: 686 .short 5 # DWARF version number 687 .byte 8 # Address size 688 .byte 0 # Segment selector size 689.Laddr_table_base0: 690 .quad .Lfunc_begin0 691 .quad .Lfunc_begin1 692 .quad .Ltmp2 693 .quad .Lfunc_begin2 694.Ldebug_addr_end0: 695 .section .debug_names,"",@progbits 696 .long .Lnames_end0-.Lnames_start0 # Header: unit length 697.Lnames_start0: 698 .short 5 # Header: version 699 .short 0 # Header: padding 700 .long 1 # Header: compilation unit count 701 .long 0 # Header: local type unit count 702 .long 0 # Header: foreign type unit count 703 .long 7 # Header: bucket count 704 .long 7 # Header: name count 705 .long .Lnames_abbrev_end0-.Lnames_abbrev_start0 # Header: abbreviation table size 706 .long 8 # Header: augmentation string size 707 .ascii "LLVM0700" # Header: augmentation string 708 .long .Lcu_begin0 # Compilation unit 0 709 .long 1 # Bucket 0 710 .long 2 # Bucket 1 711 .long 0 # Bucket 2 712 .long 3 # Bucket 3 713 .long 0 # Bucket 4 714 .long 5 # Bucket 5 715 .long 0 # Bucket 6 716 .long -685500246 # Hash in Bucket 0 717 .long 274811398 # Hash in Bucket 1 718 .long 193495088 # Hash in Bucket 3 719 .long 2090499946 # Hash in Bucket 3 720 .long 193491849 # Hash in Bucket 5 721 .long 2090147939 # Hash in Bucket 5 722 .long -71448558 # Hash in Bucket 5 723 .long .Linfo_string5 # String in Bucket 0: _ZL3fooi 724 .long .Linfo_string3 # String in Bucket 1: State 725 .long .Linfo_string7 # String in Bucket 3: int 726 .long .Linfo_string4 # String in Bucket 3: main 727 .long .Linfo_string6 # String in Bucket 5: foo 728 .long .Linfo_string12 # String in Bucket 5: char 729 .long .Linfo_string9 # String in Bucket 5: _ZN5StateC2Ev 730 .long .Lnames5-.Lnames_entries0 # Offset in Bucket 0 731 .long .Lnames0-.Lnames_entries0 # Offset in Bucket 1 732 .long .Lnames2-.Lnames_entries0 # Offset in Bucket 3 733 .long .Lnames1-.Lnames_entries0 # Offset in Bucket 3 734 .long .Lnames4-.Lnames_entries0 # Offset in Bucket 5 735 .long .Lnames6-.Lnames_entries0 # Offset in Bucket 5 736 .long .Lnames3-.Lnames_entries0 # Offset in Bucket 5 737.Lnames_abbrev_start0: 738 .byte 1 # Abbrev code 739 .byte 29 # DW_TAG_inlined_subroutine 740 .byte 3 # DW_IDX_die_offset 741 .byte 19 # DW_FORM_ref4 742 .byte 4 # DW_IDX_parent 743 .byte 19 # DW_FORM_ref4 744 .byte 0 # End of abbrev 745 .byte 0 # End of abbrev 746 .byte 2 # Abbrev code 747 .byte 46 # DW_TAG_subprogram 748 .byte 3 # DW_IDX_die_offset 749 .byte 19 # DW_FORM_ref4 750 .byte 4 # DW_IDX_parent 751 .byte 25 # DW_FORM_flag_present 752 .byte 0 # End of abbrev 753 .byte 0 # End of abbrev 754 .byte 3 # Abbrev code 755 .byte 2 # DW_TAG_class_type 756 .byte 3 # DW_IDX_die_offset 757 .byte 19 # DW_FORM_ref4 758 .byte 4 # DW_IDX_parent 759 .byte 25 # DW_FORM_flag_present 760 .byte 0 # End of abbrev 761 .byte 0 # End of abbrev 762 .byte 4 # Abbrev code 763 .byte 36 # DW_TAG_base_type 764 .byte 3 # DW_IDX_die_offset 765 .byte 19 # DW_FORM_ref4 766 .byte 4 # DW_IDX_parent 767 .byte 25 # DW_FORM_flag_present 768 .byte 0 # End of abbrev 769 .byte 0 # End of abbrev 770 .byte 0 # End of abbrev list 771.Lnames_abbrev_end0: 772.Lnames_entries0: 773.Lnames5: 774.L1: 775 .byte 1 # Abbreviation code 776 .long 163 # DW_IDX_die_offset 777 .long .L2-.Lnames_entries0 # DW_IDX_parent 778.L0: 779 .byte 2 # Abbreviation code 780 .long 186 # DW_IDX_die_offset 781 .byte 0 # DW_IDX_parent 782 # End of list: _ZL3fooi 783.Lnames0: 784.L5: 785 .byte 3 # Abbreviation code 786 .long 43 # DW_IDX_die_offset 787.L2: # DW_IDX_parent 788 .byte 2 # Abbreviation code 789 .long 137 # DW_IDX_die_offset 790 .byte 0 # DW_IDX_parent 791 # End of list: State 792.Lnames2: 793.L4: 794 .byte 4 # Abbreviation code 795 .long 133 # DW_IDX_die_offset 796 .byte 0 # DW_IDX_parent 797 # End of list: int 798.Lnames1: 799.L6: 800 .byte 2 # Abbreviation code 801 .long 66 # DW_IDX_die_offset 802 .byte 0 # DW_IDX_parent 803 # End of list: main 804.Lnames4: 805 .byte 1 # Abbreviation code 806 .long 163 # DW_IDX_die_offset 807 .long .L2-.Lnames_entries0 # DW_IDX_parent 808 .byte 2 # Abbreviation code 809 .long 186 # DW_IDX_die_offset 810 .byte 0 # DW_IDX_parent 811 # End of list: foo 812.Lnames6: 813.L3: 814 .byte 4 # Abbreviation code 815 .long 217 # DW_IDX_die_offset 816 .byte 0 # DW_IDX_parent 817 # End of list: char 818.Lnames3: 819 .byte 2 # Abbreviation code 820 .long 137 # DW_IDX_die_offset 821 .byte 0 # DW_IDX_parent 822 # End of list: _ZN5StateC2Ev 823 .p2align 2, 0x0 824.Lnames_end0: 825 .ident "clang version 20.0.0git" 826 .section ".note.GNU-stack","",@progbits 827 .addrsig 828 .section .debug_line,"",@progbits 829.Lline_table_start0: 830