TacOS
0.2
|
Bibliothèque destinée à manipuler les fichiers exécutables ELF. Plus de détails...
Aller au code source de ce fichier.
Structures de données | |
struct | Elf32_Ehdr |
struct | Elf32_Phdr |
struct | Elf32_Shdr |
struct | Elf32_Sym |
struct | Elf32_Rel |
struct | Elf32_Rela |
struct | Elf32_File |
Structure qui caractérise un binaire elf. Plus de détails... | |
Macros | |
#define | EI_NIDENT 16 |
#define | EI_MAG0 0 |
#define | EI_MAG1 1 |
#define | EI_MAG2 2 |
#define | EI_MAG3 3 |
#define | EI_CLASS 4 |
#define | ELFCLASSNONE 0 |
#define | ELFCLASS32 1 |
#define | ELFCLASS64 2 |
#define | EI_DATA 5 |
#define | ELFDATANONE 0 |
#define | ELFDATA2LSB 1 |
#define | ELFDATA2MSB 2 |
#define | EI_VERSION 6 |
#define | EI_PAD 7 |
#define | ET_NONE 0 |
#define | ET_REL 1 |
#define | ET_EXE 2 |
#define | ET_DYN 3 |
#define | ET_CORE 4 |
#define | ET_LOPROC 0xff00 |
#define | ET_HIPROC 0xffff |
#define | EM_NONE 0 |
#define | EM_M32 1 |
#define | EM_SPARC 2 |
#define | EM_386 3 |
#define | EM_68K 4 |
#define | EM_88K 5 |
#define | EM_860 7 |
#define | EM_MIPS 8 |
#define | EV_NONE 0 |
#define | EV_CURRENT 1 |
#define | SHN_UNDEF 0 |
#define | SHN_LORESERVE 0xff00 |
#define | SHN_LOPROC 0xff00 |
#define | SHN_HIPROC 0xff1f |
#define | SHN_ABS 0xfff1 |
#define | SHN_COMMON 0xfff2 |
#define | SHN_HIRESERVE 0xffff |
#define | PT_NULL 0 |
#define | PT_LOAD 1 |
#define | PT_DYNAMIC 2 |
#define | PT_INTERP 3 |
#define | PT_NOTE 4 |
#define | PT_SHLIB 5 |
#define | PT_PHDR 6 |
#define | PT_LOPROC 0x7000000 |
#define | PT_HIPROC 0x7FFFFFF |
#define | PF_X 0x1 |
#define | PF_W 0x2 |
#define | PF_R 0x4 |
#define | SHT_NULL 0 |
#define | SHT_PROGBITS 1 |
#define | SHT_SYMTAB 2 |
#define | SHT_STRTAB 3 |
#define | SHT_RELA 4 |
#define | SHT_HASH 5 |
#define | SHT_DYNAMIC 6 |
#define | SHT_NOTE 7 |
#define | SHT_NOBITS 8 |
#define | SHT_REL 9 |
#define | SHT_SHLIB 10 |
#define | SHT_DYNSYM 11 |
#define | SHT_LOPROC 0x70000000 |
#define | SHT_HIPROC 0x7fffffff |
#define | SHT_LOUSER 0x80000000 |
#define | SHT_HIUSER 0x8fffffff |
#define | SHF_WRITE 1 |
#define | SHF_ALLOC 2 |
#define | SHF_EXECINSTR 4 |
#define | SHF_MASKPROC 0xf0000000 |
#define | ELF32_ST_BIND(i) ((i)>>4) |
#define | ELF32_ST_TYPE(i) ((i)&0xf) |
#define | ELF32_ST_INFO(b, t) (((b)<<4)+((t)&0xf)) |
#define | STB_LOCAL 0 |
#define | STB_GLOBAL 1 |
#define | STB_WEAK 2 |
#define | STB_LOPROC 13 |
#define | STB_HIPROC 15 |
#define | STT_NOTYPE 0 |
#define | STT_OBJECT 1 |
#define | STT_FUNC 2 |
#define | STT_SECTION 3 |
#define | STT_FILE 4 |
#define | STT_LOPROC 13 |
#define | STT_HIPROC 15 |
#define | ELF32_R_SYM(i) ((i)>>8) |
#define | ELF32_R_TYPE(i) ((unsigned char)(i)) |
#define | ELF32_R_INFO(s, t) (((s)<<8)+(unsigned char)(t)) |
#define | R_386_NONE 0 |
#define | R_386_32 1 |
#define | R_386_PC32 2 |
#define | R_386_GOT32 3 |
#define | R_386_PLT32 4 |
#define | R_386_COPY 5 |
#define | R_386_GLOB_DAT 6 |
#define | R_386_JMP_SLOT 7 |
#define | R_386_RELATIVE 8 |
#define | R_386_GOTOFF 9 |
#define | R_386_GOTPC 10 |
Fonctions | |
int | load_efl_header (Elf32_Ehdr *elf_header, int fd) |
charge le header principal d'un fichier elf Plus de détails... | |
int | load_program_header (Elf32_Phdr *program_header, Elf32_Ehdr *elf_header, int index, int fd) |
charge un program header depuis un fichier elf Charge le program header n°index depuis le fichier Plus de détails... | |
int | load_section_header (Elf32_Shdr *section_header, Elf32_Ehdr *elf_header, int index, int fd) |
charge un section header depuis un fichier elf Charge le section header n°index depuis le fichier Plus de détails... | |
unsigned long int | elf_size (int fd) |
Calcul la taille que prendra l'exécutable dans la mémoire La fonction évalue l'adresse de départ en mémoire, et l'adresse de fin, et retourne la différence (il n'est pas suffisant d'additionner les tailles des différentes sections) Plus de détails... | |
int | load_elf (int fd, void *dest) |
charge un fichier elf Charge les données utiles de l'exécutable en mémoire, de façon à ce que ce soit pret à exécuter Plus de détails... | |
Elf32_File * | load_elf_file (int fd) |
charge un fichier elf dans la structure Elf32_File Plus de détails... | |
Elf32_Sym * | find_symbol (Elf32_File *file, const char *symbol) |
Trouve un symbole dans un fichier. Plus de détails... | |
void | elf_info (char *name) |
Affiche des information sur le fichier elf. | |
Copyright (C) 2010, 2011, 2012 - TacOS developers.
This program 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.
This program 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 at http://www.gnu.org/copyleft/gpl.html
You should have received a copy of the GNU General Public License along with this program; if not, see http://www.gnu.org/licenses.
#define EI_MAG0 0 |
0x7F
#define EI_MAG1 1 |
'E'
#define EI_MAG2 2 |
'L'
#define EI_MAG3 3 |
'F'
#define ELFCLASS32 1 |
Objet 32-bits
#define ELFCLASS64 2 |
Objet 64-bits
#define ELFCLASSNONE 0 |
Classe invalide
#define ELFDATA2LSB 1 |
Big-endian
#define ELFDATA2MSB 2 |
Little-endian
#define ELFDATANONE 0 |
Encodage des données invalide
#define EM_386 3 |
Intel 80386
#define EM_68K 4 |
Motorola 68000
#define EM_860 7 |
Intel 80860
#define EM_88K 5 |
Motorola 88000
#define EM_M32 1 |
AT&T WE 32100
#define EM_MIPS 8 |
MIPS RS3000
#define EM_NONE 0 |
Aucune architecture spécifiée
#define EM_SPARC 2 |
SPARC
#define ET_CORE 4 |
Core file
#define ET_DYN 3 |
Shared object file
#define ET_EXE 2 |
Executable file
#define ET_HIPROC 0xffff |
Processor-specific
#define ET_LOPROC 0xff00 |
Processor-specific
#define ET_NONE 0 |
No type
#define ET_REL 1 |
Relocatable file
#define PT_DYNAMIC 2 |
Dynamic linking information
#define PT_HIPROC 0x7FFFFFF |
Processor specific semantics
#define PT_INTERP 3 |
Pathname to an interpreter
#define PT_LOAD 1 |
Loadable segment
#define PT_LOPROC 0x7000000 |
Processor specific semantics
#define PT_NOTE 4 |
Auxiliary informations
#define PT_NULL 0 |
Unused element
#define PT_PHDR 6 |
Specifie location of the program header table itself
#define PT_SHLIB 5 |
No specified semantics
#define STB_GLOBAL 1 |
Visible par tous les objet combinés à celui ci
#define STB_LOCAL 0 |
Invisible hors du fichier objet contenant sa définition
#define STB_WEAK 2 |
Pareil que global, grosso modo, voir la doc pour avoir les nuances
#define STT_FUNC 2 |
Fonction ou code
#define STT_NOTYPE 0 |
Pas de type
#define STT_OBJECT 1 |
Données: variables, tableau, etc.
#define STT_SECTION 3 |
Le symbol est une fonction
unsigned long int elf_size | ( | int | fd | ) |
fd | descripteur du fichier elf |
Elf32_Sym* find_symbol | ( | Elf32_File * | file, |
const char * | symbol | ||
) |
file | Fichier dans lequel on recherche le symbole |
symbol | Symbole cherché |
int load_efl_header | ( | Elf32_Ehdr * | elf_header, |
int | fd | ||
) |
elf_header | adresse où l'on veut charger le header |
fd | descripteur du fichier à charger |
int load_elf | ( | int | fd, |
void * | dest | ||
) |
fd | descripteur du fichier à charger |
dest | adresse à laquelle il faut charger l'exécutable |
Elf32_File* load_elf_file | ( | int | fd | ) |
fd | File descriptor du fichier à charger. |
int load_program_header | ( | Elf32_Phdr * | program_header, |
Elf32_Ehdr * | elf_header, | ||
int | index, | ||
int | fd | ||
) |
program_header | adresse où l'on veut charger le header |
elf_header | header principal du fichier |
index | numero du program header à charger |
fd | descripteur du fichier à charger |
int load_section_header | ( | Elf32_Shdr * | section_header, |
Elf32_Ehdr * | elf_header, | ||
int | index, | ||
int | fd | ||
) |
section_header | adresse où l'on veut charger le header |
elf_header | header principal du fichier |
index | numero du section header à charger |
fd | descripteur du fichier à charger |