Don't add the zlib header to SHF_COMPRESSED section
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 14 May 2015 22:58:51 +0000 (15:58 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 14 May 2015 23:02:08 +0000 (16:02 -0700)
commitdab394de9e41de54df5e2310e081e1c550326f5b
treefbdbe4f564baa35e7fb4bea28416a531fcb9d916
parent61a7418ccb7c2de12d4c4df79e193f32db938a11
Don't add the zlib header to SHF_COMPRESSED section

In a SHF_COMPRESSED compressed section, the raw compressed data should
begin immediately after the compression header.  This patch removes the
extra zlib header from the SHF_COMPRESSED section.

bfd/

* bfd.c (bfd_update_compression_header): Also write the zlib
header if the SHF_COMPRESSED bit cleared..
(bfd_check_compression_header): Return the uncompressed size.
* compress.c (decompress_contents): Don't skip the zlib header.
(bfd_compress_section_contents): Properly handle ELFCOMPRESS_ZLIB,
which doesn't have the zlib header.
(bfd_init_section_decompress_status): Likewise.
(bfd_get_full_section_contents): Updated.
(bfd_is_section_compressed): Likewise.
(bfd_is_section_compressed_with_header): Return the uncompressed
size.
* elf.c (_bfd_elf_make_section_from_shdr): Updated.
* bfd-in2.h: Regenerated.

binutils/

* readelf.c (uncompress_section_contents): Add a parameter for
uncompressed size.  Don't check the zlib header.
(load_specific_debug_section): Updated.

binutils/testsuite/

* binutils-all/compress.exp: Replace "$OBJDUMP -s -j .debug_info"
with "$OBJDUMP -W".
* binutils-all/libdw2-compressedgabi.out: Updated.

gas/

2015-05-14  H.J. Lu  <hongjiu.lu@intel.com>

* write.c (compress_debug): Don't write the zlib header, which
is handled by bfd_update_compression_header.
12 files changed:
bfd/ChangeLog
bfd/bfd-in2.h
bfd/bfd.c
bfd/compress.c
bfd/elf.c
binutils/ChangeLog
binutils/readelf.c
binutils/testsuite/ChangeLog
binutils/testsuite/binutils-all/compress.exp
binutils/testsuite/binutils-all/libdw2-compressedgabi.out
gas/ChangeLog
gas/write.c