1 .text 2 .file "main.cpp" 3 .globl main # -- Begin function main 4 .p2align 4, 0x90 5 .type main,@function 6main: # @main 7.Lfunc_begin0: 8 .file 1 "." "main.cpp" 9 .loc 1 5 0 # main.cpp:5:0 10 .cfi_startproc 11# %bb.0: # %entry 12 #DEBUG_VALUE: main:argc <- $edi 13 #DEBUG_VALUE: main:argv <- $rsi 14 pushq %rbx 15 .cfi_def_cfa_offset 16 16 .cfi_offset %rbx, -16 17 movl %edi, %ebx 18.Ltmp0: 19 .loc 1 6 7 prologue_end # main.cpp:6:7 20 cmpq $0, _Z13may_not_existv@GOTPCREL(%rip) 21 je .LBB0_2 22.Ltmp1: 23# %bb.1: # %if.then 24 #DEBUG_VALUE: main:argc <- $ebx 25 #DEBUG_VALUE: main:argv <- $rsi 26 .loc 1 7 5 # main.cpp:7:5 27 callq _Z13may_not_existv@PLT 28.Ltmp2: 29 #DEBUG_VALUE: main:argv <- [DW_OP_LLVM_entry_value 1] $rsi 30.LBB0_2: # %if.end 31 #DEBUG_VALUE: main:argc <- $ebx 32 #DEBUG_VALUE: main:argv <- [DW_OP_LLVM_entry_value 1] $rsi 33 #DEBUG_VALUE: main:j <- 0 34 #DEBUG_VALUE: helper:i <- $ebx 35 .loc 1 2 10 # main.cpp:2:10 36 incl %ebx 37.Ltmp3: 38 #DEBUG_VALUE: main:argc <- [DW_OP_LLVM_entry_value 1] $edi 39 #DEBUG_VALUE: helper:i <- $ebx 40 #DEBUG_VALUE: main:j <- $ebx 41 .loc 1 10 3 # main.cpp:10:3 42 movl %ebx, %eax 43 .loc 1 10 3 epilogue_begin is_stmt 0 # main.cpp:10:3 44 popq %rbx 45.Ltmp4: 46 #DEBUG_VALUE: helper:i <- $eax 47 #DEBUG_VALUE: main:j <- $eax 48 .cfi_def_cfa_offset 8 49 retq 50.Ltmp5: 51.Lfunc_end0: 52 .size main, .Lfunc_end0-main 53 .cfi_endproc 54 # -- End function 55 .section .debug_loc.dwo,"e",@progbits 56.Ldebug_loc0: 57 .byte 3 58 .byte 0 59 .long .Ltmp1-.Lfunc_begin0 60 .short 1 # Loc expr size 61 .byte 85 # super-register DW_OP_reg5 62 .byte 3 63 .byte 2 64 .long .Ltmp3-.Ltmp1 65 .short 1 # Loc expr size 66 .byte 83 # super-register DW_OP_reg3 67 .byte 3 68 .byte 3 69 .long .Lfunc_end0-.Ltmp3 70 .short 4 # Loc expr size 71 .byte 243 # DW_OP_GNU_entry_value 72 .byte 1 # 1 73 .byte 85 # super-register DW_OP_reg5 74 .byte 159 # DW_OP_stack_value 75 .byte 0 76.Ldebug_loc1: 77 .byte 3 78 .byte 0 79 .long .Ltmp2-.Lfunc_begin0 80 .short 1 # Loc expr size 81 .byte 84 # DW_OP_reg4 82 .byte 3 83 .byte 1 84 .long .Lfunc_end0-.Ltmp2 85 .short 4 # Loc expr size 86 .byte 243 # DW_OP_GNU_entry_value 87 .byte 1 # 1 88 .byte 84 # DW_OP_reg4 89 .byte 159 # DW_OP_stack_value 90 .byte 0 91.Ldebug_loc2: 92 .byte 3 93 .byte 1 94 .long .Ltmp3-.Ltmp2 95 .short 3 # Loc expr size 96 .byte 17 # DW_OP_consts 97 .byte 0 # 0 98 .byte 159 # DW_OP_stack_value 99 .byte 3 100 .byte 3 101 .long .Ltmp4-.Ltmp3 102 .short 1 # Loc expr size 103 .byte 83 # super-register DW_OP_reg3 104 .byte 3 105 .byte 4 106 .long .Lfunc_end0-.Ltmp4 107 .short 1 # Loc expr size 108 .byte 80 # super-register DW_OP_reg0 109 .byte 0 110 .section .debug_abbrev,"",@progbits 111 .byte 1 # Abbreviation Code 112 .byte 17 # DW_TAG_compile_unit 113 .byte 0 # DW_CHILDREN_no 114 .byte 16 # DW_AT_stmt_list 115 .byte 23 # DW_FORM_sec_offset 116 .byte 27 # DW_AT_comp_dir 117 .byte 14 # DW_FORM_strp 118 .ascii "\264B" # DW_AT_GNU_pubnames 119 .byte 25 # DW_FORM_flag_present 120 .ascii "\260B" # DW_AT_GNU_dwo_name 121 .byte 14 # DW_FORM_strp 122 .ascii "\261B" # DW_AT_GNU_dwo_id 123 .byte 7 # DW_FORM_data8 124 .byte 17 # DW_AT_low_pc 125 .byte 1 # DW_FORM_addr 126 .byte 18 # DW_AT_high_pc 127 .byte 6 # DW_FORM_data4 128 .ascii "\263B" # DW_AT_GNU_addr_base 129 .byte 23 # DW_FORM_sec_offset 130 .byte 0 # EOM(1) 131 .byte 0 # EOM(2) 132 .byte 0 # EOM(3) 133 .section .debug_info,"",@progbits 134.Lcu_begin0: 135 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit 136.Ldebug_info_start0: 137 .short 4 # DWARF version number 138 .long .debug_abbrev # Offset Into Abbrev. Section 139 .byte 8 # Address Size (in bytes) 140 .byte 1 # Abbrev [1] 0xb:0x25 DW_TAG_compile_unit 141 .long .Lline_table_start0 # DW_AT_stmt_list 142 .long .Lskel_string0 # DW_AT_comp_dir 143 # DW_AT_GNU_pubnames 144 .long .Lskel_string1 # DW_AT_GNU_dwo_name 145 .quad -5076722043903325778 # DW_AT_GNU_dwo_id 146 .quad .Lfunc_begin0 # DW_AT_low_pc 147 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 148 .long .Laddr_table_base0 # DW_AT_GNU_addr_base 149.Ldebug_info_end0: 150 .section .debug_str,"MS",@progbits,1 151.Lskel_string0: 152 .asciz "." # string offset=0 153.Lskel_string1: 154 .asciz "main.dwo" # string offset=38 155 .section .debug_str.dwo,"eMS",@progbits,1 156.Linfo_string0: 157 .asciz "_ZL6helperi" # string offset=0 158.Linfo_string1: 159 .asciz "helper" # string offset=12 160.Linfo_string2: 161 .asciz "int" # string offset=19 162.Linfo_string3: 163 .asciz "i" # string offset=23 164.Linfo_string4: 165 .asciz "_Z13may_not_existv" # string offset=25 166.Linfo_string5: 167 .asciz "may_not_exist" # string offset=44 168.Linfo_string6: 169 .asciz "main" # string offset=58 170.Linfo_string7: 171 .asciz "argc" # string offset=63 172.Linfo_string8: 173 .asciz "argv" # string offset=68 174.Linfo_string9: 175 .asciz "char" # string offset=73 176.Linfo_string10: 177 .asciz "j" # string offset=78 178.Linfo_string11: 179 .asciz "clang version 17.0.0 (https://github.com/llvm/llvm-project.git 640e07c49037cca41a1bfbeb916b569d8c950aea)" # string offset=80 180.Linfo_string12: 181 .asciz "main.cpp" # string offset=185 182.Linfo_string13: 183 .asciz "main.dwo" # string offset=194 184 .section .debug_str_offsets.dwo,"e",@progbits 185 .long 0 186 .long 12 187 .long 19 188 .long 23 189 .long 25 190 .long 44 191 .long 58 192 .long 63 193 .long 68 194 .long 73 195 .long 78 196 .long 80 197 .long 185 198 .long 194 199 .section .debug_info.dwo,"e",@progbits 200 .long .Ldebug_info_dwo_end0-.Ldebug_info_dwo_start0 # Length of Unit 201.Ldebug_info_dwo_start0: 202 .short 4 # DWARF version number 203 .long 0 # Offset Into Abbrev. Section 204 .byte 8 # Address Size (in bytes) 205 .byte 1 # Abbrev [1] 0xb:0x88 DW_TAG_compile_unit 206 .byte 11 # DW_AT_producer 207 .short 33 # DW_AT_language 208 .byte 12 # DW_AT_name 209 .byte 13 # DW_AT_GNU_dwo_name 210 .quad -5076722043903325778 # DW_AT_GNU_dwo_id 211 .byte 2 # Abbrev [2] 0x19:0x13 DW_TAG_subprogram 212 .byte 0 # DW_AT_linkage_name 213 .byte 1 # DW_AT_name 214 .byte 1 # DW_AT_decl_file 215 .byte 1 # DW_AT_decl_line 216 .long 44 # DW_AT_type 217 .byte 1 # DW_AT_inline 218 .byte 3 # Abbrev [3] 0x23:0x8 DW_TAG_formal_parameter 219 .byte 3 # DW_AT_name 220 .byte 1 # DW_AT_decl_file 221 .byte 1 # DW_AT_decl_line 222 .long 44 # DW_AT_type 223 .byte 0 # End Of Children Mark 224 .byte 4 # Abbrev [4] 0x2c:0x4 DW_TAG_base_type 225 .byte 2 # DW_AT_name 226 .byte 5 # DW_AT_encoding 227 .byte 4 # DW_AT_byte_size 228 .byte 5 # Abbrev [5] 0x30:0x4f DW_TAG_subprogram 229 .byte 0 # DW_AT_low_pc 230 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 231 .byte 1 # DW_AT_frame_base 232 .byte 87 233 # DW_AT_GNU_all_call_sites 234 .byte 6 # DW_AT_name 235 .byte 1 # DW_AT_decl_file 236 .byte 5 # DW_AT_decl_line 237 .long 44 # DW_AT_type 238 # DW_AT_external 239 .byte 6 # Abbrev [6] 0x3f:0xc DW_TAG_formal_parameter 240 .long .Ldebug_loc0-.debug_loc.dwo # DW_AT_location 241 .byte 7 # DW_AT_name 242 .byte 1 # DW_AT_decl_file 243 .byte 5 # DW_AT_decl_line 244 .long 44 # DW_AT_type 245 .byte 6 # Abbrev [6] 0x4b:0xc DW_TAG_formal_parameter 246 .long .Ldebug_loc1-.debug_loc.dwo # DW_AT_location 247 .byte 8 # DW_AT_name 248 .byte 1 # DW_AT_decl_file 249 .byte 5 # DW_AT_decl_line 250 .long 132 # DW_AT_type 251 .byte 7 # Abbrev [7] 0x57:0xc DW_TAG_variable 252 .long .Ldebug_loc2-.debug_loc.dwo # DW_AT_location 253 .byte 10 # DW_AT_name 254 .byte 1 # DW_AT_decl_file 255 .byte 8 # DW_AT_decl_line 256 .long 44 # DW_AT_type 257 .byte 8 # Abbrev [8] 0x63:0x15 DW_TAG_inlined_subroutine 258 .long 25 # DW_AT_abstract_origin 259 .byte 1 # DW_AT_low_pc 260 .long .Ltmp3-.Ltmp2 # DW_AT_high_pc 261 .byte 1 # DW_AT_call_file 262 .byte 9 # DW_AT_call_line 263 .byte 32 # DW_AT_call_column 264 .byte 9 # Abbrev [9] 0x70:0x7 DW_TAG_formal_parameter 265 .byte 1 # DW_AT_location 266 .byte 83 267 .long 35 # DW_AT_abstract_origin 268 .byte 0 # End Of Children Mark 269 .byte 10 # Abbrev [10] 0x78:0x6 DW_TAG_GNU_call_site 270 .long 127 # DW_AT_abstract_origin 271 .byte 1 # DW_AT_low_pc 272 .byte 0 # End Of Children Mark 273 .byte 11 # Abbrev [11] 0x7f:0x5 DW_TAG_subprogram 274 .byte 4 # DW_AT_linkage_name 275 .byte 5 # DW_AT_name 276 .byte 1 # DW_AT_decl_file 277 .byte 4 # DW_AT_decl_line 278 # DW_AT_declaration 279 # DW_AT_external 280 .byte 12 # Abbrev [12] 0x84:0x5 DW_TAG_pointer_type 281 .long 137 # DW_AT_type 282 .byte 12 # Abbrev [12] 0x89:0x5 DW_TAG_pointer_type 283 .long 142 # DW_AT_type 284 .byte 4 # Abbrev [4] 0x8e:0x4 DW_TAG_base_type 285 .byte 9 # DW_AT_name 286 .byte 6 # DW_AT_encoding 287 .byte 1 # DW_AT_byte_size 288 .byte 0 # End Of Children Mark 289.Ldebug_info_dwo_end0: 290 .section .debug_abbrev.dwo,"e",@progbits 291 .byte 1 # Abbreviation Code 292 .byte 17 # DW_TAG_compile_unit 293 .byte 1 # DW_CHILDREN_yes 294 .byte 37 # DW_AT_producer 295 .ascii "\202>" # DW_FORM_GNU_str_index 296 .byte 19 # DW_AT_language 297 .byte 5 # DW_FORM_data2 298 .byte 3 # DW_AT_name 299 .ascii "\202>" # DW_FORM_GNU_str_index 300 .ascii "\260B" # DW_AT_GNU_dwo_name 301 .ascii "\202>" # DW_FORM_GNU_str_index 302 .ascii "\261B" # DW_AT_GNU_dwo_id 303 .byte 7 # DW_FORM_data8 304 .byte 0 # EOM(1) 305 .byte 0 # EOM(2) 306 .byte 2 # Abbreviation Code 307 .byte 46 # DW_TAG_subprogram 308 .byte 1 # DW_CHILDREN_yes 309 .byte 110 # DW_AT_linkage_name 310 .ascii "\202>" # DW_FORM_GNU_str_index 311 .byte 3 # DW_AT_name 312 .ascii "\202>" # DW_FORM_GNU_str_index 313 .byte 58 # DW_AT_decl_file 314 .byte 11 # DW_FORM_data1 315 .byte 59 # DW_AT_decl_line 316 .byte 11 # DW_FORM_data1 317 .byte 73 # DW_AT_type 318 .byte 19 # DW_FORM_ref4 319 .byte 32 # DW_AT_inline 320 .byte 11 # DW_FORM_data1 321 .byte 0 # EOM(1) 322 .byte 0 # EOM(2) 323 .byte 3 # Abbreviation Code 324 .byte 5 # DW_TAG_formal_parameter 325 .byte 0 # DW_CHILDREN_no 326 .byte 3 # DW_AT_name 327 .ascii "\202>" # DW_FORM_GNU_str_index 328 .byte 58 # DW_AT_decl_file 329 .byte 11 # DW_FORM_data1 330 .byte 59 # DW_AT_decl_line 331 .byte 11 # DW_FORM_data1 332 .byte 73 # DW_AT_type 333 .byte 19 # DW_FORM_ref4 334 .byte 0 # EOM(1) 335 .byte 0 # EOM(2) 336 .byte 4 # Abbreviation Code 337 .byte 36 # DW_TAG_base_type 338 .byte 0 # DW_CHILDREN_no 339 .byte 3 # DW_AT_name 340 .ascii "\202>" # DW_FORM_GNU_str_index 341 .byte 62 # DW_AT_encoding 342 .byte 11 # DW_FORM_data1 343 .byte 11 # DW_AT_byte_size 344 .byte 11 # DW_FORM_data1 345 .byte 0 # EOM(1) 346 .byte 0 # EOM(2) 347 .byte 5 # Abbreviation Code 348 .byte 46 # DW_TAG_subprogram 349 .byte 1 # DW_CHILDREN_yes 350 .byte 17 # DW_AT_low_pc 351 .ascii "\201>" # DW_FORM_GNU_addr_index 352 .byte 18 # DW_AT_high_pc 353 .byte 6 # DW_FORM_data4 354 .byte 64 # DW_AT_frame_base 355 .byte 24 # DW_FORM_exprloc 356 .ascii "\227B" # DW_AT_GNU_all_call_sites 357 .byte 25 # DW_FORM_flag_present 358 .byte 3 # DW_AT_name 359 .ascii "\202>" # DW_FORM_GNU_str_index 360 .byte 58 # DW_AT_decl_file 361 .byte 11 # DW_FORM_data1 362 .byte 59 # DW_AT_decl_line 363 .byte 11 # DW_FORM_data1 364 .byte 73 # DW_AT_type 365 .byte 19 # DW_FORM_ref4 366 .byte 63 # DW_AT_external 367 .byte 25 # DW_FORM_flag_present 368 .byte 0 # EOM(1) 369 .byte 0 # EOM(2) 370 .byte 6 # Abbreviation Code 371 .byte 5 # DW_TAG_formal_parameter 372 .byte 0 # DW_CHILDREN_no 373 .byte 2 # DW_AT_location 374 .byte 23 # DW_FORM_sec_offset 375 .byte 3 # DW_AT_name 376 .ascii "\202>" # DW_FORM_GNU_str_index 377 .byte 58 # DW_AT_decl_file 378 .byte 11 # DW_FORM_data1 379 .byte 59 # DW_AT_decl_line 380 .byte 11 # DW_FORM_data1 381 .byte 73 # DW_AT_type 382 .byte 19 # DW_FORM_ref4 383 .byte 0 # EOM(1) 384 .byte 0 # EOM(2) 385 .byte 7 # Abbreviation Code 386 .byte 52 # DW_TAG_variable 387 .byte 0 # DW_CHILDREN_no 388 .byte 2 # DW_AT_location 389 .byte 23 # DW_FORM_sec_offset 390 .byte 3 # DW_AT_name 391 .ascii "\202>" # DW_FORM_GNU_str_index 392 .byte 58 # DW_AT_decl_file 393 .byte 11 # DW_FORM_data1 394 .byte 59 # DW_AT_decl_line 395 .byte 11 # DW_FORM_data1 396 .byte 73 # DW_AT_type 397 .byte 19 # DW_FORM_ref4 398 .byte 0 # EOM(1) 399 .byte 0 # EOM(2) 400 .byte 8 # Abbreviation Code 401 .byte 29 # DW_TAG_inlined_subroutine 402 .byte 1 # DW_CHILDREN_yes 403 .byte 49 # DW_AT_abstract_origin 404 .byte 19 # DW_FORM_ref4 405 .byte 17 # DW_AT_low_pc 406 .ascii "\201>" # DW_FORM_GNU_addr_index 407 .byte 18 # DW_AT_high_pc 408 .byte 6 # DW_FORM_data4 409 .byte 88 # DW_AT_call_file 410 .byte 11 # DW_FORM_data1 411 .byte 89 # DW_AT_call_line 412 .byte 11 # DW_FORM_data1 413 .byte 87 # DW_AT_call_column 414 .byte 11 # DW_FORM_data1 415 .byte 0 # EOM(1) 416 .byte 0 # EOM(2) 417 .byte 9 # Abbreviation Code 418 .byte 5 # DW_TAG_formal_parameter 419 .byte 0 # DW_CHILDREN_no 420 .byte 2 # DW_AT_location 421 .byte 24 # DW_FORM_exprloc 422 .byte 49 # DW_AT_abstract_origin 423 .byte 19 # DW_FORM_ref4 424 .byte 0 # EOM(1) 425 .byte 0 # EOM(2) 426 .byte 10 # Abbreviation Code 427 .ascii "\211\202\001" # DW_TAG_GNU_call_site 428 .byte 0 # DW_CHILDREN_no 429 .byte 49 # DW_AT_abstract_origin 430 .byte 19 # DW_FORM_ref4 431 .byte 17 # DW_AT_low_pc 432 .ascii "\201>" # DW_FORM_GNU_addr_index 433 .byte 0 # EOM(1) 434 .byte 0 # EOM(2) 435 .byte 11 # Abbreviation Code 436 .byte 46 # DW_TAG_subprogram 437 .byte 0 # DW_CHILDREN_no 438 .byte 110 # DW_AT_linkage_name 439 .ascii "\202>" # DW_FORM_GNU_str_index 440 .byte 3 # DW_AT_name 441 .ascii "\202>" # DW_FORM_GNU_str_index 442 .byte 58 # DW_AT_decl_file 443 .byte 11 # DW_FORM_data1 444 .byte 59 # DW_AT_decl_line 445 .byte 11 # DW_FORM_data1 446 .byte 60 # DW_AT_declaration 447 .byte 25 # DW_FORM_flag_present 448 .byte 63 # DW_AT_external 449 .byte 25 # DW_FORM_flag_present 450 .byte 0 # EOM(1) 451 .byte 0 # EOM(2) 452 .byte 12 # Abbreviation Code 453 .byte 15 # DW_TAG_pointer_type 454 .byte 0 # DW_CHILDREN_no 455 .byte 73 # DW_AT_type 456 .byte 19 # DW_FORM_ref4 457 .byte 0 # EOM(1) 458 .byte 0 # EOM(2) 459 .byte 0 # EOM(3) 460 .section .debug_addr,"",@progbits 461.Laddr_table_base0: 462 .quad .Lfunc_begin0 463 .quad .Ltmp2 464 .quad .Ltmp1 465 .quad .Ltmp3 466 .quad .Ltmp4 467 .section .debug_gnu_pubnames,"",@progbits 468 .long .LpubNames_end0-.LpubNames_start0 # Length of Public Names Info 469.LpubNames_start0: 470 .short 2 # DWARF Version 471 .long .Lcu_begin0 # Offset of Compilation Unit Info 472 .long 48 # Compilation Unit Length 473 .long 48 # DIE offset 474 .byte 48 # Attributes: FUNCTION, EXTERNAL 475 .asciz "main" # External Name 476 .long 25 # DIE offset 477 .byte 176 # Attributes: FUNCTION, STATIC 478 .asciz "helper" # External Name 479 .long 0 # End Mark 480.LpubNames_end0: 481 .section .debug_gnu_pubtypes,"",@progbits 482 .long .LpubTypes_end0-.LpubTypes_start0 # Length of Public Types Info 483.LpubTypes_start0: 484 .short 2 # DWARF Version 485 .long .Lcu_begin0 # Offset of Compilation Unit Info 486 .long 48 # Compilation Unit Length 487 .long 44 # DIE offset 488 .byte 144 # Attributes: TYPE, STATIC 489 .asciz "int" # External Name 490 .long 142 # DIE offset 491 .byte 144 # Attributes: TYPE, STATIC 492 .asciz "char" # External Name 493 .long 0 # End Mark 494.LpubTypes_end0: 495 .weak _Z13may_not_existv 496 .ident "clang version 17.0.0 (https://github.com/llvm/llvm-project.git 640e07c49037cca41a1bfbeb916b569d8c950aea)" 497 .section ".note.GNU-stack","",@progbits 498 .addrsig 499 .addrsig_sym _Z13may_not_existv 500 .section .debug_line,"",@progbits 501.Lline_table_start0: 502