553 lines · plain
1# clang++ -O2 -g -gdwarf-4 -gsplit-dwarf2# void use(int * x, int * y) {3# *x += 4;4# *y -= 2;5# }6#7# int helper(int z_, int d_);8# int x = 0;9# int y = 1;10# int main(int argc, char *argv[]) {11# x = argc;12# y = argc + 3;13# //use(&x, &y);14# return helper(x, y);15# }16 .text17 .file "main.cpp"18 .file 0 "." "main.cpp" md5 0x1a68208241c6577e68c7b707538826da19 .globl _Z3usePiS_ # -- Begin function _Z3usePiS_20 .p2align 4, 0x9021 .type _Z3usePiS_,@function22_Z3usePiS_: # @_Z3usePiS_23.Lfunc_begin0:24 .cfi_startproc25# %bb.0: # %entry26 #DEBUG_VALUE: use:x <- $rdi27 #DEBUG_VALUE: use:y <- $rsi28 .loc 0 2 5 prologue_end # main.cpp:2:529 addl $4, (%rdi)30 .loc 0 3 5 # main.cpp:3:531 addl $-2, (%rsi)32 .loc 0 4 1 # main.cpp:4:133 retq34.Ltmp0:35.Lfunc_end0:36 .size _Z3usePiS_, .Lfunc_end0-_Z3usePiS_37 .cfi_endproc38 # -- End function39 .globl main # -- Begin function main40 .p2align 4, 0x9041 .type main,@function42main: # @main43.Lfunc_begin1:44 .cfi_startproc45# %bb.0: # %entry46 #DEBUG_VALUE: main:argc <- $edi47 #DEBUG_VALUE: main:argv <- $rsi48 # kill: def $edi killed $edi def $rdi49 .loc 0 10 6 prologue_end # main.cpp:10:650 movl %edi, x(%rip)51 .loc 0 11 13 # main.cpp:11:1352 leal 3(%rdi), %esi53.Ltmp1:54 #DEBUG_VALUE: main:argv <- [DW_OP_LLVM_entry_value 1] $rsi55 .loc 0 11 6 is_stmt 0 # main.cpp:11:656 movl %esi, y(%rip)57 # kill: def $edi killed $edi killed $rdi58.Ltmp2:59 .loc 0 13 11 is_stmt 1 # main.cpp:13:1160 jmp _Z6helperii@PLT # TAILCALL61.Ltmp3:62.Lfunc_end1:63 .size main, .Lfunc_end1-main64 .cfi_endproc65 # -- End function66 .type x,@object # @x67 .bss68 .globl x69 .p2align 2, 0x070x:71 .long 0 # 0x072 .size x, 473 74 .type y,@object # @y75 .data76 .globl y77 .p2align 2, 0x078y:79 .long 1 # 0x180 .size y, 481 82 .section .debug_loclists.dwo,"e",@progbits83 .long .Ldebug_list_header_end0-.Ldebug_list_header_start0 # Length84.Ldebug_list_header_start0:85 .short 5 # Version86 .byte 8 # Address size87 .byte 0 # Segment selector size88 .long 1 # Offset entry count89.Lloclists_table_base0:90 .long .Ldebug_loc0-.Lloclists_table_base091.Ldebug_loc0:92 .byte 1 # DW_LLE_base_addressx93 .byte 2 # base address index94 .byte 4 # DW_LLE_offset_pair95 .uleb128 .Lfunc_begin1-.Lfunc_begin0 # starting offset96 .uleb128 .Ltmp1-.Lfunc_begin0 # ending offset97 .byte 1 # Loc expr size98 .byte 84 # DW_OP_reg499 .byte 4 # DW_LLE_offset_pair100 .uleb128 .Ltmp1-.Lfunc_begin0 # starting offset101 .uleb128 .Lfunc_end1-.Lfunc_begin0 # ending offset102 .byte 4 # Loc expr size103 .byte 163 # DW_OP_entry_value104 .byte 1 # 1105 .byte 84 # DW_OP_reg4106 .byte 159 # DW_OP_stack_value107 .byte 0 # DW_LLE_end_of_list108.Ldebug_list_header_end0:109 .section .debug_abbrev,"",@progbits110 .byte 1 # Abbreviation Code111 .byte 74 # DW_TAG_skeleton_unit112 .byte 0 # DW_CHILDREN_no113 .byte 16 # DW_AT_stmt_list114 .byte 23 # DW_FORM_sec_offset115 .byte 114 # DW_AT_str_offsets_base116 .byte 23 # DW_FORM_sec_offset117 .byte 27 # DW_AT_comp_dir118 .byte 37 # DW_FORM_strx1119 .ascii "\264B" # DW_AT_GNU_pubnames120 .byte 25 # DW_FORM_flag_present121 .byte 118 # DW_AT_dwo_name122 .byte 37 # DW_FORM_strx1123 .byte 17 # DW_AT_low_pc124 .byte 27 # DW_FORM_addrx125 .byte 18 # DW_AT_high_pc126 .byte 6 # DW_FORM_data4127 .byte 115 # DW_AT_addr_base128 .byte 23 # DW_FORM_sec_offset129 .byte 0 # EOM(1)130 .byte 0 # EOM(2)131 .byte 0 # EOM(3)132 .section .debug_info,"",@progbits133.Lcu_begin0:134 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit135.Ldebug_info_start0:136 .short 5 # DWARF version number137 .byte 4 # DWARF Unit Type138 .byte 8 # Address Size (in bytes)139 .long .debug_abbrev # Offset Into Abbrev. Section140 .quad 1538385283627936656141 .byte 1 # Abbrev [1] 0x14:0x14 DW_TAG_skeleton_unit142 .long .Lline_table_start0 # DW_AT_stmt_list143 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base144 .byte 0 # DW_AT_comp_dir145 # DW_AT_GNU_pubnames146 .byte 1 # DW_AT_dwo_name147 .byte 2 # DW_AT_low_pc148 .long .Lfunc_end1-.Lfunc_begin0 # DW_AT_high_pc149 .long .Laddr_table_base0 # DW_AT_addr_base150.Ldebug_info_end0:151 .section .debug_str_offsets,"",@progbits152 .long 12 # Length of String Offsets Set153 .short 5154 .short 0155.Lstr_offsets_base0:156 .section .debug_str,"MS",@progbits,1157.Lskel_string0:158 .asciz "." # string offset=0159.Lskel_string1:160 .asciz "main.dwo" # string offset=47161 .section .debug_str_offsets,"",@progbits162 .long .Lskel_string0163 .long .Lskel_string1164 .section .debug_str_offsets.dwo,"e",@progbits165 .long 60 # Length of String Offsets Set166 .short 5167 .short 0168 .section .debug_str.dwo,"eMS",@progbits,1169.Linfo_string0:170 .asciz "x" # string offset=0171.Linfo_string1:172 .asciz "int" # string offset=2173.Linfo_string2:174 .asciz "y" # string offset=6175.Linfo_string3:176 .asciz "_Z6helperii" # string offset=8177.Linfo_string4:178 .asciz "helper" # string offset=20179.Linfo_string5:180 .asciz "_Z3usePiS_" # string offset=27181.Linfo_string6:182 .asciz "use" # string offset=38183.Linfo_string7:184 .asciz "main" # string offset=42185.Linfo_string8:186 .asciz "argc" # string offset=47187.Linfo_string9:188 .asciz "argv" # string offset=52189.Linfo_string10:190 .asciz "char" # string offset=57191.Linfo_string11:192 .asciz "clang version 18.0.0 (git@github.com:llvm/llvm-project.git 3a8db0f4bfb57348f49d9603119fa157114bbf8e)" # string offset=62193.Linfo_string12:194 .asciz "main.cpp" # string offset=163195.Linfo_string13:196 .asciz "main.dwo" # string offset=172197 .section .debug_str_offsets.dwo,"e",@progbits198 .long 0199 .long 2200 .long 6201 .long 8202 .long 20203 .long 27204 .long 38205 .long 42206 .long 47207 .long 52208 .long 57209 .long 62210 .long 163211 .long 172212 .section .debug_info.dwo,"e",@progbits213 .long .Ldebug_info_dwo_end0-.Ldebug_info_dwo_start0 # Length of Unit214.Ldebug_info_dwo_start0:215 .short 5 # DWARF version number216 .byte 5 # DWARF Unit Type217 .byte 8 # Address Size (in bytes)218 .long 0 # Offset Into Abbrev. Section219 .quad 1538385283627936656220 .byte 1 # Abbrev [1] 0x14:0x8e DW_TAG_compile_unit221 .byte 11 # DW_AT_producer222 .short 33 # DW_AT_language223 .byte 12 # DW_AT_name224 .byte 13 # DW_AT_dwo_name225 .byte 2 # Abbrev [2] 0x1a:0xb DW_TAG_variable226 .byte 0 # DW_AT_name227 .long 37 # DW_AT_type228 # DW_AT_external229 .byte 0 # DW_AT_decl_file230 .byte 7 # DW_AT_decl_line231 .byte 2 # DW_AT_location232 .byte 161233 .byte 0234 .byte 3 # Abbrev [3] 0x25:0x4 DW_TAG_base_type235 .byte 1 # DW_AT_name236 .byte 5 # DW_AT_encoding237 .byte 4 # DW_AT_byte_size238 .byte 2 # Abbrev [2] 0x29:0xb DW_TAG_variable239 .byte 2 # DW_AT_name240 .long 37 # DW_AT_type241 # DW_AT_external242 .byte 0 # DW_AT_decl_file243 .byte 8 # DW_AT_decl_line244 .byte 2 # DW_AT_location245 .byte 161246 .byte 1247 .byte 4 # Abbrev [4] 0x34:0x21 DW_TAG_subprogram248 .byte 2 # DW_AT_low_pc249 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc250 .byte 1 # DW_AT_frame_base251 .byte 87252 # DW_AT_call_all_calls253 .byte 5 # DW_AT_linkage_name254 .byte 6 # DW_AT_name255 .byte 0 # DW_AT_decl_file256 .byte 1 # DW_AT_decl_line257 # DW_AT_external258 .byte 5 # Abbrev [5] 0x40:0xa DW_TAG_formal_parameter259 .byte 1 # DW_AT_location260 .byte 85261 .byte 0 # DW_AT_name262 .byte 0 # DW_AT_decl_file263 .byte 1 # DW_AT_decl_line264 .long 142 # DW_AT_type265 .byte 5 # Abbrev [5] 0x4a:0xa DW_TAG_formal_parameter266 .byte 1 # DW_AT_location267 .byte 84268 .byte 2 # DW_AT_name269 .byte 0 # DW_AT_decl_file270 .byte 1 # DW_AT_decl_line271 .long 142 # DW_AT_type272 .byte 0 # End Of Children Mark273 .byte 6 # Abbrev [6] 0x55:0x25 DW_TAG_subprogram274 .byte 0 # DW_AT_ranges275 .byte 1 # DW_AT_frame_base276 .byte 87277 # DW_AT_call_all_calls278 .byte 7 # DW_AT_name279 .byte 0 # DW_AT_decl_file280 .byte 9 # DW_AT_decl_line281 .long 37 # DW_AT_type282 # DW_AT_external283 .byte 5 # Abbrev [5] 0x60:0xa DW_TAG_formal_parameter284 .byte 1 # DW_AT_location285 .byte 85286 .byte 8 # DW_AT_name287 .byte 0 # DW_AT_decl_file288 .byte 9 # DW_AT_decl_line289 .long 37 # DW_AT_type290 .byte 7 # Abbrev [7] 0x6a:0x9 DW_TAG_formal_parameter291 .byte 0 # DW_AT_location292 .byte 9 # DW_AT_name293 .byte 0 # DW_AT_decl_file294 .byte 9 # DW_AT_decl_line295 .long 147 # DW_AT_type296 .byte 8 # Abbrev [8] 0x73:0x6 DW_TAG_call_site297 .long 122 # DW_AT_call_origin298 # DW_AT_call_tail_call299 .byte 3 # DW_AT_call_pc300 .byte 0 # End Of Children Mark301 .byte 9 # Abbrev [9] 0x7a:0x14 DW_TAG_subprogram302 .byte 3 # DW_AT_linkage_name303 .byte 4 # DW_AT_name304 .byte 0 # DW_AT_decl_file305 .byte 6 # DW_AT_decl_line306 .long 37 # DW_AT_type307 # DW_AT_declaration308 # DW_AT_external309 .byte 10 # Abbrev [10] 0x83:0x5 DW_TAG_formal_parameter310 .long 37 # DW_AT_type311 .byte 10 # Abbrev [10] 0x88:0x5 DW_TAG_formal_parameter312 .long 37 # DW_AT_type313 .byte 0 # End Of Children Mark314 .byte 11 # Abbrev [11] 0x8e:0x5 DW_TAG_pointer_type315 .long 37 # DW_AT_type316 .byte 11 # Abbrev [11] 0x93:0x5 DW_TAG_pointer_type317 .long 152 # DW_AT_type318 .byte 11 # Abbrev [11] 0x98:0x5 DW_TAG_pointer_type319 .long 157 # DW_AT_type320 .byte 3 # Abbrev [3] 0x9d:0x4 DW_TAG_base_type321 .byte 10 # DW_AT_name322 .byte 6 # DW_AT_encoding323 .byte 1 # DW_AT_byte_size324 .byte 0 # End Of Children Mark325.Ldebug_info_dwo_end0:326 .section .debug_abbrev.dwo,"e",@progbits327 .byte 1 # Abbreviation Code328 .byte 17 # DW_TAG_compile_unit329 .byte 1 # DW_CHILDREN_yes330 .byte 37 # DW_AT_producer331 .byte 37 # DW_FORM_strx1332 .byte 19 # DW_AT_language333 .byte 5 # DW_FORM_data2334 .byte 3 # DW_AT_name335 .byte 37 # DW_FORM_strx1336 .byte 118 # DW_AT_dwo_name337 .byte 37 # DW_FORM_strx1338 .byte 0 # EOM(1)339 .byte 0 # EOM(2)340 .byte 2 # Abbreviation Code341 .byte 52 # DW_TAG_variable342 .byte 0 # DW_CHILDREN_no343 .byte 3 # DW_AT_name344 .byte 37 # DW_FORM_strx1345 .byte 73 # DW_AT_type346 .byte 19 # DW_FORM_ref4347 .byte 63 # DW_AT_external348 .byte 25 # DW_FORM_flag_present349 .byte 58 # DW_AT_decl_file350 .byte 11 # DW_FORM_data1351 .byte 59 # DW_AT_decl_line352 .byte 11 # DW_FORM_data1353 .byte 2 # DW_AT_location354 .byte 24 # DW_FORM_exprloc355 .byte 0 # EOM(1)356 .byte 0 # EOM(2)357 .byte 3 # Abbreviation Code358 .byte 36 # DW_TAG_base_type359 .byte 0 # DW_CHILDREN_no360 .byte 3 # DW_AT_name361 .byte 37 # DW_FORM_strx1362 .byte 62 # DW_AT_encoding363 .byte 11 # DW_FORM_data1364 .byte 11 # DW_AT_byte_size365 .byte 11 # DW_FORM_data1366 .byte 0 # EOM(1)367 .byte 0 # EOM(2)368 .byte 4 # Abbreviation Code369 .byte 46 # DW_TAG_subprogram370 .byte 1 # DW_CHILDREN_yes371 .byte 17 # DW_AT_low_pc372 .byte 27 # DW_FORM_addrx373 .byte 18 # DW_AT_high_pc374 .byte 6 # DW_FORM_data4375 .byte 64 # DW_AT_frame_base376 .byte 24 # DW_FORM_exprloc377 .byte 122 # DW_AT_call_all_calls378 .byte 25 # DW_FORM_flag_present379 .byte 110 # DW_AT_linkage_name380 .byte 37 # DW_FORM_strx1381 .byte 3 # DW_AT_name382 .byte 37 # DW_FORM_strx1383 .byte 58 # DW_AT_decl_file384 .byte 11 # DW_FORM_data1385 .byte 59 # DW_AT_decl_line386 .byte 11 # DW_FORM_data1387 .byte 63 # DW_AT_external388 .byte 25 # DW_FORM_flag_present389 .byte 0 # EOM(1)390 .byte 0 # EOM(2)391 .byte 5 # Abbreviation Code392 .byte 5 # DW_TAG_formal_parameter393 .byte 0 # DW_CHILDREN_no394 .byte 2 # DW_AT_location395 .byte 24 # DW_FORM_exprloc396 .byte 3 # DW_AT_name397 .byte 37 # DW_FORM_strx1398 .byte 58 # DW_AT_decl_file399 .byte 11 # DW_FORM_data1400 .byte 59 # DW_AT_decl_line401 .byte 11 # DW_FORM_data1402 .byte 73 # DW_AT_type403 .byte 19 # DW_FORM_ref4404 .byte 0 # EOM(1)405 .byte 0 # EOM(2)406 .byte 6 # Abbreviation Code407 .byte 46 # DW_TAG_subprogram408 .byte 1 # DW_CHILDREN_yes409 .byte 85 # DW_AT_ranges410 .byte 35 # DW_FORM_rnglistx411 .byte 64 # DW_AT_frame_base412 .byte 24 # DW_FORM_exprloc413 .byte 122 # DW_AT_call_all_calls414 .byte 25 # DW_FORM_flag_present415 .byte 3 # DW_AT_name416 .byte 37 # DW_FORM_strx1417 .byte 58 # DW_AT_decl_file418 .byte 11 # DW_FORM_data1419 .byte 59 # DW_AT_decl_line420 .byte 11 # DW_FORM_data1421 .byte 73 # DW_AT_type422 .byte 19 # DW_FORM_ref4423 .byte 63 # DW_AT_external424 .byte 25 # DW_FORM_flag_present425 .byte 0 # EOM(1)426 .byte 0 # EOM(2)427 .byte 7 # Abbreviation Code428 .byte 5 # DW_TAG_formal_parameter429 .byte 0 # DW_CHILDREN_no430 .byte 2 # DW_AT_location431 .byte 34 # DW_FORM_loclistx432 .byte 3 # DW_AT_name433 .byte 37 # DW_FORM_strx1434 .byte 58 # DW_AT_decl_file435 .byte 11 # DW_FORM_data1436 .byte 59 # DW_AT_decl_line437 .byte 11 # DW_FORM_data1438 .byte 73 # DW_AT_type439 .byte 19 # DW_FORM_ref4440 .byte 0 # EOM(1)441 .byte 0 # EOM(2)442 .byte 8 # Abbreviation Code443 .byte 72 # DW_TAG_call_site444 .byte 0 # DW_CHILDREN_no445 .byte 127 # DW_AT_call_origin446 .byte 19 # DW_FORM_ref4447 .ascii "\202\001" # DW_AT_call_tail_call448 .byte 25 # DW_FORM_flag_present449 .ascii "\201\001" # DW_AT_call_pc450 .byte 27 # DW_FORM_addrx451 .byte 0 # EOM(1)452 .byte 0 # EOM(2)453 .byte 9 # Abbreviation Code454 .byte 46 # DW_TAG_subprogram455 .byte 1 # DW_CHILDREN_yes456 .byte 110 # DW_AT_linkage_name457 .byte 37 # DW_FORM_strx1458 .byte 3 # DW_AT_name459 .byte 37 # DW_FORM_strx1460 .byte 58 # DW_AT_decl_file461 .byte 11 # DW_FORM_data1462 .byte 59 # DW_AT_decl_line463 .byte 11 # DW_FORM_data1464 .byte 73 # DW_AT_type465 .byte 19 # DW_FORM_ref4466 .byte 60 # DW_AT_declaration467 .byte 25 # DW_FORM_flag_present468 .byte 63 # DW_AT_external469 .byte 25 # DW_FORM_flag_present470 .byte 0 # EOM(1)471 .byte 0 # EOM(2)472 .byte 10 # Abbreviation Code473 .byte 5 # DW_TAG_formal_parameter474 .byte 0 # DW_CHILDREN_no475 .byte 73 # DW_AT_type476 .byte 19 # DW_FORM_ref4477 .byte 0 # EOM(1)478 .byte 0 # EOM(2)479 .byte 11 # Abbreviation Code480 .byte 15 # DW_TAG_pointer_type481 .byte 0 # DW_CHILDREN_no482 .byte 73 # DW_AT_type483 .byte 19 # DW_FORM_ref4484 .byte 0 # EOM(1)485 .byte 0 # EOM(2)486 .byte 0 # EOM(3)487 .section .debug_rnglists.dwo,"e",@progbits488 .long .Ldebug_list_header_end1-.Ldebug_list_header_start1 # Length489.Ldebug_list_header_start1:490 .short 5 # Version491 .byte 8 # Address size492 .byte 0 # Segment selector size493 .long 1 # Offset entry count494.Lrnglists_dwo_table_base0:495 .long .Ldebug_ranges0-.Lrnglists_dwo_table_base0496.Ldebug_ranges0:497 .byte 4 # DW_RLE_offset_pair498 .uleb128 .Lfunc_begin1-.Lfunc_begin0 # starting offset499 .uleb128 .Lfunc_end1-.Lfunc_begin0 # ending offset500 .byte 0 # DW_RLE_end_of_list501.Ldebug_list_header_end1:502 .section .debug_addr,"",@progbits503 .long .Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution504.Ldebug_addr_start0:505 .short 5 # DWARF version number506 .byte 8 # Address size507 .byte 0 # Segment selector size508.Laddr_table_base0:509 .quad x510 .quad y511 .quad .Lfunc_begin0512 .quad .Ltmp2513.Ldebug_addr_end0:514 .section .debug_gnu_pubnames,"",@progbits515 .long .LpubNames_end0-.LpubNames_start0 # Length of Public Names Info516.LpubNames_start0:517 .short 2 # DWARF Version518 .long .Lcu_begin0 # Offset of Compilation Unit Info519 .long 40 # Compilation Unit Length520 .long 26 # DIE offset521 .byte 32 # Attributes: VARIABLE, EXTERNAL522 .asciz "x" # External Name523 .long 41 # DIE offset524 .byte 32 # Attributes: VARIABLE, EXTERNAL525 .asciz "y" # External Name526 .long 52 # DIE offset527 .byte 48 # Attributes: FUNCTION, EXTERNAL528 .asciz "use" # External Name529 .long 85 # DIE offset530 .byte 48 # Attributes: FUNCTION, EXTERNAL531 .asciz "main" # External Name532 .long 0 # End Mark533.LpubNames_end0:534 .section .debug_gnu_pubtypes,"",@progbits535 .long .LpubTypes_end0-.LpubTypes_start0 # Length of Public Types Info536.LpubTypes_start0:537 .short 2 # DWARF Version538 .long .Lcu_begin0 # Offset of Compilation Unit Info539 .long 40 # Compilation Unit Length540 .long 37 # DIE offset541 .byte 144 # Attributes: TYPE, STATIC542 .asciz "int" # External Name543 .long 157 # DIE offset544 .byte 144 # Attributes: TYPE, STATIC545 .asciz "char" # External Name546 .long 0 # End Mark547.LpubTypes_end0:548 .ident "clang version 18.0.0 (git@github.com:llvm/llvm-project.git 3a8db0f4bfb57348f49d9603119fa157114bbf8e)"549 .section ".note.GNU-stack","",@progbits550 .addrsig551 .section .debug_line,"",@progbits552.Lline_table_start0:553