This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[elfcpp][PATCH] Change ch_type to Elf_Word in struct Chdr_data<64>
- From: "H.J. Lu" <hongjiu dot lu at intel dot com>
- To: binutils at sourceware dot org
- Cc: Cary Coutant <ccoutant at gmail dot com>
- Date: Mon, 21 Sep 2015 10:31:24 -0700
- Subject: [elfcpp][PATCH] Change ch_type to Elf_Word in struct Chdr_data<64>
- Authentication-results: sourceware.org; auth=none
- Reply-to: "H.J. Lu" <hjl dot tools at gmail dot com>
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.
OK for master?
H.J.
---
* 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.
---
elfcpp/elfcpp.h | 2 +-
elfcpp/elfcpp_internal.h | 20 ++++++++++++++++----
2 files changed, 17 insertions(+), 5 deletions(-)
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
--
2.4.3