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-4 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 1 "/xxxxxx/xxxx/xxxxxxxxxx/xxxxxxxx/hello" "hello.c" 23 .loc 1 3 0 # hello.c:3:0 24 .cfi_startproc 25# %bb.0: 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 1 4 5 prologue_end # hello.c:4:5 33 movabsq $.L.str, %rdi 34 movb $0, %al 35 callq printf 36 .loc 1 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 17 # DW_TAG_compile_unit 54 .byte 0 # DW_CHILDREN_no 55 .byte 16 # DW_AT_stmt_list 56 .byte 23 # DW_FORM_sec_offset 57 .byte 27 # DW_AT_comp_dir 58 .byte 14 # DW_FORM_strp 59 .ascii "\264B" # DW_AT_GNU_pubnames 60 .byte 25 # DW_FORM_flag_present 61 .ascii "\260B" # DW_AT_GNU_dwo_name 62 .byte 14 # DW_FORM_strp 63 .ascii "\261B" # DW_AT_GNU_dwo_id 64 .byte 7 # DW_FORM_data8 65 .byte 17 # DW_AT_low_pc 66 .byte 1 # DW_FORM_addr 67 .byte 18 # DW_AT_high_pc 68 .byte 6 # DW_FORM_data4 69 .ascii "\263B" # DW_AT_GNU_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 4294967295 # 2^32 - 1 #44 # Length of Unit 77 .long 44 # Length of Unit 78 .short 4 # DWARF version number 79 .long .debug_abbrev # Offset Into Abbrev. Section 80 .byte 8 # Address Size (in bytes) 81 .byte 1 # Abbrev [1] 0xb:0x25 DW_TAG_compile_unit 82 .long .Lline_table_start0 # DW_AT_stmt_list 83 .long .Lskel_string0 # DW_AT_comp_dir 84 # DW_AT_GNU_pubnames 85 .long .Lskel_string1 # DW_AT_GNU_dwo_name 86 .quad -94954012350180462 # DW_AT_GNU_dwo_id 87 .quad .Lfunc_begin0 # DW_AT_low_pc 88 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 89 .long .Laddr_table_base0 # DW_AT_GNU_addr_base 90 # .fill 4294967251 # = 2^32 - 1 - 44 91 .section .debug_str,"MS",@progbits,1 92.Lskel_string0: 93 .asciz "/xxxxxx/xxxx/xxxxxxxxxx/xxxxxxxx/hello" # string offset=0 94.Lskel_string1: 95 .asciz "hello.dwo" # string offset=39 96 .section .debug_str.dwo,"eMS",@progbits,1 97.Linfo_string0: 98 .asciz "hello" # string offset=0 99.Linfo_string1: 100 .asciz "clang version 11.1.0 (https://github.com/llvm/llvm-project.git 173544ee3d09cdce8665f2097f677c31e1f1a9a1)" # string offset=6 101.Linfo_string2: 102 .asciz "hello.c" # string offset=111 103.Linfo_string3: 104 .asciz "hello.dwo" # string offset=119 105 .section .debug_str_offsets.dwo,"e",@progbits 106 .long 0 107 .long 6 108 .long 111 109 .long 119 110 .section .debug_info.dwo,"e",@progbits 111 .long 4294967266 # 2^32 - 30 #33 # Length of Unit 112 .short 4 # DWARF version number 113 .long 0 # Offset Into Abbrev. Section 114 .byte 8 # Address Size (in bytes) 115 .byte 1 # Abbrev [1] 0xb:0x1a DW_TAG_compile_unit 116 .byte 1 # DW_AT_producer 117 .short 12 # DW_AT_language 118 .byte 2 # DW_AT_name 119 .byte 3 # DW_AT_GNU_dwo_name 120 .quad -94954012350180462 # DW_AT_GNU_dwo_id 121 .byte 2 # Abbrev [2] 0x19:0xb DW_TAG_subprogram 122 .byte 0 # DW_AT_low_pc 123 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 124 .byte 1 # DW_AT_frame_base 125 .byte 86 126 .byte 0 # DW_AT_name 127 .byte 1 # DW_AT_decl_file 128 .byte 3 # DW_AT_decl_line 129 # DW_AT_external 130 .byte 0 # End Of Children Mark 131 .fill 4294967233 # 2^32 - 30 - 33 132 .section .debug_abbrev.dwo,"e",@progbits 133 .byte 1 # Abbreviation Code 134 .byte 17 # DW_TAG_compile_unit 135 .byte 1 # DW_CHILDREN_yes 136 .byte 37 # DW_AT_producer 137 .ascii "\202>" # DW_FORM_GNU_str_index 138 .byte 19 # DW_AT_language 139 .byte 5 # DW_FORM_data2 140 .byte 3 # DW_AT_name 141 .ascii "\202>" # DW_FORM_GNU_str_index 142 .ascii "\260B" # DW_AT_GNU_dwo_name 143 .ascii "\202>" # DW_FORM_GNU_str_index 144 .ascii "\261B" # DW_AT_GNU_dwo_id 145 .byte 7 # DW_FORM_data8 146 .byte 0 # EOM(1) 147 .byte 0 # EOM(2) 148 .byte 2 # Abbreviation Code 149 .byte 46 # DW_TAG_subprogram 150 .byte 0 # DW_CHILDREN_no 151 .byte 17 # DW_AT_low_pc 152 .ascii "\201>" # DW_FORM_GNU_addr_index 153 .byte 18 # DW_AT_high_pc 154 .byte 6 # DW_FORM_data4 155 .byte 64 # DW_AT_frame_base 156 .byte 24 # DW_FORM_exprloc 157 .byte 3 # DW_AT_name 158 .ascii "\202>" # DW_FORM_GNU_str_index 159 .byte 58 # DW_AT_decl_file 160 .byte 11 # DW_FORM_data1 161 .byte 59 # DW_AT_decl_line 162 .byte 11 # DW_FORM_data1 163 .byte 63 # DW_AT_external 164 .byte 25 # DW_FORM_flag_present 165 .byte 0 # EOM(1) 166 .byte 0 # EOM(2) 167 .byte 0 # EOM(3) 168 .section .debug_addr,"",@progbits 169.Laddr_table_base0: 170 .quad .Lfunc_begin0 171 .section .debug_gnu_pubnames,"",@progbits 172 .long .LpubNames_end0-.LpubNames_begin0 # Length of Public Names Info 173.LpubNames_begin0: 174 .short 2 # DWARF Version 175 .long .Lcu_begin0 # Offset of Compilation Unit Info 176 .long 48 # Compilation Unit Length 177 .long 25 # DIE offset 178 .byte 48 # Attributes: FUNCTION, EXTERNAL 179 .asciz "hello" # External Name 180 .long 0 # End Mark 181.LpubNames_end0: 182 .section .debug_gnu_pubtypes,"",@progbits 183 .long .LpubTypes_end0-.LpubTypes_begin0 # Length of Public Types Info 184.LpubTypes_begin0: 185 .short 2 # DWARF Version 186 .long .Lcu_begin0 # Offset of Compilation Unit Info 187 .long 48 # Compilation Unit Length 188 .long 0 # End Mark 189.LpubTypes_end0: 190 .ident "clang version 11.1.0 (https://github.com/llvm/llvm-project.git 173544ee3d09cdce8665f2097f677c31e1f1a9a1)" 191 .section ".note.GNU-stack","",@progbits 192 .addrsig 193 .addrsig_sym printf 194 .section .debug_line,"",@progbits 195.Lline_table_start0: