1# Note: This file is compiled from the following code, for 2# the purpose of creating an overflowed dwo section. 3# After being compiled from source, section `.debug_info.dwo` 4# is changed to have length (2^32 - 30) Bytes, and added 5# padding with `.fill` directive, so it is likely to 6# overflow when packed with other files. 7# 8# clang -g -S -gsplit-dwarf -gdwarf-5 hello.c 9# 10# #include <stdio.h> 11# void hello() { 12# printf("hello\n"); 13# } 14 15 .text 16 .file "hello.c" 17 .globl hello # -- Begin function hello 18 .p2align 4, 0x90 19 .type hello,@function 20hello: # @hello 21.Lfunc_begin0: 22 .file 0 "/xxxx/xxxxxxxxxx/xxxxxxxx/hello" "hello.c" md5 0x0b447232502f439981a2fe9f11255f42 23 .loc 0 3 0 # hello.c:3:0 24 .cfi_startproc 25# %bb.0: # %entry 26 pushq %rbp 27 .cfi_def_cfa_offset 16 28 .cfi_offset %rbp, -16 29 movq %rsp, %rbp 30 .cfi_def_cfa_register %rbp 31.Ltmp0: 32 .loc 0 4 5 prologue_end # hello.c:4:5 33 movabsq $.L.str, %rdi 34 movb $0, %al 35 callq printf 36 .loc 0 5 1 # hello.c:5:1 37 popq %rbp 38 .cfi_def_cfa %rsp, 8 39 retq 40.Ltmp1: 41.Lfunc_end0: 42 .size hello, .Lfunc_end0-hello 43 .cfi_endproc 44 # -- End function 45 .type .L.str,@object # @.str 46 .section .rodata.str1.1,"aMS",@progbits,1 47.L.str: 48 .asciz "hello\n" 49 .size .L.str, 7 50 51 .section .debug_abbrev,"",@progbits 52 .byte 1 # Abbreviation Code 53 .byte 74 # DW_TAG_skeleton_unit 54 .byte 0 # DW_CHILDREN_no 55 .byte 16 # DW_AT_stmt_list 56 .byte 23 # DW_FORM_sec_offset 57 .byte 114 # DW_AT_str_offsets_base 58 .byte 23 # DW_FORM_sec_offset 59 .byte 27 # DW_AT_comp_dir 60 .byte 37 # DW_FORM_strx1 61 .ascii "\264B" # DW_AT_GNU_pubnames 62 .byte 25 # DW_FORM_flag_present 63 .byte 118 # DW_AT_dwo_name 64 .byte 37 # DW_FORM_strx1 65 .byte 17 # DW_AT_low_pc 66 .byte 27 # DW_FORM_addrx 67 .byte 18 # DW_AT_high_pc 68 .byte 6 # DW_FORM_data4 69 .byte 115 # DW_AT_addr_base 70 .byte 23 # DW_FORM_sec_offset 71 .byte 0 # EOM(1) 72 .byte 0 # EOM(2) 73 .byte 0 # EOM(3) 74 .section .debug_info,"",@progbits 75.Lcu_begin0: 76 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit 77.Ldebug_info_start0: 78 .short 5 # DWARF version number 79 .byte 4 # DWARF Unit Type 80 .byte 8 # Address Size (in bytes) 81 .long .debug_abbrev # Offset Into Abbrev. Section 82 .quad -94954012350180462 83 .byte 1 # Abbrev [1] 0x14:0x14 DW_TAG_skeleton_unit 84 .long .Lline_table_start0 # DW_AT_stmt_list 85 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base 86 .byte 0 # DW_AT_comp_dir 87 # DW_AT_GNU_pubnames 88 .byte 1 # DW_AT_dwo_name 89 .byte 0 # DW_AT_low_pc 90 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 91 .long .Laddr_table_base0 # DW_AT_addr_base 92.Ldebug_info_end0: 93 .section .debug_str_offsets,"",@progbits 94 .long 12 95 .short 5 96 .short 0 97.Lstr_offsets_base0: 98 .section .debug_str,"MS",@progbits,1 99.Lskel_string0: 100 .asciz "/xxxx/xxxxxxxxxx/xxxxxxxx/hello" # string offset=0 101.Lskel_string1: 102 .asciz "hello.dwo" # string offset=32 103 .section .debug_str_offsets,"",@progbits 104 .long .Lskel_string0 105 .long .Lskel_string1 106 .section .debug_str_offsets.dwo,"e",@progbits 107 .long 20 108 .short 5 109 .short 0 110 .section .debug_str.dwo,"eMS",@progbits,1 111.Linfo_string0: 112 .asciz "hello" # string offset=0 113.Linfo_string1: 114 .asciz "clang version 11.1.0 (https://github.com/llvm/llvm-project.git 1a0dc1e010bf5c8034bd4a53340fc0dc3e90549a)" # string offset=6 115.Linfo_string2: 116 .asciz "hello.c" # string offset=111 117.Linfo_string3: 118 .asciz "hello.dwo" # string offset=119 119 .section .debug_str_offsets.dwo,"e",@progbits 120 .long 0 121 .long 6 122 .long 111 123 .long 119 124 .section .debug_info.dwo,"e",@progbits 125 .long .Ldebug_info_dwo_end0-.Ldebug_info_dwo_start0 # Length of Unit 126.Ldebug_info_dwo_start0: 127 .short 5 # DWARF version number 128 .byte 5 # DWARF Unit Type 129 .byte 8 # Address Size (in bytes) 130 .long 0 # Offset Into Abbrev. Section 131 .quad -94954012350180462 132 .byte 1 # Abbrev [1] 0x14:0x12 DW_TAG_compile_unit 133 .byte 1 # DW_AT_producer 134 .short 12 # DW_AT_language 135 .byte 2 # DW_AT_name 136 .byte 3 # DW_AT_dwo_name 137 .byte 2 # Abbrev [2] 0x1a:0xb DW_TAG_subprogram 138 .byte 0 # DW_AT_low_pc 139 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 140 .byte 1 # DW_AT_frame_base 141 .byte 86 142 .byte 0 # DW_AT_name 143 .byte 0 # DW_AT_decl_file 144 .byte 3 # DW_AT_decl_line 145 # DW_AT_external 146 .byte 0 # End Of Children Mark 147 .fill 4294967233 148.Ldebug_info_dwo_end0: 149 .section .debug_abbrev.dwo,"e",@progbits 150 .byte 1 # Abbreviation Code 151 .byte 17 # DW_TAG_compile_unit 152 .byte 1 # DW_CHILDREN_yes 153 .byte 37 # DW_AT_producer 154 .byte 37 # DW_FORM_strx1 155 .byte 19 # DW_AT_language 156 .byte 5 # DW_FORM_data2 157 .byte 3 # DW_AT_name 158 .byte 37 # DW_FORM_strx1 159 .byte 118 # DW_AT_dwo_name 160 .byte 37 # DW_FORM_strx1 161 .byte 0 # EOM(1) 162 .byte 0 # EOM(2) 163 .byte 2 # Abbreviation Code 164 .byte 46 # DW_TAG_subprogram 165 .byte 0 # DW_CHILDREN_no 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 3 # DW_AT_name 173 .byte 37 # DW_FORM_strx1 174 .byte 58 # DW_AT_decl_file 175 .byte 11 # DW_FORM_data1 176 .byte 59 # DW_AT_decl_line 177 .byte 11 # DW_FORM_data1 178 .byte 63 # DW_AT_external 179 .byte 25 # DW_FORM_flag_present 180 .byte 0 # EOM(1) 181 .byte 0 # EOM(2) 182 .byte 0 # EOM(3) 183 .section .debug_addr,"",@progbits 184 .long .Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution 185.Ldebug_addr_start0: 186 .short 5 # DWARF version number 187 .byte 8 # Address size 188 .byte 0 # Segment selector size 189.Laddr_table_base0: 190 .quad .Lfunc_begin0 191.Ldebug_addr_end0: 192 .section .debug_gnu_pubnames,"",@progbits 193 .long .LpubNames_end0-.LpubNames_begin0 # Length of Public Names Info 194.LpubNames_begin0: 195 .short 2 # DWARF Version 196 .long .Lcu_begin0 # Offset of Compilation Unit Info 197 .long 40 # Compilation Unit Length 198 .long 26 # DIE offset 199 .byte 48 # Attributes: FUNCTION, EXTERNAL 200 .asciz "hello" # External Name 201 .long 0 # End Mark 202.LpubNames_end0: 203 .section .debug_gnu_pubtypes,"",@progbits 204 .long .LpubTypes_end0-.LpubTypes_begin0 # Length of Public Types Info 205.LpubTypes_begin0: 206 .short 2 # DWARF Version 207 .long .Lcu_begin0 # Offset of Compilation Unit Info 208 .long 40 # Compilation Unit Length 209 .long 0 # End Mark 210.LpubTypes_end0: 211 .ident "clang version 11.1.0 (https://github.com/llvm/llvm-project.git 1a0dc1e010bf5c8034bd4a53340fc0dc3e90549a)" 212 .section ".note.GNU-stack","",@progbits 213 .addrsig 214 .addrsig_sym printf 215 .section .debug_line,"",@progbits 216.Lline_table_start0: 217