brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.7 KiB · 8e296d2 Raw
381 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++ -g 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  .cfi_def_cfa %rsp, 835  retq36.Ltmp1:37.Lfunc_end0:38  .size _Z1av, .Lfunc_end0-_Z1av39  .cfi_endproc40                                        # -- End function41  .globl  _Z1bv                   # -- Begin function _Z1bv42  .p2align  4, 0x9043  .type _Z1bv,@function44_Z1bv:                                  # @_Z1bv45.Lfunc_begin1:46  .loc  1 2 0                   # tiny.cc:2:047  .cfi_startproc48# %bb.0:49  pushq %rbp50  .cfi_def_cfa_offset 1651  .cfi_offset %rbp, -1652  movq  %rsp, %rbp53  .cfi_def_cfa_register %rbp54.Ltmp2:55  .loc  1 2 11 prologue_end     # tiny.cc:2:1156  popq  %rbp57  .cfi_def_cfa %rsp, 858  retq59.Ltmp3:60.Lfunc_end1:61  .size _Z1bv, .Lfunc_end1-_Z1bv62  .cfi_endproc63                                        # -- End function64  .globl  main                    # -- Begin function main65  .p2align  4, 0x9066  .type main,@function67main:                                   # @main68.Lfunc_begin2:69  .loc  1 4 0                   # tiny.cc:4:070  .cfi_startproc71# %bb.0:72  pushq %rbp73  .cfi_def_cfa_offset 1674  .cfi_offset %rbp, -1675  movq  %rsp, %rbp76  .cfi_def_cfa_register %rbp77  subq  $32, %rsp78  movl  $0, -4(%rbp)79  movl  %edi, -8(%rbp)80  movq  %rsi, -16(%rbp)81.Ltmp4:82  .loc  1 6 12 prologue_end     # tiny.cc:6:1283  cmpl  $1, -8(%rbp)84.Ltmp5:85  .loc  1 6 7 is_stmt 0         # tiny.cc:6:786  jne .LBB2_287# %bb.1:88  .loc  1 0 7                   # tiny.cc:0:789  movabsq $_Z1av, %rax90.Ltmp6:91  .loc  1 7 9 is_stmt 1         # tiny.cc:7:992  movq  %rax, -24(%rbp)93  .loc  1 7 5 is_stmt 0         # tiny.cc:7:594  jmp .LBB2_395.LBB2_2:96  .loc  1 0 5                   # tiny.cc:0:597  movabsq $_Z1bv, %rax98  .loc  1 9 9 is_stmt 1         # tiny.cc:9:999  movq  %rax, -24(%rbp)100.Ltmp7:101.LBB2_3:102  .loc  1 11 3                  # tiny.cc:11:3103  callq *-24(%rbp)104  .loc  1 12 1                  # tiny.cc:12:1105  movl  -4(%rbp), %eax106  addq  $32, %rsp107  popq  %rbp108  .cfi_def_cfa %rsp, 8109  retq110.Ltmp8:111.Lfunc_end2:112  .size main, .Lfunc_end2-main113  .cfi_endproc114                                        # -- End function115  .section  .debug_str,"MS",@progbits,1116.Linfo_string0:117  .asciz  "clang version 6.0.0 (trunk 317104)" # string offset=0118.Linfo_string1:119  .asciz  "tiny.cc"               # string offset=35120.Linfo_string2:121  .asciz  "/tmp/a/b"              # string offset=43122.Linfo_string3:123  .asciz  "_Z1av"                 # string offset=52124.Linfo_string4:125  .asciz  "a"                     # string offset=58126.Linfo_string5:127  .asciz  "_Z1bv"                 # string offset=60128.Linfo_string6:129  .asciz  "b"                     # string offset=66130.Linfo_string7:131  .asciz  "main"                  # string offset=68132.Linfo_string8:133  .asciz  "int"                   # string offset=73134.Linfo_string9:135  .asciz  "argc"                  # string offset=77136.Linfo_string10:137  .asciz  "argv"                  # string offset=82138.Linfo_string11:139  .asciz  "char"                  # string offset=87140.Linfo_string12:141  .asciz  "ptr"                   # string offset=92142  .section  .debug_abbrev,"",@progbits143  .byte 1                       # Abbreviation Code144  .byte 17                      # DW_TAG_compile_unit145  .byte 1                       # DW_CHILDREN_yes146  .byte 37                      # DW_AT_producer147  .byte 14                      # DW_FORM_strp148  .byte 19                      # DW_AT_language149  .byte 5                       # DW_FORM_data2150  .byte 3                       # DW_AT_name151  .byte 14                      # DW_FORM_strp152  .byte 16                      # DW_AT_stmt_list153  .byte 23                      # DW_FORM_sec_offset154  .byte 27                      # DW_AT_comp_dir155  .byte 14                      # DW_FORM_strp156  .ascii  "\264B"                 # DW_AT_GNU_pubnames157  .byte 25                      # DW_FORM_flag_present158  .byte 17                      # DW_AT_low_pc159  .byte 1                       # DW_FORM_addr160  .byte 18                      # DW_AT_high_pc161  .byte 6                       # DW_FORM_data4162  .byte 0                       # EOM(1)163  .byte 0                       # EOM(2)164  .byte 2                       # Abbreviation Code165  .byte 46                      # DW_TAG_subprogram166  .byte 0                       # DW_CHILDREN_no167  .byte 17                      # DW_AT_low_pc168  .byte 1                       # DW_FORM_addr169  .byte 18                      # DW_AT_high_pc170  .byte 6                       # DW_FORM_data4171  .byte 64                      # DW_AT_frame_base172  .byte 24                      # DW_FORM_exprloc173  .byte 110                     # DW_AT_linkage_name174  .byte 14                      # DW_FORM_strp175  .byte 3                       # DW_AT_name176  .byte 14                      # DW_FORM_strp177  .byte 58                      # DW_AT_decl_file178  .byte 11                      # DW_FORM_data1179  .byte 59                      # DW_AT_decl_line180  .byte 11                      # DW_FORM_data1181  .byte 63                      # DW_AT_external182  .byte 25                      # DW_FORM_flag_present183  .byte 0                       # EOM(1)184  .byte 0                       # EOM(2)185  .byte 3                       # Abbreviation Code186  .byte 46                      # DW_TAG_subprogram187  .byte 1                       # DW_CHILDREN_yes188  .byte 17                      # DW_AT_low_pc189  .byte 1                       # DW_FORM_addr190  .byte 18                      # DW_AT_high_pc191  .byte 6                       # DW_FORM_data4192  .byte 64                      # DW_AT_frame_base193  .byte 24                      # DW_FORM_exprloc194  .byte 3                       # DW_AT_name195  .byte 14                      # DW_FORM_strp196  .byte 58                      # DW_AT_decl_file197  .byte 11                      # DW_FORM_data1198  .byte 59                      # DW_AT_decl_line199  .byte 11                      # DW_FORM_data1200  .byte 73                      # DW_AT_type201  .byte 19                      # DW_FORM_ref4202  .byte 63                      # DW_AT_external203  .byte 25                      # DW_FORM_flag_present204  .byte 0                       # EOM(1)205  .byte 0                       # EOM(2)206  .byte 4                       # Abbreviation Code207  .byte 5                       # DW_TAG_formal_parameter208  .byte 0                       # DW_CHILDREN_no209  .byte 2                       # DW_AT_location210  .byte 24                      # DW_FORM_exprloc211  .byte 3                       # DW_AT_name212  .byte 14                      # DW_FORM_strp213  .byte 58                      # DW_AT_decl_file214  .byte 11                      # DW_FORM_data1215  .byte 59                      # DW_AT_decl_line216  .byte 11                      # DW_FORM_data1217  .byte 73                      # DW_AT_type218  .byte 19                      # DW_FORM_ref4219  .byte 0                       # EOM(1)220  .byte 0                       # EOM(2)221  .byte 5                       # Abbreviation Code222  .byte 52                      # DW_TAG_variable223  .byte 0                       # DW_CHILDREN_no224  .byte 2                       # DW_AT_location225  .byte 24                      # DW_FORM_exprloc226  .byte 3                       # DW_AT_name227  .byte 14                      # DW_FORM_strp228  .byte 58                      # DW_AT_decl_file229  .byte 11                      # DW_FORM_data1230  .byte 59                      # DW_AT_decl_line231  .byte 11                      # DW_FORM_data1232  .byte 73                      # DW_AT_type233  .byte 19                      # DW_FORM_ref4234  .byte 0                       # EOM(1)235  .byte 0                       # EOM(2)236  .byte 6                       # Abbreviation Code237  .byte 36                      # DW_TAG_base_type238  .byte 0                       # DW_CHILDREN_no239  .byte 3                       # DW_AT_name240  .byte 14                      # DW_FORM_strp241  .byte 62                      # DW_AT_encoding242  .byte 11                      # DW_FORM_data1243  .byte 11                      # DW_AT_byte_size244  .byte 11                      # DW_FORM_data1245  .byte 0                       # EOM(1)246  .byte 0                       # EOM(2)247  .byte 7                       # Abbreviation Code248  .byte 15                      # DW_TAG_pointer_type249  .byte 0                       # DW_CHILDREN_no250  .byte 73                      # DW_AT_type251  .byte 19                      # DW_FORM_ref4252  .byte 0                       # EOM(1)253  .byte 0                       # EOM(2)254  .byte 8                       # Abbreviation Code255  .byte 21                      # DW_TAG_subroutine_type256  .byte 0                       # DW_CHILDREN_no257  .byte 0                       # EOM(1)258  .byte 0                       # EOM(2)259  .byte 0                       # EOM(3)260  .section  .debug_info,"",@progbits261.Lcu_begin0:262  .long 187                     # Length of Unit263  .short  4                       # DWARF version number264  .long .debug_abbrev           # Offset Into Abbrev. Section265  .byte 8                       # Address Size (in bytes)266  .byte 1                       # Abbrev [1] 0xb:0xb4 DW_TAG_compile_unit267  .long .Linfo_string0          # DW_AT_producer268  .short  4                       # DW_AT_language269  .long .Linfo_string1          # DW_AT_name270  .long .Lline_table_start0     # DW_AT_stmt_list271  .long .Linfo_string2          # DW_AT_comp_dir272                                        # DW_AT_GNU_pubnames273  .quad .Lfunc_begin0           # DW_AT_low_pc274  .long .Lfunc_end2-.Lfunc_begin0 # DW_AT_high_pc275  .byte 2                       # Abbrev [2] 0x2a:0x19 DW_TAG_subprogram276  .quad .Lfunc_begin0           # DW_AT_low_pc277  .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc278  .byte 1                       # DW_AT_frame_base279  .byte 86280  .long .Linfo_string3          # DW_AT_linkage_name281  .long .Linfo_string4          # DW_AT_name282  .byte 1                       # DW_AT_decl_file283  .byte 1                       # DW_AT_decl_line284                                        # DW_AT_external285  .byte 2                       # Abbrev [2] 0x43:0x19 DW_TAG_subprogram286  .quad .Lfunc_begin1           # DW_AT_low_pc287  .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc288  .byte 1                       # DW_AT_frame_base289  .byte 86290  .long .Linfo_string5          # DW_AT_linkage_name291  .long .Linfo_string6          # DW_AT_name292  .byte 1                       # DW_AT_decl_file293  .byte 2                       # DW_AT_decl_line294                                        # DW_AT_external295  .byte 3                       # Abbrev [3] 0x5c:0x44 DW_TAG_subprogram296  .quad .Lfunc_begin2           # DW_AT_low_pc297  .long .Lfunc_end2-.Lfunc_begin2 # DW_AT_high_pc298  .byte 1                       # DW_AT_frame_base299  .byte 86300  .long .Linfo_string7          # DW_AT_name301  .byte 1                       # DW_AT_decl_file302  .byte 4                       # DW_AT_decl_line303  .long 160                     # DW_AT_type304                                        # DW_AT_external305  .byte 4                       # Abbrev [4] 0x75:0xe DW_TAG_formal_parameter306  .byte 2                       # DW_AT_location307  .byte 145308  .byte 120309  .long .Linfo_string9          # DW_AT_name310  .byte 1                       # DW_AT_decl_file311  .byte 4                       # DW_AT_decl_line312  .long 160                     # DW_AT_type313  .byte 4                       # Abbrev [4] 0x83:0xe DW_TAG_formal_parameter314  .byte 2                       # DW_AT_location315  .byte 145316  .byte 112317  .long .Linfo_string10         # DW_AT_name318  .byte 1                       # DW_AT_decl_file319  .byte 4                       # DW_AT_decl_line320  .long 167                     # DW_AT_type321  .byte 5                       # Abbrev [5] 0x91:0xe DW_TAG_variable322  .byte 2                       # DW_AT_location323  .byte 145324  .byte 104325  .long .Linfo_string12         # DW_AT_name326  .byte 1                       # DW_AT_decl_file327  .byte 5                       # DW_AT_decl_line328  .long 184                     # DW_AT_type329  .byte 0                       # End Of Children Mark330  .byte 6                       # Abbrev [6] 0xa0:0x7 DW_TAG_base_type331  .long .Linfo_string8          # DW_AT_name332  .byte 5                       # DW_AT_encoding333  .byte 4                       # DW_AT_byte_size334  .byte 7                       # Abbrev [7] 0xa7:0x5 DW_TAG_pointer_type335  .long 172                     # DW_AT_type336  .byte 7                       # Abbrev [7] 0xac:0x5 DW_TAG_pointer_type337  .long 177                     # DW_AT_type338  .byte 6                       # Abbrev [6] 0xb1:0x7 DW_TAG_base_type339  .long .Linfo_string11         # DW_AT_name340  .byte 6                       # DW_AT_encoding341  .byte 1                       # DW_AT_byte_size342  .byte 7                       # Abbrev [7] 0xb8:0x5 DW_TAG_pointer_type343  .long 189                     # DW_AT_type344  .byte 8                       # Abbrev [8] 0xbd:0x1 DW_TAG_subroutine_type345  .byte 0                       # End Of Children Mark346  .section  .debug_ranges,"",@progbits347  .section  .debug_macinfo,"",@progbits348.Lcu_macro_begin0:349  .byte 0                       # End Of Macro List Mark350  .section  .debug_pubnames,"",@progbits351  .long .LpubNames_end0-.LpubNames_begin0 # Length of Public Names Info352.LpubNames_begin0:353  .short  2                       # DWARF Version354  .long .Lcu_begin0             # Offset of Compilation Unit Info355  .long 191                     # Compilation Unit Length356  .long 42                      # DIE offset357  .asciz  "a"                     # External Name358  .long 67                      # DIE offset359  .asciz  "b"                     # External Name360  .long 92                      # DIE offset361  .asciz  "main"                  # External Name362  .long 0                       # End Mark363.LpubNames_end0:364  .section  .debug_pubtypes,"",@progbits365  .long .LpubTypes_end0-.LpubTypes_begin0 # Length of Public Types Info366.LpubTypes_begin0:367  .short  2                       # DWARF Version368  .long .Lcu_begin0             # Offset of Compilation Unit Info369  .long 191                     # Compilation Unit Length370  .long 160                     # DIE offset371  .asciz  "int"                   # External Name372  .long 177                     # DIE offset373  .asciz  "char"                  # External Name374  .long 0                       # End Mark375.LpubTypes_end0:376 377  .ident  "clang version 6.0.0 (trunk 317104)"378  .section  ".note.GNU-stack","",@progbits379  .section  .debug_line,"",@progbits380.Lline_table_start0:381