summaryrefslogtreecommitdiff
path: root/elfcpp/elfcpp_internal.h
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2006-09-25 21:29:06 +0000
committerIan Lance Taylor <iant@google.com>2006-09-25 21:29:06 +0000
commita958010ab994814159069f89766a61fd32471a0b (patch)
tree5067fc9c33958226fb948d7dca44b1f3113ebc42 /elfcpp/elfcpp_internal.h
parent084cf66a0c83d3de585dab09e6792e65dd6b0b91 (diff)
downloadbinutils-redhat-a958010ab994814159069f89766a61fd32471a0b.tar.gz
Add program segments.
Diffstat (limited to 'elfcpp/elfcpp_internal.h')
-rw-r--r--elfcpp/elfcpp_internal.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/elfcpp/elfcpp_internal.h b/elfcpp/elfcpp_internal.h
index f4dd8bd519..696343a805 100644
--- a/elfcpp/elfcpp_internal.h
+++ b/elfcpp/elfcpp_internal.h
@@ -202,6 +202,39 @@ struct Shdr_data
typename Elf_types<size>::Elf_WXword sh_entsize;
};
+// An ELF segment header. We use template specialization for the
+// 32-bit and 64-bit versions because the fields are in a different
+// order.
+
+template<int size>
+struct Phdr_data;
+
+template<>
+struct Phdr_data<32>
+{
+ Elf_Word p_type;
+ Elf_types<32>::Elf_Off p_offset;
+ Elf_types<32>::Elf_Addr p_vaddr;
+ Elf_types<32>::Elf_Addr p_paddr;
+ Elf_Word p_filesz;
+ Elf_Word p_memsz;
+ Elf_Word p_flags;
+ Elf_Word p_align;
+};
+
+template<>
+struct Phdr_data<64>
+{
+ Elf_Word p_type;
+ Elf_Word p_flags;
+ Elf_types<64>::Elf_Off p_offset;
+ Elf_types<64>::Elf_Addr p_vaddr;
+ Elf_types<64>::Elf_Addr p_paddr;
+ Elf_Xword p_filesz;
+ Elf_Xword p_memsz;
+ Elf_Xword p_align;
+};
+
// An ELF symbol table entry. We use template specialization for the
// 32-bit and 64-bit versions because the fields are in a different
// order.