1# REQUIRES: system-linux 2 3# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %s -o %t1.o 4# RUN: %clang %cflags -dwarf-5 %t1.o -o %t.exe -Wl,-q 5# RUN: llvm-bolt %t.exe -o %t.bolt --update-debug-sections 6# RUN: llvm-dwarfdump --debug-names %t.bolt FileCheck --check-prefix=POSTCHECK %s 7 8## This test checks that BOLT doesn't set DW_IDX_parent an entry, InnerState, when it's parent is a forward declaration. 9 10# POSTCHECK: debug_names 11# POSTCHECK: Bucket 0 [ 12# POSTCHECK-NEXT: Name 1 { 13# POSTCHECK-NEXT: Hash: 0xB888030 14# POSTCHECK-NEXT: String: 0x00000047 "int" 15# POSTCHECK-NEXT: Entry @ 0xfb { 16# POSTCHECK-NEXT: Abbrev: 0x1 17# POSTCHECK-NEXT: Tag: DW_TAG_base_type 18# POSTCHECK-NEXT: DW_IDX_die_offset: 0x0000005c 19# POSTCHECK-NEXT: DW_IDX_parent: <parent not indexed> 20# POSTCHECK-NEXT: } 21# POSTCHECK-NEXT: } 22# POSTCHECK-NEXT: ] 23# POSTCHECK-NEXT: Bucket 1 [ 24# POSTCHECK-NEXT: EMPTY 25# POSTCHECK-NEXT: ] 26# POSTCHECK-NEXT: Bucket 2 [ 27# POSTCHECK-NEXT: Name 2 { 28# POSTCHECK-NEXT: Hash: 0x7C9A7F6A 29# POSTCHECK-NEXT: String: {{.+}} "main" 30# POSTCHECK-NEXT: Entry @ {{.+}} { 31# POSTCHECK-NEXT: Abbrev: 0x2 32# POSTCHECK-NEXT: Tag: DW_TAG_subprogram 33# POSTCHECK-NEXT: DW_IDX_die_offset: 0x00000034 34# POSTCHECK-NEXT: DW_IDX_parent: <parent not indexed> 35# POSTCHECK-NEXT: } 36# POSTCHECK-NEXT: } 37# POSTCHECK-NEXT: Name 3 { 38# POSTCHECK-NEXT: Hash: 0xE0CDC6A2 39# POSTCHECK-NEXT: String: {{.+}} "InnerState" 40# POSTCHECK-NEXT: Entry @ {{.+}} { 41# POSTCHECK-NEXT: Abbrev: 0x3 42# POSTCHECK-NEXT: Tag: DW_TAG_class_type 43# POSTCHECK-NEXT: DW_IDX_type_unit: 0x01 44# POSTCHECK-NEXT: DW_IDX_die_offset: 0x00000030 45# POSTCHECK-NEXT: } 46# POSTCHECK-NEXT: } 47# POSTCHECK-NEXT: ] 48# POSTCHECK-NEXT: Bucket 3 [ 49# POSTCHECK-NEXT: EMPTY 50# POSTCHECK-NEXT: ] 51# POSTCHECK-NEXT: Bucket 4 [ 52# POSTCHECK-NEXT: EMPTY 53# POSTCHECK-NEXT: ] 54# POSTCHECK-NEXT: Bucket 5 [ 55# POSTCHECK-NEXT: Name 4 { 56# POSTCHECK-NEXT: Hash: 0x2F94396D 57# POSTCHECK-NEXT: String: {{.+}} "_Z9get_statev" 58# POSTCHECK-NEXT: Entry @ {{.+}} { 59# POSTCHECK-NEXT: Abbrev: 0x2 60# POSTCHECK-NEXT: Tag: DW_TAG_subprogram 61# POSTCHECK-NEXT: DW_IDX_die_offset: 0x00000024 62# POSTCHECK-NEXT: DW_IDX_parent: <parent not indexed> 63# POSTCHECK-NEXT: } 64# POSTCHECK-NEXT: } 65# POSTCHECK-NEXT: Name 5 { 66# POSTCHECK-NEXT: Hash: 0xCD86E3E5 67# POSTCHECK-NEXT: String: {{.+}} "get_state" 68# POSTCHECK-NEXT: Entry @ {{.+}} { 69# POSTCHECK-NEXT: Abbrev: 0x2 70# POSTCHECK-NEXT: Tag: DW_TAG_subprogram 71# POSTCHECK-NEXT: DW_IDX_die_offset: 0x00000024 72# POSTCHECK-NEXT: DW_IDX_parent: <parent not indexed> 73# POSTCHECK-NEXT: } 74# POSTCHECK-NEXT: } 75# POSTCHECK-NEXT: ] 76# POSTCHECK-NEXT: Bucket 6 [ 77# POSTCHECK-NEXT: Name 6 { 78# POSTCHECK-NEXT: Hash: 0x2B606 79# POSTCHECK-NEXT: String: {{.+}} "A" 80# POSTCHECK-NEXT: Entry @ 0x11a { 81# POSTCHECK-NEXT: Abbrev: 0x4 82# POSTCHECK-NEXT: Tag: DW_TAG_namespace 83# POSTCHECK-NEXT: DW_IDX_type_unit: 0x00 84# POSTCHECK-NEXT: DW_IDX_die_offset: 0x00000023 85# POSTCHECK-NEXT: DW_IDX_parent: <parent not indexed> 86# POSTCHECK-NEXT: } 87# POSTCHECK-NEXT: Entry @ 0x120 { 88# POSTCHECK-NEXT: Abbrev: 0x4 89# POSTCHECK-NEXT: Tag: DW_TAG_namespace 90# POSTCHECK-NEXT: DW_IDX_type_unit: 0x01 91# POSTCHECK-NEXT: DW_IDX_die_offset: 0x00000023 92# POSTCHECK-NEXT: DW_IDX_parent: <parent not indexed> 93# POSTCHECK-NEXT: } 94# POSTCHECK-NEXT: Entry @ 0x126 { 95# POSTCHECK-NEXT: Abbrev: 0x5 96# POSTCHECK-NEXT: Tag: DW_TAG_namespace 97# POSTCHECK-NEXT: DW_IDX_die_offset: 0x00000043 98# POSTCHECK-NEXT: DW_IDX_parent: <parent not indexed> 99# POSTCHECK-NEXT: } 100# POSTCHECK-NEXT: } 101# POSTCHECK-NEXT: Name 7 { 102# POSTCHECK-NEXT: Hash: 0x10614A06 103# POSTCHECK-NEXT: String: {{.+}} "State" 104# POSTCHECK-NEXT: Entry @ {{.+}} { 105# POSTCHECK-NEXT: Abbrev: 0x6 106# POSTCHECK-NEXT: Tag: DW_TAG_structure_type 107# POSTCHECK-NEXT: DW_IDX_type_unit: 0x00 108# POSTCHECK-NEXT: DW_IDX_die_offset: 0x00000027 109# POSTCHECK-NEXT: DW_IDX_parent: Entry @ 0x137 110# POSTCHECK-NEXT: } 111# POSTCHECK-NEXT: } 112# POSTCHECK-NEXT: ] 113# POSTCHECK-NEXT: Bucket 7 [ 114# POSTCHECK-NEXT: Name 8 { 115# POSTCHECK-NEXT: Hash: 0x2B607 116# POSTCHECK-NEXT: String: {{.+}} "B" 117# POSTCHECK-NEXT: Entry @ 0x137 { 118# POSTCHECK-NEXT: Abbrev: 0x7 119# POSTCHECK-NEXT: Tag: DW_TAG_namespace 120# POSTCHECK-NEXT: DW_IDX_type_unit: 0x00 121# POSTCHECK-NEXT: DW_IDX_die_offset: 0x00000025 122# POSTCHECK-NEXT: DW_IDX_parent: Entry @ 0x11a 123# POSTCHECK-NEXT: } 124# POSTCHECK-NEXT: Entry @ {{.+}} { 125# POSTCHECK-NEXT: Abbrev: 0x7 126# POSTCHECK-NEXT: Tag: DW_TAG_namespace 127# POSTCHECK-NEXT: DW_IDX_type_unit: 0x01 128# POSTCHECK-NEXT: DW_IDX_die_offset: 0x00000025 129# POSTCHECK-NEXT: DW_IDX_parent: Entry @ 0x120 130# POSTCHECK-NEXT: } 131# POSTCHECK-NEXT: Entry @ {{.+}} { 132# POSTCHECK-NEXT: Abbrev: 0x8 133# POSTCHECK-NEXT: Tag: DW_TAG_namespace 134# POSTCHECK-NEXT: DW_IDX_die_offset: 0x00000045 135# POSTCHECK-NEXT: DW_IDX_parent: Entry @ 0x126 136# POSTCHECK-NEXT: } 137# POSTCHECK-NEXT: } 138# POSTCHECK-NEXT: ] 139# POSTCHECK-NEXT: } 140 141## clang++ -g2 -O0 -fdebug-types-section -gpubnames -S 142## A::B::State::InnerState get_state() { return A::B::State::InnerState(); } 143## int main() { 144## return 0; 145## } 146 147## Manually modified to fix bug in clang where for TU0 "B" was pointing to CU DIE instead of parent in TU 148 .text 149 .file "main.cpp" 150 .globl _Z9get_statev # -- Begin function _Z9get_statev 151 .p2align 4, 0x90 152 .type _Z9get_statev,@function 153_Z9get_statev: # @_Z9get_statev 154.Lfunc_begin0: 155 .file 0 "/skipDecl" "main.cpp" md5 0xd417b4a09217d7c3ec58d64286de7ba4 156 .loc 0 2 0 # main.cpp:2:0 157 .cfi_startproc 158# %bb.0: # %entry 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.Ltmp0: 165 .loc 0 2 39 prologue_end epilogue_begin # main.cpp:2:39 166 popq %rbp 167 .cfi_def_cfa %rsp, 8 168 retq 169.Ltmp1: 170.Lfunc_end0: 171 .size _Z9get_statev, .Lfunc_end0-_Z9get_statev 172 .cfi_endproc 173 # -- End function 174 .globl main # -- Begin function main 175 .p2align 4, 0x90 176 .type main,@function 177main: # @main 178.Lfunc_begin1: 179 .loc 0 4 0 # main.cpp:4:0 180 .cfi_startproc 181# %bb.0: # %entry 182 pushq %rbp 183 .cfi_def_cfa_offset 16 184 .cfi_offset %rbp, -16 185 movq %rsp, %rbp 186 .cfi_def_cfa_register %rbp 187 movl $0, -4(%rbp) 188.Ltmp2: 189 .loc 0 5 3 prologue_end # main.cpp:5:3 190 xorl %eax, %eax 191 .loc 0 5 3 epilogue_begin is_stmt 0 # main.cpp:5:3 192 popq %rbp 193 .cfi_def_cfa %rsp, 8 194 retq 195.Ltmp3: 196.Lfunc_end1: 197 .size main, .Lfunc_end1-main 198 .cfi_endproc 199 # -- End function 200 .section .debug_info,"G",@progbits,16664150534606561860,comdat 201.Ltu_begin0: 202 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit 203.Ldebug_info_start0: 204 .short 5 # DWARF version number 205 .byte 2 # DWARF Unit Type 206 .byte 8 # Address Size (in bytes) 207 .long .debug_abbrev # Offset Into Abbrev. Section 208 .quad -1782593539102989756 # Type Signature 209 .long 39 # Type DIE Offset 210 .byte 1 # Abbrev [1] 0x18:0x18 DW_TAG_type_unit 211 .short 33 # DW_AT_language 212 .long .Lline_table_start0 # DW_AT_stmt_list 213 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base 214 .byte 2 # Abbrev [2] 0x23:0xc DW_TAG_namespace 215 .byte 5 # DW_AT_name 216 .byte 2 # Abbrev [2] 0x25:0x9 DW_TAG_namespace 217 .byte 6 # DW_AT_name 218 .byte 3 # Abbrev [3] 0x27:0x6 DW_TAG_structure_type 219 .byte 5 # DW_AT_calling_convention 220 .byte 7 # DW_AT_name 221 .byte 1 # DW_AT_byte_size 222 .byte 0 # DW_AT_decl_file 223 .byte 1 # DW_AT_decl_line 224 .byte 0 # End Of Children Mark 225 .byte 0 # End Of Children Mark 226 .byte 0 # End Of Children Mark 227.Ldebug_info_end0: 228 .section .debug_info,"G",@progbits,1766745463811827694,comdat 229.Ltu_begin1: 230 .long .Ldebug_info_end1-.Ldebug_info_start1 # Length of Unit 231.Ldebug_info_start1: 232 .short 5 # DWARF version number 233 .byte 2 # DWARF Unit Type 234 .byte 8 # Address Size (in bytes) 235 .long .debug_abbrev # Offset Into Abbrev. Section 236 .quad 1766745463811827694 # Type Signature 237 .long 48 # Type DIE Offset 238 .byte 1 # Abbrev [1] 0x18:0x22 DW_TAG_type_unit 239 .short 33 # DW_AT_language 240 .long .Lline_table_start0 # DW_AT_stmt_list 241 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base 242 .byte 2 # Abbrev [2] 0x23:0x16 DW_TAG_namespace 243 .byte 5 # DW_AT_name 244 .byte 2 # Abbrev [2] 0x25:0x13 DW_TAG_namespace 245 .byte 6 # DW_AT_name 246 .byte 4 # Abbrev [4] 0x27:0x10 DW_TAG_structure_type 247 # DW_AT_declaration 248 .quad -1782593539102989756 # DW_AT_signature 249 .byte 5 # Abbrev [5] 0x30:0x6 DW_TAG_class_type 250 .byte 5 # DW_AT_calling_convention 251 .byte 8 # DW_AT_name 252 .byte 1 # DW_AT_byte_size 253 .byte 0 # DW_AT_decl_file 254 .byte 1 # DW_AT_decl_line 255 .byte 0 # End Of Children Mark 256 .byte 0 # End Of Children Mark 257 .byte 0 # End Of Children Mark 258 .byte 0 # End Of Children Mark 259.Ldebug_info_end1: 260 .section .debug_abbrev,"",@progbits 261 .byte 1 # Abbreviation Code 262 .byte 65 # DW_TAG_type_unit 263 .byte 1 # DW_CHILDREN_yes 264 .byte 19 # DW_AT_language 265 .byte 5 # DW_FORM_data2 266 .byte 16 # DW_AT_stmt_list 267 .byte 23 # DW_FORM_sec_offset 268 .byte 114 # DW_AT_str_offsets_base 269 .byte 23 # DW_FORM_sec_offset 270 .byte 0 # EOM(1) 271 .byte 0 # EOM(2) 272 .byte 2 # Abbreviation Code 273 .byte 57 # DW_TAG_namespace 274 .byte 1 # DW_CHILDREN_yes 275 .byte 3 # DW_AT_name 276 .byte 37 # DW_FORM_strx1 277 .byte 0 # EOM(1) 278 .byte 0 # EOM(2) 279 .byte 3 # Abbreviation Code 280 .byte 19 # DW_TAG_structure_type 281 .byte 0 # DW_CHILDREN_no 282 .byte 54 # DW_AT_calling_convention 283 .byte 11 # DW_FORM_data1 284 .byte 3 # DW_AT_name 285 .byte 37 # DW_FORM_strx1 286 .byte 11 # DW_AT_byte_size 287 .byte 11 # DW_FORM_data1 288 .byte 58 # DW_AT_decl_file 289 .byte 11 # DW_FORM_data1 290 .byte 59 # DW_AT_decl_line 291 .byte 11 # DW_FORM_data1 292 .byte 0 # EOM(1) 293 .byte 0 # EOM(2) 294 .byte 4 # Abbreviation Code 295 .byte 19 # DW_TAG_structure_type 296 .byte 1 # DW_CHILDREN_yes 297 .byte 60 # DW_AT_declaration 298 .byte 25 # DW_FORM_flag_present 299 .byte 105 # DW_AT_signature 300 .byte 32 # DW_FORM_ref_sig8 301 .byte 0 # EOM(1) 302 .byte 0 # EOM(2) 303 .byte 5 # Abbreviation Code 304 .byte 2 # DW_TAG_class_type 305 .byte 0 # DW_CHILDREN_no 306 .byte 54 # DW_AT_calling_convention 307 .byte 11 # DW_FORM_data1 308 .byte 3 # DW_AT_name 309 .byte 37 # DW_FORM_strx1 310 .byte 11 # DW_AT_byte_size 311 .byte 11 # DW_FORM_data1 312 .byte 58 # DW_AT_decl_file 313 .byte 11 # DW_FORM_data1 314 .byte 59 # DW_AT_decl_line 315 .byte 11 # DW_FORM_data1 316 .byte 0 # EOM(1) 317 .byte 0 # EOM(2) 318 .byte 6 # Abbreviation Code 319 .byte 17 # DW_TAG_compile_unit 320 .byte 1 # DW_CHILDREN_yes 321 .byte 37 # DW_AT_producer 322 .byte 37 # DW_FORM_strx1 323 .byte 19 # DW_AT_language 324 .byte 5 # DW_FORM_data2 325 .byte 3 # DW_AT_name 326 .byte 37 # DW_FORM_strx1 327 .byte 114 # DW_AT_str_offsets_base 328 .byte 23 # DW_FORM_sec_offset 329 .byte 16 # DW_AT_stmt_list 330 .byte 23 # DW_FORM_sec_offset 331 .byte 27 # DW_AT_comp_dir 332 .byte 37 # DW_FORM_strx1 333 .byte 17 # DW_AT_low_pc 334 .byte 27 # DW_FORM_addrx 335 .byte 18 # DW_AT_high_pc 336 .byte 6 # DW_FORM_data4 337 .byte 115 # DW_AT_addr_base 338 .byte 23 # DW_FORM_sec_offset 339 .byte 0 # EOM(1) 340 .byte 0 # EOM(2) 341 .byte 7 # Abbreviation Code 342 .byte 46 # DW_TAG_subprogram 343 .byte 0 # DW_CHILDREN_no 344 .byte 17 # DW_AT_low_pc 345 .byte 27 # DW_FORM_addrx 346 .byte 18 # DW_AT_high_pc 347 .byte 6 # DW_FORM_data4 348 .byte 64 # DW_AT_frame_base 349 .byte 24 # DW_FORM_exprloc 350 .byte 110 # DW_AT_linkage_name 351 .byte 37 # DW_FORM_strx1 352 .byte 3 # DW_AT_name 353 .byte 37 # DW_FORM_strx1 354 .byte 58 # DW_AT_decl_file 355 .byte 11 # DW_FORM_data1 356 .byte 59 # DW_AT_decl_line 357 .byte 11 # DW_FORM_data1 358 .byte 73 # DW_AT_type 359 .byte 19 # DW_FORM_ref4 360 .byte 63 # DW_AT_external 361 .byte 25 # DW_FORM_flag_present 362 .byte 0 # EOM(1) 363 .byte 0 # EOM(2) 364 .byte 8 # Abbreviation Code 365 .byte 46 # DW_TAG_subprogram 366 .byte 0 # DW_CHILDREN_no 367 .byte 17 # DW_AT_low_pc 368 .byte 27 # DW_FORM_addrx 369 .byte 18 # DW_AT_high_pc 370 .byte 6 # DW_FORM_data4 371 .byte 64 # DW_AT_frame_base 372 .byte 24 # DW_FORM_exprloc 373 .byte 3 # DW_AT_name 374 .byte 37 # DW_FORM_strx1 375 .byte 58 # DW_AT_decl_file 376 .byte 11 # DW_FORM_data1 377 .byte 59 # DW_AT_decl_line 378 .byte 11 # DW_FORM_data1 379 .byte 73 # DW_AT_type 380 .byte 19 # DW_FORM_ref4 381 .byte 63 # DW_AT_external 382 .byte 25 # DW_FORM_flag_present 383 .byte 0 # EOM(1) 384 .byte 0 # EOM(2) 385 .byte 9 # Abbreviation Code 386 .byte 2 # DW_TAG_class_type 387 .byte 0 # DW_CHILDREN_no 388 .byte 60 # DW_AT_declaration 389 .byte 25 # DW_FORM_flag_present 390 .byte 105 # DW_AT_signature 391 .byte 32 # DW_FORM_ref_sig8 392 .byte 0 # EOM(1) 393 .byte 0 # EOM(2) 394 .byte 10 # Abbreviation Code 395 .byte 36 # DW_TAG_base_type 396 .byte 0 # DW_CHILDREN_no 397 .byte 3 # DW_AT_name 398 .byte 37 # DW_FORM_strx1 399 .byte 62 # DW_AT_encoding 400 .byte 11 # DW_FORM_data1 401 .byte 11 # DW_AT_byte_size 402 .byte 11 # DW_FORM_data1 403 .byte 0 # EOM(1) 404 .byte 0 # EOM(2) 405 .byte 0 # EOM(3) 406 .section .debug_info,"",@progbits 407.Lcu_begin0: 408 .long .Ldebug_info_end2-.Ldebug_info_start2 # Length of Unit 409.Ldebug_info_start2: 410 .short 5 # DWARF version number 411 .byte 1 # DWARF Unit Type 412 .byte 8 # Address Size (in bytes) 413 .long .debug_abbrev # Offset Into Abbrev. Section 414 .byte 6 # Abbrev [6] 0xc:0x54 DW_TAG_compile_unit 415 .byte 0 # DW_AT_producer 416 .short 33 # DW_AT_language 417 .byte 1 # DW_AT_name 418 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base 419 .long .Lline_table_start0 # DW_AT_stmt_list 420 .byte 2 # DW_AT_comp_dir 421 .byte 0 # DW_AT_low_pc 422 .long .Lfunc_end1-.Lfunc_begin0 # DW_AT_high_pc 423 .long .Laddr_table_base0 # DW_AT_addr_base 424 .byte 7 # Abbrev [7] 0x23:0x10 DW_TAG_subprogram 425 .byte 0 # DW_AT_low_pc 426 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 427 .byte 1 # DW_AT_frame_base 428 .byte 86 429 .byte 3 # DW_AT_linkage_name 430 .byte 4 # DW_AT_name 431 .byte 0 # DW_AT_decl_file 432 .byte 2 # DW_AT_decl_line 433 .long 79 # DW_AT_type 434 # DW_AT_external 435 .byte 8 # Abbrev [8] 0x33:0xf DW_TAG_subprogram 436 .byte 1 # DW_AT_low_pc 437 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc 438 .byte 1 # DW_AT_frame_base 439 .byte 86 440 .byte 9 # DW_AT_name 441 .byte 0 # DW_AT_decl_file 442 .byte 4 # DW_AT_decl_line 443 .long 91 # DW_AT_type 444 # DW_AT_external 445 .byte 2 # Abbrev [2] 0x42:0x19 DW_TAG_namespace 446 .byte 5 # DW_AT_name 447 .byte 2 # Abbrev [2] 0x44:0x16 DW_TAG_namespace 448 .byte 6 # DW_AT_name 449 .byte 4 # Abbrev [4] 0x46:0x13 DW_TAG_structure_type 450 # DW_AT_declaration 451 .quad -1782593539102989756 # DW_AT_signature 452 .byte 9 # Abbrev [9] 0x4f:0x9 DW_TAG_class_type 453 # DW_AT_declaration 454 .quad 1766745463811827694 # DW_AT_signature 455 .byte 0 # End Of Children Mark 456 .byte 0 # End Of Children Mark 457 .byte 0 # End Of Children Mark 458 .byte 10 # Abbrev [10] 0x5b:0x4 DW_TAG_base_type 459 .byte 10 # DW_AT_name 460 .byte 5 # DW_AT_encoding 461 .byte 4 # DW_AT_byte_size 462 .byte 0 # End Of Children Mark 463.Ldebug_info_end2: 464 .section .debug_str_offsets,"",@progbits 465 .long 48 # Length of String Offsets Set 466 .short 5 467 .short 0 468.Lstr_offsets_base0: 469 .section .debug_str,"MS",@progbits,1 470.Linfo_string0: 471 .asciz "clang version 19.0.0git" # string offset=0 472.Linfo_string1: 473 .asciz "main.cpp" # string offset=24 474.Linfo_string2: 475 .asciz "/skipDecl" # string offset=33 476.Linfo_string3: 477 .asciz "get_state" # string offset=80 478.Linfo_string4: 479 .asciz "_Z9get_statev" # string offset=90 480.Linfo_string5: 481 .asciz "main" # string offset=104 482.Linfo_string6: 483 .asciz "A" # string offset=109 484.Linfo_string7: 485 .asciz "B" # string offset=111 486.Linfo_string8: 487 .asciz "State" # string offset=113 488.Linfo_string9: 489 .asciz "InnerState" # string offset=119 490.Linfo_string10: 491 .asciz "int" # string offset=130 492 .section .debug_str_offsets,"",@progbits 493 .long .Linfo_string0 494 .long .Linfo_string1 495 .long .Linfo_string2 496 .long .Linfo_string4 497 .long .Linfo_string3 498 .long .Linfo_string6 499 .long .Linfo_string7 500 .long .Linfo_string8 501 .long .Linfo_string9 502 .long .Linfo_string5 503 .long .Linfo_string10 504 .section .debug_addr,"",@progbits 505 .long .Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution 506.Ldebug_addr_start0: 507 .short 5 # DWARF version number 508 .byte 8 # Address size 509 .byte 0 # Segment selector size 510.Laddr_table_base0: 511 .quad .Lfunc_begin0 512 .quad .Lfunc_begin1 513.Ldebug_addr_end0: 514 .section .debug_names,"",@progbits 515 .long .Lnames_end0-.Lnames_start0 # Header: unit length 516.Lnames_start0: 517 .short 5 # Header: version 518 .short 0 # Header: padding 519 .long 1 # Header: compilation unit count 520 .long 2 # Header: local type unit count 521 .long 0 # Header: foreign type unit count 522 .long 8 # Header: bucket count 523 .long 8 # Header: name count 524 .long .Lnames_abbrev_end0-.Lnames_abbrev_start0 # Header: abbreviation table size 525 .long 8 # Header: augmentation string size 526 .ascii "LLVM0700" # Header: augmentation string 527 .long .Lcu_begin0 # Compilation unit 0 528 .long .Ltu_begin0 # Type unit 0 529 .long .Ltu_begin1 # Type unit 1 530 .long 1 # Bucket 0 531 .long 0 # Bucket 1 532 .long 2 # Bucket 2 533 .long 0 # Bucket 3 534 .long 0 # Bucket 4 535 .long 4 # Bucket 5 536 .long 6 # Bucket 6 537 .long 8 # Bucket 7 538 .long 193495088 # Hash in Bucket 0 539 .long 2090499946 # Hash in Bucket 2 540 .long -523385182 # Hash in Bucket 2 541 .long 798243181 # Hash in Bucket 5 542 .long -846797851 # Hash in Bucket 5 543 .long 177670 # Hash in Bucket 6 544 .long 274811398 # Hash in Bucket 6 545 .long 177671 # Hash in Bucket 7 546 .long .Linfo_string10 # String in Bucket 0: int 547 .long .Linfo_string5 # String in Bucket 2: main 548 .long .Linfo_string9 # String in Bucket 2: InnerState 549 .long .Linfo_string4 # String in Bucket 5: _Z9get_statev 550 .long .Linfo_string3 # String in Bucket 5: get_state 551 .long .Linfo_string6 # String in Bucket 6: A 552 .long .Linfo_string8 # String in Bucket 6: State 553 .long .Linfo_string7 # String in Bucket 7: B 554 .long .Lnames7-.Lnames_entries0 # Offset in Bucket 0 555 .long .Lnames2-.Lnames_entries0 # Offset in Bucket 2 556 .long .Lnames6-.Lnames_entries0 # Offset in Bucket 2 557 .long .Lnames1-.Lnames_entries0 # Offset in Bucket 5 558 .long .Lnames0-.Lnames_entries0 # Offset in Bucket 5 559 .long .Lnames3-.Lnames_entries0 # Offset in Bucket 6 560 .long .Lnames5-.Lnames_entries0 # Offset in Bucket 6 561 .long .Lnames4-.Lnames_entries0 # Offset in Bucket 7 562.Lnames_abbrev_start0: 563 .byte 1 # Abbrev code 564 .byte 36 # DW_TAG_base_type 565 .byte 3 # DW_IDX_die_offset 566 .byte 19 # DW_FORM_ref4 567 .byte 4 # DW_IDX_parent 568 .byte 25 # DW_FORM_flag_present 569 .byte 0 # End of abbrev 570 .byte 0 # End of abbrev 571 .byte 2 # Abbrev code 572 .byte 46 # DW_TAG_subprogram 573 .byte 3 # DW_IDX_die_offset 574 .byte 19 # DW_FORM_ref4 575 .byte 4 # DW_IDX_parent 576 .byte 25 # DW_FORM_flag_present 577 .byte 0 # End of abbrev 578 .byte 0 # End of abbrev 579 .byte 3 # Abbrev code 580 .byte 2 # DW_TAG_class_type 581 .byte 2 # DW_IDX_type_unit 582 .byte 11 # DW_FORM_data1 583 .byte 3 # DW_IDX_die_offset 584 .byte 19 # DW_FORM_ref4 585 .byte 0 # End of abbrev 586 .byte 0 # End of abbrev 587 .byte 4 # Abbrev code 588 .byte 57 # DW_TAG_namespace 589 .byte 2 # DW_IDX_type_unit 590 .byte 11 # DW_FORM_data1 591 .byte 3 # DW_IDX_die_offset 592 .byte 19 # DW_FORM_ref4 593 .byte 4 # DW_IDX_parent 594 .byte 25 # DW_FORM_flag_present 595 .byte 0 # End of abbrev 596 .byte 0 # End of abbrev 597 .byte 5 # Abbrev code 598 .byte 57 # DW_TAG_namespace 599 .byte 3 # DW_IDX_die_offset 600 .byte 19 # DW_FORM_ref4 601 .byte 4 # DW_IDX_parent 602 .byte 25 # DW_FORM_flag_present 603 .byte 0 # End of abbrev 604 .byte 0 # End of abbrev 605 .byte 6 # Abbrev code 606 .byte 19 # DW_TAG_structure_type 607 .byte 2 # DW_IDX_type_unit 608 .byte 11 # DW_FORM_data1 609 .byte 3 # DW_IDX_die_offset 610 .byte 19 # DW_FORM_ref4 611 .byte 4 # DW_IDX_parent 612 .byte 19 # DW_FORM_ref4 613 .byte 0 # End of abbrev 614 .byte 0 # End of abbrev 615 .byte 7 # Abbrev code 616 .byte 57 # DW_TAG_namespace 617 .byte 2 # DW_IDX_type_unit 618 .byte 11 # DW_FORM_data1 619 .byte 3 # DW_IDX_die_offset 620 .byte 19 # DW_FORM_ref4 621 .byte 4 # DW_IDX_parent 622 .byte 19 # DW_FORM_ref4 623 .byte 0 # End of abbrev 624 .byte 0 # End of abbrev 625 .byte 8 # Abbrev code 626 .byte 57 # DW_TAG_namespace 627 .byte 3 # DW_IDX_die_offset 628 .byte 19 # DW_FORM_ref4 629 .byte 4 # DW_IDX_parent 630 .byte 19 # DW_FORM_ref4 631 .byte 0 # End of abbrev 632 .byte 0 # End of abbrev 633 .byte 0 # End of abbrev list 634.Lnames_abbrev_end0: 635.Lnames_entries0: 636.Lnames7: 637.L6: 638 .byte 1 # Abbreviation code 639 .long 91 # DW_IDX_die_offset 640 .byte 0 # DW_IDX_parent 641 # End of list: int 642.Lnames2: 643.L1: 644 .byte 2 # Abbreviation code 645 .long 51 # DW_IDX_die_offset 646 .byte 0 # DW_IDX_parent 647 # End of list: main 648.Lnames6: 649.L8: 650 .byte 3 # Abbreviation code 651 .byte 1 # DW_IDX_type_unit 652 .long 48 # DW_IDX_die_offset 653 .byte 0 # End of list: InnerState 654.Lnames1: 655.L4: 656 .byte 2 # Abbreviation code 657 .long 35 # DW_IDX_die_offset 658 .byte 0 # DW_IDX_parent 659 # End of list: _Z9get_statev 660.Lnames0: 661 .byte 2 # Abbreviation code 662 .long 35 # DW_IDX_die_offset 663 .byte 0 # DW_IDX_parent 664 # End of list: get_state 665.Lnames3: 666.LmanualLabel: 667 .byte 4 # Abbreviation code 668 .byte 0 # DW_IDX_type_unit 669 .long 35 # DW_IDX_die_offset 670.L3: # DW_IDX_parent 671 .byte 4 # Abbreviation code 672 .byte 1 # DW_IDX_type_unit 673 .long 35 # DW_IDX_die_offset 674.L2: # DW_IDX_parent 675 .byte 5 # Abbreviation code 676 .long 66 # DW_IDX_die_offset 677 .byte 0 # DW_IDX_parent 678 # End of list: A 679.Lnames5: 680.L0: 681 .byte 6 # Abbreviation code 682 .byte 0 # DW_IDX_type_unit 683 .long 39 # DW_IDX_die_offset 684 .long .L5-.Lnames_entries0 # DW_IDX_parent 685 .byte 0 # End of list: State 686.Lnames4: 687.L5: 688 .byte 7 # Abbreviation code 689 .byte 0 # DW_IDX_type_unit 690 .long 37 # DW_IDX_die_offset 691 .long .LmanualLabel-.Lnames_entries0 # DW_IDX_parent 692.L7: 693 .byte 7 # Abbreviation code 694 .byte 1 # DW_IDX_type_unit 695 .long 37 # DW_IDX_die_offset 696 .long .L3-.Lnames_entries0 # DW_IDX_parent 697.L9: 698 .byte 8 # Abbreviation code 699 .long 68 # DW_IDX_die_offset 700 .long .L2-.Lnames_entries0 # DW_IDX_parent 701 .byte 0 # End of list: B 702 .p2align 2, 0x0 703.Lnames_end0: 704 .ident "clang version 19.0.0git" 705 .section ".note.GNU-stack","",@progbits 706 .addrsig 707 .section .debug_line,"",@progbits 708.Lline_table_start0: 709