123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285 |
-
- #ifndef ELFCPP_INTERNAL_H
- #define ELFCPP_INTERNAL_H
- namespace elfcpp
- {
- namespace internal
- {
- template<int size>
- struct Ehdr_data
- {
- unsigned char e_ident[EI_NIDENT];
- Elf_Half e_type;
- Elf_Half e_machine;
- Elf_Word e_version;
- typename Elf_types<size>::Elf_Addr e_entry;
- typename Elf_types<size>::Elf_Off e_phoff;
- typename Elf_types<size>::Elf_Off e_shoff;
- Elf_Word e_flags;
- Elf_Half e_ehsize;
- Elf_Half e_phentsize;
- Elf_Half e_phnum;
- Elf_Half e_shentsize;
- Elf_Half e_shnum;
- Elf_Half e_shstrndx;
- };
- template<int size>
- struct Shdr_data
- {
- Elf_Word sh_name;
- Elf_Word sh_type;
- typename Elf_types<size>::Elf_WXword sh_flags;
- typename Elf_types<size>::Elf_Addr sh_addr;
- typename Elf_types<size>::Elf_Off sh_offset;
- typename Elf_types<size>::Elf_WXword sh_size;
- Elf_Word sh_link;
- Elf_Word sh_info;
- typename Elf_types<size>::Elf_WXword sh_addralign;
- typename Elf_types<size>::Elf_WXword sh_entsize;
- };
- template<int size>
- 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>
- {
- Elf_Word ch_type;
- Elf_Word ch_reserved;
- Elf_Xword ch_size;
- Elf_Xword ch_addralign;
- };
- 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;
- };
- template<int size>
- struct Sym_data;
- template<>
- struct Sym_data<32>
- {
- Elf_Word st_name;
- Elf_types<32>::Elf_Addr st_value;
- Elf_Word st_size;
- unsigned char st_info;
- unsigned char st_other;
- Elf_Half st_shndx;
- };
- template<>
- struct Sym_data<64>
- {
- Elf_Word st_name;
- unsigned char st_info;
- unsigned char st_other;
- Elf_Half st_shndx;
- Elf_types<64>::Elf_Addr st_value;
- Elf_Xword st_size;
- };
- template<int size>
- struct Rel_data
- {
- typename Elf_types<size>::Elf_Addr r_offset;
- typename Elf_types<size>::Elf_WXword r_info;
- };
- template<int size>
- struct Rela_data
- {
- typename Elf_types<size>::Elf_Addr r_offset;
- typename Elf_types<size>::Elf_WXword r_info;
- typename Elf_types<size>::Elf_Swxword r_addend;
- };
- struct Mips64_rel_data
- {
- Elf_types<64>::Elf_Addr r_offset;
- Elf_Word r_sym;
- unsigned char r_ssym;
- unsigned char r_type3;
- unsigned char r_type2;
- unsigned char r_type;
- };
- struct Mips64_rela_data
- {
- Elf_types<64>::Elf_Addr r_offset;
- Elf_Word r_sym;
- unsigned char r_ssym;
- unsigned char r_type3;
- unsigned char r_type2;
- unsigned char r_type;
- Elf_types<64>::Elf_Swxword r_addend;
- };
- template<int size>
- struct Dyn_data
- {
- typename Elf_types<size>::Elf_Swxword d_tag;
- typename Elf_types<size>::Elf_WXword d_val;
- };
- struct Verdef_data
- {
-
- Elf_Half vd_version;
-
- Elf_Half vd_flags;
-
- Elf_Half vd_ndx;
-
- Elf_Half vd_cnt;
-
- Elf_Word vd_hash;
-
- Elf_Word vd_aux;
-
- Elf_Word vd_next;
- };
- struct Verdaux_data
- {
-
- Elf_Word vda_name;
-
- Elf_Word vda_next;
- };
- struct Verneed_data
- {
-
- Elf_Half vn_version;
-
- Elf_Half vn_cnt;
-
- Elf_Word vn_file;
-
- Elf_Word vn_aux;
-
- Elf_Word vn_next;
- };
- struct Vernaux_data
- {
-
- Elf_Word vna_hash;
-
- Elf_Half vna_flags;
-
- Elf_Half vna_other;
-
- Elf_Word vna_name;
-
- Elf_Word vna_next;
- };
- }
- }
- #endif
|