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.
This commit is contained in:
parent
894dde0ba7
commit
49ba15a23a
@ -1,3 +1,10 @@
|
||||
2017-07-28 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
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 <amodra@gmail.com>
|
||||
|
||||
* dwarf.h (DW_FIRST_IDX, DW_IDX, DW_IDX_DUP, DW_END_IDX): Define,
|
||||
|
@ -1351,10 +1351,27 @@ class Chdr_write
|
||||
put_ch_addralign(typename Elf_types<size>::Elf_WXword v)
|
||||
{ this->p_->ch_addralign = Convert<size, big_endian>::convert_host(v); }
|
||||
|
||||
void
|
||||
put_ch_reserved(Elf_Word);
|
||||
|
||||
private:
|
||||
internal::Chdr_data<size>* 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<int size, bool big_endian>
|
||||
|
@ -1,3 +1,9 @@
|
||||
2017-07-28 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
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 <hongjiu.lu@intel.com>
|
||||
|
||||
* mips.cc (Mips_relocate_functions): Add "llu" suffix to
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user