395 lines · plain
1# clang++ -g2 -fdebug-types-section -gdwarf-5 -ffunction-sections2# int foo(int i) {3# if (i == 1)4# return 2;5# return 1;6# }7# int main(int argc, char* argv[]) {8# int j = argc;9# if (j ==3)10# j+= foo(argc);11# return j;12# }13 14 .text15 .file "main.cpp"16 .section .text._Z3fooi,"ax",@progbits17 .globl _Z3fooi # -- Begin function _Z3fooi18 .p2align 4, 0x9019 .type _Z3fooi,@function20_Z3fooi: # @_Z3fooi21.Lfunc_begin0:22 .file 0 "/test" "main.cpp" md5 0x485e4f4a4784830c686905cfd190e44423 .loc 0 1 0 # main.cpp:1:024 .cfi_startproc25# %bb.0: # %entry26 pushq %rbp27 .cfi_def_cfa_offset 1628 .cfi_offset %rbp, -1629 movq %rsp, %rbp30 .cfi_def_cfa_register %rbp31 movl %edi, -8(%rbp)32.Ltmp0:33 .loc 0 2 9 prologue_end # main.cpp:2:934 cmpl $1, -8(%rbp)35.Ltmp1:36 .loc 0 2 7 is_stmt 0 # main.cpp:2:737 jne .LBB0_238# %bb.1: # %if.then39.Ltmp2:40 .loc 0 3 5 is_stmt 1 # main.cpp:3:541 movl $2, -4(%rbp)42 jmp .LBB0_343.Ltmp3:44.LBB0_2: # %if.end45 .loc 0 4 3 # main.cpp:4:346 movl $1, -4(%rbp)47.LBB0_3: # %return48 .loc 0 5 1 # main.cpp:5:149 movl -4(%rbp), %eax50 .loc 0 5 1 epilogue_begin is_stmt 0 # main.cpp:5:151 popq %rbp52 .cfi_def_cfa %rsp, 853 retq54.Ltmp4:55.Lfunc_end0:56 .size _Z3fooi, .Lfunc_end0-_Z3fooi57 .cfi_endproc58 # -- End function59 .section .text.main,"ax",@progbits60 .globl main # -- Begin function main61 .p2align 4, 0x9062 .type main,@function63main: # @main64.Lfunc_begin1:65 .loc 0 6 0 is_stmt 1 # main.cpp:6:066 .cfi_startproc67# %bb.0: # %entry68 pushq %rbp69 .cfi_def_cfa_offset 1670 .cfi_offset %rbp, -1671 movq %rsp, %rbp72 .cfi_def_cfa_register %rbp73 subq $32, %rsp74 movl $0, -4(%rbp)75 movl %edi, -8(%rbp)76 movq %rsi, -16(%rbp)77.Ltmp5:78 .loc 0 7 11 prologue_end # main.cpp:7:1179 movl -8(%rbp), %eax80 .loc 0 7 7 is_stmt 0 # main.cpp:7:781 movl %eax, -20(%rbp)82.Ltmp6:83 .loc 0 8 9 is_stmt 1 # main.cpp:8:984 cmpl $3, -20(%rbp)85.Ltmp7:86 .loc 0 8 7 is_stmt 0 # main.cpp:8:787 jne .LBB1_288# %bb.1: # %if.then89.Ltmp8:90 .loc 0 9 13 is_stmt 1 # main.cpp:9:1391 movl -8(%rbp), %edi92 .loc 0 9 9 is_stmt 0 # main.cpp:9:993 callq _Z3fooi94 .loc 0 9 6 # main.cpp:9:695 addl -20(%rbp), %eax96 movl %eax, -20(%rbp)97.Ltmp9:98.LBB1_2: # %if.end99 .loc 0 10 10 is_stmt 1 # main.cpp:10:10100 movl -20(%rbp), %eax101 .loc 0 10 3 epilogue_begin is_stmt 0 # main.cpp:10:3102 addq $32, %rsp103 popq %rbp104 .cfi_def_cfa %rsp, 8105 retq106.Ltmp10:107.Lfunc_end1:108 .size main, .Lfunc_end1-main109 .cfi_endproc110 # -- End function111 .section .debug_abbrev,"",@progbits112 .byte 1 # Abbreviation Code113 .byte 17 # DW_TAG_compile_unit114 .byte 1 # DW_CHILDREN_yes115 .byte 37 # DW_AT_producer116 .byte 37 # DW_FORM_strx1117 .byte 19 # DW_AT_language118 .byte 5 # DW_FORM_data2119 .byte 3 # DW_AT_name120 .byte 37 # DW_FORM_strx1121 .byte 114 # DW_AT_str_offsets_base122 .byte 23 # DW_FORM_sec_offset123 .byte 16 # DW_AT_stmt_list124 .byte 23 # DW_FORM_sec_offset125 .byte 27 # DW_AT_comp_dir126 .byte 37 # DW_FORM_strx1127 .byte 17 # DW_AT_low_pc128 .byte 1 # DW_FORM_addr129 .byte 85 # DW_AT_ranges130 .byte 35 # DW_FORM_rnglistx131 .byte 115 # DW_AT_addr_base132 .byte 23 # DW_FORM_sec_offset133 .byte 116 # DW_AT_rnglists_base134 .byte 23 # DW_FORM_sec_offset135 .byte 0 # EOM(1)136 .byte 0 # EOM(2)137 .byte 2 # Abbreviation Code138 .byte 46 # DW_TAG_subprogram139 .byte 1 # DW_CHILDREN_yes140 .byte 17 # DW_AT_low_pc141 .byte 27 # DW_FORM_addrx142 .byte 18 # DW_AT_high_pc143 .byte 6 # DW_FORM_data4144 .byte 64 # DW_AT_frame_base145 .byte 24 # DW_FORM_exprloc146 .byte 110 # DW_AT_linkage_name147 .byte 37 # DW_FORM_strx1148 .byte 3 # DW_AT_name149 .byte 37 # DW_FORM_strx1150 .byte 58 # DW_AT_decl_file151 .byte 11 # DW_FORM_data1152 .byte 59 # DW_AT_decl_line153 .byte 11 # DW_FORM_data1154 .byte 73 # DW_AT_type155 .byte 19 # DW_FORM_ref4156 .byte 63 # DW_AT_external157 .byte 25 # DW_FORM_flag_present158 .byte 0 # EOM(1)159 .byte 0 # EOM(2)160 .byte 3 # Abbreviation Code161 .byte 5 # DW_TAG_formal_parameter162 .byte 0 # DW_CHILDREN_no163 .byte 2 # DW_AT_location164 .byte 24 # DW_FORM_exprloc165 .byte 3 # DW_AT_name166 .byte 37 # DW_FORM_strx1167 .byte 58 # DW_AT_decl_file168 .byte 11 # DW_FORM_data1169 .byte 59 # DW_AT_decl_line170 .byte 11 # DW_FORM_data1171 .byte 73 # DW_AT_type172 .byte 19 # DW_FORM_ref4173 .byte 0 # EOM(1)174 .byte 0 # EOM(2)175 .byte 4 # Abbreviation Code176 .byte 46 # DW_TAG_subprogram177 .byte 1 # DW_CHILDREN_yes178 .byte 17 # DW_AT_low_pc179 .byte 27 # DW_FORM_addrx180 .byte 18 # DW_AT_high_pc181 .byte 6 # DW_FORM_data4182 .byte 64 # DW_AT_frame_base183 .byte 24 # DW_FORM_exprloc184 .byte 3 # DW_AT_name185 .byte 37 # DW_FORM_strx1186 .byte 58 # DW_AT_decl_file187 .byte 11 # DW_FORM_data1188 .byte 59 # DW_AT_decl_line189 .byte 11 # DW_FORM_data1190 .byte 73 # DW_AT_type191 .byte 19 # DW_FORM_ref4192 .byte 63 # DW_AT_external193 .byte 25 # DW_FORM_flag_present194 .byte 0 # EOM(1)195 .byte 0 # EOM(2)196 .byte 5 # Abbreviation Code197 .byte 52 # DW_TAG_variable198 .byte 0 # DW_CHILDREN_no199 .byte 2 # DW_AT_location200 .byte 24 # DW_FORM_exprloc201 .byte 3 # DW_AT_name202 .byte 37 # DW_FORM_strx1203 .byte 58 # DW_AT_decl_file204 .byte 11 # DW_FORM_data1205 .byte 59 # DW_AT_decl_line206 .byte 11 # DW_FORM_data1207 .byte 73 # DW_AT_type208 .byte 19 # DW_FORM_ref4209 .byte 0 # EOM(1)210 .byte 0 # EOM(2)211 .byte 6 # Abbreviation Code212 .byte 36 # DW_TAG_base_type213 .byte 0 # DW_CHILDREN_no214 .byte 3 # DW_AT_name215 .byte 37 # DW_FORM_strx1216 .byte 62 # DW_AT_encoding217 .byte 11 # DW_FORM_data1218 .byte 11 # DW_AT_byte_size219 .byte 11 # DW_FORM_data1220 .byte 0 # EOM(1)221 .byte 0 # EOM(2)222 .byte 7 # Abbreviation Code223 .byte 15 # DW_TAG_pointer_type224 .byte 0 # DW_CHILDREN_no225 .byte 73 # DW_AT_type226 .byte 19 # DW_FORM_ref4227 .byte 0 # EOM(1)228 .byte 0 # EOM(2)229 .byte 0 # EOM(3)230 .section .debug_info,"",@progbits231.Lcu_begin0:232 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit233.Ldebug_info_start0:234 .short 5 # DWARF version number235 .byte 1 # DWARF Unit Type236 .byte 8 # Address Size (in bytes)237 .long .debug_abbrev # Offset Into Abbrev. Section238 .byte 1 # Abbrev [1] 0xc:0x7f DW_TAG_compile_unit239 .byte 0 # DW_AT_producer240 .short 33 # DW_AT_language241 .byte 1 # DW_AT_name242 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base243 .long .Lline_table_start0 # DW_AT_stmt_list244 .byte 2 # DW_AT_comp_dir245 .quad 0 # DW_AT_low_pc246 .byte 0 # DW_AT_ranges247 .long .Laddr_table_base0 # DW_AT_addr_base248 .long .Lrnglists_table_base0 # DW_AT_rnglists_base249 .byte 2 # Abbrev [2] 0x2b:0x1c DW_TAG_subprogram250 .byte 0 # DW_AT_low_pc251 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc252 .byte 1 # DW_AT_frame_base253 .byte 86254 .byte 3 # DW_AT_linkage_name255 .byte 4 # DW_AT_name256 .byte 0 # DW_AT_decl_file257 .byte 1 # DW_AT_decl_line258 .long 120 # DW_AT_type259 # DW_AT_external260 .byte 3 # Abbrev [3] 0x3b:0xb DW_TAG_formal_parameter261 .byte 2 # DW_AT_location262 .byte 145263 .byte 120264 .byte 7 # DW_AT_name265 .byte 0 # DW_AT_decl_file266 .byte 1 # DW_AT_decl_line267 .long 120 # DW_AT_type268 .byte 0 # End Of Children Mark269 .byte 4 # Abbrev [4] 0x47:0x31 DW_TAG_subprogram270 .byte 1 # DW_AT_low_pc271 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc272 .byte 1 # DW_AT_frame_base273 .byte 86274 .byte 6 # DW_AT_name275 .byte 0 # DW_AT_decl_file276 .byte 6 # DW_AT_decl_line277 .long 120 # DW_AT_type278 # DW_AT_external279 .byte 3 # Abbrev [3] 0x56:0xb DW_TAG_formal_parameter280 .byte 2 # DW_AT_location281 .byte 145282 .byte 120283 .byte 8 # DW_AT_name284 .byte 0 # DW_AT_decl_file285 .byte 6 # DW_AT_decl_line286 .long 120 # DW_AT_type287 .byte 3 # Abbrev [3] 0x61:0xb DW_TAG_formal_parameter288 .byte 2 # DW_AT_location289 .byte 145290 .byte 112291 .byte 9 # DW_AT_name292 .byte 0 # DW_AT_decl_file293 .byte 6 # DW_AT_decl_line294 .long 124 # DW_AT_type295 .byte 5 # Abbrev [5] 0x6c:0xb DW_TAG_variable296 .byte 2 # DW_AT_location297 .byte 145298 .byte 108299 .byte 11 # DW_AT_name300 .byte 0 # DW_AT_decl_file301 .byte 7 # DW_AT_decl_line302 .long 120 # DW_AT_type303 .byte 0 # End Of Children Mark304 .byte 6 # Abbrev [6] 0x78:0x4 DW_TAG_base_type305 .byte 5 # DW_AT_name306 .byte 5 # DW_AT_encoding307 .byte 4 # DW_AT_byte_size308 .byte 7 # Abbrev [7] 0x7c:0x5 DW_TAG_pointer_type309 .long 129 # DW_AT_type310 .byte 7 # Abbrev [7] 0x81:0x5 DW_TAG_pointer_type311 .long 134 # DW_AT_type312 .byte 6 # Abbrev [6] 0x86:0x4 DW_TAG_base_type313 .byte 10 # DW_AT_name314 .byte 6 # DW_AT_encoding315 .byte 1 # DW_AT_byte_size316 .byte 0 # End Of Children Mark317.Ldebug_info_end0:318 .section .debug_rnglists,"",@progbits319 .long .Ldebug_list_header_end0-.Ldebug_list_header_start0 # Length320.Ldebug_list_header_start0:321 .short 5 # Version322 .byte 8 # Address size323 .byte 0 # Segment selector size324 .long 1 # Offset entry count325.Lrnglists_table_base0:326 .long .Ldebug_ranges0-.Lrnglists_table_base0327.Ldebug_ranges0:328 .byte 3 # DW_RLE_startx_length329 .byte 0 # start index330 .uleb128 .Lfunc_end0-.Lfunc_begin0 # length331 .byte 3 # DW_RLE_startx_length332 .byte 1 # start index333 .uleb128 .Lfunc_end1-.Lfunc_begin1 # length334 .byte 0 # DW_RLE_end_of_list335.Ldebug_list_header_end0:336 .section .debug_str_offsets,"",@progbits337 .long 52 # Length of String Offsets Set338 .short 5339 .short 0340.Lstr_offsets_base0:341 .section .debug_str,"MS",@progbits,1342.Linfo_string0:343 .asciz "clang version 18.0.0git" # string offset=0344.Linfo_string1:345 .asciz "main.cpp" # string offset=24346.Linfo_string2:347 .asciz "/test" # string offset=33348.Linfo_string3:349 .asciz "_Z3fooi" # string offset=71350.Linfo_string4:351 .asciz "foo" # string offset=79352.Linfo_string5:353 .asciz "int" # string offset=83354.Linfo_string6:355 .asciz "main" # string offset=87356.Linfo_string7:357 .asciz "i" # string offset=92358.Linfo_string8:359 .asciz "argc" # string offset=94360.Linfo_string9:361 .asciz "argv" # string offset=99362.Linfo_string10:363 .asciz "char" # string offset=104364.Linfo_string11:365 .asciz "j" # string offset=109366 .section .debug_str_offsets,"",@progbits367 .long .Linfo_string0368 .long .Linfo_string1369 .long .Linfo_string2370 .long .Linfo_string3371 .long .Linfo_string4372 .long .Linfo_string5373 .long .Linfo_string6374 .long .Linfo_string7375 .long .Linfo_string8376 .long .Linfo_string9377 .long .Linfo_string10378 .long .Linfo_string11379 .section .debug_addr,"",@progbits380 .long .Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution381.Ldebug_addr_start0:382 .short 5 # DWARF version number383 .byte 8 # Address size384 .byte 0 # Segment selector size385.Laddr_table_base0:386 .quad .Lfunc_begin0387 .quad .Lfunc_begin1388.Ldebug_addr_end0:389 .ident "clang version 18.0.0git"390 .section ".note.GNU-stack","",@progbits391 .addrsig392 .addrsig_sym _Z3fooi393 .section .debug_line,"",@progbits394.Lline_table_start0:395