Add a testcase for PR gas/18087

PR gas/18087
	* gas/i386/dw2-compress-1.d: Revert the last change.
	* gas/i386/dw2-compress-3.d: New.
	* gas/i386/dw2-compress-3.s: Likewise.
	* gas/i386/i386.exp: Run dw2-compress-3 for ELF targets.
This commit is contained in:
H.J. Lu 2015-03-18 09:20:38 -07:00
parent 27aaeda0cd
commit d94077e27d
7 changed files with 211 additions and 3 deletions

View File

@ -1847,7 +1847,7 @@ linker input file.
Compress DWARF debug sections using zlib. The debug sections are
renamed to begin with @samp{.zdebug} instead of @samp{.debug}. Note -
if compression would actually make a section @emph{larger} then it is
not compressed or renamed.
not compressed or renamed.
@item --decompress-debug-sections
Decompress DWARF debug sections using zlib. The original section

View File

@ -1,3 +1,11 @@
2015-03-18 H.J. Lu <hongjiu.lu@intel.com>
PR gas/18087
* gas/i386/dw2-compress-1.d: Revert the last change.
* gas/i386/dw2-compress-3.d: New.
* gas/i386/dw2-compress-3.s: Likewise.
* gas/i386/i386.exp: Run dw2-compress-3 for ELF targets.
2015-03-18 Jon Turney <jon.turney@dronecode.org.uk>
Nick Clifton <nickc@redhat.com>

View File

@ -2,7 +2,7 @@
#readelf: -w
#name: DWARF2 debugging information 1
Contents of the .debug_info section:
Contents of the .zdebug_info section:
Compilation Unit @ offset 0x0:
Length: 0x4e \(32-bit\)

View File

@ -0,0 +1,103 @@
#as: --compress-debug-sections
#readelf: -w
#name: DWARF2 debugging information 3
Contents of the .debug_info section:
Compilation Unit @ offset 0x0:
Length: 0x32 \(32-bit\)
Version: 4
Abbrev Offset: 0x0
Pointer Size: 4
<0><b>: Abbrev Number: 1 \(DW_TAG_compile_unit\)
<c> DW_AT_producer : \(indirect string, offset: 0x2\): GNU C 4.8.3
<10> DW_AT_language : 1 \(ANSI C\)
<11> DW_AT_name : \(indirect string, offset: 0xe\): dw2-compress-3.c
<15> DW_AT_comp_dir : \(indirect string, offset: 0x0\): .
<19> DW_AT_stmt_list : 0x0
<1><1d>: Abbrev Number: 2 \(DW_TAG_variable\)
<1e> DW_AT_name : foo
<22> DW_AT_decl_file : 1
<23> DW_AT_decl_line : 1
<24> DW_AT_type : <0x2e>
<28> DW_AT_external : 1
<28> DW_AT_location : 5 byte block: 3 4 0 0 0 \(DW_OP_addr: 4\)
<1><2e>: Abbrev Number: 3 \(DW_TAG_base_type\)
<2f> DW_AT_byte_size : 4
<30> DW_AT_encoding : 5 \(signed\)
<31> DW_AT_name : int
<1><35>: Abbrev Number: 0
Contents of the .debug_abbrev section:
Number TAG \(0x0\)
1 DW_TAG_compile_unit \[has children\]
DW_AT_producer DW_FORM_strp
DW_AT_language DW_FORM_data1
DW_AT_name DW_FORM_strp
DW_AT_comp_dir DW_FORM_strp
DW_AT_stmt_list DW_FORM_sec_offset
DW_AT value: 0 DW_FORM value: 0
2 DW_TAG_variable \[no children\]
DW_AT_name DW_FORM_string
DW_AT_decl_file DW_FORM_data1
DW_AT_decl_line DW_FORM_data1
DW_AT_type DW_FORM_ref4
DW_AT_external DW_FORM_flag_present
DW_AT_location DW_FORM_exprloc
DW_AT value: 0 DW_FORM value: 0
3 DW_TAG_base_type \[no children\]
DW_AT_byte_size DW_FORM_data1
DW_AT_encoding DW_FORM_data1
DW_AT_name DW_FORM_string
DW_AT value: 0 DW_FORM value: 0
Contents of the .debug_aranges section:
Length: 20
Version: 2
Offset into .debug_info: 0x0
Pointer Size: 4
Segment Size: 0
Address Length
00000000 00000000
Raw dump of debug contents of section .debug_line:
Offset: 0x0
Length: 45
DWARF Version: 2
Prologue Length: 39
Minimum Instruction Length: 1
Initial value of 'is_stmt': 1
Line Base: -5
Line Range: 14
Opcode Base: 13
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
The Directory Table is empty.
The File Name Table \(offset 0x1c\):
Entry Dir Time Size Name
1 0 0 0 dw2-compress-3.c
No Line Number Statements.
Contents of the .debug_str section:
0x00000000 2e00474e 55204320 342e382e 33006477 ..GNU C 4.8.3.dw
0x00000010 322d636f 6d707265 73732d33 2e6300 2-compress-3.c.

View File

@ -0,0 +1,96 @@
.file "dw2-compress-3.c"
.text
.Ltext0:
.comm foo,4,4
.Letext0:
.file 1 "dw2-compress-3.c"
.section .debug_info,"",@progbits
.Ldebug_info0:
.long 0x32
.value 0x4
.long .Ldebug_abbrev0
.byte 0x4
.uleb128 0x1
.long .LASF0
.byte 0x1
.long .LASF1
.long .LASF2
.long .Ldebug_line0
.uleb128 0x2
.string "foo"
.byte 0x1
.byte 0x1
.long 0x2e
.uleb128 0x5
.byte 0x3
.long foo
.uleb128 0x3
.byte 0x4
.byte 0x5
.string "int"
.byte 0
.section .debug_abbrev,"",@progbits
.Ldebug_abbrev0:
.uleb128 0x1
.uleb128 0x11
.byte 0x1
.uleb128 0x25
.uleb128 0xe
.uleb128 0x13
.uleb128 0xb
.uleb128 0x3
.uleb128 0xe
.uleb128 0x1b
.uleb128 0xe
.uleb128 0x10
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x2
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x3
.uleb128 0x24
.byte 0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3e
.uleb128 0xb
.uleb128 0x3
.uleb128 0x8
.byte 0
.byte 0
.byte 0
.section .debug_aranges,"",@progbits
.long 0x14
.value 0x2
.long .Ldebug_info0
.byte 0x4
.byte 0
.value 0
.value 0
.long 0
.long 0
.section .debug_line,"",@progbits
.Ldebug_line0:
.section .debug_str,"MS",@progbits,1
.LASF2:
.string "."
.LASF0:
.string "GNU C 4.8.3"
.LASF1:
.string "dw2-compress-3.c"

View File

@ -426,6 +426,7 @@ if [expr [istarget "i*86-*-*"] || [istarget "x86_64-*-*"]] then {
run_list_test_stdin "list-2" "-al"
run_list_test_stdin "list-3" "-al"
run_dump_test "dw2-compress-1"
run_dump_test "dw2-compress-3"
}
}

View File

@ -1530,7 +1530,7 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
the section smaller, just keep it uncompressed. */
if (compressed_size > sec->size)
return;
/* Replace the uncompressed frag list with the compressed frag list. */
seginfo->frchainP->frch_root = first_newf;
seginfo->frchainP->frch_last = last_newf;