diff options
Diffstat (limited to 'elfcpp')
-rw-r--r-- | elfcpp/ChangeLog | 7 | ||||
-rw-r--r-- | elfcpp/elfcpp.h | 2 | ||||
-rw-r--r-- | elfcpp/elfcpp_internal.h | 20 |
3 files changed, 24 insertions, 5 deletions
diff --git a/elfcpp/ChangeLog b/elfcpp/ChangeLog index 3342ac9..042d86e 100644 --- a/elfcpp/ChangeLog +++ b/elfcpp/ChangeLog @@ -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. diff --git a/elfcpp/elfcpp.h b/elfcpp/elfcpp.h index 722984e..70380a5 100644 --- a/elfcpp/elfcpp.h +++ b/elfcpp/elfcpp.h @@ -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); } diff --git a/elfcpp/elfcpp_internal.h b/elfcpp/elfcpp_internal.h index 424a1f6..6f9dd48 100644 --- a/elfcpp/elfcpp_internal.h +++ b/elfcpp/elfcpp_internal.h @@ -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> +{ + Elf_Word ch_type; + Elf_Word ch_size; + Elf_Word ch_addralign; +}; + +template<> +struct Chdr_data<64> { - 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_reserved; + Elf_Xword ch_size; + Elf_Xword ch_addralign; }; // An ELF segment header. We use template specialization for the |