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. --- elfcpp/ChangeLog | 7 +++++++ elfcpp/elfcpp.h | 17 +++++++++++++++++ 2 files changed, 24 insertions(+) (limited to 'elfcpp') diff --git a/elfcpp/ChangeLog b/elfcpp/ChangeLog index fc864bf..f669248 100644 --- a/elfcpp/ChangeLog +++ b/elfcpp/ChangeLog @@ -1,3 +1,10 @@ +2017-07-28 H.J. Lu + + 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. + 2017-07-03 Alan Modra * dwarf.h (DW_FIRST_IDX, DW_IDX, DW_IDX_DUP, DW_END_IDX): Define, diff --git a/elfcpp/elfcpp.h b/elfcpp/elfcpp.h index a57f547..cccec4c 100644 --- a/elfcpp/elfcpp.h +++ b/elfcpp/elfcpp.h @@ -1351,10 +1351,27 @@ class Chdr_write put_ch_addralign(typename Elf_types::Elf_WXword v) { this->p_->ch_addralign = Convert::convert_host(v); } + void + put_ch_reserved(Elf_Word); + private: internal::Chdr_data* p_; }; +template<> +inline void +elfcpp::Chdr_write<64, true>::put_ch_reserved(Elf_Word v) +{ + this->p_->ch_reserved = v; +} + +template<> +inline void +elfcpp::Chdr_write<64, false>::put_ch_reserved(Elf_Word v) +{ + this->p_->ch_reserved = v; +} + // Accessor class for an ELF segment header. template -- cgit v1.1