aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2015-03-18 09:20:38 -0700
committerH.J. Lu <hjl.tools@gmail.com>2015-03-18 09:39:02 -0700
commitd94077e27d279c4ff0ee26bad786f89c350e2aea (patch)
treed1754937f779a1878b78f8fc418f08a5f57f82dc
parent27aaeda0cdf9f69625b96e3abdb25c8fdbbb3435 (diff)
downloadgdb-d94077e27d279c4ff0ee26bad786f89c350e2aea.zip
gdb-d94077e27d279c4ff0ee26bad786f89c350e2aea.tar.gz
gdb-d94077e27d279c4ff0ee26bad786f89c350e2aea.tar.bz2
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.
-rw-r--r--binutils/doc/binutils.texi2
-rw-r--r--gas/testsuite/ChangeLog8
-rw-r--r--gas/testsuite/gas/i386/dw2-compress-1.d2
-rw-r--r--gas/testsuite/gas/i386/dw2-compress-3.d103
-rw-r--r--gas/testsuite/gas/i386/dw2-compress-3.s96
-rw-r--r--gas/testsuite/gas/i386/i386.exp1
-rw-r--r--gas/write.c2
7 files changed, 211 insertions, 3 deletions
diff --git a/binutils/doc/binutils.texi b/binutils/doc/binutils.texi
index da50163..e0527aa 100644
--- a/binutils/doc/binutils.texi
+++ b/binutils/doc/binutils.texi
@@ -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
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 5b16085..f814d36 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -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>
diff --git a/gas/testsuite/gas/i386/dw2-compress-1.d b/gas/testsuite/gas/i386/dw2-compress-1.d
index 2b2fd8d..c29a26c 100644
--- a/gas/testsuite/gas/i386/dw2-compress-1.d
+++ b/gas/testsuite/gas/i386/dw2-compress-1.d
@@ -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\)
diff --git a/gas/testsuite/gas/i386/dw2-compress-3.d b/gas/testsuite/gas/i386/dw2-compress-3.d
new file mode 100644
index 0000000..d2aa8ef
--- /dev/null
+++ b/gas/testsuite/gas/i386/dw2-compress-3.d
@@ -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.
+
diff --git a/gas/testsuite/gas/i386/dw2-compress-3.s b/gas/testsuite/gas/i386/dw2-compress-3.s
new file mode 100644
index 0000000..c2e6f2e
--- /dev/null
+++ b/gas/testsuite/gas/i386/dw2-compress-3.s
@@ -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"
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
index 381a1e3..19ef914 100644
--- a/gas/testsuite/gas/i386/i386.exp
+++ b/gas/testsuite/gas/i386/i386.exp
@@ -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"
}
}
diff --git a/gas/write.c b/gas/write.c
index e3570ac..397ea48 100644
--- a/gas/write.c
+++ b/gas/write.c
@@ -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;