160 lines · plain
1# Source (tiny.cc):2# void a() {}3# void b() {}4# int main(int argc, char** argv) {5# void(*ptr)();6# if (argc == 1)7# ptr = &a;8# else9# ptr = &b;10# ptr();11# }12# Compile with:13# clang++ -gmlt tiny.cc -S -o tiny.s14 15 .text16 .file "tiny.cc"17 .globl _Z1av # -- Begin function _Z1av18 .p2align 4, 0x9019 .type _Z1av,@function20_Z1av: # @_Z1av21.Lfunc_begin0:22 .file 1 "tiny.cc"23 .loc 1 1 0 # tiny.cc:1:024 .cfi_startproc25# %bb.0:26 pushq %rbp27 .cfi_def_cfa_offset 1628 .cfi_offset %rbp, -1629 movq %rsp, %rbp30 .cfi_def_cfa_register %rbp31.Ltmp0:32 .loc 1 1 11 prologue_end # tiny.cc:1:1133 popq %rbp34 retq35.Ltmp1:36.Lfunc_end0:37 .size _Z1av, .Lfunc_end0-_Z1av38 .cfi_endproc39 # -- End function40 .globl _Z1bv # -- Begin function _Z1bv41 .p2align 4, 0x9042 .type _Z1bv,@function43_Z1bv: # @_Z1bv44.Lfunc_begin1:45 .loc 1 2 0 # tiny.cc:2:046 .cfi_startproc47# %bb.0:48 pushq %rbp49 .cfi_def_cfa_offset 1650 .cfi_offset %rbp, -1651 movq %rsp, %rbp52 .cfi_def_cfa_register %rbp53.Ltmp2:54 .loc 1 2 11 prologue_end # tiny.cc:2:1155 popq %rbp56 retq57.Ltmp3:58.Lfunc_end1:59 .size _Z1bv, .Lfunc_end1-_Z1bv60 .cfi_endproc61 # -- End function62 .globl main # -- Begin function main63 .p2align 4, 0x9064 .type main,@function65main: # @main66.Lfunc_begin2:67 .loc 1 4 0 # tiny.cc:4:068 .cfi_startproc69# %bb.0:70 pushq %rbp71 .cfi_def_cfa_offset 1672 .cfi_offset %rbp, -1673 movq %rsp, %rbp74 .cfi_def_cfa_register %rbp75 subq $32, %rsp76 movl $0, -4(%rbp)77 movl %edi, -8(%rbp)78 movq %rsi, -16(%rbp)79.Ltmp4:80 .loc 1 6 12 prologue_end # tiny.cc:6:1281 cmpl $1, -8(%rbp)82 .loc 1 6 7 is_stmt 0 # tiny.cc:6:783 jne .LBB2_284# %bb.1:85 .loc 1 0 7 # tiny.cc:0:786 movabsq $_Z1av, %rax87 .loc 1 7 9 is_stmt 1 # tiny.cc:7:988 movq %rax, -24(%rbp)89 .loc 1 7 5 is_stmt 0 # tiny.cc:7:590 jmp .LBB2_391.LBB2_2:92 .loc 1 0 5 # tiny.cc:0:593 movabsq $_Z1bv, %rax94 .loc 1 9 9 is_stmt 1 # tiny.cc:9:995 movq %rax, -24(%rbp)96.LBB2_3:97 .loc 1 11 3 # tiny.cc:11:398 callq *-24(%rbp)99 .loc 1 12 1 # tiny.cc:12:1100 movl -4(%rbp), %eax101 addq $32, %rsp102 popq %rbp103 retq104.Ltmp5:105.Lfunc_end2:106 .size main, .Lfunc_end2-main107 .cfi_endproc108 # -- End function109 .section .debug_str,"MS",@progbits,1110.Linfo_string0:111 .asciz "clang version 6.0.0 (trunk 316774)" # string offset=0112.Linfo_string1:113 .asciz "tiny.cc" # string offset=35114.Linfo_string2:115 .asciz "/tmp/a/b" # string offset=43116 .section .debug_abbrev,"",@progbits117 .byte 1 # Abbreviation Code118 .byte 17 # DW_TAG_compile_unit119 .byte 0 # DW_CHILDREN_no120 .byte 37 # DW_AT_producer121 .byte 14 # DW_FORM_strp122 .byte 19 # DW_AT_language123 .byte 5 # DW_FORM_data2124 .byte 3 # DW_AT_name125 .byte 14 # DW_FORM_strp126 .byte 16 # DW_AT_stmt_list127 .byte 23 # DW_FORM_sec_offset128 .byte 27 # DW_AT_comp_dir129 .byte 14 # DW_FORM_strp130 .byte 17 # DW_AT_low_pc131 .byte 1 # DW_FORM_addr132 .byte 18 # DW_AT_high_pc133 .byte 6 # DW_FORM_data4134 .byte 0 # EOM(1)135 .byte 0 # EOM(2)136 .byte 0 # EOM(3)137 .section .debug_info,"",@progbits138.Lcu_begin0:139 .long 38 # Length of Unit140 .short 4 # DWARF version number141 .long .debug_abbrev # Offset Into Abbrev. Section142 .byte 8 # Address Size (in bytes)143 .byte 1 # Abbrev [1] 0xb:0x1f DW_TAG_compile_unit144 .long .Linfo_string0 # DW_AT_producer145 .short 4 # DW_AT_language146 .long .Linfo_string1 # DW_AT_name147 .long .Lline_table_start0 # DW_AT_stmt_list148 .long .Linfo_string2 # DW_AT_comp_dir149 .quad .Lfunc_begin0 # DW_AT_low_pc150 .long .Lfunc_end2-.Lfunc_begin0 # DW_AT_high_pc151 .section .debug_ranges,"",@progbits152 .section .debug_macinfo,"",@progbits153.Lcu_macro_begin0:154 .byte 0 # End Of Macro List Mark155 156 .ident "clang version 6.0.0 (trunk 316774)"157 .section ".note.GNU-stack","",@progbits158 .section .debug_line,"",@progbits159.Lline_table_start0:160