This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
PATCH: PR binutils/14319: unable to initialize commpress status for section .debug_line
- From: "H.J. Lu" <hongjiu dot lu at intel dot com>
- To: binutils at sourceware dot org
- Date: Sat, 30 Jun 2012 15:25:03 -0700
- Subject: PATCH: PR binutils/14319: unable to initialize commpress status for section .debug_line
- Reply-to: "H.J. Lu" <hjl dot tools at gmail dot com>
Hi,
This patch avoids compressing empty debug sections. OK to install?
Thanks.
H.J.
----
bfd/
2012-06-30 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/14319
* elf.c (_bfd_elf_make_section_from_shdr): Don't compress empty
debug section.
binutils/testsuite/
2012-06-30 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/14319
* binutils-all/compress.exp: Test compress empty debug sections.
* binutils-all/dw2-empty.S: New file.
diff --git a/bfd/elf.c b/bfd/elf.c
index ecbf727..8933c2c 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -1025,7 +1025,7 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
else
{
/* Normal section. Check if we should compress. */
- if ((abfd->flags & BFD_COMPRESS))
+ if ((abfd->flags & BFD_COMPRESS) && newsect->size != 0)
action = compress;
}
diff --git a/binutils/testsuite/binutils-all/compress.exp b/binutils/testsuite/binutils-all/compress.exp
index 91ed7e4..3b0b485 100644
--- a/binutils/testsuite/binutils-all/compress.exp
+++ b/binutils/testsuite/binutils-all/compress.exp
@@ -133,3 +133,32 @@ if ![string match "" $got] then {
pass "$testname"
}
}
+
+set testfile tmpdir/dw2-emty.o
+
+if { ![binutils_assemble_flags $srcdir/$subdir/dw2-empty.S $testfile --nocompress-debug-sections] } then {
+ unsupported "compressed debug sections"
+ return
+}
+
+set testname "objcopy compress empty debug sections"
+set got [binutils_run $OBJCOPY "--compress-debug-sections $testfile ${copyfile}.o"]
+if ![string match "" $got] then {
+ fail "objcopy ($testname)"
+} else {
+ send_log "cmp $testfile ${copyfile}.o\n"
+ verbose "cmp $testfile ${copyfile}.o"
+ set src1 ${testfile}
+ set src2 ${copyfile}.o
+ set status [remote_exec build cmp "${src1} ${src2}"]
+ set exec_output [lindex $status 1]
+ set exec_output [prune_warnings $exec_output]
+
+ if [string match "" $exec_output] then {
+ pass "objcopy ($testname)"
+ } else {
+ send_log "$exec_output\n"
+ verbose "$exec_output" 1
+ fail "objcopy ($testname)"
+ }
+}
diff --git a/binutils/testsuite/binutils-all/dw2-empty.S b/binutils/testsuite/binutils-all/dw2-empty.S
new file mode 100644
index 0000000..63a2b90
--- /dev/null
+++ b/binutils/testsuite/binutils-all/dw2-empty.S
@@ -0,0 +1 @@
+ .section .debug_line