1 // elfcpp_internal.h -- internals for elfcpp -*- C++ -*-
3 // This is included by elfcpp.h, the external interface, but holds
4 // information which we want to keep private.
6 #ifndef ELFCPP_INTERNAL_H
7 #define ELFCPP_INTERNAL_H
15 // The ELF file header.
20 unsigned char e_ident
[EI_NIDENT
];
24 typename Elf_types
<size
>::Elf_Addr e_entry
;
25 typename Elf_types
<size
>::Elf_Off e_phoff
;
26 typename Elf_types
<size
>::Elf_Off e_shoff
;
36 // An ELF section header.
43 typename Elf_types
<size
>::Elf_WXword sh_flags
;
44 typename Elf_types
<size
>::Elf_Addr sh_addr
;
45 typename Elf_types
<size
>::Elf_Off sh_offset
;
46 typename Elf_types
<size
>::Elf_WXword sh_size
;
49 typename Elf_types
<size
>::Elf_WXword sh_addralign
;
50 typename Elf_types
<size
>::Elf_WXword sh_entsize
;
53 // An ELF segment header. We use template specialization for the
54 // 32-bit and 64-bit versions because the fields are in a different
64 Elf_types
<32>::Elf_Off p_offset
;
65 Elf_types
<32>::Elf_Addr p_vaddr
;
66 Elf_types
<32>::Elf_Addr p_paddr
;
78 Elf_types
<64>::Elf_Off p_offset
;
79 Elf_types
<64>::Elf_Addr p_vaddr
;
80 Elf_types
<64>::Elf_Addr p_paddr
;
86 // An ELF symbol table entry. We use template specialization for the
87 // 32-bit and 64-bit versions because the fields are in a different
97 Elf_types
<32>::Elf_Addr st_value
;
99 unsigned char st_info
;
100 unsigned char st_other
;
108 unsigned char st_info
;
109 unsigned char st_other
;
111 Elf_types
<64>::Elf_Addr st_value
;
115 // ELF relocation table entries.
120 typename Elf_types
<size
>::Elf_Addr r_offset
;
121 typename Elf_types
<size
>::Elf_WXword r_info
;
127 typename Elf_types
<size
>::Elf_Addr r_offset
;
128 typename Elf_types
<size
>::Elf_WXword r_info
;
129 typename Elf_types
<size
>::Elf_Swxword r_addend
;
132 // An entry in the ELF SHT_DYNAMIC section aka PT_DYNAMIC segment.
137 typename Elf_types
<size
>::Elf_Swxword d_tag
;
138 typename Elf_types
<size
>::Elf_WXword d_val
;
141 // An entry in a SHT_GNU_verdef section. This structure is the same
142 // in 32-bit and 64-bit ELF files.
146 // Version number of structure (VER_DEF_*).
148 // Bit flags (VER_FLG_*).
152 // Number of auxiliary Verdaux entries.
156 // Byte offset to first Verdaux entry.
158 // Byte offset to next Verdef entry.
162 // An auxiliary entry in a SHT_GNU_verdef section. This structure is
163 // the same in 32-bit and 64-bit ELF files.
167 // Offset in string table of version name.
169 // Byte offset to next Verdaux entry.
173 // An entry in a SHT_GNU_verneed section. This structure is the same
174 // in 32-bit and 64-bit ELF files.
178 // Version number of structure (VER_NEED_*).
180 // Number of auxiliary Vernaux entries.
182 // Offset in string table of library name.
184 // Byte offset to first Vernaux entry.
186 // Byt eoffset to next Verneed entry.
190 // An auxiliary entry in a SHT_GNU_verneed section. This structure is
191 // the same in 32-bit and 64-bit ELF files.
195 // Hash of dependency name.
197 // Bit flags (VER_FLG_*).
199 // Version index used in SHT_GNU_versym entries.
201 // Offset in string table of version name.
203 // Byte offset to next Vernaux entry.
207 } // End namespace internal.
209 } // End namespace elfcpp.
211 #endif // !defined(ELFCPP_INTERNAL_H)
This page took 0.042452 seconds and 5 git commands to generate.