Don't compress empty debug section
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 3 Jul 2012 16:06:34 +0000 (16:06 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 3 Jul 2012 16:06:34 +0000 (16:06 +0000)
2012-07-03  H.J. Lu  <hongjiu.lu@intel.com>

PR binutils/14319
* elf.c (_bfd_elf_make_section_from_shdr): Don't compress empty
debug section.

2012-07-03  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.

bfd/ChangeLog
bfd/elf.c
binutils/testsuite/ChangeLog
binutils/testsuite/binutils-all/compress.exp
binutils/testsuite/binutils-all/dw2-empty.S [new file with mode: 0644]

index 2b1e9e316cf157c44415686c2c8a41ded73b24fb..5ab85252b512c5b3a4ac6565c4e49b3a1efd9326 100644 (file)
@@ -1,3 +1,9 @@
+2012-07-03  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR binutils/14319
+       * elf.c (_bfd_elf_make_section_from_shdr): Don't compress empty
+       debug section.
+
 2012-07-03  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR ld/3351
index 588e73f641fd3a3ee7353501ec05177cdcdd4e27..532c7f99f3e3a5d23f32685ad6ea8a8659436eb4 100644 (file)
--- 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;
        }
 
index bb777f16cdf01af8e865fe51c318573a1233eac8..6b5a418728a75699da8f924cd9f41c3f210534d7 100644 (file)
@@ -1,3 +1,10 @@
+2012-07-03  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.
+
 2012-06-07  Thomas Schwinge  <thomas@codesourcery.com>
 
        * binutils-all/i386/i386.exp: Don't skip for x86_64-*-linux*.
index 91ed7e41403ef377e256b8ed19673a26b6f4f3de..3b0b48563f7177130cb7bf14d852b0ffc378f269 100644 (file)
@@ -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 (file)
index 0000000..63a2b90
--- /dev/null
@@ -0,0 +1 @@
+       .section .debug_line