From 49ba15a23a9d3d8a109ce2fd5053822eee7f1fdf Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 28 Jul 2017 13:39:42 -0700 Subject: gold: Add put_ch_reserved to 64-bit Chdr_write The 64-bit ELF compression header has a reserved field. It should be cleared to avoid random bits in it. elfcpp/ PR gold/21857 * elfcpp.h (Chdr_write): Add put_ch_reserved. (Chdr_write<64, true>::put_ch_reserved): New. (Chdr_write<64, false>::put_ch_reserved): Likewise. gold/ PR gold/21857 * compressed_output.cc (Output_compressed_section::set_final_data_size): Call put_ch_reserved to clear the reserved field for 64-bit ELF. --- gold/ChangeLog | 6 ++++++ gold/compressed_output.cc | 4 ++++ 2 files changed, 10 insertions(+) (limited to 'gold') diff --git a/gold/ChangeLog b/gold/ChangeLog index 502af85..fdac931 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,9 @@ +2017-07-28 H.J. Lu + + PR gold/21857 + * compressed_output.cc (Output_compressed_section::set_final_data_size): + Call put_ch_reserved to clear the reserved field for 64-bit ELF. + 2017-07-26 H.J. Lu * mips.cc (Mips_relocate_functions): Add "llu" suffix to diff --git a/gold/compressed_output.cc b/gold/compressed_output.cc index 4374ba1..45077f7 100644 --- a/gold/compressed_output.cc +++ b/gold/compressed_output.cc @@ -286,6 +286,8 @@ Output_compressed_section::set_final_data_size() chdr.put_ch_type(elfcpp::ELFCOMPRESS_ZLIB); chdr.put_ch_size(uncompressed_size); chdr.put_ch_addralign(addralign); + // Clear the reserved field. + chdr.put_ch_reserved(0); } else { @@ -293,6 +295,8 @@ Output_compressed_section::set_final_data_size() chdr.put_ch_type(elfcpp::ELFCOMPRESS_ZLIB); chdr.put_ch_size(uncompressed_size); chdr.put_ch_addralign(addralign); + // Clear the reserved field. + chdr.put_ch_reserved(0); } } else -- cgit v1.1