From: H.J. Lu Date: Wed, 25 Mar 2015 02:06:22 +0000 (-0700) Subject: Don't write the zlib header if not used X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b422eb499be2858969fb7723b4e4e08cab20fcdc;p=binutils-gdb.git Don't write the zlib header if not used No need to write the zlib header if compression didn't make the section smaller. PR gas/18087 * write.c (compress_debug): Don't write the zlib header if compression didn't make the section smaller. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 6579c2ffef5..9f92729d48c 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2015-03-24 H.J. Lu + + PR gas/18087 + * write.c (compress_debug): Don't write the zlib header if + compression didn't make the section smaller. + 2015-03-24 Terry Guo * config/tc-arm.c (no_cpu_selected): Use new macro to compare diff --git a/gas/write.c b/gas/write.c index 397ea48c7b2..6a781eaa9a0 100644 --- a/gas/write.c +++ b/gas/write.c @@ -1438,15 +1438,6 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED) last_newf->fr_type = rs_fill; last_newf->fr_fix = 12; header = last_newf->fr_literal; - memcpy (header, "ZLIB", 4); - header[11] = uncompressed_size; uncompressed_size >>= 8; - header[10] = uncompressed_size; uncompressed_size >>= 8; - header[9] = uncompressed_size; uncompressed_size >>= 8; - header[8] = uncompressed_size; uncompressed_size >>= 8; - header[7] = uncompressed_size; uncompressed_size >>= 8; - header[6] = uncompressed_size; uncompressed_size >>= 8; - header[5] = uncompressed_size; uncompressed_size >>= 8; - header[4] = uncompressed_size; compressed_size = 12; /* Stream the frags through the compression engine, adding new frags @@ -1526,11 +1517,21 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED) break; } - /* PR binutils/18087: If compression didn't make - the section smaller, just keep it uncompressed. */ - if (compressed_size > sec->size) + /* PR binutils/18087: If compression didn't make the section smaller, + just keep it uncompressed. */ + if (compressed_size > uncompressed_size) return; + memcpy (header, "ZLIB", 4); + header[11] = uncompressed_size; uncompressed_size >>= 8; + header[10] = uncompressed_size; uncompressed_size >>= 8; + header[9] = uncompressed_size; uncompressed_size >>= 8; + header[8] = uncompressed_size; uncompressed_size >>= 8; + header[7] = uncompressed_size; uncompressed_size >>= 8; + header[6] = uncompressed_size; uncompressed_size >>= 8; + header[5] = uncompressed_size; uncompressed_size >>= 8; + header[4] = uncompressed_size; + /* Replace the uncompressed frag list with the compressed frag list. */ seginfo->frchainP->frch_root = first_newf; seginfo->frchainP->frch_last = last_newf;