/* 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 */