/* OpenIDA - Outil d'analyse de fichiers binaires * elf-int.h - prototypes pour les structures internes du format ELF * * Copyright (C) 2008 Cyrille Bagard * * This file is part of OpenIDA. * * OpenIDA is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * OpenIDA is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Foobar. If not, see . */ #ifndef _FORMAT_ELF_ELF_INT_H #define _FORMAT_ELF_ELF_INT_H #include #include #include "../exe_format-int.h" /* Symbole trouvé */ typedef struct _elf_symbol { const char *name; /* Désignation du symbole */ uint64_t address; /* Adresse du symbole */ } elf_symbol; /* Description du format ELF */ struct _elf_format { exe_format dummy; /* A laisser en premier */ Elf32_Ehdr header; /* En-tête du format */ bool is_32b; /* Format du binaire */ char *sec_names; /* Noms des sections */ size_t sec_size; /* Taille de ces définitions */ elf_symbol *symbols; /* Liste des symboles */ size_t sym_count; /* Taille de cette liste */ }; /* En-tête de section ELF */ typedef union _Elf_Shdr { Elf32_Shdr section32; /* Version 32 bits */ Elf64_Shdr section64; /* Version 64 bits */ } Elf_Shdr; #define ELF_SHDR(fmt, sec, fld) (fmt->is_32b ? sec.section32.fld : sec.section64.fld) /* En-tête de programme ELF */ typedef union _Elf_Phdr { Elf32_Phdr header32; /* Version 32 bits */ Elf64_Phdr header64; /* Version 64 bits */ } Elf_Phdr; #define ELF_PHDR(fmt, hdr, fld) (fmt->is_32b ? hdr.header32.fld : hdr.header64.fld) #endif /* _FORMAT_ELF_ELF_INT_H */