713 lines · plain
1 2# REQUIRES: system-linux3 4# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %s -o %tmain.o5# RUN: %clang %cflags -dwarf-5 %tmain.o -o %t.exe -Wl,-q6# RUN: llvm-bolt %t.exe -o %t.bolt --update-debug-sections7# RUN: llvm-dwarfdump --debug-info -r 0 --debug-names %t.bolt > %t.txt8# RUN: cat %t.txt | FileCheck --check-prefix=CHECK %s9 10## This test checks that BOLT generates Entries for DW_AT_abstract_origin when it has cross cu reference.11 12# CHECK: [[OFFSET1:0x[0-9a-f]*]]: Compile Unit13# CHECK: [[OFFSET2:0x[0-9a-f]*]]: Compile Unit14# CHECK: Name Index @ 0x0 {15# CHECK-NEXT: Header {16# CHECK-NEXT: Length: 0xD217# CHECK-NEXT: Format: DWARF3218# CHECK-NEXT: Version: 519# CHECK-NEXT: CU count: 220# CHECK-NEXT: Local TU count: 021# CHECK-NEXT: Foreign TU count: 022# CHECK-NEXT: Bucket count: 523# CHECK-NEXT: Name count: 524# CHECK-NEXT: Abbreviations table size: 0x1F25# CHECK-NEXT: Augmentation: 'BOLT'26# CHECK-NEXT: }27# CHECK-NEXT: Compilation Unit offsets [28# CHECK-NEXT: CU[0]: [[OFFSET1]]29# CHECK-NEXT: CU[1]: [[OFFSET2]]30# CHECK-NEXT: ]31# CHECK-NEXT: Abbreviations [32# CHECK-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] {33# CHECK-NEXT: Tag: DW_TAG_subprogram34# CHECK-NEXT: DW_IDX_compile_unit: DW_FORM_data135# CHECK-NEXT: DW_IDX_die_offset: DW_FORM_ref436# CHECK-NEXT: DW_IDX_parent: DW_FORM_flag_present37# CHECK-NEXT: }38# CHECK-NEXT: Abbreviation [[ABBREV2:0x[0-9a-f]*]] {39# CHECK-NEXT: Tag: DW_TAG_inlined_subroutine40# CHECK-NEXT: DW_IDX_compile_unit: DW_FORM_data141# CHECK-NEXT: DW_IDX_die_offset: DW_FORM_ref442# CHECK-NEXT: DW_IDX_parent: DW_FORM_ref443# CHECK-NEXT: }44# CHECK-NEXT: Abbreviation [[ABBREV3:0x[0-9a-f]*]] {45# CHECK-NEXT: Tag: DW_TAG_base_type46# CHECK-NEXT: DW_IDX_compile_unit: DW_FORM_data147# CHECK-NEXT: DW_IDX_die_offset: DW_FORM_ref448# CHECK-NEXT: DW_IDX_parent: DW_FORM_flag_present49# CHECK-NEXT: }50# CHECK-NEXT: ]51# CHECK-NEXT: Bucket 0 [52# CHECK-NEXT: EMPTY53# CHECK-NEXT: ]54# CHECK-NEXT: Bucket 1 [55# CHECK-NEXT: Name 1 {56# CHECK-NEXT: Hash: 0x7C9A7F6A57# CHECK-NEXT: String: {{.+}} "main"58# CHECK-NEXT: Entry @ [[ENTRY:0x[0-9a-f]*]] {59# CHECK-NEXT: Abbrev: [[ABBREV1]]60# CHECK-NEXT: Tag: DW_TAG_subprogram61# CHECK-NEXT: DW_IDX_compile_unit: 0x0062# CHECK-NEXT: DW_IDX_die_offset: 0x0000002463# CHECK-NEXT: DW_IDX_parent: <parent not indexed>64# CHECK-NEXT: }65# CHECK-NEXT: }66# CHECK-NEXT: Name 2 {67# CHECK-NEXT: Hash: 0xB5063CFE68# CHECK-NEXT: String: {{.+}} "_Z3fooi"69# CHECK-NEXT: Entry @ {{.+}} {70# CHECK-NEXT: Abbrev: [[ABBREV1]]71# CHECK-NEXT: Tag: DW_TAG_subprogram72# CHECK-NEXT: DW_IDX_compile_unit: 0x0173# CHECK-NEXT: DW_IDX_die_offset: 0x0000003a74# CHECK-NEXT: DW_IDX_parent: <parent not indexed>75# CHECK-NEXT: }76# CHECK-NEXT: Entry @ {{.+}} {77# CHECK-NEXT: Abbrev: [[ABBREV2]]78# CHECK-NEXT: Tag: DW_TAG_inlined_subroutine79# CHECK-NEXT: DW_IDX_compile_unit: 0x0080# CHECK-NEXT: DW_IDX_die_offset: 0x0000005481# CHECK-NEXT: DW_IDX_parent: Entry @ [[ENTRY]]82# CHECK-NEXT: }83# CHECK-NEXT: }84# CHECK-NEXT: ]85# CHECK-NEXT: Bucket 2 [86# CHECK-NEXT: EMPTY87# CHECK-NEXT: ]88# CHECK-NEXT: Bucket 3 [89# CHECK-NEXT: Name 3 {90# CHECK-NEXT: Hash: 0xB88803091# CHECK-NEXT: String: {{.+}} "int"92# CHECK-NEXT: Entry @ {{.+}} {93# CHECK-NEXT: Abbrev: [[ABBREV3]]94# CHECK-NEXT: Tag: DW_TAG_base_type95# CHECK-NEXT: DW_IDX_compile_unit: 0x0196# CHECK-NEXT: DW_IDX_die_offset: 0x0000003697# CHECK-NEXT: DW_IDX_parent: <parent not indexed>98# CHECK-NEXT: }99# CHECK-NEXT: }100# CHECK-NEXT: ]101# CHECK-NEXT: Bucket 4 [102# CHECK-NEXT: Name 4 {103# CHECK-NEXT: Hash: 0xB887389104# CHECK-NEXT: String: {{.+}} "foo"105# CHECK-NEXT: Entry @ {{.+}} {106# CHECK-NEXT: Abbrev: [[ABBREV1]]107# CHECK-NEXT: Tag: DW_TAG_subprogram108# CHECK-NEXT: DW_IDX_compile_unit: 0x01109# CHECK-NEXT: DW_IDX_die_offset: 0x0000003a110# CHECK-NEXT: DW_IDX_parent: <parent not indexed>111# CHECK-NEXT: }112# CHECK-NEXT: Entry @ 0xc4 {113# CHECK-NEXT: Abbrev: [[ABBREV2]]114# CHECK-NEXT: Tag: DW_TAG_inlined_subroutine115# CHECK-NEXT: DW_IDX_compile_unit: 0x00116# CHECK-NEXT: DW_IDX_die_offset: 0x00000054117# CHECK-NEXT: DW_IDX_parent: Entry @ [[ENTRY]]118# CHECK-NEXT: }119# CHECK-NEXT: }120# CHECK-NEXT: Name 5 {121# CHECK-NEXT: Hash: 0x7C952063122# CHECK-NEXT: String: {{.+}} "char"123# CHECK-NEXT: Entry @ {{.+}} {124# CHECK-NEXT: Abbrev: [[ABBREV3]]125# CHECK-NEXT: Tag: DW_TAG_base_type126# CHECK-NEXT: DW_IDX_compile_unit: 0x00127# CHECK-NEXT: DW_IDX_die_offset: 0x00000075128# CHECK-NEXT: DW_IDX_parent: <parent not indexed>129# CHECK-NEXT: }130# CHECK-NEXT: }131# CHECK-NEXT: ]132# CHECK-NEXT: }133 134## clang++ -g2 -gpubnames -S -emit-llvm main.cpp -o main.ll135## clang++ -g2 -gpubnames -S -emit-llvm helper.cpp -o helper.ll136## llvm-link main.ll helper.ll -o combined.ll137## clang++ -g2 -gpubnames combined.ll -emit-llvm -S -o combined.opt.ll138## llc -dwarf-version=5 -filetype=asm -mtriple x86_64-unknown-linux combined.opt.ll -o combined.s139## main.cpp140## extern int foo(int);141## int main(int argc, char* argv[]) {142## int i = 0;143## [[clang::always_inline]] i = foo(argc);144## return i;145## }146## helper.cpp147## int foo(int i) {148## return i ++;149## }150 151 .text152 .file "llvm-link"153 .globl main # -- Begin function main154 .p2align 4, 0x90155 .type main,@function156main: # @main157.Lfunc_begin0:158 .file 1 "/home" "main.cpp" md5 0x24fb0b4c3900e91fece1ac87ed73ff3b159 .loc 1 2 0 # main.cpp:2:0160 .cfi_startproc161# %bb.0: # %entry162 pushq %rbp163 .cfi_def_cfa_offset 16164 .cfi_offset %rbp, -16165 movq %rsp, %rbp166 .cfi_def_cfa_register %rbp167 movl $0, -16(%rbp)168 movl %edi, -12(%rbp)169 movq %rsi, -24(%rbp)170.Ltmp0:171 .loc 1 3 7 prologue_end # main.cpp:3:7172 movl $0, -4(%rbp)173 .loc 1 4 36 # main.cpp:4:36174 movl -12(%rbp), %eax175 movl %eax, -8(%rbp)176.Ltmp1:177 .file 2 "/home" "helper.cpp" md5 0x7d4429e24d8c74d7ee22c1889ad46d6b178 .loc 2 2 12 # helper.cpp:2:12179 movl -8(%rbp), %eax180 movl %eax, %ecx181 addl $1, %ecx182 movl %ecx, -8(%rbp)183.Ltmp2:184 .loc 1 4 30 # main.cpp:4:30185 movl %eax, -4(%rbp)186 .loc 1 5 10 # main.cpp:5:10187 movl -4(%rbp), %eax188 .loc 1 5 3 epilogue_begin is_stmt 0 # main.cpp:5:3189 popq %rbp190 .cfi_def_cfa %rsp, 8191 retq192.Ltmp3:193.Lfunc_end0:194 .size main, .Lfunc_end0-main195 .cfi_endproc196 # -- End function197 .globl _Z3fooi # -- Begin function _Z3fooi198 .p2align 4, 0x90199 .type _Z3fooi,@function200_Z3fooi: # @_Z3fooi201.Lfunc_begin1:202 .loc 2 1 0 is_stmt 1 # helper.cpp:1:0203 .cfi_startproc204# %bb.0: # %entry205 pushq %rbp206 .cfi_def_cfa_offset 16207 .cfi_offset %rbp, -16208 movq %rsp, %rbp209 .cfi_def_cfa_register %rbp210 movl %edi, -4(%rbp)211.Ltmp4:212 .loc 2 2 12 prologue_end # helper.cpp:2:12213 movl -4(%rbp), %eax214 movl %eax, %ecx215 addl $1, %ecx216 movl %ecx, -4(%rbp)217 .loc 2 2 3 epilogue_begin is_stmt 0 # helper.cpp:2:3218 popq %rbp219 .cfi_def_cfa %rsp, 8220 retq221.Ltmp5:222.Lfunc_end1:223 .size _Z3fooi, .Lfunc_end1-_Z3fooi224 .cfi_endproc225 # -- End function226 .section .debug_abbrev,"",@progbits227 .byte 1 # Abbreviation Code228 .byte 17 # DW_TAG_compile_unit229 .byte 1 # DW_CHILDREN_yes230 .byte 37 # DW_AT_producer231 .byte 37 # DW_FORM_strx1232 .byte 19 # DW_AT_language233 .byte 5 # DW_FORM_data2234 .byte 3 # DW_AT_name235 .byte 37 # DW_FORM_strx1236 .byte 114 # DW_AT_str_offsets_base237 .byte 23 # DW_FORM_sec_offset238 .byte 16 # DW_AT_stmt_list239 .byte 23 # DW_FORM_sec_offset240 .byte 27 # DW_AT_comp_dir241 .byte 37 # DW_FORM_strx1242 .byte 17 # DW_AT_low_pc243 .byte 27 # DW_FORM_addrx244 .byte 18 # DW_AT_high_pc245 .byte 6 # DW_FORM_data4246 .byte 115 # DW_AT_addr_base247 .byte 23 # DW_FORM_sec_offset248 .byte 0 # EOM(1)249 .byte 0 # EOM(2)250 .byte 2 # Abbreviation Code251 .byte 46 # DW_TAG_subprogram252 .byte 1 # DW_CHILDREN_yes253 .byte 17 # DW_AT_low_pc254 .byte 27 # DW_FORM_addrx255 .byte 18 # DW_AT_high_pc256 .byte 6 # DW_FORM_data4257 .byte 64 # DW_AT_frame_base258 .byte 24 # DW_FORM_exprloc259 .byte 3 # DW_AT_name260 .byte 37 # DW_FORM_strx1261 .byte 58 # DW_AT_decl_file262 .byte 11 # DW_FORM_data1263 .byte 59 # DW_AT_decl_line264 .byte 11 # DW_FORM_data1265 .byte 73 # DW_AT_type266 .byte 16 # DW_FORM_ref_addr267 .byte 63 # DW_AT_external268 .byte 25 # DW_FORM_flag_present269 .byte 0 # EOM(1)270 .byte 0 # EOM(2)271 .byte 3 # Abbreviation Code272 .byte 5 # DW_TAG_formal_parameter273 .byte 0 # DW_CHILDREN_no274 .byte 2 # DW_AT_location275 .byte 24 # DW_FORM_exprloc276 .byte 3 # DW_AT_name277 .byte 37 # DW_FORM_strx1278 .byte 58 # DW_AT_decl_file279 .byte 11 # DW_FORM_data1280 .byte 59 # DW_AT_decl_line281 .byte 11 # DW_FORM_data1282 .byte 73 # DW_AT_type283 .byte 16 # DW_FORM_ref_addr284 .byte 0 # EOM(1)285 .byte 0 # EOM(2)286 .byte 4 # Abbreviation Code287 .byte 5 # DW_TAG_formal_parameter288 .byte 0 # DW_CHILDREN_no289 .byte 2 # DW_AT_location290 .byte 24 # DW_FORM_exprloc291 .byte 3 # DW_AT_name292 .byte 37 # DW_FORM_strx1293 .byte 58 # DW_AT_decl_file294 .byte 11 # DW_FORM_data1295 .byte 59 # DW_AT_decl_line296 .byte 11 # DW_FORM_data1297 .byte 73 # DW_AT_type298 .byte 19 # DW_FORM_ref4299 .byte 0 # EOM(1)300 .byte 0 # EOM(2)301 .byte 5 # Abbreviation Code302 .byte 52 # DW_TAG_variable303 .byte 0 # DW_CHILDREN_no304 .byte 2 # DW_AT_location305 .byte 24 # DW_FORM_exprloc306 .byte 3 # DW_AT_name307 .byte 37 # DW_FORM_strx1308 .byte 58 # DW_AT_decl_file309 .byte 11 # DW_FORM_data1310 .byte 59 # DW_AT_decl_line311 .byte 11 # DW_FORM_data1312 .byte 73 # DW_AT_type313 .byte 16 # DW_FORM_ref_addr314 .byte 0 # EOM(1)315 .byte 0 # EOM(2)316 .byte 6 # Abbreviation Code317 .byte 29 # DW_TAG_inlined_subroutine318 .byte 1 # DW_CHILDREN_yes319 .byte 49 # DW_AT_abstract_origin320 .byte 16 # DW_FORM_ref_addr321 .byte 17 # DW_AT_low_pc322 .byte 27 # DW_FORM_addrx323 .byte 18 # DW_AT_high_pc324 .byte 6 # DW_FORM_data4325 .byte 88 # DW_AT_call_file326 .byte 11 # DW_FORM_data1327 .byte 89 # DW_AT_call_line328 .byte 11 # DW_FORM_data1329 .byte 87 # DW_AT_call_column330 .byte 11 # DW_FORM_data1331 .byte 0 # EOM(1)332 .byte 0 # EOM(2)333 .byte 7 # Abbreviation Code334 .byte 5 # DW_TAG_formal_parameter335 .byte 0 # DW_CHILDREN_no336 .byte 2 # DW_AT_location337 .byte 24 # DW_FORM_exprloc338 .byte 49 # DW_AT_abstract_origin339 .byte 16 # DW_FORM_ref_addr340 .byte 0 # EOM(1)341 .byte 0 # EOM(2)342 .byte 8 # Abbreviation Code343 .byte 15 # DW_TAG_pointer_type344 .byte 0 # DW_CHILDREN_no345 .byte 73 # DW_AT_type346 .byte 19 # DW_FORM_ref4347 .byte 0 # EOM(1)348 .byte 0 # EOM(2)349 .byte 9 # Abbreviation Code350 .byte 36 # DW_TAG_base_type351 .byte 0 # DW_CHILDREN_no352 .byte 3 # DW_AT_name353 .byte 37 # DW_FORM_strx1354 .byte 62 # DW_AT_encoding355 .byte 11 # DW_FORM_data1356 .byte 11 # DW_AT_byte_size357 .byte 11 # DW_FORM_data1358 .byte 0 # EOM(1)359 .byte 0 # EOM(2)360 .byte 10 # Abbreviation Code361 .byte 46 # DW_TAG_subprogram362 .byte 1 # DW_CHILDREN_yes363 .byte 110 # DW_AT_linkage_name364 .byte 37 # DW_FORM_strx1365 .byte 3 # DW_AT_name366 .byte 37 # DW_FORM_strx1367 .byte 58 # DW_AT_decl_file368 .byte 11 # DW_FORM_data1369 .byte 59 # DW_AT_decl_line370 .byte 11 # DW_FORM_data1371 .byte 73 # DW_AT_type372 .byte 19 # DW_FORM_ref4373 .byte 63 # DW_AT_external374 .byte 25 # DW_FORM_flag_present375 .byte 32 # DW_AT_inline376 .byte 33 # DW_FORM_implicit_const377 .byte 1378 .byte 0 # EOM(1)379 .byte 0 # EOM(2)380 .byte 11 # Abbreviation Code381 .byte 5 # DW_TAG_formal_parameter382 .byte 0 # DW_CHILDREN_no383 .byte 3 # DW_AT_name384 .byte 37 # DW_FORM_strx1385 .byte 58 # DW_AT_decl_file386 .byte 11 # DW_FORM_data1387 .byte 59 # DW_AT_decl_line388 .byte 11 # DW_FORM_data1389 .byte 73 # DW_AT_type390 .byte 19 # DW_FORM_ref4391 .byte 0 # EOM(1)392 .byte 0 # EOM(2)393 .byte 12 # Abbreviation Code394 .byte 46 # DW_TAG_subprogram395 .byte 1 # DW_CHILDREN_yes396 .byte 17 # DW_AT_low_pc397 .byte 27 # DW_FORM_addrx398 .byte 18 # DW_AT_high_pc399 .byte 6 # DW_FORM_data4400 .byte 64 # DW_AT_frame_base401 .byte 24 # DW_FORM_exprloc402 .byte 49 # DW_AT_abstract_origin403 .byte 19 # DW_FORM_ref4404 .byte 0 # EOM(1)405 .byte 0 # EOM(2)406 .byte 13 # Abbreviation Code407 .byte 5 # DW_TAG_formal_parameter408 .byte 0 # DW_CHILDREN_no409 .byte 2 # DW_AT_location410 .byte 24 # DW_FORM_exprloc411 .byte 49 # DW_AT_abstract_origin412 .byte 19 # DW_FORM_ref4413 .byte 0 # EOM(1)414 .byte 0 # EOM(2)415 .byte 0 # EOM(3)416 .section .debug_info,"",@progbits417.Lcu_begin0:418 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit419.Ldebug_info_start0:420 .short 5 # DWARF version number421 .byte 1 # DWARF Unit Type422 .byte 8 # Address Size (in bytes)423 .long .debug_abbrev # Offset Into Abbrev. Section424 .byte 1 # Abbrev [1] 0xc:0x6d DW_TAG_compile_unit425 .byte 0 # DW_AT_producer426 .short 33 # DW_AT_language427 .byte 1 # DW_AT_name428 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base429 .long .Lline_table_start0 # DW_AT_stmt_list430 .byte 2 # DW_AT_comp_dir431 .byte 0 # DW_AT_low_pc432 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc433 .long .Laddr_table_base0 # DW_AT_addr_base434 .byte 2 # Abbrev [2] 0x23:0x47 DW_TAG_subprogram435 .byte 0 # DW_AT_low_pc436 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc437 .byte 1 # DW_AT_frame_base438 .byte 86439 .byte 8 # DW_AT_name440 .byte 1 # DW_AT_decl_file441 .byte 2 # DW_AT_decl_line442 .long .debug_info+174 # DW_AT_type443 # DW_AT_external444 .byte 3 # Abbrev [3] 0x32:0xb DW_TAG_formal_parameter445 .byte 2 # DW_AT_location446 .byte 145447 .byte 116448 .byte 9 # DW_AT_name449 .byte 1 # DW_AT_decl_file450 .byte 2 # DW_AT_decl_line451 .long .debug_info+174 # DW_AT_type452 .byte 4 # Abbrev [4] 0x3d:0xb DW_TAG_formal_parameter453 .byte 2 # DW_AT_location454 .byte 145455 .byte 104456 .byte 10 # DW_AT_name457 .byte 1 # DW_AT_decl_file458 .byte 2 # DW_AT_decl_line459 .long 106 # DW_AT_type460 .byte 5 # Abbrev [5] 0x48:0xb DW_TAG_variable461 .byte 2 # DW_AT_location462 .byte 145463 .byte 124464 .byte 7 # DW_AT_name465 .byte 1 # DW_AT_decl_file466 .byte 3 # DW_AT_decl_line467 .long .debug_info+174 # DW_AT_type468 .byte 6 # Abbrev [6] 0x53:0x16 DW_TAG_inlined_subroutine469 .long .debug_info+156 # DW_AT_abstract_origin470 .byte 1 # DW_AT_low_pc471 .long .Ltmp2-.Ltmp1 # DW_AT_high_pc472 .byte 1 # DW_AT_call_file473 .byte 4 # DW_AT_call_line474 .byte 32 # DW_AT_call_column475 .byte 7 # Abbrev [7] 0x60:0x8 DW_TAG_formal_parameter476 .byte 2 # DW_AT_location477 .byte 145478 .byte 120479 .long .debug_info+165 # DW_AT_abstract_origin480 .byte 0 # End Of Children Mark481 .byte 0 # End Of Children Mark482 .byte 8 # Abbrev [8] 0x6a:0x5 DW_TAG_pointer_type483 .long 111 # DW_AT_type484 .byte 8 # Abbrev [8] 0x6f:0x5 DW_TAG_pointer_type485 .long 116 # DW_AT_type486 .byte 9 # Abbrev [9] 0x74:0x4 DW_TAG_base_type487 .byte 11 # DW_AT_name488 .byte 6 # DW_AT_encoding489 .byte 1 # DW_AT_byte_size490 .byte 0 # End Of Children Mark491.Ldebug_info_end0:492.Lcu_begin1:493 .long .Ldebug_info_end1-.Ldebug_info_start1 # Length of Unit494.Ldebug_info_start1:495 .short 5 # DWARF version number496 .byte 1 # DWARF Unit Type497 .byte 8 # Address Size (in bytes)498 .long .debug_abbrev # Offset Into Abbrev. Section499 .byte 1 # Abbrev [1] 0xc:0x43 DW_TAG_compile_unit500 .byte 0 # DW_AT_producer501 .short 33 # DW_AT_language502 .byte 3 # DW_AT_name503 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base504 .long .Lline_table_start0 # DW_AT_stmt_list505 .byte 2 # DW_AT_comp_dir506 .byte 2 # DW_AT_low_pc507 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc508 .long .Laddr_table_base0 # DW_AT_addr_base509 .byte 10 # Abbrev [10] 0x23:0x12 DW_TAG_subprogram510 .byte 4 # DW_AT_linkage_name511 .byte 5 # DW_AT_name512 .byte 2 # DW_AT_decl_file513 .byte 1 # DW_AT_decl_line514 .long 53 # DW_AT_type515 # DW_AT_external516 # DW_AT_inline517 .byte 11 # Abbrev [11] 0x2c:0x8 DW_TAG_formal_parameter518 .byte 7 # DW_AT_name519 .byte 2 # DW_AT_decl_file520 .byte 1 # DW_AT_decl_line521 .long 53 # DW_AT_type522 .byte 0 # End Of Children Mark523 .byte 9 # Abbrev [9] 0x35:0x4 DW_TAG_base_type524 .byte 6 # DW_AT_name525 .byte 5 # DW_AT_encoding526 .byte 4 # DW_AT_byte_size527 .byte 12 # Abbrev [12] 0x39:0x15 DW_TAG_subprogram528 .byte 2 # DW_AT_low_pc529 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc530 .byte 1 # DW_AT_frame_base531 .byte 86532 .long 35 # DW_AT_abstract_origin533 .byte 13 # Abbrev [13] 0x45:0x8 DW_TAG_formal_parameter534 .byte 2 # DW_AT_location535 .byte 145536 .byte 124537 .long 44 # DW_AT_abstract_origin538 .byte 0 # End Of Children Mark539 .byte 0 # End Of Children Mark540.Ldebug_info_end1:541 .section .debug_str_offsets,"",@progbits542 .long 52 # Length of String Offsets Set543 .short 5544 .short 0545.Lstr_offsets_base0:546 .section .debug_str,"MS",@progbits,1547.Linfo_string0:548 .asciz "clang version 19.0.0git" # string offset=0549.Linfo_string1:550 .asciz "main.cpp" # string offset=24551.Linfo_string2:552 .asciz "/home/ayermolo/local/tasks/T182867349" # string offset=33553.Linfo_string3:554 .asciz "helper.cpp" # string offset=71555.Linfo_string4:556 .asciz "_Z3fooi" # string offset=82557.Linfo_string5:558 .asciz "foo" # string offset=90559.Linfo_string6:560 .asciz "int" # string offset=94561.Linfo_string7:562 .asciz "i" # string offset=98563.Linfo_string8:564 .asciz "main" # string offset=100565.Linfo_string9:566 .asciz "argc" # string offset=105567.Linfo_string10:568 .asciz "argv" # string offset=110569.Linfo_string11:570 .asciz "char" # string offset=115571 .section .debug_str_offsets,"",@progbits572 .long .Linfo_string0573 .long .Linfo_string1574 .long .Linfo_string2575 .long .Linfo_string3576 .long .Linfo_string4577 .long .Linfo_string5578 .long .Linfo_string6579 .long .Linfo_string7580 .long .Linfo_string8581 .long .Linfo_string9582 .long .Linfo_string10583 .long .Linfo_string11584 .section .debug_addr,"",@progbits585 .long .Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution586.Ldebug_addr_start0:587 .short 5 # DWARF version number588 .byte 8 # Address size589 .byte 0 # Segment selector size590.Laddr_table_base0:591 .quad .Lfunc_begin0592 .quad .Ltmp1593 .quad .Lfunc_begin1594.Ldebug_addr_end0:595 .section .debug_names,"",@progbits596 .long .Lnames_end0-.Lnames_start0 # Header: unit length597.Lnames_start0:598 .short 5 # Header: version599 .short 0 # Header: padding600 .long 2 # Header: compilation unit count601 .long 0 # Header: local type unit count602 .long 0 # Header: foreign type unit count603 .long 5 # Header: bucket count604 .long 5 # Header: name count605 .long .Lnames_abbrev_end0-.Lnames_abbrev_start0 # Header: abbreviation table size606 .long 8 # Header: augmentation string size607 .ascii "LLVM0700" # Header: augmentation string608 .long .Lcu_begin0 # Compilation unit 0609 .long .Lcu_begin1 # Compilation unit 1610 .long 0 # Bucket 0611 .long 1 # Bucket 1612 .long 0 # Bucket 2613 .long 3 # Bucket 3614 .long 4 # Bucket 4615 .long 2090499946 # Hash in Bucket 1616 .long -1257882370 # Hash in Bucket 1617 .long 193495088 # Hash in Bucket 3618 .long 193491849 # Hash in Bucket 4619 .long 2090147939 # Hash in Bucket 4620 .long .Linfo_string8 # String in Bucket 1: main621 .long .Linfo_string4 # String in Bucket 1: _Z3fooi622 .long .Linfo_string6 # String in Bucket 3: int623 .long .Linfo_string5 # String in Bucket 4: foo624 .long .Linfo_string11 # String in Bucket 4: char625 .long .Lnames1-.Lnames_entries0 # Offset in Bucket 1626 .long .Lnames3-.Lnames_entries0 # Offset in Bucket 1627 .long .Lnames0-.Lnames_entries0 # Offset in Bucket 3628 .long .Lnames2-.Lnames_entries0 # Offset in Bucket 4629 .long .Lnames4-.Lnames_entries0 # Offset in Bucket 4630.Lnames_abbrev_start0:631 .byte 1 # Abbrev code632 .byte 46 # DW_TAG_subprogram633 .byte 1 # DW_IDX_compile_unit634 .byte 11 # DW_FORM_data1635 .byte 3 # DW_IDX_die_offset636 .byte 19 # DW_FORM_ref4637 .byte 4 # DW_IDX_parent638 .byte 25 # DW_FORM_flag_present639 .byte 0 # End of abbrev640 .byte 0 # End of abbrev641 .byte 2 # Abbrev code642 .byte 29 # DW_TAG_inlined_subroutine643 .byte 1 # DW_IDX_compile_unit644 .byte 11 # DW_FORM_data1645 .byte 3 # DW_IDX_die_offset646 .byte 19 # DW_FORM_ref4647 .byte 4 # DW_IDX_parent648 .byte 19 # DW_FORM_ref4649 .byte 0 # End of abbrev650 .byte 0 # End of abbrev651 .byte 3 # Abbrev code652 .byte 36 # DW_TAG_base_type653 .byte 1 # DW_IDX_compile_unit654 .byte 11 # DW_FORM_data1655 .byte 3 # DW_IDX_die_offset656 .byte 19 # DW_FORM_ref4657 .byte 4 # DW_IDX_parent658 .byte 25 # DW_FORM_flag_present659 .byte 0 # End of abbrev660 .byte 0 # End of abbrev661 .byte 0 # End of abbrev list662.Lnames_abbrev_end0:663.Lnames_entries0:664.Lnames1:665.L3:666 .byte 1 # Abbreviation code667 .byte 0 # DW_IDX_compile_unit668 .long 35 # DW_IDX_die_offset669 .byte 0 # DW_IDX_parent670 # End of list: main671.Lnames3:672.L0:673 .byte 1 # Abbreviation code674 .byte 1 # DW_IDX_compile_unit675 .long 57 # DW_IDX_die_offset676.L2: # DW_IDX_parent677 .byte 2 # Abbreviation code678 .byte 0 # DW_IDX_compile_unit679 .long 83 # DW_IDX_die_offset680 .long .L3-.Lnames_entries0 # DW_IDX_parent681 .byte 0 # End of list: _Z3fooi682.Lnames0:683.L4:684 .byte 3 # Abbreviation code685 .byte 1 # DW_IDX_compile_unit686 .long 53 # DW_IDX_die_offset687 .byte 0 # DW_IDX_parent688 # End of list: int689.Lnames2:690 .byte 1 # Abbreviation code691 .byte 1 # DW_IDX_compile_unit692 .long 57 # DW_IDX_die_offset693 .byte 2 # DW_IDX_parent694 # Abbreviation code695 .byte 0 # DW_IDX_compile_unit696 .long 83 # DW_IDX_die_offset697 .long .L3-.Lnames_entries0 # DW_IDX_parent698 .byte 0 # End of list: foo699.Lnames4:700.L1:701 .byte 3 # Abbreviation code702 .byte 0 # DW_IDX_compile_unit703 .long 116 # DW_IDX_die_offset704 .byte 0 # DW_IDX_parent705 # End of list: char706 .p2align 2, 0x0707.Lnames_end0:708 .ident "clang version 19.0.0git"709 .ident "clang version 19.0.0git"710 .section ".note.GNU-stack","",@progbits711 .section .debug_line,"",@progbits712.Lline_table_start0:713