Make default compression gABI compliant
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 14 Jul 2015 17:25:52 +0000 (10:25 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 14 Jul 2015 17:26:23 +0000 (10:26 -0700)
All programs in binutils+gdb git repo now support gABI compression
with the SHF_COMPRESSED bit.  This patch makes the zlib-gabi option
as compression default for gas, gold, ld and objcopy, instead of the
zlib-gnu option whose outputs are incompatible with gABI.

binutils/

* objcopy.c (copy_file): Set BFD_COMPRESS_GABI if not
zlib-gnu.
* doc/binutils.texi: Change --compress-debug-sections and
--compress-debug-sections=zlib to zlib-gabi.

binutils/testsuite/

* binutils-all/compress.exp: Update.

gas/

* as.c (parse_args): Make --compress-debug-sections and
--compress-debug-sections=zlib the same as
--compress-debug-sections=zlib-gabi.
* doc/as.texinfo: Change --compress-debug-sections and
--compress-debug-sections=zlib to zlib-gabi.

gold/

* compressed_output.cc (Output_compressed_section::set_final_data_size):
Make --compress-debug-sections=zlib the same as
--compress-debug-sections=zlib-gabi.
* testsuite/Makefile.am (flagstest_compress_debug_sections.check):
Expect ".debug_.*" with the SHF_COMPRESSED bit, instead of
".zdebug_".
* testsuite/Makefile.in: Regenerated.

ld/

* emultempl/elf32.em (gld${EMULATION_NAME}_handle_option): Make
--compress-debug-sections=zlib the same as
--compress-debug-sections=zlib-gabi.
* ld.texinfo: Change --compress-debug-sections=zlib to zlib-gabi.

ld/testsuite/

* ld-elf/zlibbegin.rS: Updated to .debug_.* with the
SHF_COMPRESSED bit.
* ld-elf/zlibnormal.rS: Likewise.

18 files changed:
binutils/ChangeLog
binutils/doc/binutils.texi
binutils/objcopy.c
binutils/testsuite/ChangeLog
binutils/testsuite/binutils-all/compress.exp
gas/ChangeLog
gas/as.c
gas/doc/as.texinfo
gold/ChangeLog
gold/compressed_output.cc
gold/testsuite/Makefile.am
gold/testsuite/Makefile.in
ld/ChangeLog
ld/emultempl/elf32.em
ld/ld.texinfo
ld/testsuite/ChangeLog
ld/testsuite/ld-elf/zlibbegin.rS
ld/testsuite/ld-elf/zlibnormal.rS

index c504b33cb80e06a9f4b48004d83b60279f3a920b..4431ab8fce1aaa257f4493bdbda1b0f2cee1a01f 100644 (file)
@@ -1,3 +1,10 @@
+2015-07-14  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * objcopy.c (copy_file): Set BFD_COMPRESS_GABI if not
+       zlib-gnu.
+       * doc/binutils.texi: Change --compress-debug-sections and
+       --compress-debug-sections=zlib to zlib-gabi.
+
 2015-07-10  H.J. Lu  <hongjiu.lu@intel.com>
 
         PR binutils/18656
index 07810364370ebbf68f0cdc161306373cfa290b62..466f125722931df9a2c0ac407f4ab0cc913930fc 100644 (file)
@@ -1844,10 +1844,9 @@ It can also be a useful way of reducing the size of a @option{--just-symbols}
 linker input file.
 
 @item --compress-debug-sections
-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.
+Compress DWARF debug sections using zlib with SHF_COMPRESSED from the
+ELF ABI.  Note - if compression would actually make a section
+@emph{larger}, then it is not compressed.
 
 @item --compress-debug-sections=none
 @itemx --compress-debug-sections=zlib
@@ -1857,10 +1856,13 @@ For ELF files, these options control how DWARF debug sections are
 compressed.  @option{--compress-debug-sections=none} is equivalent
 to @option{--nocompress-debug-sections}.
 @option{--compress-debug-sections=zlib} and
-@option{--compress-debug-sections=zlib-gnu} are equivalent to
+@option{--compress-debug-sections=zlib-gabi} are equivalent to
 @option{--compress-debug-sections}.
-@option{--compress-debug-sections=zlib-gabi} compresses
-DWARF debug sections with SHF_COMPRESSED from the ELF ABI.
+@option{--compress-debug-sections=zlib-gnu} compresses 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 nor
+renamed.
 
 @item --decompress-debug-sections
 Decompress DWARF debug sections using zlib.  The original section
index d6516e02c7f09adf111424468ec7871991797a4a..bb6ca4428d7feeda465004753b14be0f16ebd2ee 100644 (file)
@@ -2607,7 +2607,7 @@ copy_file (const char *input_filename, const char *output_filename,
       ibfd->flags |= BFD_COMPRESS;
       /* Don't check if input is ELF here since this information is
         only available after bfd_check_format_matches is called.  */
-      if (do_debug_sections == compress_gabi_zlib)
+      if (do_debug_sections != compress_gnu_zlib)
        ibfd->flags |= BFD_COMPRESS_GABI;
       break;
     case decompress:
index 435961a8d26d1a63e6acf458fab0ded9c1fade4b..5f4fbc3a9250a78adc48d96b36532ad7bc4236b3 100644 (file)
@@ -1,3 +1,7 @@
+2015-07-14  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * binutils-all/compress.exp: Update.
+
 2015-07-10  H.J. Lu  <hongjiu.lu@intel.com>
 
         PR binutils/18656
index abff197319803a886c66b72315626361c5b0d833..4dac503c782f8d0af1d6a56949cb6cc69c4f6485 100644 (file)
@@ -39,7 +39,12 @@ if { ![binutils_assemble_flags $srcdir/$subdir/dw2-1.S ${compressedfile}.o --com
     return
 }
 
-set got [remote_exec host "cmp ${testfile}.o ${compressedfile}.o"]
+if { ![binutils_assemble_flags $srcdir/$subdir/dw2-1.S ${compressedfile}gnu.o --compress-debug-sections=zlib-gnu] } then {
+    unsupported "compressed debug sections with zlib-gnu"
+    return
+}
+
+set got [remote_exec host "cmp ${testfile}.o ${compressedfile}gnu.o"]
 # Use it to set up xfail.
 set exec_output [lindex $got 1]
 if [string match "" $exec_output] then {
@@ -136,8 +141,8 @@ if ![string match "" $got] then {
 
 # Xfail this test if there are no compressed sections.
 setup_xfail "$compression_used$target_triplet"
-set testname "objcopy compress debug sections in archive"
-set got [binutils_run $OBJCOPY "--compress-debug-sections ${copyfile}.a ${compressedcopyfile}.a"]
+set testname "objcopy compress debug sections in archive with zlib-gnu"
+set got [binutils_run $OBJCOPY "--compress-debug-sections=zlib-gnu ${copyfile}.a ${compressedcopyfile}.a"]
 if ![string match "" $got] then {
     fail "objcopy ($testname)"
 } else {
@@ -228,13 +233,13 @@ if { ![binutils_assemble_flags $srcdir/$subdir/dw2-1.S ${compressedfile}gnu.o --
     return
 }
 
-set src1 ${compressedfile}gnu.o
+set src1 ${compressedfile}gabi.o
 set src2 ${compressedfile}.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 {
-    fail "compressed debug sections with zlib-gnu"
+    fail "compressed debug sections with zlib-gabi"
     return
 }
 
@@ -248,13 +253,13 @@ if { ![binutils_assemble_flags $srcdir/$subdir/dw2-2.S ${compressedfile2}gnu.o -
     return
 }
 
-set src1 ${compressedfile2}gnu.o
+set src1 ${compressedfile2}gabi.o
 set src2 ${compressedfile2}.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 {
-    fail "compressed debug sections with zlib-gnu"
+    fail "compressed debug sections with zlib-gabi"
     return
 }
 
@@ -292,13 +297,13 @@ if { ![binutils_assemble_flags $srcdir/$subdir/dw2-3.S ${compressedfile3}gnu.o -
     return
 }
 
-set src1 ${compressedfile3}gnu.o
+set src1 ${compressedfile3}gabi.o
 set src2 ${compressedfile3}.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 {
-    fail "compressed debug sections with zlib-gnu"
+    fail "compressed debug sections with zlib-gabi"
     return
 }
 
index 5374c5e71ce6df73c2c358301e96b8c03ff959ce..8d84bab94e75b1fc09ba67e6a887427069fa04c2 100644 (file)
@@ -1,3 +1,11 @@
+2015-07-14  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * as.c (parse_args): Make --compress-debug-sections and
+       --compress-debug-sections=zlib the same as
+       --compress-debug-sections=zlib-gabi.
+       * doc/as.texinfo: Change --compress-debug-sections and
+       --compress-debug-sections=zlib to zlib-gabi.
+
 2015-07-09  Catherine Moore  <clm@codesourcery.com>
 
         * config/tc-mips.c (check_fpabi):  Handle
index b8a5be4c7172136d7f8d5142460e40a3f27c7290..6fb28e97a836d4ca203e22917ded7a66021133b1 100644 (file)
--- a/gas/as.c
+++ b/gas/as.c
@@ -665,7 +665,7 @@ This program has absolutely no warranty.\n"));
              if (strcasecmp (optarg, "none") == 0)
                flag_compress_debug = COMPRESS_DEBUG_NONE;
              else if (strcasecmp (optarg, "zlib") == 0)
-               flag_compress_debug = COMPRESS_DEBUG_GNU_ZLIB;
+               flag_compress_debug = COMPRESS_DEBUG_GABI_ZLIB;
              else if (strcasecmp (optarg, "zlib-gnu") == 0)
                flag_compress_debug = COMPRESS_DEBUG_GNU_ZLIB;
              else if (strcasecmp (optarg, "zlib-gabi") == 0)
@@ -679,7 +679,7 @@ This program has absolutely no warranty.\n"));
 #endif
            }
          else
-           flag_compress_debug = COMPRESS_DEBUG;
+           flag_compress_debug = COMPRESS_DEBUG_GABI_ZLIB;
          break;
 
        case OPTION_NOCOMPRESS_DEBUG:
index 950bf28b411ef3f0fbba3097dbebbb85a4027b87..70f1b964f2906b4c621a29528816b2029a53b1ba 100644 (file)
@@ -625,10 +625,10 @@ Begin in alternate macro mode.
 @end ifclear
 
 @item --compress-debug-sections
-Compress DWARF debug sections using zlib.  The debug sections are renamed
-to begin with @samp{.zdebug}, and the resulting object file may not be
-compatible with older linkers and object file utilities.  Note if compression
-would make a given section @emph{larger} then it is not compressed or renamed.
+Compress DWARF debug sections using zlib with SHF_COMPRESSED from the
+ELF ABI.  The resulting object file may not be compatible with older
+linkers and object file utilities.  Note if compression would make a
+given section @emph{larger} then it is not compressed.
 
 @ifset ELF
 @cindex @samp{--compress-debug-sections=} option
@@ -640,10 +640,13 @@ These options control how DWARF debug sections are compressed.
 @option{--compress-debug-sections=none} is equivalent to
 @option{--nocompress-debug-sections}.
 @option{--compress-debug-sections=zlib} and
-@option{--compress-debug-sections=zlib-gnu} are equivalent to
+@option{--compress-debug-sections=zlib-gabi} are equivalent to
 @option{--compress-debug-sections}.
-@option{--compress-debug-sections=zlib-gabi} compresses
-DWARF debug sections with SHF_COMPRESSED from the ELF ABI.
+@option{--compress-debug-sections=zlib-gnu} compresses DWARF debug
+sections using zlib.  The debug sections are renamed to begin with
+@samp{.zdebug}.  Note if compression would make a given section
+@emph{larger} then it is not compressed nor renamed.
+
 @end ifset
 
 @item --nocompress-debug-sections
index a8c2507edb7796faff39166cc7783489a8537baf..309b4753654a47b9ac0bc51eed92f1892b0438dd 100644 (file)
@@ -1,3 +1,13 @@
+2015-07-14  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * compressed_output.cc (Output_compressed_section::set_final_data_size):
+       Make --compress-debug-sections=zlib the same as
+       --compress-debug-sections=zlib-gabi.
+       * testsuite/Makefile.am (flagstest_compress_debug_sections.check):
+       Expect ".debug_.*" with the SHF_COMPRESSED bit, instead of
+       ".zdebug_".
+       * testsuite/Makefile.in: Regenerated.
+
 2015-07-12  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR gold/18322
index 263033097426ea7ab8cfe3a9cc9488816ca5b40b..77679fef70dd5f2bee1b1228dd11d2406e5102aa 100644 (file)
@@ -233,11 +233,10 @@ Output_compressed_section::set_final_data_size()
   enum { none, gnu_zlib, gabi_zlib } compress;
   int compression_header_size = 12;
   const int size = parameters->target().get_size();
-  if (strcmp(this->options_->compress_debug_sections(), "zlib") == 0)
+  if (strcmp(this->options_->compress_debug_sections(), "zlib-gnu") == 0)
     compress = gnu_zlib;
-  else if (strcmp(this->options_->compress_debug_sections(), "zlib-gnu") == 0)
-    compress = gnu_zlib;
-  else if (strcmp(this->options_->compress_debug_sections(), "zlib-gabi") == 0)
+  else if (strcmp(this->options_->compress_debug_sections(), "zlib-gabi") == 0
+          || strcmp(this->options_->compress_debug_sections(), "zlib") == 0)
     {
       compress = gabi_zlib;
       if (size == 32)
index d2f466825beb578cac268ff905b3736cead3cae8..41186c694ce0ea558042d02087459f1a11f55008 100644 (file)
@@ -1353,9 +1353,9 @@ flagstest_compress_debug_sections.stdout: flagstest_compress_debug_sections
        $(TEST_READELF) -w $< | sed -e "s/.zdebug_/.debug_/" > $@.tmp
        mv -f $@.tmp $@
 
-# Check there are compressed DWARF .zdebug_* sections.
+# Check there are compressed DWARF .debug_* sections.
 flagstest_compress_debug_sections.check: flagstest_compress_debug_sections
-       $(TEST_READELF) -SW $< | grep ".zdebug_" > $@.tmp
+       $(TEST_READELF) -SW $< | egrep ".debug_.* C *" > $@.tmp
        mv -f $@.tmp $@
 
 # Compare DWARF debug info.
index 1c336c6a78f21b8bc522ec6ccb194b5ca7c74e75..563f598e877c5e4da4738caab38a3d370b065bd7 100644 (file)
@@ -5618,9 +5618,9 @@ uninstall-am:
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -w $< | sed -e "s/.zdebug_/.debug_/" > $@.tmp
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ mv -f $@.tmp $@
 
-# Check there are compressed DWARF .zdebug_* sections.
+# Check there are compressed DWARF .debug_* sections.
 @GCC_TRUE@@NATIVE_LINKER_TRUE@flagstest_compress_debug_sections.check: flagstest_compress_debug_sections
-@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -SW $< | grep ".zdebug_" > $@.tmp
+@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -SW $< | egrep ".debug_.* C *" > $@.tmp
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ mv -f $@.tmp $@
 
 # Compare DWARF debug info.
index 3035fd7f7d9daeab7529b5069f996ec58ee61c75..3dd0a6f031f19bfcf59199108d6ec3525abd8415 100644 (file)
@@ -1,3 +1,10 @@
+2015-07-14  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * emultempl/elf32.em (gld${EMULATION_NAME}_handle_option): Make
+       --compress-debug-sections=zlib the same as
+       --compress-debug-sections=zlib-gabi.
+       * ld.texinfo: Change --compress-debug-sections=zlib to zlib-gabi.
+
 2015-07-14  Nick Clifton  <nickc@redhat.com>
 
        * ld.texinfo (Options): Add missing period after @xref.
index 14f7963fbd420b9284c5bfcf0b08f470afa180a8..8a41347d81d5b4f5e01dfc036921e513e06efd64 100644 (file)
@@ -2223,7 +2223,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
       if (strcasecmp (optarg, "none") == 0)
        link_info.compress_debug = COMPRESS_DEBUG_NONE;
       else if (strcasecmp (optarg, "zlib") == 0)
-       link_info.compress_debug = COMPRESS_DEBUG_GNU_ZLIB;
+       link_info.compress_debug = COMPRESS_DEBUG_GABI_ZLIB;
       else if (strcasecmp (optarg, "zlib-gnu") == 0)
        link_info.compress_debug = COMPRESS_DEBUG_GNU_ZLIB;
       else if (strcasecmp (optarg, "zlib-gabi") == 0)
index e7989b700581e6a662a8ef9742244b24c1cb180b..b48396d06bb6ae7f824c813e78136653abe90373 100644 (file)
@@ -2228,11 +2228,12 @@ hash tables.  The default is @code{sysv}.
 @itemx --compress-debug-sections=zlib-gabi
 On ELF platforms , these options control how DWARF debug sections are
 compressed using zlib.  @option{--compress-debug-sections=none} doesn't
-compress DWARF debug sections.  @option{--compress-debug-sections=zlib}
-and @option{--compress-debug-sections=zlib-gnu} compress DWARF debug
+compress DWARF debug sections.
+@option{--compress-debug-sections=zlib-gnu} compresses DWARF debug
 sections and rename debug section names to begin with @samp{.zdebug}
-instead of @samp{.debug}.  @option{--compress-debug-sections=zlib-gabi}
-compresses DWARF debug sections with SHF_COMPRESSED from the ELF ABI.
+instead of @samp{.debug}.  @option{--compress-debug-sections=zlib}
+and @option{--compress-debug-sections=zlib-gabi}
+compress DWARF debug sections with SHF_COMPRESSED from the ELF ABI.
 
 @kindex --reduce-memory-overheads
 @item --reduce-memory-overheads
index 410359c11abd84df6bcf18c92829efa775765553..c279cbdec7abca81770ce77a821c49eae6b36afe 100644 (file)
@@ -1,3 +1,9 @@
+2015-07-14  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * ld-elf/zlibbegin.rS: Updated to .debug_.* with the
+       SHF_COMPRESSED bit.
+       * ld-elf/zlibnormal.rS: Likewise.
+
 2015-07-09  Catherine Moore  <clm@codesourcery.com>
 
         * ld-mips-elf/attr-gnu-4-08.d: Update expected output.
index 54de24cb0e604f032fe89529e998c376a2baa471..294fdb4416c64b64e49f0afa9987f6870ceabf29 100644 (file)
@@ -1,3 +1,3 @@
 #...
- +\[[ 0-9]+\] .zdebug_.* +(PROGBITS|MIPS_DWARF) +0+ +[0-9a-f]+ +[0-9a-f]+ [0-9a-f]+ +0 +0 +1
+ +\[[ 0-9]+\] .debug_.* +(PROGBITS|MIPS_DWARF) +0+ +[0-9a-f]+ +[0-9a-f]+ [0-9a-f]+ +C +0 +0 +1
 #pass
index 54de24cb0e604f032fe89529e998c376a2baa471..294fdb4416c64b64e49f0afa9987f6870ceabf29 100644 (file)
@@ -1,3 +1,3 @@
 #...
- +\[[ 0-9]+\] .zdebug_.* +(PROGBITS|MIPS_DWARF) +0+ +[0-9a-f]+ +[0-9a-f]+ [0-9a-f]+ +0 +0 +1
+ +\[[ 0-9]+\] .debug_.* +(PROGBITS|MIPS_DWARF) +0+ +[0-9a-f]+ +[0-9a-f]+ [0-9a-f]+ +C +0 +0 +1
 #pass