summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--elfcpp/ChangeLog7
-rw-r--r--elfcpp/elfcpp.h2
-rw-r--r--elfcpp/elfcpp_internal.h20
3 files changed, 24 insertions, 5 deletions
diff --git a/elfcpp/ChangeLog b/elfcpp/ChangeLog
index 3342ac94543..042d86ecbb2 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 722984e5452..70380a5a32a 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 424a1f6f713..6f9dd4887a2 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