Clear the ch_reserved field in 64-bit output
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 6 Oct 2015 21:34:17 +0000 (14:34 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 6 Oct 2015 21:34:17 +0000 (14:34 -0700)
It is better to clear the ch_reserved field of Elf64_External_Chdr
in 64-bit output.

* bfd.c (bfd_update_compression_header): Clear the ch_reserved
field in 64-bit output.
(bfd_convert_section_contents): Likewise.

bfd/ChangeLog
bfd/bfd.c

index db6fe6b07159fa24f083db576158e7ce476ad54f..b2a88551aa559ab745f5ac234207ecf17a5a0049 100644 (file)
@@ -1,3 +1,9 @@
+2015-10-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * bfd.c (bfd_update_compression_header): Clear the ch_reserved
+       field in 64-bit output.
+       (bfd_convert_section_contents): Likewise.
+
 2015-10-05  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR ld/18914
index f68f665d9c7e2f22ca5f42e5803c1ede3484d77a..9c4457ef3dec5905bcf2b6b5db37cffc1758880c 100644 (file)
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -2001,6 +2001,7 @@ bfd_update_compression_header (bfd *abfd, bfd_byte *contents,
                  Elf64_External_Chdr *echdr
                    = (Elf64_External_Chdr *) contents;
                  bfd_put_32 (abfd, ELFCOMPRESS_ZLIB, &echdr->ch_type);
+                 bfd_put_32 (abfd, 0, &echdr->ch_reserved);
                  bfd_put_64 (abfd, sec->size, &echdr->ch_size);
                  bfd_put_64 (abfd, 1 << sec->alignment_power,
                              &echdr->ch_addralign);
@@ -2251,6 +2252,7 @@ bfd_convert_section_contents (bfd *ibfd, sec_ptr isec, bfd *obfd,
     {
       Elf64_External_Chdr *echdr = (Elf64_External_Chdr *) contents;
       bfd_put_32 (obfd, ELFCOMPRESS_ZLIB, &echdr->ch_type);
+      bfd_put_32 (obfd, 0, &echdr->ch_reserved);
       bfd_put_64 (obfd, chdr.ch_size, &echdr->ch_size);
       bfd_put_64 (obfd, chdr.ch_addralign, &echdr->ch_addralign);
     }