1// Test various single-location and location list formats. 2// REQUIRES: aarch64-registered-target 3 4// RUN: llvm-mc -filetype=obj -triple=aarch64-linux-android -o %t.o %s 5// RUN: echo 'FRAME %t.o 0x4' | llvm-symbolizer | FileCheck %s --check-prefix=CHECK0 6// RUN: echo 'FRAME %t.o 0x24' | llvm-symbolizer | FileCheck %s --check-prefix=CHECK1 7// RUN: echo 'FRAME %t.o 0x44' | llvm-symbolizer | FileCheck %s --check-prefix=CHECK2 8// RUN: echo 'FRAME %t.o 0x68' | llvm-symbolizer | FileCheck %s --check-prefix=CHECK3 9// RUN: echo 'FRAME %t.o 0x94' | llvm-symbolizer | FileCheck %s --check-prefix=CHECK4 10 11// Built from the following source with 12// clang -target aarch64-linux-android -O3 -g -S 13// and edited to replace DW_OP_fbreg with DW_OP_breg29 in func00 (search for EDIT below). 14// 15// void use(void *); 16// void usei(int); 17// void func00() { 18// int x; 19// use(&x); 20// } 21// 22// void func0() { 23// int x; 24// use(&x); 25// } 26// 27// int func1() { 28// int x; 29// use(&x); 30// return x; 31// } 32// 33// int func2() { 34// int x = 1; 35// use(&x); 36// return x; 37// } 38// 39// int func3(int b) { 40// int x = b; 41// usei(x); 42// return x; 43// } 44 45// DW_AT_location (DW_OP_breg29 W29-4) 46// CHECK0: func00 47// CHECK0-NEXT: x 48// CHECK0-NEXT: {{.*}}dbg.c:4 49// CHECK0-NEXT: -4 4 ?? 50 51// DW_AT_location (DW_OP_fbreg -4) 52// CHECK1: func0{{$}} 53// CHECK1-NEXT: x 54// CHECK1-NEXT: {{.*}}dbg.c:9 55// CHECK1-NEXT: -4 4 ?? 56 57// DW_AT_location (0x00000000: 58// [0x000000000000004c, 0x0000000000000058): DW_OP_breg29 W29-4 59// [0x0000000000000058, 0x000000000000005c): DW_OP_reg0 W0) 60// CHECK2: func1 61// CHECK2-NEXT: x 62// CHECK2-NEXT: {{.*}}dbg.c:14 63// CHECK2-NEXT: -4 4 ?? 64 65// DW_AT_location (0x00000037: 66// [0x0000000000000078, 0x0000000000000080): DW_OP_consts +1, DW_OP_stack_value 67// [0x0000000000000080, 0x0000000000000088): DW_OP_breg29 W29-4 68// [0x0000000000000088, 0x000000000000008c): DW_OP_reg0 W0) 69// CHECK3: func2 70// CHECK3-NEXT: x 71// CHECK3-NEXT: {{.*}}dbg.c:20 72// CHECK3-NEXT: -4 4 ?? 73 74// No stack location. 75// DW_AT_location (0x00000083: 76// [0x0000000000000090, 0x00000000000000a0): DW_OP_reg0 W0 77// [0x00000000000000a0, 0x00000000000000ac): DW_OP_reg19 W19) 78// CHECK4: func3 79// CHECK4-NEXT: b 80// CHECK4-NEXT: {{.*}}dbg.c:25 81// CHECK4-NEXT: ?? 4 ?? 82// CHECK4-NEXT: func3 83// CHECK4-NEXT: x 84// CHECK4-NEXT: {{.*}}dbg.c:26 85// CHECK4-NEXT: ?? 4 ?? 86// 87 .text 88 .file "dbg.c" 89 .globl func00 // -- Begin function func00 90 .p2align 2 91 .type func00,@function 92func00: // @func00 93.Lfunc_begin0: 94 .file 1 "/tmp" "dbg.c" 95 .loc 1 3 0 // /tmp/dbg.c:3:0 96 .cfi_sections .debug_frame 97 .cfi_startproc 98// %bb.0: // %entry 99 sub sp, sp, #32 // =32 100 stp x29, x30, [sp, #16] // 16-byte Folded Spill 101 add x29, sp, #16 // =16 102 .cfi_def_cfa w29, 16 103 .cfi_offset w30, -8 104 .cfi_offset w29, -16 105.Ltmp0: 106 //DEBUG_VALUE: func00:x <- [DW_OP_constu 4, DW_OP_minus, DW_OP_deref] $fp 107 .loc 1 5 3 prologue_end // /tmp/dbg.c:5:3 108 sub x0, x29, #4 // =4 109 bl use 110.Ltmp1: 111 .loc 1 6 1 // /tmp/dbg.c:6:1 112 ldp x29, x30, [sp, #16] // 16-byte Folded Reload 113 add sp, sp, #32 // =32 114 ret 115.Ltmp2: 116.Lfunc_end0: 117 .size func00, .Lfunc_end0-func00 118 .cfi_endproc 119 // -- End function 120 .globl func0 // -- Begin function func0 121 .p2align 2 122 .type func0,@function 123func0: // @func0 124.Lfunc_begin1: 125 .loc 1 8 0 // /tmp/dbg.c:8:0 126 .cfi_startproc 127// %bb.0: // %entry 128 sub sp, sp, #32 // =32 129 stp x29, x30, [sp, #16] // 16-byte Folded Spill 130 add x29, sp, #16 // =16 131 .cfi_def_cfa w29, 16 132 .cfi_offset w30, -8 133 .cfi_offset w29, -16 134.Ltmp3: 135 //DEBUG_VALUE: func0:x <- [DW_OP_constu 4, DW_OP_minus, DW_OP_deref] $fp 136 .loc 1 10 3 prologue_end // /tmp/dbg.c:10:3 137 sub x0, x29, #4 // =4 138 bl use 139.Ltmp4: 140 .loc 1 11 1 // /tmp/dbg.c:11:1 141 ldp x29, x30, [sp, #16] // 16-byte Folded Reload 142 add sp, sp, #32 // =32 143 ret 144.Ltmp5: 145.Lfunc_end1: 146 .size func0, .Lfunc_end1-func0 147 .cfi_endproc 148 // -- End function 149 .globl func1 // -- Begin function func1 150 .p2align 2 151 .type func1,@function 152func1: // @func1 153.Lfunc_begin2: 154 .loc 1 13 0 // /tmp/dbg.c:13:0 155 .cfi_startproc 156// %bb.0: // %entry 157 sub sp, sp, #32 // =32 158 stp x29, x30, [sp, #16] // 16-byte Folded Spill 159 add x29, sp, #16 // =16 160 .cfi_def_cfa w29, 16 161 .cfi_offset w30, -8 162 .cfi_offset w29, -16 163.Ltmp6: 164 //DEBUG_VALUE: func1:x <- [DW_OP_constu 4, DW_OP_minus, DW_OP_deref] $fp 165 .loc 1 15 3 prologue_end // /tmp/dbg.c:15:3 166 sub x0, x29, #4 // =4 167 bl use 168.Ltmp7: 169 .loc 1 16 10 // /tmp/dbg.c:16:10 170 ldur w0, [x29, #-4] 171.Ltmp8: 172 //DEBUG_VALUE: func1:x <- $w0 173 .loc 1 16 3 is_stmt 0 // /tmp/dbg.c:16:3 174 ldp x29, x30, [sp, #16] // 16-byte Folded Reload 175 add sp, sp, #32 // =32 176 ret 177.Ltmp9: 178.Lfunc_end2: 179 .size func1, .Lfunc_end2-func1 180 .cfi_endproc 181 // -- End function 182 .globl func2 // -- Begin function func2 183 .p2align 2 184 .type func2,@function 185func2: // @func2 186.Lfunc_begin3: 187 .loc 1 19 0 is_stmt 1 // /tmp/dbg.c:19:0 188 .cfi_startproc 189// %bb.0: // %entry 190 sub sp, sp, #32 // =32 191 stp x29, x30, [sp, #16] // 16-byte Folded Spill 192 add x29, sp, #16 // =16 193 .cfi_def_cfa w29, 16 194 .cfi_offset w30, -8 195 .cfi_offset w29, -16 196 mov w8, #1 197.Ltmp10: 198 //DEBUG_VALUE: func2:x <- 1 199 .loc 1 21 3 prologue_end // /tmp/dbg.c:21:3 200 sub x0, x29, #4 // =4 201 .loc 1 20 7 // /tmp/dbg.c:20:7 202 stur w8, [x29, #-4] 203.Ltmp11: 204 //DEBUG_VALUE: func2:x <- [DW_OP_constu 4, DW_OP_minus, DW_OP_deref] $fp 205 .loc 1 21 3 // /tmp/dbg.c:21:3 206 bl use 207.Ltmp12: 208 .loc 1 22 10 // /tmp/dbg.c:22:10 209 ldur w0, [x29, #-4] 210.Ltmp13: 211 //DEBUG_VALUE: func2:x <- $w0 212 .loc 1 22 3 is_stmt 0 // /tmp/dbg.c:22:3 213 ldp x29, x30, [sp, #16] // 16-byte Folded Reload 214 add sp, sp, #32 // =32 215 ret 216.Ltmp14: 217.Lfunc_end3: 218 .size func2, .Lfunc_end3-func2 219 .cfi_endproc 220 // -- End function 221 .globl func3 // -- Begin function func3 222 .p2align 2 223 .type func3,@function 224func3: // @func3 225.Lfunc_begin4: 226 .loc 1 25 0 is_stmt 1 // /tmp/dbg.c:25:0 227 .cfi_startproc 228// %bb.0: // %entry 229 //DEBUG_VALUE: func3:b <- $w0 230 stp x29, x30, [sp, #-32]! // 16-byte Folded Spill 231 str x19, [sp, #16] // 8-byte Folded Spill 232 mov x29, sp 233 .cfi_def_cfa w29, 32 234 .cfi_offset w19, -16 235 .cfi_offset w30, -24 236 .cfi_offset w29, -32 237.Ltmp15: 238 //DEBUG_VALUE: func3:x <- $w0 239 mov w19, w0 240.Ltmp16: 241 //DEBUG_VALUE: func3:x <- $w19 242 //DEBUG_VALUE: func3:b <- $w19 243 .loc 1 27 3 prologue_end // /tmp/dbg.c:27:3 244 bl usei 245.Ltmp17: 246 .loc 1 28 3 // /tmp/dbg.c:28:3 247 mov w0, w19 248 ldr x19, [sp, #16] // 8-byte Folded Reload 249.Ltmp18: 250 ldp x29, x30, [sp], #32 // 16-byte Folded Reload 251 ret 252.Ltmp19: 253.Lfunc_end4: 254 .size func3, .Lfunc_end4-func3 255 .cfi_endproc 256 // -- End function 257 .section .debug_str,"MS",@progbits,1 258.Linfo_string0: 259 .asciz "clang version 10.0.0 (git@github.com:llvm/llvm-project.git 092ef9c6cf4678d2b8df7738110ecd405fe1fe3d)" // string offset=0 260.Linfo_string1: 261 .asciz "/tmp/dbg.c" // string offset=101 262.Linfo_string2: 263 .asciz "/code/build-llvm-cmake" // string offset=112 264.Linfo_string3: 265 .asciz "use" // string offset=135 266.Linfo_string4: 267 .asciz "usei" // string offset=139 268.Linfo_string5: 269 .asciz "int" // string offset=144 270.Linfo_string6: 271 .asciz "func00" // string offset=148 272.Linfo_string7: 273 .asciz "func0" // string offset=155 274.Linfo_string8: 275 .asciz "func1" // string offset=161 276.Linfo_string9: 277 .asciz "func2" // string offset=167 278.Linfo_string10: 279 .asciz "func3" // string offset=173 280.Linfo_string11: 281 .asciz "x" // string offset=179 282.Linfo_string12: 283 .asciz "b" // string offset=181 284 .section .debug_loc,"",@progbits 285.Ldebug_loc0: 286 .xword .Ltmp6-.Lfunc_begin0 287 .xword .Ltmp8-.Lfunc_begin0 288 .hword 2 // Loc expr size 289 .byte 141 // DW_OP_breg29 290 .byte 124 // -4 291 .xword .Ltmp8-.Lfunc_begin0 292 .xword .Lfunc_end2-.Lfunc_begin0 293 .hword 1 // Loc expr size 294 .byte 80 // DW_OP_reg0 295 .xword 0 296 .xword 0 297.Ldebug_loc1: 298 .xword .Ltmp10-.Lfunc_begin0 299 .xword .Ltmp11-.Lfunc_begin0 300 .hword 3 // Loc expr size 301 .byte 17 // DW_OP_consts 302 .byte 1 // 1 303 .byte 159 // DW_OP_stack_value 304 .xword .Ltmp11-.Lfunc_begin0 305 .xword .Ltmp13-.Lfunc_begin0 306 .hword 2 // Loc expr size 307 .byte 141 // DW_OP_breg29 308 .byte 124 // -4 309 .xword .Ltmp13-.Lfunc_begin0 310 .xword .Lfunc_end3-.Lfunc_begin0 311 .hword 1 // Loc expr size 312 .byte 80 // DW_OP_reg0 313 .xword 0 314 .xword 0 315.Ldebug_loc2: 316 .xword .Lfunc_begin4-.Lfunc_begin0 317 .xword .Ltmp16-.Lfunc_begin0 318 .hword 1 // Loc expr size 319 .byte 80 // DW_OP_reg0 320 .xword .Ltmp16-.Lfunc_begin0 321 .xword .Ltmp18-.Lfunc_begin0 322 .hword 1 // Loc expr size 323 .byte 99 // DW_OP_reg19 324 .xword 0 325 .xword 0 326.Ldebug_loc3: 327 .xword .Ltmp15-.Lfunc_begin0 328 .xword .Ltmp16-.Lfunc_begin0 329 .hword 1 // Loc expr size 330 .byte 80 // DW_OP_reg0 331 .xword .Ltmp16-.Lfunc_begin0 332 .xword .Ltmp18-.Lfunc_begin0 333 .hword 1 // Loc expr size 334 .byte 99 // DW_OP_reg19 335 .xword 0 336 .xword 0 337 .section .debug_abbrev,"",@progbits 338 .byte 1 // Abbreviation Code 339 .byte 17 // DW_TAG_compile_unit 340 .byte 1 // DW_CHILDREN_yes 341 .byte 37 // DW_AT_producer 342 .byte 14 // DW_FORM_strp 343 .byte 19 // DW_AT_language 344 .byte 5 // DW_FORM_data2 345 .byte 3 // DW_AT_name 346 .byte 14 // DW_FORM_strp 347 .byte 16 // DW_AT_stmt_list 348 .byte 23 // DW_FORM_sec_offset 349 .byte 27 // DW_AT_comp_dir 350 .byte 14 // DW_FORM_strp 351 .byte 17 // DW_AT_low_pc 352 .byte 1 // DW_FORM_addr 353 .byte 18 // DW_AT_high_pc 354 .byte 6 // DW_FORM_data4 355 .byte 0 // EOM(1) 356 .byte 0 // EOM(2) 357 .byte 2 // Abbreviation Code 358 .byte 46 // DW_TAG_subprogram 359 .byte 1 // DW_CHILDREN_yes 360 .byte 17 // DW_AT_low_pc 361 .byte 1 // DW_FORM_addr 362 .byte 18 // DW_AT_high_pc 363 .byte 6 // DW_FORM_data4 364 .byte 64 // DW_AT_frame_base 365 .byte 24 // DW_FORM_exprloc 366 .ascii "\227B" // DW_AT_GNU_all_call_sites 367 .byte 25 // DW_FORM_flag_present 368 .byte 3 // DW_AT_name 369 .byte 14 // DW_FORM_strp 370 .byte 58 // DW_AT_decl_file 371 .byte 11 // DW_FORM_data1 372 .byte 59 // DW_AT_decl_line 373 .byte 11 // DW_FORM_data1 374 .byte 63 // DW_AT_external 375 .byte 25 // DW_FORM_flag_present 376 .byte 0 // EOM(1) 377 .byte 0 // EOM(2) 378 .byte 3 // Abbreviation Code 379 .byte 52 // DW_TAG_variable 380 .byte 0 // DW_CHILDREN_no 381 .byte 2 // DW_AT_location 382 .byte 24 // DW_FORM_exprloc 383 .byte 3 // DW_AT_name 384 .byte 14 // DW_FORM_strp 385 .byte 58 // DW_AT_decl_file 386 .byte 11 // DW_FORM_data1 387 .byte 59 // DW_AT_decl_line 388 .byte 11 // DW_FORM_data1 389 .byte 73 // DW_AT_type 390 .byte 19 // DW_FORM_ref4 391 .byte 0 // EOM(1) 392 .byte 0 // EOM(2) 393 .byte 4 // Abbreviation Code 394 .ascii "\211\202\001" // DW_TAG_GNU_call_site 395 .byte 0 // DW_CHILDREN_no 396 .byte 49 // DW_AT_abstract_origin 397 .byte 19 // DW_FORM_ref4 398 .byte 17 // DW_AT_low_pc 399 .byte 1 // DW_FORM_addr 400 .byte 0 // EOM(1) 401 .byte 0 // EOM(2) 402 .byte 5 // Abbreviation Code 403 .byte 46 // DW_TAG_subprogram 404 .byte 1 // DW_CHILDREN_yes 405 .byte 3 // DW_AT_name 406 .byte 14 // DW_FORM_strp 407 .byte 58 // DW_AT_decl_file 408 .byte 11 // DW_FORM_data1 409 .byte 59 // DW_AT_decl_line 410 .byte 11 // DW_FORM_data1 411 .byte 39 // DW_AT_prototyped 412 .byte 25 // DW_FORM_flag_present 413 .byte 60 // DW_AT_declaration 414 .byte 25 // DW_FORM_flag_present 415 .byte 63 // DW_AT_external 416 .byte 25 // DW_FORM_flag_present 417 .byte 0 // EOM(1) 418 .byte 0 // EOM(2) 419 .byte 6 // Abbreviation Code 420 .byte 5 // DW_TAG_formal_parameter 421 .byte 0 // DW_CHILDREN_no 422 .byte 73 // DW_AT_type 423 .byte 19 // DW_FORM_ref4 424 .byte 0 // EOM(1) 425 .byte 0 // EOM(2) 426 .byte 7 // Abbreviation Code 427 .byte 15 // DW_TAG_pointer_type 428 .byte 0 // DW_CHILDREN_no 429 .byte 0 // EOM(1) 430 .byte 0 // EOM(2) 431 .byte 8 // Abbreviation Code 432 .byte 46 // DW_TAG_subprogram 433 .byte 1 // DW_CHILDREN_yes 434 .byte 17 // DW_AT_low_pc 435 .byte 1 // DW_FORM_addr 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 .ascii "\227B" // DW_AT_GNU_all_call_sites 441 .byte 25 // DW_FORM_flag_present 442 .byte 3 // DW_AT_name 443 .byte 14 // DW_FORM_strp 444 .byte 58 // DW_AT_decl_file 445 .byte 11 // DW_FORM_data1 446 .byte 59 // DW_AT_decl_line 447 .byte 11 // DW_FORM_data1 448 .byte 73 // DW_AT_type 449 .byte 19 // DW_FORM_ref4 450 .byte 63 // DW_AT_external 451 .byte 25 // DW_FORM_flag_present 452 .byte 0 // EOM(1) 453 .byte 0 // EOM(2) 454 .byte 9 // Abbreviation Code 455 .byte 52 // DW_TAG_variable 456 .byte 0 // DW_CHILDREN_no 457 .byte 2 // DW_AT_location 458 .byte 23 // DW_FORM_sec_offset 459 .byte 3 // DW_AT_name 460 .byte 14 // DW_FORM_strp 461 .byte 58 // DW_AT_decl_file 462 .byte 11 // DW_FORM_data1 463 .byte 59 // DW_AT_decl_line 464 .byte 11 // DW_FORM_data1 465 .byte 73 // DW_AT_type 466 .byte 19 // DW_FORM_ref4 467 .byte 0 // EOM(1) 468 .byte 0 // EOM(2) 469 .byte 10 // Abbreviation Code 470 .byte 46 // DW_TAG_subprogram 471 .byte 1 // DW_CHILDREN_yes 472 .byte 17 // DW_AT_low_pc 473 .byte 1 // DW_FORM_addr 474 .byte 18 // DW_AT_high_pc 475 .byte 6 // DW_FORM_data4 476 .byte 64 // DW_AT_frame_base 477 .byte 24 // DW_FORM_exprloc 478 .ascii "\227B" // DW_AT_GNU_all_call_sites 479 .byte 25 // DW_FORM_flag_present 480 .byte 3 // DW_AT_name 481 .byte 14 // DW_FORM_strp 482 .byte 58 // DW_AT_decl_file 483 .byte 11 // DW_FORM_data1 484 .byte 59 // DW_AT_decl_line 485 .byte 11 // DW_FORM_data1 486 .byte 39 // DW_AT_prototyped 487 .byte 25 // DW_FORM_flag_present 488 .byte 73 // DW_AT_type 489 .byte 19 // DW_FORM_ref4 490 .byte 63 // DW_AT_external 491 .byte 25 // DW_FORM_flag_present 492 .byte 0 // EOM(1) 493 .byte 0 // EOM(2) 494 .byte 11 // Abbreviation Code 495 .byte 5 // DW_TAG_formal_parameter 496 .byte 0 // DW_CHILDREN_no 497 .byte 2 // DW_AT_location 498 .byte 23 // DW_FORM_sec_offset 499 .byte 3 // DW_AT_name 500 .byte 14 // DW_FORM_strp 501 .byte 58 // DW_AT_decl_file 502 .byte 11 // DW_FORM_data1 503 .byte 59 // DW_AT_decl_line 504 .byte 11 // DW_FORM_data1 505 .byte 73 // DW_AT_type 506 .byte 19 // DW_FORM_ref4 507 .byte 0 // EOM(1) 508 .byte 0 // EOM(2) 509 .byte 12 // Abbreviation Code 510 .byte 36 // DW_TAG_base_type 511 .byte 0 // DW_CHILDREN_no 512 .byte 3 // DW_AT_name 513 .byte 14 // DW_FORM_strp 514 .byte 62 // DW_AT_encoding 515 .byte 11 // DW_FORM_data1 516 .byte 11 // DW_AT_byte_size 517 .byte 11 // DW_FORM_data1 518 .byte 0 // EOM(1) 519 .byte 0 // EOM(2) 520 .byte 0 // EOM(3) 521 .section .debug_info,"",@progbits 522.Lcu_begin0: 523 .word .Ldebug_info_end0-.Ldebug_info_start0 // Length of Unit 524.Ldebug_info_start0: 525 .hword 4 // DWARF version number 526 .word .debug_abbrev // Offset Into Abbrev. Section 527 .byte 8 // Address Size (in bytes) 528 .byte 1 // Abbrev [1] 0xb:0x155 DW_TAG_compile_unit 529 .word .Linfo_string0 // DW_AT_producer 530 .hword 12 // DW_AT_language 531 .word .Linfo_string1 // DW_AT_name 532 .word .Lline_table_start0 // DW_AT_stmt_list 533 .word .Linfo_string2 // DW_AT_comp_dir 534 .xword .Lfunc_begin0 // DW_AT_low_pc 535 .word .Lfunc_end4-.Lfunc_begin0 // DW_AT_high_pc 536 .byte 2 // Abbrev [2] 0x2a:0x31 DW_TAG_subprogram 537 .xword .Lfunc_begin0 // DW_AT_low_pc 538 .word .Lfunc_end0-.Lfunc_begin0 // DW_AT_high_pc 539 .byte 1 // DW_AT_frame_base 540 .byte 109 541 // DW_AT_GNU_all_call_sites 542 .word .Linfo_string6 // DW_AT_name 543 .byte 1 // DW_AT_decl_file 544 .byte 3 // DW_AT_decl_line 545 // DW_AT_external 546 .byte 3 // Abbrev [3] 0x3f:0xe DW_TAG_variable 547 .byte 2 // DW_AT_location 548 .byte 141 // DW_OP_breg29 !!! EDIT: 145 (fbreg) to 141 (breg29) 549 .byte 124 // -4 550 .word .Linfo_string11 // DW_AT_name 551 .byte 1 // DW_AT_decl_file 552 .byte 4 // DW_AT_decl_line 553 .word 344 // DW_AT_type 554 .byte 4 // Abbrev [4] 0x4d:0xd DW_TAG_GNU_call_site 555 .word 91 // DW_AT_abstract_origin 556 .xword .Ltmp1 // DW_AT_low_pc 557 .byte 0 // End Of Children Mark 558 .byte 5 // Abbrev [5] 0x5b:0xd DW_TAG_subprogram 559 .word .Linfo_string3 // DW_AT_name 560 .byte 1 // DW_AT_decl_file 561 .byte 1 // DW_AT_decl_line 562 // DW_AT_prototyped 563 // DW_AT_declaration 564 // DW_AT_external 565 .byte 6 // Abbrev [6] 0x62:0x5 DW_TAG_formal_parameter 566 .word 104 // DW_AT_type 567 .byte 0 // End Of Children Mark 568 .byte 7 // Abbrev [7] 0x68:0x1 DW_TAG_pointer_type 569 .byte 2 // Abbrev [2] 0x69:0x31 DW_TAG_subprogram 570 .xword .Lfunc_begin1 // DW_AT_low_pc 571 .word .Lfunc_end1-.Lfunc_begin1 // DW_AT_high_pc 572 .byte 1 // DW_AT_frame_base 573 .byte 109 574 // DW_AT_GNU_all_call_sites 575 .word .Linfo_string7 // DW_AT_name 576 .byte 1 // DW_AT_decl_file 577 .byte 8 // DW_AT_decl_line 578 // DW_AT_external 579 .byte 3 // Abbrev [3] 0x7e:0xe DW_TAG_variable 580 .byte 2 // DW_AT_location 581 .byte 145 582 .byte 124 583 .word .Linfo_string11 // DW_AT_name 584 .byte 1 // DW_AT_decl_file 585 .byte 9 // DW_AT_decl_line 586 .word 344 // DW_AT_type 587 .byte 4 // Abbrev [4] 0x8c:0xd DW_TAG_GNU_call_site 588 .word 91 // DW_AT_abstract_origin 589 .xword .Ltmp4 // DW_AT_low_pc 590 .byte 0 // End Of Children Mark 591 .byte 8 // Abbrev [8] 0x9a:0x36 DW_TAG_subprogram 592 .xword .Lfunc_begin2 // DW_AT_low_pc 593 .word .Lfunc_end2-.Lfunc_begin2 // DW_AT_high_pc 594 .byte 1 // DW_AT_frame_base 595 .byte 109 596 // DW_AT_GNU_all_call_sites 597 .word .Linfo_string8 // DW_AT_name 598 .byte 1 // DW_AT_decl_file 599 .byte 13 // DW_AT_decl_line 600 .word 344 // DW_AT_type 601 // DW_AT_external 602 .byte 9 // Abbrev [9] 0xb3:0xf DW_TAG_variable 603 .word .Ldebug_loc0 // DW_AT_location 604 .word .Linfo_string11 // DW_AT_name 605 .byte 1 // DW_AT_decl_file 606 .byte 14 // DW_AT_decl_line 607 .word 344 // DW_AT_type 608 .byte 4 // Abbrev [4] 0xc2:0xd DW_TAG_GNU_call_site 609 .word 91 // DW_AT_abstract_origin 610 .xword .Ltmp7 // DW_AT_low_pc 611 .byte 0 // End Of Children Mark 612 .byte 8 // Abbrev [8] 0xd0:0x36 DW_TAG_subprogram 613 .xword .Lfunc_begin3 // DW_AT_low_pc 614 .word .Lfunc_end3-.Lfunc_begin3 // DW_AT_high_pc 615 .byte 1 // DW_AT_frame_base 616 .byte 109 617 // DW_AT_GNU_all_call_sites 618 .word .Linfo_string9 // DW_AT_name 619 .byte 1 // DW_AT_decl_file 620 .byte 19 // DW_AT_decl_line 621 .word 344 // DW_AT_type 622 // DW_AT_external 623 .byte 9 // Abbrev [9] 0xe9:0xf DW_TAG_variable 624 .word .Ldebug_loc1 // DW_AT_location 625 .word .Linfo_string11 // DW_AT_name 626 .byte 1 // DW_AT_decl_file 627 .byte 20 // DW_AT_decl_line 628 .word 344 // DW_AT_type 629 .byte 4 // Abbrev [4] 0xf8:0xd DW_TAG_GNU_call_site 630 .word 91 // DW_AT_abstract_origin 631 .xword .Ltmp12 // DW_AT_low_pc 632 .byte 0 // End Of Children Mark 633 .byte 10 // Abbrev [10] 0x106:0x45 DW_TAG_subprogram 634 .xword .Lfunc_begin4 // DW_AT_low_pc 635 .word .Lfunc_end4-.Lfunc_begin4 // DW_AT_high_pc 636 .byte 1 // DW_AT_frame_base 637 .byte 109 638 // DW_AT_GNU_all_call_sites 639 .word .Linfo_string10 // DW_AT_name 640 .byte 1 // DW_AT_decl_file 641 .byte 25 // DW_AT_decl_line 642 // DW_AT_prototyped 643 .word 344 // DW_AT_type 644 // DW_AT_external 645 .byte 11 // Abbrev [11] 0x11f:0xf DW_TAG_formal_parameter 646 .word .Ldebug_loc2 // DW_AT_location 647 .word .Linfo_string12 // DW_AT_name 648 .byte 1 // DW_AT_decl_file 649 .byte 25 // DW_AT_decl_line 650 .word 344 // DW_AT_type 651 .byte 9 // Abbrev [9] 0x12e:0xf DW_TAG_variable 652 .word .Ldebug_loc3 // DW_AT_location 653 .word .Linfo_string11 // DW_AT_name 654 .byte 1 // DW_AT_decl_file 655 .byte 26 // DW_AT_decl_line 656 .word 344 // DW_AT_type 657 .byte 4 // Abbrev [4] 0x13d:0xd DW_TAG_GNU_call_site 658 .word 331 // DW_AT_abstract_origin 659 .xword .Ltmp17 // DW_AT_low_pc 660 .byte 0 // End Of Children Mark 661 .byte 5 // Abbrev [5] 0x14b:0xd DW_TAG_subprogram 662 .word .Linfo_string4 // DW_AT_name 663 .byte 1 // DW_AT_decl_file 664 .byte 2 // DW_AT_decl_line 665 // DW_AT_prototyped 666 // DW_AT_declaration 667 // DW_AT_external 668 .byte 6 // Abbrev [6] 0x152:0x5 DW_TAG_formal_parameter 669 .word 344 // DW_AT_type 670 .byte 0 // End Of Children Mark 671 .byte 12 // Abbrev [12] 0x158:0x7 DW_TAG_base_type 672 .word .Linfo_string5 // DW_AT_name 673 .byte 5 // DW_AT_encoding 674 .byte 4 // DW_AT_byte_size 675 .byte 0 // End Of Children Mark 676.Ldebug_info_end0: 677 .ident "clang version 10.0.0 (git@github.com:llvm/llvm-project.git 092ef9c6cf4678d2b8df7738110ecd405fe1fe3d)" 678 .section ".note.GNU-stack","",@progbits 679 .section .debug_line,"",@progbits 680.Lline_table_start0: 681