This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Hi, I tried to reduce the "debuginfo" files size (.debug_* sections) as each file (compilation unit) currently has its own declarations of all the used types from the include files. It was briefly suggested by Jakub Jelinek although his original intention could be more to unify the debuginfo across files. It was more only a proof of concept (terrible code etc.), I just merged+patched eu-strip + eu-readelf. However even while the file format looks fine by "eu-readelf -w" gdb(1) still segfaults on it, I did not debug it much more. The only major difference is that there are DWARF2 references (DW_FORM_ref4) across compilation units (and these references are even relative to the offset of the compilation unit header). Right now I found out it is a violation of TIS-DWARF-2.0, page 73, keyword "reference": The offset must refer to an entry within that same compilation unit. Attached eu-readelf(1) output of the original+compressed files + the source. (.debug_info + .debug_abbrev are updated, .debug_line is unfortunately intact.) So is it right there are no more methods for standards compliant DWARF-2.0 size reduction? Regards, Jan Kratochvil
DWARF section '.debug_info' at offset 0x253a:
[Offset]
Compilation unit at offset 0:
Version: 2, Abbreviation section offset: 0, Address size: 4, Offset size: 4
[ b] compile_unit
macro_info 0
stmt_list 0
high_pc 0x0804836d
low_pc 0x08048354
producer "GNU C 4.1.1 20060525 (Red Hat 4.1.1-1)"
language ISO C89 (1)
name "main.c"
comp_dir "/home/lace/redhat/my/debugpack"
[ 6a] subprogram
external
name "main"
decl_file 1
decl_line 2
prototyped
type [ 1f7]
low_pc 0x08048354
high_pc 0x0804836d
frame_base location list [ 0]
Compilation unit at offset 133:
Version: 2, Abbreviation section offset: 56, Address size: 4, Offset size: 4
[ 90] compile_unit
macro_info 1941
stmt_list 54
high_pc 0x08048370
low_pc 0x08048370
producer "GNU C 4.1.1 20060525 (Red Hat 4.1.1-1)"
language ISO C89 (1)
name "file0.c"
comp_dir "/home/lace/redhat/my/debugpack"
[ f0] structure_type
sibling [ 108]
byte_size 4
decl_file 1
decl_line 7
[ f8] member
name "item"
decl_file 1
decl_line 8
type [ 1f7]
data_member_location 2 byte block
[ 0] plus_uconst 0
[ 108] structure_type
sibling [ 11f]
name "outer"
byte_size 4
decl_file 1
decl_line 6
[ 116] member
type [ f0]
data_member_location 2 byte block
[ 0] plus_uconst 0
[ 11f] variable
name "var0"
decl_file 1
decl_line 3
type [ 1eb]
location 5 byte block
[ 0] addr 134518056
[ 131] variable
name "outer"
decl_file 1
decl_line 10
type [ 108]
location 5 byte block
[ 0] addr 134518060
Compilation unit at offset 325:
Version: 2, Abbreviation section offset: 169, Address size: 4, Offset size: 4
[ 150] compile_unit
macro_info 3886
stmt_list 104
high_pc 0x08048370
low_pc 0x08048370
producer "GNU C 4.1.1 20060525 (Red Hat 4.1.1-1)"
language ISO C89 (1)
name "file1.c"
comp_dir "/home/lace/redhat/my/debugpack"
[ 1b0] variable
name "var1"
decl_file 1
decl_line 3
type [ 1eb]
location 5 byte block
[ 0] addr 134518064
Compilation unit at offset 451:
Version: 2, Abbreviation section offset: 230, Address size: 4, Offset size: 4
[ 1ce] compile_unit
stmt_list 154
producer "Red Hat elfutils 0.121"
language ISO C89 (1)
[ 1eb] typedef
name "type"
decl_file 2
decl_line 0
type [ 1f7]
[ 1f7] base_type
name "int"
byte_size 4
encoding signed (5)
DWARF section '.debug_abbrev' at offset 0x2739:
[ Code]
Abbreviation section at offset 0:
[ 1] offset: 0, children: yes, tag: compile_unit
attr: macro_info, form: data4, offset: 0
attr: stmt_list, form: data4, offset: 0x2
attr: high_pc, form: addr, offset: 0x4
attr: low_pc, form: addr, offset: 0x6
attr: producer, form: string, offset: 0x8
attr: language, form: data1, offset: 0xa
attr: name, form: string, offset: 0xc
attr: comp_dir, form: string, offset: 0xe
[ 2] offset: 21, children: no, tag: subprogram
attr: external, form: flag, offset: 0x15
attr: name, form: string, offset: 0x17
attr: decl_file, form: data1, offset: 0x19
attr: decl_line, form: data1, offset: 0x1b
attr: prototyped, form: flag, offset: 0x1d
attr: type, form: ref4, offset: 0x1f
attr: low_pc, form: addr, offset: 0x21
attr: high_pc, form: addr, offset: 0x23
attr: frame_base, form: data4, offset: 0x25
[ 3] offset: 44, children: no, tag: base_type
attr: name, form: string, offset: 0x2c
attr: byte_size, form: data1, offset: 0x2e
attr: encoding, form: data1, offset: 0x30
Abbreviation section at offset 56:
[ 1] offset: 56, children: yes, tag: compile_unit
attr: macro_info, form: data4, offset: 0x38
attr: stmt_list, form: data4, offset: 0x3a
attr: high_pc, form: addr, offset: 0x3c
attr: low_pc, form: addr, offset: 0x3e
attr: producer, form: string, offset: 0x40
attr: language, form: data1, offset: 0x42
attr: name, form: string, offset: 0x44
attr: comp_dir, form: string, offset: 0x46
[ 2] offset: 77, children: no, tag: typedef
attr: name, form: string, offset: 0x4d
attr: decl_file, form: data1, offset: 0x4f
attr: decl_line, form: data1, offset: 0x51
attr: type, form: ref4, offset: 0x53
[ 3] offset: 90, children: no, tag: base_type
attr: name, form: string, offset: 0x5a
attr: byte_size, form: data1, offset: 0x5c
attr: encoding, form: data1, offset: 0x5e
[ 4] offset: 101, children: yes, tag: structure_type
attr: sibling, form: ref4, offset: 0x65
attr: byte_size, form: data1, offset: 0x67
attr: decl_file, form: data1, offset: 0x69
attr: decl_line, form: data1, offset: 0x6b
[ 5] offset: 114, children: no, tag: member
attr: name, form: string, offset: 0x72
attr: decl_file, form: data1, offset: 0x74
attr: decl_line, form: data1, offset: 0x76
attr: type, form: ref4, offset: 0x78
attr: data_member_location, form: block1, offset: 0x7a
[ 6] offset: 129, children: yes, tag: structure_type
attr: sibling, form: ref4, offset: 0x81
attr: name, form: string, offset: 0x83
attr: byte_size, form: data1, offset: 0x85
attr: decl_file, form: data1, offset: 0x87
attr: decl_line, form: data1, offset: 0x89
[ 7] offset: 144, children: no, tag: member
attr: type, form: ref4, offset: 0x90
attr: data_member_location, form: block1, offset: 0x92
[ 8] offset: 153, children: no, tag: variable
attr: name, form: string, offset: 0x99
attr: decl_file, form: data1, offset: 0x9b
attr: decl_line, form: data1, offset: 0x9d
attr: type, form: ref4, offset: 0x9f
attr: location, form: block1, offset: 0xa1
Abbreviation section at offset 169:
[ 1] offset: 169, children: yes, tag: compile_unit
attr: macro_info, form: data4, offset: 0xa9
attr: stmt_list, form: data4, offset: 0xab
attr: high_pc, form: addr, offset: 0xad
attr: low_pc, form: addr, offset: 0xaf
attr: producer, form: string, offset: 0xb1
attr: language, form: data1, offset: 0xb3
attr: name, form: string, offset: 0xb5
attr: comp_dir, form: string, offset: 0xb7
[ 2] offset: 190, children: no, tag: typedef
attr: name, form: string, offset: 0xbe
attr: decl_file, form: data1, offset: 0xc0
attr: decl_line, form: data1, offset: 0xc2
attr: type, form: ref4, offset: 0xc4
[ 3] offset: 203, children: no, tag: base_type
attr: name, form: string, offset: 0xcb
attr: byte_size, form: data1, offset: 0xcd
attr: encoding, form: data1, offset: 0xcf
[ 4] offset: 214, children: no, tag: variable
attr: name, form: string, offset: 0xd6
attr: decl_file, form: data1, offset: 0xd8
attr: decl_line, form: data1, offset: 0xda
attr: type, form: ref4, offset: 0xdc
attr: location, form: block1, offset: 0xde
Abbreviation section at offset 230:
[ 1] offset: 230, children: yes, tag: compile_unit
attr: stmt_list, form: data4, offset: 0xe6
attr: producer, form: string, offset: 0xe8
attr: language, form: data1, offset: 0xea
[ 2] offset: 241, children: no, tag: typedef
attr: name, form: string, offset: 0xf1
attr: decl_file, form: data1, offset: 0xf3
attr: decl_line, form: data1, offset: 0xf5
attr: type, form: ref4, offset: 0xf7
[ 3] offset: 254, children: no, tag: base_type
attr: name, form: string, offset: 0xfe
attr: byte_size, form: data1, offset: 0x100
attr: encoding, form: data1, offset: 0x102
DWARF section '.debug_info' at offset 0x6c7:
[Offset]
Compilation unit at offset 0:
Version: 2, Abbreviation section offset: 0, Address size: 4, Offset size: 4
[ b] compile_unit
macro_info 0
stmt_list 0
high_pc 0x0804836d
low_pc 0x08048354
producer "GNU C 4.1.1 20060525 (Red Hat 4.1.1-1)"
language ISO C89 (1)
name "main.c"
comp_dir "/home/lace/redhat/my/debugpack"
[ 6a] subprogram
external
name "main"
decl_file 1
decl_line 2
prototyped
type [ 84]
low_pc 0x08048354
high_pc 0x0804836d
frame_base location list [ 0]
[ 84] base_type
name "int"
byte_size 4
encoding signed (5)
Compilation unit at offset 140:
Version: 2, Abbreviation section offset: 56, Address size: 4, Offset size: 4
[ 97] compile_unit
macro_info 1941
stmt_list 54
high_pc 0x08048370
low_pc 0x08048370
producer "GNU C 4.1.1 20060525 (Red Hat 4.1.1-1)"
language ISO C89 (1)
name "file0.c"
comp_dir "/home/lace/redhat/my/debugpack"
[ f7] typedef
name "type"
decl_file 2
decl_line 1
type [ 103]
[ 103] base_type
name "int"
byte_size 4
encoding signed (5)
[ 10a] structure_type
sibling [ 122]
byte_size 4
decl_file 1
decl_line 7
[ 112] member
name "item"
decl_file 1
decl_line 8
type [ 103]
data_member_location 2 byte block
[ 0] plus_uconst 0
[ 122] structure_type
sibling [ 139]
name "outer"
byte_size 4
decl_file 1
decl_line 6
[ 130] member
type [ 10a]
data_member_location 2 byte block
[ 0] plus_uconst 0
[ 139] variable
name "var0"
decl_file 1
decl_line 3
type [ f7]
location 5 byte block
[ 0] addr 134518056
[ 14b] variable
name "outer"
decl_file 1
decl_line 10
type [ 122]
location 5 byte block
[ 0] addr 134518060
Compilation unit at offset 351:
Version: 2, Abbreviation section offset: 169, Address size: 4, Offset size: 4
[ 16a] compile_unit
macro_info 3886
stmt_list 104
high_pc 0x08048370
low_pc 0x08048370
producer "GNU C 4.1.1 20060525 (Red Hat 4.1.1-1)"
language ISO C89 (1)
name "file1.c"
comp_dir "/home/lace/redhat/my/debugpack"
[ 1ca] typedef
name "type"
decl_file 2
decl_line 1
type [ 1d6]
[ 1d6] base_type
name "int"
byte_size 4
encoding signed (5)
[ 1dd] variable
name "var1"
decl_file 1
decl_line 3
type [ 1ca]
location 5 byte block
[ 0] addr 134518064
DWARF section '.debug_abbrev' at offset 0x8b7:
[ Code]
Abbreviation section at offset 0:
[ 1] offset: 0, children: yes, tag: compile_unit
attr: macro_info, form: data4, offset: 0
attr: stmt_list, form: data4, offset: 0x2
attr: high_pc, form: addr, offset: 0x4
attr: low_pc, form: addr, offset: 0x6
attr: producer, form: string, offset: 0x8
attr: language, form: data1, offset: 0xa
attr: name, form: string, offset: 0xc
attr: comp_dir, form: string, offset: 0xe
[ 2] offset: 21, children: no, tag: subprogram
attr: external, form: flag, offset: 0x15
attr: name, form: string, offset: 0x17
attr: decl_file, form: data1, offset: 0x19
attr: decl_line, form: data1, offset: 0x1b
attr: prototyped, form: flag, offset: 0x1d
attr: type, form: ref4, offset: 0x1f
attr: low_pc, form: addr, offset: 0x21
attr: high_pc, form: addr, offset: 0x23
attr: frame_base, form: data4, offset: 0x25
[ 3] offset: 44, children: no, tag: base_type
attr: name, form: string, offset: 0x2c
attr: byte_size, form: data1, offset: 0x2e
attr: encoding, form: data1, offset: 0x30
Abbreviation section at offset 56:
[ 1] offset: 56, children: yes, tag: compile_unit
attr: macro_info, form: data4, offset: 0x38
attr: stmt_list, form: data4, offset: 0x3a
attr: high_pc, form: addr, offset: 0x3c
attr: low_pc, form: addr, offset: 0x3e
attr: producer, form: string, offset: 0x40
attr: language, form: data1, offset: 0x42
attr: name, form: string, offset: 0x44
attr: comp_dir, form: string, offset: 0x46
[ 2] offset: 77, children: no, tag: typedef
attr: name, form: string, offset: 0x4d
attr: decl_file, form: data1, offset: 0x4f
attr: decl_line, form: data1, offset: 0x51
attr: type, form: ref4, offset: 0x53
[ 3] offset: 90, children: no, tag: base_type
attr: name, form: string, offset: 0x5a
attr: byte_size, form: data1, offset: 0x5c
attr: encoding, form: data1, offset: 0x5e
[ 4] offset: 101, children: yes, tag: structure_type
attr: sibling, form: ref4, offset: 0x65
attr: byte_size, form: data1, offset: 0x67
attr: decl_file, form: data1, offset: 0x69
attr: decl_line, form: data1, offset: 0x6b
[ 5] offset: 114, children: no, tag: member
attr: name, form: string, offset: 0x72
attr: decl_file, form: data1, offset: 0x74
attr: decl_line, form: data1, offset: 0x76
attr: type, form: ref4, offset: 0x78
attr: data_member_location, form: block1, offset: 0x7a
[ 6] offset: 129, children: yes, tag: structure_type
attr: sibling, form: ref4, offset: 0x81
attr: name, form: string, offset: 0x83
attr: byte_size, form: data1, offset: 0x85
attr: decl_file, form: data1, offset: 0x87
attr: decl_line, form: data1, offset: 0x89
[ 7] offset: 144, children: no, tag: member
attr: type, form: ref4, offset: 0x90
attr: data_member_location, form: block1, offset: 0x92
[ 8] offset: 153, children: no, tag: variable
attr: name, form: string, offset: 0x99
attr: decl_file, form: data1, offset: 0x9b
attr: decl_line, form: data1, offset: 0x9d
attr: type, form: ref4, offset: 0x9f
attr: location, form: block1, offset: 0xa1
Abbreviation section at offset 169:
[ 1] offset: 169, children: yes, tag: compile_unit
attr: macro_info, form: data4, offset: 0xa9
attr: stmt_list, form: data4, offset: 0xab
attr: high_pc, form: addr, offset: 0xad
attr: low_pc, form: addr, offset: 0xaf
attr: producer, form: string, offset: 0xb1
attr: language, form: data1, offset: 0xb3
attr: name, form: string, offset: 0xb5
attr: comp_dir, form: string, offset: 0xb7
[ 2] offset: 190, children: no, tag: typedef
attr: name, form: string, offset: 0xbe
attr: decl_file, form: data1, offset: 0xc0
attr: decl_line, form: data1, offset: 0xc2
attr: type, form: ref4, offset: 0xc4
[ 3] offset: 203, children: no, tag: base_type
attr: name, form: string, offset: 0xcb
attr: byte_size, form: data1, offset: 0xcd
attr: encoding, form: data1, offset: 0xcf
[ 4] offset: 214, children: no, tag: variable
attr: name, form: string, offset: 0xd6
attr: decl_file, form: data1, offset: 0xd8
attr: decl_line, form: data1, offset: 0xda
attr: type, form: ref4, offset: 0xdc
attr: location, form: block1, offset: 0xde
Attachment:
debugpack-0.patch
Description: Text document
Attachment:
debugpack-test-0.tar.gz
Description: GNU Zip compressed data
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |