305 lines · plain
1# Binary and .o was generated by:2# 1) clang++ -g -gsplit-dwarf=single splitdwarf-single-issue.cpp -O3 -o splitdwarf-single-issue.s -S3# 2) Split in to two .s by making a copy and removing .dwo sections from skeleton .s.4#5# Input .cpp file6# __attribute__((nodebug)) __attribute__((optnone)) void f1() {7# }8#9# __attribute__((always_inline)) inline void f2() {10#11# f1();12# }13#14# int main() {15#16# f2();17# }18 19# RUN: rm -rf %t20# RUN: mkdir -p %t21# RUN: llvm-mc --filetype=obj --triple=x86_64-pc-linux %s -o %t/symbolize-debug-fission-single -g22# RUN: llvm-mc --filetype=obj --triple=x86_64-pc-linux %s --defsym INCDWO=1 -o %t/symbolize-debug-fission-single.o -g23# RUN: cd %t24# RUN: llvm-symbolizer 0x0000000000000011 -a --obj=%t/symbolize-debug-fission-single \25# RUN: | FileCheck %s26 27# CHECK: 0x1128# CHECK-NEXT: f2()29# CHECK-NEXT: {{.*}}splitdwarf-single-issue.cpp:7:330# CHECK-NEXT: main31# CHECK-NEXT: {{.*}}splitdwarf-single-issue.cpp:13:332 33 .text34 .file "splitdwarf-single-issue.cpp"35 .globl _Z2f1v # -- Begin function _Z2f1v36 .p2align 4, 0x9037 .type _Z2f1v,@function38_Z2f1v: # @_Z2f1v39.Lfunc_begin0:40 .cfi_startproc41# %bb.0: # %entry42 retq43.Lfunc_end0:44 .size _Z2f1v, .Lfunc_end0-_Z2f1v45 .cfi_endproc46 # -- End function47 .globl main # -- Begin function main48 .p2align 4, 0x9049 .type main,@function50main: # @main51.Lfunc_begin1:52 .file 1 "." "splitdwarf-single-issue.cpp"53 .loc 1 11 0 # splitdwarf-single-issue.cpp:11:054 .cfi_startproc55# %bb.0: # %entry56 pushq %rax57 .cfi_def_cfa_offset 1658.Ltmp0:59 .loc 1 7 3 prologue_end # splitdwarf-single-issue.cpp:7:360 callq _Z2f1v61.Ltmp1:62 .loc 1 15 1 # splitdwarf-single-issue.cpp:15:163 xorl %eax, %eax64 popq %rcx65 .cfi_def_cfa_offset 866 retq67.Ltmp2:68.Lfunc_end1:69 .size main, .Lfunc_end1-main70 .cfi_endproc71 # -- End function72 .section .debug_abbrev,"",@progbits73 .byte 1 # Abbreviation Code74 .byte 17 # DW_TAG_compile_unit75 .byte 0 # DW_CHILDREN_no76 .byte 16 # DW_AT_stmt_list77 .byte 23 # DW_FORM_sec_offset78 .byte 27 # DW_AT_comp_dir79 .byte 14 # DW_FORM_strp80 .ascii "\264B" # DW_AT_GNU_pubnames81 .byte 25 # DW_FORM_flag_present82 .ascii "\260B" # DW_AT_GNU_dwo_name83 .byte 14 # DW_FORM_strp84 .ascii "\261B" # DW_AT_GNU_dwo_id85 .byte 7 # DW_FORM_data886 .byte 17 # DW_AT_low_pc87 .byte 1 # DW_FORM_addr88 .byte 18 # DW_AT_high_pc89 .byte 6 # DW_FORM_data490 .ascii "\263B" # DW_AT_GNU_addr_base91 .byte 23 # DW_FORM_sec_offset92 .byte 0 # EOM(1)93 .byte 0 # EOM(2)94 .byte 0 # EOM(3)95 .section .debug_info,"",@progbits96.Lcu_begin0:97 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit98.Ldebug_info_start0:99 .short 4 # DWARF version number100 .long .debug_abbrev # Offset Into Abbrev. Section101 .byte 8 # Address Size (in bytes)102 .byte 1 # Abbrev [1] 0xb:0x25 DW_TAG_compile_unit103 .long .Lline_table_start0 # DW_AT_stmt_list104 .long .Lskel_string0 # DW_AT_comp_dir105 # DW_AT_GNU_pubnames106 .long .Lskel_string1 # DW_AT_GNU_dwo_name107 .quad -4321749769762995760 # DW_AT_GNU_dwo_id108 .quad .Lfunc_begin1 # DW_AT_low_pc109 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc110 .long .Laddr_table_base0 # DW_AT_GNU_addr_base111.Ldebug_info_end0:112 .section .debug_str,"MS",@progbits,1113.Lskel_string0:114 .asciz "." # string offset=0115.Lskel_string1:116 .asciz "symbolize-debug-fission-single.o" # string offset=37117 .section .debug_addr,"",@progbits118.Laddr_table_base0:119 .quad .Lfunc_begin1120 .quad .Ltmp0121 .section .debug_gnu_pubnames,"",@progbits122 .long .LpubNames_end0-.LpubNames_start0 # Length of Public Names Info123.LpubNames_start0:124 .short 2 # DWARF Version125 .long .Lcu_begin0 # Offset of Compilation Unit Info126 .long 48 # Compilation Unit Length127 .long 31 # DIE offset128 .byte 48 # Attributes: FUNCTION, EXTERNAL129 .asciz "main" # External Name130 .long 25 # DIE offset131 .byte 48 # Attributes: FUNCTION, EXTERNAL132 .asciz "f2" # External Name133 .long 0 # End Mark134.LpubNames_end0:135 .section .debug_gnu_pubtypes,"",@progbits136 .long .LpubTypes_end0-.LpubTypes_start0 # Length of Public Types Info137.LpubTypes_start0:138 .short 2 # DWARF Version139 .long .Lcu_begin0 # Offset of Compilation Unit Info140 .long 48 # Compilation Unit Length141 .long 60 # DIE offset142 .byte 144 # Attributes: TYPE, STATIC143 .asciz "int" # External Name144 .long 0 # End Mark145.LpubTypes_end0:146 .ident "clang version 13.0.0 (https://github.com/llvm/llvm-project.git f0363d3d38b9a3b831b1bb6fa602eff54ac928fa)"147 .section ".note.GNU-stack","",@progbits148 .addrsig149 .section .debug_line,"",@progbits150.Lline_table_start0:151.ifdef INCDWO152 .section .debug_str.dwo,"eMS",@progbits,1153.Linfo_string0:154 .asciz "_Z2f2v" # string offset=0155.Linfo_string1:156 .asciz "f2" # string offset=7157.Linfo_string2:158 .asciz "main" # string offset=10159.Linfo_string3:160 .asciz "int" # string offset=15161.Linfo_string4:162 .asciz "clang version 13.0.0 (https://github.com/llvm/llvm-project.git f0363d3d38b9a3b831b1bb6fa602eff54ac928fa)" # string offset=19163.Linfo_string5:164 .asciz "splitdwarf-single-issue.cpp" # string offset=124165.Linfo_string6:166 .asciz "symbolize-debug-fission-single.o" # string offset=152167 .section .debug_str_offsets.dwo,"e",@progbits168 .long 0169 .long 7170 .long 10171 .long 15172 .long 19173 .long 124174 .long 152175 .section .debug_info.dwo,"e",@progbits176 .long .Ldebug_info_dwo_end0-.Ldebug_info_dwo_start0 # Length of Unit177.Ldebug_info_dwo_start0:178 .short 4 # DWARF version number179 .long 0 # Offset Into Abbrev. Section180 .byte 8 # Address Size (in bytes)181 .byte 1 # Abbrev [1] 0xb:0x36 DW_TAG_compile_unit182 .byte 4 # DW_AT_producer183 .short 33 # DW_AT_language184 .byte 5 # DW_AT_name185 .byte 6 # DW_AT_GNU_dwo_name186 .quad -4321749769762995760 # DW_AT_GNU_dwo_id187 .byte 2 # Abbrev [2] 0x19:0x6 DW_TAG_subprogram188 .byte 0 # DW_AT_linkage_name189 .byte 1 # DW_AT_name190 .byte 1 # DW_AT_decl_file191 .byte 5 # DW_AT_decl_line192 # DW_AT_external193 .byte 1 # DW_AT_inline194 .byte 3 # Abbrev [3] 0x1f:0x1d DW_TAG_subprogram195 .byte 0 # DW_AT_low_pc196 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc197 .byte 1 # DW_AT_frame_base198 .byte 87199 # DW_AT_GNU_all_call_sites200 .byte 2 # DW_AT_name201 .byte 1 # DW_AT_decl_file202 .byte 11 # DW_AT_decl_line203 .long 60 # DW_AT_type204 # DW_AT_external205 .byte 4 # Abbrev [4] 0x2e:0xd DW_TAG_inlined_subroutine206 .long 25 # DW_AT_abstract_origin207 .byte 1 # DW_AT_low_pc208 .long .Ltmp1-.Ltmp0 # DW_AT_high_pc209 .byte 1 # DW_AT_call_file210 .byte 13 # DW_AT_call_line211 .byte 3 # DW_AT_call_column212 .byte 0 # End Of Children Mark213 .byte 5 # Abbrev [5] 0x3c:0x4 DW_TAG_base_type214 .byte 3 # DW_AT_name215 .byte 5 # DW_AT_encoding216 .byte 4 # DW_AT_byte_size217 .byte 0 # End Of Children Mark218.Ldebug_info_dwo_end0:219 .section .debug_abbrev.dwo,"e",@progbits220 .byte 1 # Abbreviation Code221 .byte 17 # DW_TAG_compile_unit222 .byte 1 # DW_CHILDREN_yes223 .byte 37 # DW_AT_producer224 .ascii "\202>" # DW_FORM_GNU_str_index225 .byte 19 # DW_AT_language226 .byte 5 # DW_FORM_data2227 .byte 3 # DW_AT_name228 .ascii "\202>" # DW_FORM_GNU_str_index229 .ascii "\260B" # DW_AT_GNU_dwo_name230 .ascii "\202>" # DW_FORM_GNU_str_index231 .ascii "\261B" # DW_AT_GNU_dwo_id232 .byte 7 # DW_FORM_data8233 .byte 0 # EOM(1)234 .byte 0 # EOM(2)235 .byte 2 # Abbreviation Code236 .byte 46 # DW_TAG_subprogram237 .byte 0 # DW_CHILDREN_no238 .byte 110 # DW_AT_linkage_name239 .ascii "\202>" # DW_FORM_GNU_str_index240 .byte 3 # DW_AT_name241 .ascii "\202>" # DW_FORM_GNU_str_index242 .byte 58 # DW_AT_decl_file243 .byte 11 # DW_FORM_data1244 .byte 59 # DW_AT_decl_line245 .byte 11 # DW_FORM_data1246 .byte 63 # DW_AT_external247 .byte 25 # DW_FORM_flag_present248 .byte 32 # DW_AT_inline249 .byte 11 # DW_FORM_data1250 .byte 0 # EOM(1)251 .byte 0 # EOM(2)252 .byte 3 # Abbreviation Code253 .byte 46 # DW_TAG_subprogram254 .byte 1 # DW_CHILDREN_yes255 .byte 17 # DW_AT_low_pc256 .ascii "\201>" # DW_FORM_GNU_addr_index257 .byte 18 # DW_AT_high_pc258 .byte 6 # DW_FORM_data4259 .byte 64 # DW_AT_frame_base260 .byte 24 # DW_FORM_exprloc261 .ascii "\227B" # DW_AT_GNU_all_call_sites262 .byte 25 # DW_FORM_flag_present263 .byte 3 # DW_AT_name264 .ascii "\202>" # DW_FORM_GNU_str_index265 .byte 58 # DW_AT_decl_file266 .byte 11 # DW_FORM_data1267 .byte 59 # DW_AT_decl_line268 .byte 11 # DW_FORM_data1269 .byte 73 # DW_AT_type270 .byte 19 # DW_FORM_ref4271 .byte 63 # DW_AT_external272 .byte 25 # DW_FORM_flag_present273 .byte 0 # EOM(1)274 .byte 0 # EOM(2)275 .byte 4 # Abbreviation Code276 .byte 29 # DW_TAG_inlined_subroutine277 .byte 0 # DW_CHILDREN_no278 .byte 49 # DW_AT_abstract_origin279 .byte 19 # DW_FORM_ref4280 .byte 17 # DW_AT_low_pc281 .ascii "\201>" # DW_FORM_GNU_addr_index282 .byte 18 # DW_AT_high_pc283 .byte 6 # DW_FORM_data4284 .byte 88 # DW_AT_call_file285 .byte 11 # DW_FORM_data1286 .byte 89 # DW_AT_call_line287 .byte 11 # DW_FORM_data1288 .byte 87 # DW_AT_call_column289 .byte 11 # DW_FORM_data1290 .byte 0 # EOM(1)291 .byte 0 # EOM(2)292 .byte 5 # Abbreviation Code293 .byte 36 # DW_TAG_base_type294 .byte 0 # DW_CHILDREN_no295 .byte 3 # DW_AT_name296 .ascii "\202>" # DW_FORM_GNU_str_index297 .byte 62 # DW_AT_encoding298 .byte 11 # DW_FORM_data1299 .byte 11 # DW_AT_byte_size300 .byte 11 # DW_FORM_data1301 .byte 0 # EOM(1)302 .byte 0 # EOM(2)303 .byte 0 # EOM(3)304.endif305