1## clang++ -fbasic-block-sections=all -ffunction-sections -g2 -gdwarf-5 2## int doStuffOther(int val) { 3## if (val) 4## ++val; 5## return val; 6## } 7## 8## int mainOther(int argc, const char** argv) { 9## return doStuffOther(argc); 10## } 11 .text 12 .file "mainOther.cpp" 13 .section .text._Z12doStuffOtheri,"ax",@progbits 14 .globl _Z12doStuffOtheri # -- Begin function _Z12doStuffOtheri 15 .p2align 4, 0x90 16 .type _Z12doStuffOtheri,@function 17_Z12doStuffOtheri: # @_Z12doStuffOtheri 18.Lfunc_begin0: 19 .file 0 "." "mainOther.cpp" md5 0xe43cc8133fbf67674318eacbcc46a59e 20 .loc 0 1 0 # mainOther.cpp:1:0 21 .cfi_startproc 22# %bb.0: # %entry 23 pushq %rbp 24 .cfi_def_cfa_offset 16 25 .cfi_offset %rbp, -16 26 movq %rsp, %rbp 27 .cfi_def_cfa_register %rbp 28 movl %edi, -4(%rbp) 29.Ltmp0: 30 .loc 0 2 8 prologue_end # mainOther.cpp:2:8 31 cmpl $0, -4(%rbp) 32.Ltmp1: 33 .loc 0 2 8 is_stmt 0 # mainOther.cpp:2:8 34 je _Z12doStuffOtheri.__part.2 35 jmp _Z12doStuffOtheri.__part.1 36.LBB_END0_0: 37 .cfi_endproc 38 .section .text._Z12doStuffOtheri,"ax",@progbits,unique,1 39_Z12doStuffOtheri.__part.1: # %if.then 40 .cfi_startproc 41 .cfi_def_cfa %rbp, 16 42 .cfi_offset %rbp, -16 43 .loc 0 3 6 is_stmt 1 # mainOther.cpp:3:6 44 movl -4(%rbp), %eax 45 addl $1, %eax 46 movl %eax, -4(%rbp) 47 jmp _Z12doStuffOtheri.__part.2 48.LBB_END0_1: 49 .size _Z12doStuffOtheri.__part.1, .LBB_END0_1-_Z12doStuffOtheri.__part.1 50 .cfi_endproc 51 .section .text._Z12doStuffOtheri,"ax",@progbits,unique,2 52_Z12doStuffOtheri.__part.2: # %if.end 53 .cfi_startproc 54 .cfi_def_cfa %rbp, 16 55 .cfi_offset %rbp, -16 56 .loc 0 4 11 # mainOther.cpp:4:11 57 movl -4(%rbp), %eax 58 .loc 0 4 4 epilogue_begin is_stmt 0 # mainOther.cpp:4:4 59 popq %rbp 60 .cfi_def_cfa %rsp, 8 61 retq 62.LBB_END0_2: 63 .size _Z12doStuffOtheri.__part.2, .LBB_END0_2-_Z12doStuffOtheri.__part.2 64 .cfi_endproc 65 .section .text._Z12doStuffOtheri,"ax",@progbits 66.Lfunc_end0: 67 .size _Z12doStuffOtheri, .Lfunc_end0-_Z12doStuffOtheri 68 # -- End function 69 .section .text._Z9mainOtheriPPKc,"ax",@progbits 70 .globl _Z9mainOtheriPPKc # -- Begin function _Z9mainOtheriPPKc 71 .p2align 4, 0x90 72 .type _Z9mainOtheriPPKc,@function 73_Z9mainOtheriPPKc: # @_Z9mainOtheriPPKc 74.Lfunc_begin1: 75 .loc 0 7 0 is_stmt 1 # mainOther.cpp:7:0 76 .cfi_startproc 77# %bb.0: # %entry 78 pushq %rbp 79 .cfi_def_cfa_offset 16 80 .cfi_offset %rbp, -16 81 movq %rsp, %rbp 82 .cfi_def_cfa_register %rbp 83 subq $16, %rsp 84 movl %edi, -4(%rbp) 85 movq %rsi, -16(%rbp) 86.Ltmp2: 87 .loc 0 8 27 prologue_end # mainOther.cpp:8:27 88 movl -4(%rbp), %edi 89 .loc 0 8 14 is_stmt 0 # mainOther.cpp:8:14 90 callq _Z12doStuffOtheri 91 .loc 0 8 6 epilogue_begin # mainOther.cpp:8:6 92 addq $16, %rsp 93 popq %rbp 94 .cfi_def_cfa %rsp, 8 95 retq 96.LBB_END1_0: 97 .cfi_endproc 98.Lfunc_end1: 99 .size _Z9mainOtheriPPKc, .Lfunc_end1-_Z9mainOtheriPPKc 100 # -- End function 101 .section .debug_abbrev,"",@progbits 102 .byte 1 # Abbreviation Code 103 .byte 17 # DW_TAG_compile_unit 104 .byte 1 # DW_CHILDREN_yes 105 .byte 37 # DW_AT_producer 106 .byte 37 # DW_FORM_strx1 107 .byte 19 # DW_AT_language 108 .byte 5 # DW_FORM_data2 109 .byte 3 # DW_AT_name 110 .byte 37 # DW_FORM_strx1 111 .byte 114 # DW_AT_str_offsets_base 112 .byte 23 # DW_FORM_sec_offset 113 .byte 16 # DW_AT_stmt_list 114 .byte 23 # DW_FORM_sec_offset 115 .byte 27 # DW_AT_comp_dir 116 .byte 37 # DW_FORM_strx1 117 .byte 17 # DW_AT_low_pc 118 .byte 1 # DW_FORM_addr 119 .byte 85 # DW_AT_ranges 120 .byte 35 # DW_FORM_rnglistx 121 .byte 115 # DW_AT_addr_base 122 .byte 23 # DW_FORM_sec_offset 123 .byte 116 # DW_AT_rnglists_base 124 .byte 23 # DW_FORM_sec_offset 125 .byte 0 # EOM(1) 126 .byte 0 # EOM(2) 127 .byte 2 # Abbreviation Code 128 .byte 46 # DW_TAG_subprogram 129 .byte 1 # DW_CHILDREN_yes 130 .byte 85 # DW_AT_ranges 131 .byte 35 # DW_FORM_rnglistx 132 .byte 64 # DW_AT_frame_base 133 .byte 24 # DW_FORM_exprloc 134 .byte 110 # DW_AT_linkage_name 135 .byte 37 # DW_FORM_strx1 136 .byte 3 # DW_AT_name 137 .byte 37 # DW_FORM_strx1 138 .byte 58 # DW_AT_decl_file 139 .byte 11 # DW_FORM_data1 140 .byte 59 # DW_AT_decl_line 141 .byte 11 # DW_FORM_data1 142 .byte 73 # DW_AT_type 143 .byte 19 # DW_FORM_ref4 144 .byte 63 # DW_AT_external 145 .byte 25 # DW_FORM_flag_present 146 .byte 0 # EOM(1) 147 .byte 0 # EOM(2) 148 .byte 3 # Abbreviation Code 149 .byte 5 # DW_TAG_formal_parameter 150 .byte 0 # DW_CHILDREN_no 151 .byte 2 # DW_AT_location 152 .byte 24 # DW_FORM_exprloc 153 .byte 3 # DW_AT_name 154 .byte 37 # DW_FORM_strx1 155 .byte 58 # DW_AT_decl_file 156 .byte 11 # DW_FORM_data1 157 .byte 59 # DW_AT_decl_line 158 .byte 11 # DW_FORM_data1 159 .byte 73 # DW_AT_type 160 .byte 19 # DW_FORM_ref4 161 .byte 0 # EOM(1) 162 .byte 0 # EOM(2) 163 .byte 4 # Abbreviation Code 164 .byte 46 # DW_TAG_subprogram 165 .byte 1 # DW_CHILDREN_yes 166 .byte 17 # DW_AT_low_pc 167 .byte 27 # DW_FORM_addrx 168 .byte 18 # DW_AT_high_pc 169 .byte 6 # DW_FORM_data4 170 .byte 64 # DW_AT_frame_base 171 .byte 24 # DW_FORM_exprloc 172 .byte 110 # DW_AT_linkage_name 173 .byte 37 # DW_FORM_strx1 174 .byte 3 # DW_AT_name 175 .byte 37 # DW_FORM_strx1 176 .byte 58 # DW_AT_decl_file 177 .byte 11 # DW_FORM_data1 178 .byte 59 # DW_AT_decl_line 179 .byte 11 # DW_FORM_data1 180 .byte 73 # DW_AT_type 181 .byte 19 # DW_FORM_ref4 182 .byte 63 # DW_AT_external 183 .byte 25 # DW_FORM_flag_present 184 .byte 0 # EOM(1) 185 .byte 0 # EOM(2) 186 .byte 5 # Abbreviation Code 187 .byte 36 # DW_TAG_base_type 188 .byte 0 # DW_CHILDREN_no 189 .byte 3 # DW_AT_name 190 .byte 37 # DW_FORM_strx1 191 .byte 62 # DW_AT_encoding 192 .byte 11 # DW_FORM_data1 193 .byte 11 # DW_AT_byte_size 194 .byte 11 # DW_FORM_data1 195 .byte 0 # EOM(1) 196 .byte 0 # EOM(2) 197 .byte 6 # Abbreviation Code 198 .byte 15 # DW_TAG_pointer_type 199 .byte 0 # DW_CHILDREN_no 200 .byte 73 # DW_AT_type 201 .byte 19 # DW_FORM_ref4 202 .byte 0 # EOM(1) 203 .byte 0 # EOM(2) 204 .byte 7 # Abbreviation Code 205 .byte 38 # DW_TAG_const_type 206 .byte 0 # DW_CHILDREN_no 207 .byte 73 # DW_AT_type 208 .byte 19 # DW_FORM_ref4 209 .byte 0 # EOM(1) 210 .byte 0 # EOM(2) 211 .byte 0 # EOM(3) 212 .section .debug_info,"",@progbits 213.Lcu_begin0: 214 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit 215.Ldebug_info_start0: 216 .short 5 # DWARF version number 217 .byte 1 # DWARF Unit Type 218 .byte 8 # Address Size (in bytes) 219 .long .debug_abbrev # Offset Into Abbrev. Section 220 .byte 1 # Abbrev [1] 0xc:0x76 DW_TAG_compile_unit 221 .byte 0 # DW_AT_producer 222 .short 33 # DW_AT_language 223 .byte 1 # DW_AT_name 224 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base 225 .long .Lline_table_start0 # DW_AT_stmt_list 226 .byte 2 # DW_AT_comp_dir 227 .quad 0 # DW_AT_low_pc 228 .byte 1 # DW_AT_ranges 229 .long .Laddr_table_base0 # DW_AT_addr_base 230 .long .Lrnglists_table_base0 # DW_AT_rnglists_base 231 .byte 2 # Abbrev [2] 0x2b:0x18 DW_TAG_subprogram 232 .byte 0 # DW_AT_ranges 233 .byte 1 # DW_AT_frame_base 234 .byte 86 235 .byte 3 # DW_AT_linkage_name 236 .byte 4 # DW_AT_name 237 .byte 0 # DW_AT_decl_file 238 .byte 1 # DW_AT_decl_line 239 .long 106 # DW_AT_type 240 # DW_AT_external 241 .byte 3 # Abbrev [3] 0x37:0xb DW_TAG_formal_parameter 242 .byte 2 # DW_AT_location 243 .byte 145 244 .byte 124 245 .byte 8 # DW_AT_name 246 .byte 0 # DW_AT_decl_file 247 .byte 1 # DW_AT_decl_line 248 .long 106 # DW_AT_type 249 .byte 0 # End Of Children Mark 250 .byte 4 # Abbrev [4] 0x43:0x27 DW_TAG_subprogram 251 .byte 3 # DW_AT_low_pc 252 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc 253 .byte 1 # DW_AT_frame_base 254 .byte 86 255 .byte 6 # DW_AT_linkage_name 256 .byte 7 # DW_AT_name 257 .byte 0 # DW_AT_decl_file 258 .byte 7 # DW_AT_decl_line 259 .long 106 # DW_AT_type 260 # DW_AT_external 261 .byte 3 # Abbrev [3] 0x53:0xb DW_TAG_formal_parameter 262 .byte 2 # DW_AT_location 263 .byte 145 264 .byte 124 265 .byte 9 # DW_AT_name 266 .byte 0 # DW_AT_decl_file 267 .byte 7 # DW_AT_decl_line 268 .long 106 # DW_AT_type 269 .byte 3 # Abbrev [3] 0x5e:0xb DW_TAG_formal_parameter 270 .byte 2 # DW_AT_location 271 .byte 145 272 .byte 112 273 .byte 10 # DW_AT_name 274 .byte 0 # DW_AT_decl_file 275 .byte 7 # DW_AT_decl_line 276 .long 110 # DW_AT_type 277 .byte 0 # End Of Children Mark 278 .byte 5 # Abbrev [5] 0x6a:0x4 DW_TAG_base_type 279 .byte 5 # DW_AT_name 280 .byte 5 # DW_AT_encoding 281 .byte 4 # DW_AT_byte_size 282 .byte 6 # Abbrev [6] 0x6e:0x5 DW_TAG_pointer_type 283 .long 115 # DW_AT_type 284 .byte 6 # Abbrev [6] 0x73:0x5 DW_TAG_pointer_type 285 .long 120 # DW_AT_type 286 .byte 7 # Abbrev [7] 0x78:0x5 DW_TAG_const_type 287 .long 125 # DW_AT_type 288 .byte 5 # Abbrev [5] 0x7d:0x4 DW_TAG_base_type 289 .byte 11 # DW_AT_name 290 .byte 6 # DW_AT_encoding 291 .byte 1 # DW_AT_byte_size 292 .byte 0 # End Of Children Mark 293.Ldebug_info_end0: 294 .section .debug_rnglists,"",@progbits 295 .long .Ldebug_list_header_end0-.Ldebug_list_header_start0 # Length 296.Ldebug_list_header_start0: 297 .short 5 # Version 298 .byte 8 # Address size 299 .byte 0 # Segment selector size 300 .long 2 # Offset entry count 301.Lrnglists_table_base0: 302 .long .Ldebug_ranges0-.Lrnglists_table_base0 303 .long .Ldebug_ranges1-.Lrnglists_table_base0 304.Ldebug_ranges0: 305 .byte 3 # DW_RLE_startx_length 306 .byte 0 # start index 307 .uleb128 .LBB_END0_1-_Z12doStuffOtheri.__part.1 # length 308 .byte 3 # DW_RLE_startx_length 309 .byte 1 # start index 310 .uleb128 .LBB_END0_2-_Z12doStuffOtheri.__part.2 # length 311 .byte 3 # DW_RLE_startx_length 312 .byte 2 # start index 313 .uleb128 .Lfunc_end0-.Lfunc_begin0 # length 314 .byte 0 # DW_RLE_end_of_list 315.Ldebug_ranges1: 316 .byte 3 # DW_RLE_startx_length 317 .byte 0 # start index 318 .uleb128 .LBB_END0_1-_Z12doStuffOtheri.__part.1 # length 319 .byte 3 # DW_RLE_startx_length 320 .byte 1 # start index 321 .uleb128 .LBB_END0_2-_Z12doStuffOtheri.__part.2 # length 322 .byte 3 # DW_RLE_startx_length 323 .byte 2 # start index 324 .uleb128 .Lfunc_end0-.Lfunc_begin0 # length 325 .byte 3 # DW_RLE_startx_length 326 .byte 3 # start index 327 .uleb128 .Lfunc_end1-.Lfunc_begin1 # length 328 .byte 0 # DW_RLE_end_of_list 329.Ldebug_list_header_end0: 330 .section .debug_str_offsets,"",@progbits 331 .long 52 # Length of String Offsets Set 332 .short 5 333 .short 0 334.Lstr_offsets_base0: 335 .section .debug_str,"MS",@progbits,1 336.Linfo_string0: 337 .asciz "clang version 19.0.0git (git@github.com:llvm/llvm-project.git df542e1ed82bd4e5a9e345d3a3ae63a76893a0cf)" # string offset=0 338.Linfo_string1: 339 .asciz "mainOther.cpp" # string offset=104 340.Linfo_string2: 341 .asciz "." # string offset=118 342.Linfo_string3: 343 .asciz "_Z12doStuffOtheri" # string offset=120 344.Linfo_string4: 345 .asciz "doStuffOther" # string offset=138 346.Linfo_string5: 347 .asciz "int" # string offset=151 348.Linfo_string6: 349 .asciz "_Z9mainOtheriPPKc" # string offset=155 350.Linfo_string7: 351 .asciz "mainOther" # string offset=173 352.Linfo_string8: 353 .asciz "val" # string offset=183 354.Linfo_string9: 355 .asciz "argc" # string offset=187 356.Linfo_string10: 357 .asciz "argv" # string offset=192 358.Linfo_string11: 359 .asciz "char" # string offset=197 360 .section .debug_str_offsets,"",@progbits 361 .long .Linfo_string0 362 .long .Linfo_string1 363 .long .Linfo_string2 364 .long .Linfo_string3 365 .long .Linfo_string4 366 .long .Linfo_string5 367 .long .Linfo_string6 368 .long .Linfo_string7 369 .long .Linfo_string8 370 .long .Linfo_string9 371 .long .Linfo_string10 372 .long .Linfo_string11 373 .section .debug_addr,"",@progbits 374 .long .Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution 375.Ldebug_addr_start0: 376 .short 5 # DWARF version number 377 .byte 8 # Address size 378 .byte 0 # Segment selector size 379.Laddr_table_base0: 380 .quad _Z12doStuffOtheri.__part.1 381 .quad _Z12doStuffOtheri.__part.2 382 .quad .Lfunc_begin0 383 .quad .Lfunc_begin1 384.Ldebug_addr_end0: 385 .ident "clang version 19.0.0git (git@github.com:llvm/llvm-project.git df542e1ed82bd4e5a9e345d3a3ae63a76893a0cf)" 386 .section ".note.GNU-stack","",@progbits 387 .addrsig 388 .addrsig_sym _Z12doStuffOtheri 389 .section .debug_line,"",@progbits 390.Lline_table_start0: 391