Change ch_type to Elf_Word in struct Chdr_data<64>

The ch_type field in struct Chdr_data<64>  is 4 bytes, followed by a
4-byte padding.  This change doesn't introduce any functional change
since only the lower 32 bits of the ch_type field are used.

	PR gold/19060
	* elfcpp.h (Chdr::get_ch_type): Change return type to Elf_Word.
	* elfcpp_internal.h (Chdr_data<64>): Change ch_type to 4 bytes
	and add ch_reserved.
This commit is contained in:
H.J. Lu 2015-10-04 06:14:13 -07:00
parent 73e5465df5
commit 9706b5e627
3 changed files with 24 additions and 5 deletions

View File

@ -1,3 +1,10 @@
2015-10-02 H.J. Lu <hongjiu.lu@intel.com>
PR gold/19060
* elfcpp.h (Chdr::get_ch_type): Change return type to Elf_Word.
* elfcpp_internal.h (Chdr_data<64>): Change ch_type to 4 bytes
and add ch_reserved.
2015-04-08 H.J. Lu <hongjiu.lu@intel.com>
* elfcpp.h (Elf_sizes): Add chdr_size.

View File

@ -1302,7 +1302,7 @@ class Chdr
file->view(loc.file_offset, loc.data_size).data()))
{ }
typename Elf_types<size>::Elf_WXword
Elf_Word
get_ch_type() const
{ return Convert<size, big_endian>::convert_host(this->p_->ch_type); }

View File

@ -82,11 +82,23 @@ struct Shdr_data
// An ELF compression header.
template<int size>
struct Chdr_data
struct Chdr_data;
template<>
struct Chdr_data<32>
{
typename Elf_types<size>::Elf_WXword ch_type;
typename Elf_types<size>::Elf_WXword ch_size;
typename Elf_types<size>::Elf_WXword ch_addralign;
Elf_Word ch_type;
Elf_Word ch_size;
Elf_Word ch_addralign;
};
template<>
struct Chdr_data<64>
{
Elf_Word ch_type;
Elf_Word ch_reserved;
Elf_Xword ch_size;
Elf_Xword ch_addralign;
};
// An ELF segment header. We use template specialization for the