514 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 17 .text18 .file "main.cpp"19 .file 1 "." "main.cpp"20 .globl _Z3usePiS_ # -- Begin function _Z3usePiS_21 .p2align 4, 0x9022 .type _Z3usePiS_,@function23_Z3usePiS_: # @_Z3usePiS_24.Lfunc_begin0:25 .cfi_startproc26# %bb.0: # %entry27 #DEBUG_VALUE: use:x <- $rdi28 #DEBUG_VALUE: use:y <- $rsi29 .loc 1 2 5 prologue_end # main.cpp:2:530 addl $4, (%rdi)31 .loc 1 3 5 # main.cpp:3:532 addl $-2, (%rsi)33 .loc 1 4 1 # main.cpp:4:134 retq35.Ltmp0:36.Lfunc_end0:37 .size _Z3usePiS_, .Lfunc_end0-_Z3usePiS_38 .cfi_endproc39 # -- End function40 .globl main # -- Begin function main41 .p2align 4, 0x9042 .type main,@function43main: # @main44.Lfunc_begin1:45 .cfi_startproc46# %bb.0: # %entry47 #DEBUG_VALUE: main:argc <- $edi48 #DEBUG_VALUE: main:argv <- $rsi49 # kill: def $edi killed $edi def $rdi50 .loc 1 10 6 prologue_end # main.cpp:10:651 movl %edi, x(%rip)52 .loc 1 11 13 # main.cpp:11:1353 leal 3(%rdi), %esi54.Ltmp1:55 #DEBUG_VALUE: main:argv <- [DW_OP_LLVM_entry_value 1] $rsi56 .loc 1 11 6 is_stmt 0 # main.cpp:11:657 movl %esi, y(%rip)58 # kill: def $edi killed $edi killed $rdi59.Ltmp2:60 .loc 1 13 11 is_stmt 1 # main.cpp:13:1161 jmp _Z6helperii@PLT # TAILCALL62.Ltmp3:63.Lfunc_end1:64 .size main, .Lfunc_end1-main65 .cfi_endproc66 # -- End function67 .type x,@object # @x68 .bss69 .globl x70 .p2align 2, 0x071x:72 .long 0 # 0x073 .size x, 474 75 .type y,@object # @y76 .data77 .globl y78 .p2align 2, 0x079y:80 .long 1 # 0x181 .size y, 482 83 .section .debug_loc.dwo,"e",@progbits84.Ldebug_loc0:85 .byte 386 .byte 387 .long .Ltmp1-.Lfunc_begin188 .short 1 # Loc expr size89 .byte 84 # DW_OP_reg490 .byte 391 .byte 592 .long .Lfunc_end1-.Ltmp193 .short 4 # Loc expr size94 .byte 243 # DW_OP_GNU_entry_value95 .byte 1 # 196 .byte 84 # DW_OP_reg497 .byte 159 # DW_OP_stack_value98 .byte 099 .section .debug_abbrev,"",@progbits100 .byte 1 # Abbreviation Code101 .byte 17 # DW_TAG_compile_unit102 .byte 0 # DW_CHILDREN_no103 .byte 16 # DW_AT_stmt_list104 .byte 23 # DW_FORM_sec_offset105 .byte 27 # DW_AT_comp_dir106 .byte 14 # DW_FORM_strp107 .ascii "\264B" # DW_AT_GNU_pubnames108 .byte 25 # DW_FORM_flag_present109 .ascii "\260B" # DW_AT_GNU_dwo_name110 .byte 14 # DW_FORM_strp111 .ascii "\261B" # DW_AT_GNU_dwo_id112 .byte 7 # DW_FORM_data8113 .byte 17 # DW_AT_low_pc114 .byte 1 # DW_FORM_addr115 .byte 18 # DW_AT_high_pc116 .byte 6 # DW_FORM_data4117 .ascii "\263B" # DW_AT_GNU_addr_base118 .byte 23 # DW_FORM_sec_offset119 .byte 0 # EOM(1)120 .byte 0 # EOM(2)121 .byte 0 # EOM(3)122 .section .debug_info,"",@progbits123.Lcu_begin0:124 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit125.Ldebug_info_start0:126 .short 4 # DWARF version number127 .long .debug_abbrev # Offset Into Abbrev. Section128 .byte 8 # Address Size (in bytes)129 .byte 1 # Abbrev [1] 0xb:0x25 DW_TAG_compile_unit130 .long .Lline_table_start0 # DW_AT_stmt_list131 .long .Lskel_string0 # DW_AT_comp_dir132 # DW_AT_GNU_pubnames133 .long .Lskel_string1 # DW_AT_GNU_dwo_name134 .quad -3308548803209949056 # DW_AT_GNU_dwo_id135 .quad .Lfunc_begin0 # DW_AT_low_pc136 .long .Lfunc_end1-.Lfunc_begin0 # DW_AT_high_pc137 .long .Laddr_table_base0 # DW_AT_GNU_addr_base138.Ldebug_info_end0:139 .section .debug_str,"MS",@progbits,1140.Lskel_string0:141 .asciz "." # string offset=0142.Lskel_string1:143 .asciz "main.dwo" # string offset=47144 .section .debug_str.dwo,"eMS",@progbits,1145.Linfo_string0:146 .asciz "x" # string offset=0147.Linfo_string1:148 .asciz "int" # string offset=2149.Linfo_string2:150 .asciz "y" # string offset=6151.Linfo_string3:152 .asciz "_Z6helperii" # string offset=8153.Linfo_string4:154 .asciz "helper" # string offset=20155.Linfo_string5:156 .asciz "_Z3usePiS_" # string offset=27157.Linfo_string6:158 .asciz "use" # string offset=38159.Linfo_string7:160 .asciz "main" # string offset=42161.Linfo_string8:162 .asciz "argc" # string offset=47163.Linfo_string9:164 .asciz "argv" # string offset=52165.Linfo_string10:166 .asciz "char" # string offset=57167.Linfo_string11:168 .asciz "clang version 18.0.0 (git@github.com:llvm/llvm-project.git 3a8db0f4bfb57348f49d9603119fa157114bbf8e)" # string offset=62169.Linfo_string12:170 .asciz "main.cpp" # string offset=163171.Linfo_string13:172 .asciz "main.dwo" # string offset=172173 .section .debug_str_offsets.dwo,"e",@progbits174 .long 0175 .long 2176 .long 6177 .long 8178 .long 20179 .long 27180 .long 38181 .long 42182 .long 47183 .long 52184 .long 57185 .long 62186 .long 163187 .long 172188 .section .debug_info.dwo,"e",@progbits189 .long .Ldebug_info_dwo_end0-.Ldebug_info_dwo_start0 # Length of Unit190.Ldebug_info_dwo_start0:191 .short 4 # DWARF version number192 .long 0 # Offset Into Abbrev. Section193 .byte 8 # Address Size (in bytes)194 .byte 1 # Abbrev [1] 0xb:0x9d DW_TAG_compile_unit195 .byte 11 # DW_AT_producer196 .short 33 # DW_AT_language197 .byte 12 # DW_AT_name198 .byte 13 # DW_AT_GNU_dwo_name199 .quad -3308548803209949056 # DW_AT_GNU_dwo_id200 .byte 2 # Abbrev [2] 0x19:0xb DW_TAG_variable201 .byte 0 # DW_AT_name202 .long 36 # DW_AT_type203 # DW_AT_external204 .byte 1 # DW_AT_decl_file205 .byte 7 # DW_AT_decl_line206 .byte 2 # DW_AT_location207 .byte 251208 .byte 0209 .byte 3 # Abbrev [3] 0x24:0x4 DW_TAG_base_type210 .byte 1 # DW_AT_name211 .byte 5 # DW_AT_encoding212 .byte 4 # DW_AT_byte_size213 .byte 2 # Abbrev [2] 0x28:0xb DW_TAG_variable214 .byte 2 # DW_AT_name215 .long 36 # DW_AT_type216 # DW_AT_external217 .byte 1 # DW_AT_decl_file218 .byte 8 # DW_AT_decl_line219 .byte 2 # DW_AT_location220 .byte 251221 .byte 1222 .byte 4 # Abbrev [4] 0x33:0x21 DW_TAG_subprogram223 .byte 2 # DW_AT_low_pc224 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc225 .byte 1 # DW_AT_frame_base226 .byte 87227 # DW_AT_GNU_all_call_sites228 .byte 5 # DW_AT_linkage_name229 .byte 6 # DW_AT_name230 .byte 1 # DW_AT_decl_file231 .byte 1 # DW_AT_decl_line232 # DW_AT_external233 .byte 5 # Abbrev [5] 0x3f:0xa DW_TAG_formal_parameter234 .byte 1 # DW_AT_location235 .byte 85236 .byte 0 # DW_AT_name237 .byte 1 # DW_AT_decl_file238 .byte 1 # DW_AT_decl_line239 .long 148 # DW_AT_type240 .byte 5 # Abbrev [5] 0x49:0xa DW_TAG_formal_parameter241 .byte 1 # DW_AT_location242 .byte 84243 .byte 2 # DW_AT_name244 .byte 1 # DW_AT_decl_file245 .byte 1 # DW_AT_decl_line246 .long 148 # DW_AT_type247 .byte 0 # End Of Children Mark248 .byte 6 # Abbrev [6] 0x54:0x2c DW_TAG_subprogram249 .byte 3 # DW_AT_low_pc250 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc251 .byte 1 # DW_AT_frame_base252 .byte 87253 # DW_AT_GNU_all_call_sites254 .byte 7 # DW_AT_name255 .byte 1 # DW_AT_decl_file256 .byte 9 # DW_AT_decl_line257 .long 36 # DW_AT_type258 # DW_AT_external259 .byte 5 # Abbrev [5] 0x63:0xa DW_TAG_formal_parameter260 .byte 1 # DW_AT_location261 .byte 85262 .byte 8 # DW_AT_name263 .byte 1 # DW_AT_decl_file264 .byte 9 # DW_AT_decl_line265 .long 36 # DW_AT_type266 .byte 7 # Abbrev [7] 0x6d:0xc DW_TAG_formal_parameter267 .long .Ldebug_loc0-.debug_loc.dwo # DW_AT_location268 .byte 9 # DW_AT_name269 .byte 1 # DW_AT_decl_file270 .byte 9 # DW_AT_decl_line271 .long 153 # DW_AT_type272 .byte 8 # Abbrev [8] 0x79:0x6 DW_TAG_GNU_call_site273 .long 128 # DW_AT_abstract_origin274 # DW_AT_GNU_tail_call275 .byte 4 # DW_AT_low_pc276 .byte 0 # End Of Children Mark277 .byte 9 # Abbrev [9] 0x80:0x14 DW_TAG_subprogram278 .byte 3 # DW_AT_linkage_name279 .byte 4 # DW_AT_name280 .byte 1 # DW_AT_decl_file281 .byte 6 # DW_AT_decl_line282 .long 36 # DW_AT_type283 # DW_AT_declaration284 # DW_AT_external285 .byte 10 # Abbrev [10] 0x89:0x5 DW_TAG_formal_parameter286 .long 36 # DW_AT_type287 .byte 10 # Abbrev [10] 0x8e:0x5 DW_TAG_formal_parameter288 .long 36 # DW_AT_type289 .byte 0 # End Of Children Mark290 .byte 11 # Abbrev [11] 0x94:0x5 DW_TAG_pointer_type291 .long 36 # DW_AT_type292 .byte 11 # Abbrev [11] 0x99:0x5 DW_TAG_pointer_type293 .long 158 # DW_AT_type294 .byte 11 # Abbrev [11] 0x9e:0x5 DW_TAG_pointer_type295 .long 163 # DW_AT_type296 .byte 3 # Abbrev [3] 0xa3:0x4 DW_TAG_base_type297 .byte 10 # DW_AT_name298 .byte 6 # DW_AT_encoding299 .byte 1 # DW_AT_byte_size300 .byte 0 # End Of Children Mark301.Ldebug_info_dwo_end0:302 .section .debug_abbrev.dwo,"e",@progbits303 .byte 1 # Abbreviation Code304 .byte 17 # DW_TAG_compile_unit305 .byte 1 # DW_CHILDREN_yes306 .byte 37 # DW_AT_producer307 .ascii "\202>" # DW_FORM_GNU_str_index308 .byte 19 # DW_AT_language309 .byte 5 # DW_FORM_data2310 .byte 3 # DW_AT_name311 .ascii "\202>" # DW_FORM_GNU_str_index312 .ascii "\260B" # DW_AT_GNU_dwo_name313 .ascii "\202>" # DW_FORM_GNU_str_index314 .ascii "\261B" # DW_AT_GNU_dwo_id315 .byte 7 # DW_FORM_data8316 .byte 0 # EOM(1)317 .byte 0 # EOM(2)318 .byte 2 # Abbreviation Code319 .byte 52 # DW_TAG_variable320 .byte 0 # DW_CHILDREN_no321 .byte 3 # DW_AT_name322 .ascii "\202>" # DW_FORM_GNU_str_index323 .byte 73 # DW_AT_type324 .byte 19 # DW_FORM_ref4325 .byte 63 # DW_AT_external326 .byte 25 # DW_FORM_flag_present327 .byte 58 # DW_AT_decl_file328 .byte 11 # DW_FORM_data1329 .byte 59 # DW_AT_decl_line330 .byte 11 # DW_FORM_data1331 .byte 2 # DW_AT_location332 .byte 24 # DW_FORM_exprloc333 .byte 0 # EOM(1)334 .byte 0 # EOM(2)335 .byte 3 # Abbreviation Code336 .byte 36 # DW_TAG_base_type337 .byte 0 # DW_CHILDREN_no338 .byte 3 # DW_AT_name339 .ascii "\202>" # DW_FORM_GNU_str_index340 .byte 62 # DW_AT_encoding341 .byte 11 # DW_FORM_data1342 .byte 11 # DW_AT_byte_size343 .byte 11 # DW_FORM_data1344 .byte 0 # EOM(1)345 .byte 0 # EOM(2)346 .byte 4 # Abbreviation Code347 .byte 46 # DW_TAG_subprogram348 .byte 1 # DW_CHILDREN_yes349 .byte 17 # DW_AT_low_pc350 .ascii "\201>" # DW_FORM_GNU_addr_index351 .byte 18 # DW_AT_high_pc352 .byte 6 # DW_FORM_data4353 .byte 64 # DW_AT_frame_base354 .byte 24 # DW_FORM_exprloc355 .ascii "\227B" # DW_AT_GNU_all_call_sites356 .byte 25 # DW_FORM_flag_present357 .byte 110 # DW_AT_linkage_name358 .ascii "\202>" # DW_FORM_GNU_str_index359 .byte 3 # DW_AT_name360 .ascii "\202>" # DW_FORM_GNU_str_index361 .byte 58 # DW_AT_decl_file362 .byte 11 # DW_FORM_data1363 .byte 59 # DW_AT_decl_line364 .byte 11 # DW_FORM_data1365 .byte 63 # DW_AT_external366 .byte 25 # DW_FORM_flag_present367 .byte 0 # EOM(1)368 .byte 0 # EOM(2)369 .byte 5 # Abbreviation Code370 .byte 5 # DW_TAG_formal_parameter371 .byte 0 # DW_CHILDREN_no372 .byte 2 # DW_AT_location373 .byte 24 # DW_FORM_exprloc374 .byte 3 # DW_AT_name375 .ascii "\202>" # DW_FORM_GNU_str_index376 .byte 58 # DW_AT_decl_file377 .byte 11 # DW_FORM_data1378 .byte 59 # DW_AT_decl_line379 .byte 11 # DW_FORM_data1380 .byte 73 # DW_AT_type381 .byte 19 # DW_FORM_ref4382 .byte 0 # EOM(1)383 .byte 0 # EOM(2)384 .byte 6 # Abbreviation Code385 .byte 46 # DW_TAG_subprogram386 .byte 1 # DW_CHILDREN_yes387 .byte 17 # DW_AT_low_pc388 .ascii "\201>" # DW_FORM_GNU_addr_index389 .byte 18 # DW_AT_high_pc390 .byte 6 # DW_FORM_data4391 .byte 64 # DW_AT_frame_base392 .byte 24 # DW_FORM_exprloc393 .ascii "\227B" # DW_AT_GNU_all_call_sites394 .byte 25 # DW_FORM_flag_present395 .byte 3 # DW_AT_name396 .ascii "\202>" # DW_FORM_GNU_str_index397 .byte 58 # DW_AT_decl_file398 .byte 11 # DW_FORM_data1399 .byte 59 # DW_AT_decl_line400 .byte 11 # DW_FORM_data1401 .byte 73 # DW_AT_type402 .byte 19 # DW_FORM_ref4403 .byte 63 # DW_AT_external404 .byte 25 # DW_FORM_flag_present405 .byte 0 # EOM(1)406 .byte 0 # EOM(2)407 .byte 7 # Abbreviation Code408 .byte 5 # DW_TAG_formal_parameter409 .byte 0 # DW_CHILDREN_no410 .byte 2 # DW_AT_location411 .byte 23 # DW_FORM_sec_offset412 .byte 3 # DW_AT_name413 .ascii "\202>" # DW_FORM_GNU_str_index414 .byte 58 # DW_AT_decl_file415 .byte 11 # DW_FORM_data1416 .byte 59 # DW_AT_decl_line417 .byte 11 # DW_FORM_data1418 .byte 73 # DW_AT_type419 .byte 19 # DW_FORM_ref4420 .byte 0 # EOM(1)421 .byte 0 # EOM(2)422 .byte 8 # Abbreviation Code423 .ascii "\211\202\001" # DW_TAG_GNU_call_site424 .byte 0 # DW_CHILDREN_no425 .byte 49 # DW_AT_abstract_origin426 .byte 19 # DW_FORM_ref4427 .ascii "\225B" # DW_AT_GNU_tail_call428 .byte 25 # DW_FORM_flag_present429 .byte 17 # DW_AT_low_pc430 .ascii "\201>" # DW_FORM_GNU_addr_index431 .byte 0 # EOM(1)432 .byte 0 # EOM(2)433 .byte 9 # Abbreviation Code434 .byte 46 # DW_TAG_subprogram435 .byte 1 # DW_CHILDREN_yes436 .byte 110 # DW_AT_linkage_name437 .ascii "\202>" # DW_FORM_GNU_str_index438 .byte 3 # DW_AT_name439 .ascii "\202>" # DW_FORM_GNU_str_index440 .byte 58 # DW_AT_decl_file441 .byte 11 # DW_FORM_data1442 .byte 59 # DW_AT_decl_line443 .byte 11 # DW_FORM_data1444 .byte 73 # DW_AT_type445 .byte 19 # DW_FORM_ref4446 .byte 60 # DW_AT_declaration447 .byte 25 # DW_FORM_flag_present448 .byte 63 # DW_AT_external449 .byte 25 # DW_FORM_flag_present450 .byte 0 # EOM(1)451 .byte 0 # EOM(2)452 .byte 10 # Abbreviation Code453 .byte 5 # DW_TAG_formal_parameter454 .byte 0 # DW_CHILDREN_no455 .byte 73 # DW_AT_type456 .byte 19 # DW_FORM_ref4457 .byte 0 # EOM(1)458 .byte 0 # EOM(2)459 .byte 11 # Abbreviation Code460 .byte 15 # DW_TAG_pointer_type461 .byte 0 # DW_CHILDREN_no462 .byte 73 # DW_AT_type463 .byte 19 # DW_FORM_ref4464 .byte 0 # EOM(1)465 .byte 0 # EOM(2)466 .byte 0 # EOM(3)467 .section .debug_addr,"",@progbits468.Laddr_table_base0:469 .quad x470 .quad y471 .quad .Lfunc_begin0472 .quad .Lfunc_begin1473 .quad .Ltmp3474 .quad .Ltmp1475 .section .debug_gnu_pubnames,"",@progbits476 .long .LpubNames_end0-.LpubNames_start0 # Length of Public Names Info477.LpubNames_start0:478 .short 2 # DWARF Version479 .long .Lcu_begin0 # Offset of Compilation Unit Info480 .long 48 # Compilation Unit Length481 .long 25 # DIE offset482 .byte 32 # Attributes: VARIABLE, EXTERNAL483 .asciz "x" # External Name484 .long 40 # DIE offset485 .byte 32 # Attributes: VARIABLE, EXTERNAL486 .asciz "y" # External Name487 .long 51 # DIE offset488 .byte 48 # Attributes: FUNCTION, EXTERNAL489 .asciz "use" # External Name490 .long 84 # DIE offset491 .byte 48 # Attributes: FUNCTION, EXTERNAL492 .asciz "main" # External Name493 .long 0 # End Mark494.LpubNames_end0:495 .section .debug_gnu_pubtypes,"",@progbits496 .long .LpubTypes_end0-.LpubTypes_start0 # Length of Public Types Info497.LpubTypes_start0:498 .short 2 # DWARF Version499 .long .Lcu_begin0 # Offset of Compilation Unit Info500 .long 48 # Compilation Unit Length501 .long 36 # DIE offset502 .byte 144 # Attributes: TYPE, STATIC503 .asciz "int" # External Name504 .long 163 # DIE offset505 .byte 144 # Attributes: TYPE, STATIC506 .asciz "char" # External Name507 .long 0 # End Mark508.LpubTypes_end0:509 .ident "clang version 18.0.0 (git@github.com:llvm/llvm-project.git 3a8db0f4bfb57348f49d9603119fa157114bbf8e)"510 .section ".note.GNU-stack","",@progbits511 .addrsig512 .section .debug_line,"",@progbits513.Lline_table_start0:514