mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
dab394de9e
In a SHF_COMPRESSED compressed section, the raw compressed data should begin immediately after the compression header. This patch removes the extra zlib header from the SHF_COMPRESSED section. bfd/ * bfd.c (bfd_update_compression_header): Also write the zlib header if the SHF_COMPRESSED bit cleared.. (bfd_check_compression_header): Return the uncompressed size. * compress.c (decompress_contents): Don't skip the zlib header. (bfd_compress_section_contents): Properly handle ELFCOMPRESS_ZLIB, which doesn't have the zlib header. (bfd_init_section_decompress_status): Likewise. (bfd_get_full_section_contents): Updated. (bfd_is_section_compressed): Likewise. (bfd_is_section_compressed_with_header): Return the uncompressed size. * elf.c (_bfd_elf_make_section_from_shdr): Updated. * bfd-in2.h: Regenerated. binutils/ * readelf.c (uncompress_section_contents): Add a parameter for uncompressed size. Don't check the zlib header. (load_specific_debug_section): Updated. binutils/testsuite/ * binutils-all/compress.exp: Replace "$OBJDUMP -s -j .debug_info" with "$OBJDUMP -W". * binutils-all/libdw2-compressedgabi.out: Updated. gas/ 2015-05-14 H.J. Lu <hongjiu.lu@intel.com> * write.c (compress_debug): Don't write the zlib header, which is handled by bfd_update_compression_header.
363 lines
11 KiB
Plaintext
363 lines
11 KiB
Plaintext
In archive tmpdir/dw2-copy-compressedgabi.a:
|
|
|
|
dw2-1-compressedgabi.o: +file format .*
|
|
|
|
Contents of the .debug_info section:
|
|
|
|
Compilation Unit @ offset 0x0:
|
|
Length: 0x4e \(32-bit\)
|
|
Version: 2
|
|
Abbrev Offset: 0x0
|
|
Pointer Size: 4
|
|
<0><b>: Abbrev Number: 1 \(DW_TAG_compile_unit\)
|
|
<c> DW_AT_stmt_list : 0x0
|
|
<10> DW_AT_high_pc : 0x.
|
|
<14> DW_AT_low_pc : 0x.
|
|
<18> DW_AT_name : file1.txt
|
|
<22> DW_AT_producer : GNU C 3.3.3
|
|
<2e> DW_AT_language : 1 \(ANSI C\)
|
|
<1><2f>: Abbrev Number: 2 \(DW_TAG_subprogram\)
|
|
<30> DW_AT_external : 1
|
|
<31> DW_AT_decl_file : 1
|
|
<32> DW_AT_decl_line : 2
|
|
<33> DW_AT_name : func_cu1
|
|
<3c> DW_AT_type : <0x4a>
|
|
<40> DW_AT_low_pc : 0x.
|
|
<44> DW_AT_high_pc : 0x.
|
|
<48> DW_AT_frame_base : 1 byte block: 55 \(DW_OP_reg5 \([^()]*\)\)
|
|
<1><4a>: Abbrev Number: 3 \(DW_TAG_base_type\)
|
|
<4b> DW_AT_name : int
|
|
<4f> DW_AT_byte_size : 4
|
|
<50> DW_AT_encoding : 5 \(signed\)
|
|
<1><51>: Abbrev Number: 0
|
|
|
|
Raw dump of debug contents of section .debug_line:
|
|
|
|
Offset: 0x0
|
|
Length: 62
|
|
DWARF Version: 2
|
|
Prologue Length: 35
|
|
Minimum Instruction Length: 1
|
|
Initial value of 'is_stmt': 1
|
|
Line Base: 1
|
|
Line Range: 1
|
|
Opcode Base: 16
|
|
|
|
Opcodes:
|
|
Opcode 1 has 0 args
|
|
Opcode 2 has 1 args
|
|
Opcode 3 has 1 args
|
|
Opcode 4 has 1 args
|
|
Opcode 5 has 1 args
|
|
Opcode 6 has 0 args
|
|
Opcode 7 has 0 args
|
|
Opcode 8 has 0 args
|
|
Opcode 9 has 1 args
|
|
Opcode 10 has 0 args
|
|
Opcode 11 has 0 args
|
|
Opcode 12 has 1 args
|
|
Opcode 13 has 0 args
|
|
Opcode 14 has 0 args
|
|
Opcode 15 has 0 args
|
|
|
|
The Directory Table is empty.
|
|
|
|
The File Name Table \(offset 0x.*\):
|
|
Entry Dir Time Size Name
|
|
1 0 0 0 file1.txt
|
|
|
|
Line Number Statements:
|
|
\[0x.*\] Extended opcode 2: set Address to 0x4
|
|
\[0x.*\] Advance Line by 3 to 4
|
|
\[0x.*\] Copy
|
|
\[0x.*\] Copy
|
|
\[0x.*\] Extended opcode 2: set Address to 0x8
|
|
\[0x.*\] Extended opcode 1: End of Sequence
|
|
|
|
|
|
Contents of the .debug_abbrev section:
|
|
|
|
Number TAG \(0x0\)
|
|
1 DW_TAG_compile_unit \[has children\]
|
|
DW_AT_stmt_list DW_FORM_data4
|
|
DW_AT_high_pc DW_FORM_addr
|
|
DW_AT_low_pc DW_FORM_addr
|
|
DW_AT_name DW_FORM_string
|
|
DW_AT_producer DW_FORM_string
|
|
DW_AT_language DW_FORM_data1
|
|
DW_AT value: 0 DW_FORM value: 0
|
|
2 DW_TAG_subprogram \[no children\]
|
|
DW_AT_external DW_FORM_flag
|
|
DW_AT_decl_file DW_FORM_data1
|
|
DW_AT_decl_line DW_FORM_data1
|
|
DW_AT_name DW_FORM_string
|
|
DW_AT_type DW_FORM_ref4
|
|
DW_AT_low_pc DW_FORM_addr
|
|
DW_AT_high_pc DW_FORM_addr
|
|
DW_AT_frame_base DW_FORM_block1
|
|
DW_AT value: 0 DW_FORM value: 0
|
|
3 DW_TAG_base_type \[no children\]
|
|
DW_AT_name DW_FORM_string
|
|
DW_AT_byte_size DW_FORM_data1
|
|
DW_AT_encoding DW_FORM_data1
|
|
DW_AT value: 0 DW_FORM value: 0
|
|
|
|
dw2-2-compressedgabi.o: +file format .*
|
|
|
|
Contents of the .debug_info section:
|
|
|
|
Compilation Unit @ offset 0x0:
|
|
Length: 0x4e \(32-bit\)
|
|
Version: 2
|
|
Abbrev Offset: 0x0
|
|
Pointer Size: 4
|
|
<0><b>: Abbrev Number: 1 \(DW_TAG_compile_unit\)
|
|
<c> DW_AT_stmt_list : 0x0
|
|
<10> DW_AT_high_pc : 0x4
|
|
<14> DW_AT_low_pc : 0x0
|
|
<18> DW_AT_name : file1.txt
|
|
<22> DW_AT_producer : GNU C 3.3.3
|
|
<2e> DW_AT_language : 1 \(ANSI C\)
|
|
<1><2f>: Abbrev Number: 2 \(DW_TAG_subprogram\)
|
|
<30> DW_AT_external : 1
|
|
<31> DW_AT_decl_file : 1
|
|
<32> DW_AT_decl_line : 2
|
|
<33> DW_AT_name : func_cu2
|
|
<3c> DW_AT_type : <0x4a>
|
|
<40> DW_AT_low_pc : 0x0
|
|
<44> DW_AT_high_pc : 0x4
|
|
<48> DW_AT_frame_base : 1 byte block: 55 \(DW_OP_reg5 \(.*\)\)
|
|
<1><4a>: Abbrev Number: 3 \(DW_TAG_base_type\)
|
|
<4b> DW_AT_name : int
|
|
<4f> DW_AT_byte_size : 4
|
|
<50> DW_AT_encoding : 5 \(signed\)
|
|
<1><51>: Abbrev Number: 0
|
|
|
|
Raw dump of debug contents of section .debug_line:
|
|
|
|
Offset: 0x0
|
|
Length: 62
|
|
DWARF Version: 2
|
|
Prologue Length: 35
|
|
Minimum Instruction Length: 1
|
|
Initial value of 'is_stmt': 1
|
|
Line Base: 1
|
|
Line Range: 1
|
|
Opcode Base: 16
|
|
|
|
Opcodes:
|
|
Opcode 1 has 0 args
|
|
Opcode 2 has 1 args
|
|
Opcode 3 has 1 args
|
|
Opcode 4 has 1 args
|
|
Opcode 5 has 1 args
|
|
Opcode 6 has 0 args
|
|
Opcode 7 has 0 args
|
|
Opcode 8 has 0 args
|
|
Opcode 9 has 1 args
|
|
Opcode 10 has 0 args
|
|
Opcode 11 has 0 args
|
|
Opcode 12 has 1 args
|
|
Opcode 13 has 0 args
|
|
Opcode 14 has 0 args
|
|
Opcode 15 has 0 args
|
|
|
|
The Directory Table is empty.
|
|
|
|
The File Name Table \(offset 0x1f\):
|
|
Entry Dir Time Size Name
|
|
1 0 0 0 file1.txt
|
|
|
|
Line Number Statements:
|
|
\[0x0000002d\] Extended opcode 2: set Address to 0x0
|
|
\[0x00000034\] Advance Line by 3 to 4
|
|
\[0x00000036\] Copy
|
|
\[0x00000037\] Copy
|
|
\[0x00000038\] Extended opcode 2: set Address to 0x4
|
|
\[0x0000003f\] Extended opcode 1: End of Sequence
|
|
|
|
|
|
Contents of the .debug_abbrev section:
|
|
|
|
Number TAG \(0x0\)
|
|
1 DW_TAG_compile_unit \[has children\]
|
|
DW_AT_stmt_list DW_FORM_data4
|
|
DW_AT_high_pc DW_FORM_addr
|
|
DW_AT_low_pc DW_FORM_addr
|
|
DW_AT_name DW_FORM_string
|
|
DW_AT_producer DW_FORM_string
|
|
DW_AT_language DW_FORM_data1
|
|
DW_AT value: 0 DW_FORM value: 0
|
|
2 DW_TAG_subprogram \[no children\]
|
|
DW_AT_external DW_FORM_flag
|
|
DW_AT_decl_file DW_FORM_data1
|
|
DW_AT_decl_line DW_FORM_data1
|
|
DW_AT_name DW_FORM_string
|
|
DW_AT_type DW_FORM_ref4
|
|
DW_AT_low_pc DW_FORM_addr
|
|
DW_AT_high_pc DW_FORM_addr
|
|
DW_AT_frame_base DW_FORM_block1
|
|
DW_AT value: 0 DW_FORM value: 0
|
|
3 DW_TAG_base_type \[no children\]
|
|
DW_AT_name DW_FORM_string
|
|
DW_AT_byte_size DW_FORM_data1
|
|
DW_AT_encoding DW_FORM_data1
|
|
DW_AT value: 0 DW_FORM value: 0
|
|
|
|
|
|
dw2-3-compressedgabi.o: +file format .*
|
|
|
|
Contents of the .debug_info section:
|
|
|
|
Compilation Unit @ offset 0x0:
|
|
Length: 0x5e \(32-bit\)
|
|
Version: 2
|
|
Abbrev Offset: 0x0
|
|
Pointer Size: 4
|
|
<0><b>: Abbrev Number: 1 \(DW_TAG_compile_unit\)
|
|
<c> DW_AT_stmt_list : 0x0
|
|
<10> DW_AT_high_pc : 0x4
|
|
<14> DW_AT_low_pc : 0x0
|
|
<18> DW_AT_name : file1.txt
|
|
<22> DW_AT_producer : GNU C 3.3.3
|
|
<2e> DW_AT_language : 1 \(ANSI C\)
|
|
<1><2f>: Abbrev Number: 2 \(DW_TAG_subprogram\)
|
|
<30> DW_AT_external : 1
|
|
<31> DW_AT_decl_file : 1
|
|
<32> DW_AT_decl_line : 2
|
|
<33> DW_AT_name : func_cu1
|
|
<3c> DW_AT_type : <0x85>
|
|
<40> DW_AT_low_pc : 0x0
|
|
<44> DW_AT_high_pc : 0x4
|
|
<48> DW_AT_frame_base : 1 byte block: 55 \(DW_OP_reg5 \([^()]*\)\)
|
|
<1><4a>: Abbrev Number: 3 \(DW_TAG_base_type\)
|
|
<4b> DW_AT_name : int1
|
|
<50> DW_AT_byte_size : 4
|
|
<51> DW_AT_encoding : 5 \(signed\)
|
|
<1><52>: Abbrev Number: 4 \(DW_TAG_const_type\)
|
|
<53> DW_AT_type : <0x4a>
|
|
<1><57>: Abbrev Number: 5 \(DW_TAG_variable\)
|
|
<58> DW_AT_name : one
|
|
<5c> DW_AT_type : <0x52>
|
|
<60> DW_AT_const_value : 1
|
|
<1><61>: Abbrev Number: 0
|
|
Compilation Unit @ offset 0x62:
|
|
Length: 0x37 \(32-bit\)
|
|
Version: 2
|
|
Abbrev Offset: 0x45
|
|
Pointer Size: 4
|
|
<0><6d>: Abbrev Number: 1 \(DW_TAG_compile_unit\)
|
|
<6e> DW_AT_name : file1.txt
|
|
<78> DW_AT_producer : GNU C 3.3.3
|
|
<84> DW_AT_language : 1 \(ANSI C\)
|
|
<1><85>: Abbrev Number: 2 \(DW_TAG_base_type\)
|
|
<86> DW_AT_name : int2
|
|
<8b> DW_AT_byte_size : 4
|
|
<8c> DW_AT_encoding : 5 \(signed\)
|
|
<1><8d>: Abbrev Number: 3 \(DW_TAG_const_type\)
|
|
<8e> DW_AT_type : <0x85>
|
|
<1><92>: Abbrev Number: 4 \(DW_TAG_variable\)
|
|
<93> DW_AT_name : two
|
|
<97> DW_AT_type : <0x8d>
|
|
<9b> DW_AT_const_value : 2
|
|
<1><9c>: Abbrev Number: 0
|
|
|
|
Contents of the .debug_abbrev section:
|
|
|
|
Number TAG \(0x0\)
|
|
1 DW_TAG_compile_unit \[has children\]
|
|
DW_AT_stmt_list DW_FORM_data4
|
|
DW_AT_high_pc DW_FORM_addr
|
|
DW_AT_low_pc DW_FORM_addr
|
|
DW_AT_name DW_FORM_string
|
|
DW_AT_producer DW_FORM_string
|
|
DW_AT_language DW_FORM_data1
|
|
DW_AT value: 0 DW_FORM value: 0
|
|
2 DW_TAG_subprogram \[no children\]
|
|
DW_AT_external DW_FORM_flag
|
|
DW_AT_decl_file DW_FORM_data1
|
|
DW_AT_decl_line DW_FORM_data1
|
|
DW_AT_name DW_FORM_string
|
|
DW_AT_type DW_FORM_ref_addr
|
|
DW_AT_low_pc DW_FORM_addr
|
|
DW_AT_high_pc DW_FORM_addr
|
|
DW_AT_frame_base DW_FORM_block1
|
|
DW_AT value: 0 DW_FORM value: 0
|
|
3 DW_TAG_base_type \[no children\]
|
|
DW_AT_name DW_FORM_string
|
|
DW_AT_byte_size DW_FORM_data1
|
|
DW_AT_encoding DW_FORM_data1
|
|
DW_AT value: 0 DW_FORM value: 0
|
|
4 DW_TAG_const_type \[no children\]
|
|
DW_AT_type DW_FORM_ref4
|
|
DW_AT value: 0 DW_FORM value: 0
|
|
5 DW_TAG_variable \[no children\]
|
|
DW_AT_name DW_FORM_string
|
|
DW_AT_type DW_FORM_ref4
|
|
DW_AT_const_value DW_FORM_data1
|
|
DW_AT value: 0 DW_FORM value: 0
|
|
Number TAG \(0x45\)
|
|
1 DW_TAG_compile_unit \[has children\]
|
|
DW_AT_name DW_FORM_string
|
|
DW_AT_producer DW_FORM_string
|
|
DW_AT_language DW_FORM_data1
|
|
DW_AT value: 0 DW_FORM value: 0
|
|
2 DW_TAG_base_type \[no children\]
|
|
DW_AT_name DW_FORM_string
|
|
DW_AT_byte_size DW_FORM_data1
|
|
DW_AT_encoding DW_FORM_data1
|
|
DW_AT value: 0 DW_FORM value: 0
|
|
3 DW_TAG_const_type \[no children\]
|
|
DW_AT_type DW_FORM_ref4
|
|
DW_AT value: 0 DW_FORM value: 0
|
|
4 DW_TAG_variable \[no children\]
|
|
DW_AT_name DW_FORM_string
|
|
DW_AT_type DW_FORM_ref4
|
|
DW_AT_const_value DW_FORM_data1
|
|
DW_AT value: 0 DW_FORM value: 0
|
|
|
|
Raw dump of debug contents of section .debug_line:
|
|
|
|
Offset: 0x0
|
|
Length: 62
|
|
DWARF Version: 2
|
|
Prologue Length: 35
|
|
Minimum Instruction Length: 1
|
|
Initial value of 'is_stmt': 1
|
|
Line Base: 1
|
|
Line Range: 1
|
|
Opcode Base: 16
|
|
|
|
Opcodes:
|
|
Opcode 1 has 0 args
|
|
Opcode 2 has 1 args
|
|
Opcode 3 has 1 args
|
|
Opcode 4 has 1 args
|
|
Opcode 5 has 1 args
|
|
Opcode 6 has 0 args
|
|
Opcode 7 has 0 args
|
|
Opcode 8 has 0 args
|
|
Opcode 9 has 1 args
|
|
Opcode 10 has 0 args
|
|
Opcode 11 has 0 args
|
|
Opcode 12 has 1 args
|
|
Opcode 13 has 0 args
|
|
Opcode 14 has 0 args
|
|
Opcode 15 has 0 args
|
|
|
|
The Directory Table is empty.
|
|
|
|
The File Name Table \(offset 0x1f\):
|
|
Entry Dir Time Size Name
|
|
1 0 0 0 file1.txt
|
|
|
|
Line Number Statements:
|
|
\[0x0000002d\] Extended opcode 2: set Address to 0x0
|
|
\[0x00000034\] Advance Line by 3 to 4
|
|
\[0x00000036\] Copy
|
|
\[0x00000037\] Copy
|
|
\[0x00000038\] Extended opcode 2: set Address to 0x4
|
|
\[0x0000003f\] Extended opcode 1: End of Sequence
|
|
|
|
#pass
|