222 lines · plain
1# clang++ main.cpp -g2 -gsplit-dwarf -S -fdebug-compilation-dir=.2# Modified assembly so that DW_AT_dwo_name has a partial path.3# int main() { return 0; }4 5 .text6 .file "main.cpp"7 .globl main # -- Begin function main8 .p2align 4, 0x909 .type main,@function10main: # @main11.Lfunc_begin0:12 .file 0 "." "main.cpp" md5 0xbb12fec8d002b1f0e06f7dee4604c6cc13 .loc 0 1 0 # main.cpp:1:014 .cfi_startproc15# %bb.0: # %entry16 pushq %rbp17 .cfi_def_cfa_offset 1618 .cfi_offset %rbp, -1619 movq %rsp, %rbp20 .cfi_def_cfa_register %rbp21 movl $0, -4(%rbp)22.Ltmp0:23 .loc 0 2 3 prologue_end # main.cpp:2:324 xorl %eax, %eax25 .loc 0 2 3 epilogue_begin is_stmt 0 # main.cpp:2:326 popq %rbp27 .cfi_def_cfa %rsp, 828 retq29.Ltmp1:30.Lfunc_end0:31 .size main, .Lfunc_end0-main32 .cfi_endproc33 # -- End function34 .section .debug_abbrev,"",@progbits35 .byte 1 # Abbreviation Code36 .byte 74 # DW_TAG_skeleton_unit37 .byte 0 # DW_CHILDREN_no38 .byte 16 # DW_AT_stmt_list39 .byte 23 # DW_FORM_sec_offset40 .byte 114 # DW_AT_str_offsets_base41 .byte 23 # DW_FORM_sec_offset42 .byte 27 # DW_AT_comp_dir43 .byte 37 # DW_FORM_strx144 .ascii "\264B" # DW_AT_GNU_pubnames45 .byte 25 # DW_FORM_flag_present46 .byte 118 # DW_AT_dwo_name47 .byte 37 # DW_FORM_strx148 .byte 17 # DW_AT_low_pc49 .byte 27 # DW_FORM_addrx50 .byte 18 # DW_AT_high_pc51 .byte 6 # DW_FORM_data452 .byte 115 # DW_AT_addr_base53 .byte 23 # DW_FORM_sec_offset54 .byte 0 # EOM(1)55 .byte 0 # EOM(2)56 .byte 0 # EOM(3)57 .section .debug_info,"",@progbits58.Lcu_begin0:59 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit60.Ldebug_info_start0:61 .short 5 # DWARF version number62 .byte 4 # DWARF Unit Type63 .byte 8 # Address Size (in bytes)64 .long .debug_abbrev # Offset Into Abbrev. Section65 .quad 631807471090475330066 .byte 1 # Abbrev [1] 0x14:0x14 DW_TAG_skeleton_unit67 .long .Lline_table_start0 # DW_AT_stmt_list68 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base69 .byte 0 # DW_AT_comp_dir70 # DW_AT_GNU_pubnames71 .byte 1 # DW_AT_dwo_name72 .byte 0 # DW_AT_low_pc73 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc74 .long .Laddr_table_base0 # DW_AT_addr_base75.Ldebug_info_end0:76 .section .debug_str_offsets,"",@progbits77 .long 12 # Length of String Offsets Set78 .short 579 .short 080.Lstr_offsets_base0:81 .section .debug_str,"MS",@progbits,182.Lskel_string0:83 .asciz "." # string offset=084.Lskel_string1:85 .asciz "objects/o1/split.dwo" # string offset=2 <--- Manually modified.86 .section .debug_str_offsets,"",@progbits87 .long .Lskel_string088 .long .Lskel_string189 .section .debug_str_offsets.dwo,"e",@progbits90 .long 24 # Length of String Offsets Set91 .short 592 .short 093 .section .debug_str.dwo,"eMS",@progbits,194.Linfo_string0:95 .asciz "main" # string offset=096.Linfo_string1:97 .asciz "int" # string offset=598.Linfo_string2:99 .asciz "clang version 18.0.0" # string offset=9100.Linfo_string3:101 .asciz "main.cpp" # string offset=30102.Linfo_string4:103 .asciz "objects/o1/split.dwo" # string offset=39 <--- Manually modified.104 .section .debug_str_offsets.dwo,"e",@progbits105 .long 0106 .long 5107 .long 9108 .long 30109 .long 39110 .section .debug_info.dwo,"e",@progbits111 .long .Ldebug_info_dwo_end0-.Ldebug_info_dwo_start0 # Length of Unit112.Ldebug_info_dwo_start0:113 .short 5 # DWARF version number114 .byte 5 # DWARF Unit Type115 .byte 8 # Address Size (in bytes)116 .long 0 # Offset Into Abbrev. Section117 .quad 6318074710904753300118 .byte 1 # Abbrev [1] 0x14:0x1a DW_TAG_compile_unit119 .byte 2 # DW_AT_producer120 .short 33 # DW_AT_language121 .byte 3 # DW_AT_name122 .byte 4 # DW_AT_dwo_name123 .byte 2 # Abbrev [2] 0x1a:0xf DW_TAG_subprogram124 .byte 0 # DW_AT_low_pc125 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc126 .byte 1 # DW_AT_frame_base127 .byte 86128 .byte 0 # DW_AT_name129 .byte 0 # DW_AT_decl_file130 .byte 1 # DW_AT_decl_line131 .long 41 # DW_AT_type132 # DW_AT_external133 .byte 3 # Abbrev [3] 0x29:0x4 DW_TAG_base_type134 .byte 1 # DW_AT_name135 .byte 5 # DW_AT_encoding136 .byte 4 # DW_AT_byte_size137 .byte 0 # End Of Children Mark138.Ldebug_info_dwo_end0:139 .section .debug_abbrev.dwo,"e",@progbits140 .byte 1 # Abbreviation Code141 .byte 17 # DW_TAG_compile_unit142 .byte 1 # DW_CHILDREN_yes143 .byte 37 # DW_AT_producer144 .byte 37 # DW_FORM_strx1145 .byte 19 # DW_AT_language146 .byte 5 # DW_FORM_data2147 .byte 3 # DW_AT_name148 .byte 37 # DW_FORM_strx1149 .byte 118 # DW_AT_dwo_name150 .byte 37 # DW_FORM_strx1151 .byte 0 # EOM(1)152 .byte 0 # EOM(2)153 .byte 2 # Abbreviation Code154 .byte 46 # DW_TAG_subprogram155 .byte 0 # DW_CHILDREN_no156 .byte 17 # DW_AT_low_pc157 .byte 27 # DW_FORM_addrx158 .byte 18 # DW_AT_high_pc159 .byte 6 # DW_FORM_data4160 .byte 64 # DW_AT_frame_base161 .byte 24 # DW_FORM_exprloc162 .byte 3 # DW_AT_name163 .byte 37 # DW_FORM_strx1164 .byte 58 # DW_AT_decl_file165 .byte 11 # DW_FORM_data1166 .byte 59 # DW_AT_decl_line167 .byte 11 # DW_FORM_data1168 .byte 73 # DW_AT_type169 .byte 19 # DW_FORM_ref4170 .byte 63 # DW_AT_external171 .byte 25 # DW_FORM_flag_present172 .byte 0 # EOM(1)173 .byte 0 # EOM(2)174 .byte 3 # Abbreviation Code175 .byte 36 # DW_TAG_base_type176 .byte 0 # DW_CHILDREN_no177 .byte 3 # DW_AT_name178 .byte 37 # DW_FORM_strx1179 .byte 62 # DW_AT_encoding180 .byte 11 # DW_FORM_data1181 .byte 11 # DW_AT_byte_size182 .byte 11 # DW_FORM_data1183 .byte 0 # EOM(1)184 .byte 0 # EOM(2)185 .byte 0 # EOM(3)186 .section .debug_addr,"",@progbits187 .long .Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution188.Ldebug_addr_start0:189 .short 5 # DWARF version number190 .byte 8 # Address size191 .byte 0 # Segment selector size192.Laddr_table_base0:193 .quad .Lfunc_begin0194.Ldebug_addr_end0:195 .section .debug_gnu_pubnames,"",@progbits196 .long .LpubNames_end0-.LpubNames_start0 # Length of Public Names Info197.LpubNames_start0:198 .short 2 # DWARF Version199 .long .Lcu_begin0 # Offset of Compilation Unit Info200 .long 40 # Compilation Unit Length201 .long 26 # DIE offset202 .byte 48 # Attributes: FUNCTION, EXTERNAL203 .asciz "main" # External Name204 .long 0 # End Mark205.LpubNames_end0:206 .section .debug_gnu_pubtypes,"",@progbits207 .long .LpubTypes_end0-.LpubTypes_start0 # Length of Public Types Info208.LpubTypes_start0:209 .short 2 # DWARF Version210 .long .Lcu_begin0 # Offset of Compilation Unit Info211 .long 40 # Compilation Unit Length212 .long 41 # DIE offset213 .byte 144 # Attributes: TYPE, STATIC214 .asciz "int" # External Name215 .long 0 # End Mark216.LpubTypes_end0:217 .ident "clang version 18.0.0"218 .section ".note.GNU-stack","",@progbits219 .addrsig220 .section .debug_line,"",@progbits221.Lline_table_start0:222