TacOS  0.2
 Tout Structures de données Fichiers Fonctions Variables Définitions de type Énumérations Macros
Structures de données | Macros | Définitions de type | Fonctions
Référence du fichier elf.h

Bibliothèque destinée à manipuler les fichiers exécutables ELF. Plus de détails...

Ce graphe montre quels fichiers incluent directement ou indirectement ce fichier :

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
 

Définitions de type

typedef unsigned long int Elf32_Addr
 
typedef unsigned short int Elf32_Half
 
typedef unsigned long int Elf32_Off
 
typedef signed long int Elf32_Sword
 
typedef unsigned long int Elf32_Word
 

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_Fileload_elf_file (int fd)
 charge un fichier elf dans la structure Elf32_File Plus de détails...
 
Elf32_Symfind_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.
 

Description détaillée

Auteur
TacOS developers

LICENSE

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.

DESCRIPTION

Documentation des macros

#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

Documentation des fonctions

unsigned long int elf_size ( int  fd)
Paramètres
fddescripteur du fichier elf
Renvoie
taille prise initialement par l'exécutable en mémoire

Voici le graphe des appelants de cette fonction :

Elf32_Sym* find_symbol ( Elf32_File file,
const char *  symbol 
)
Paramètres
fileFichier dans lequel on recherche le symbole
symbolSymbole cherché
Renvoie
symbole recherché

Voici le graphe d'appel pour cette fonction :

int load_efl_header ( Elf32_Ehdr elf_header,
int  fd 
)
Paramètres
elf_headeradresse où l'on veut charger le header
fddescripteur du fichier à charger
Renvoie
1 si le fichier est bien un fichier elf valide, 0 sinon
int load_elf ( int  fd,
void *  dest 
)
Paramètres
fddescripteur du fichier à charger
destadresse à laquelle il faut charger l'exécutable
Renvoie
adresse du point d'entrée de l'exécutable

Voici le graphe des appelants de cette fonction :

Elf32_File* load_elf_file ( int  fd)
Paramètres
fdFile descriptor du fichier à charger.
Renvoie
pointeur vers une structure Elf32_file chargée, NULL en cas d'échec

Voici le graphe d'appel pour cette fonction :

Voici le graphe des appelants de cette fonction :

int load_program_header ( Elf32_Phdr program_header,
Elf32_Ehdr elf_header,
int  index,
int  fd 
)
Paramètres
program_headeradresse où l'on veut charger le header
elf_headerheader principal du fichier
indexnumero du program header à charger
fddescripteur du fichier à charger
Renvoie
0 si succès, -1 sinon
int load_section_header ( Elf32_Shdr section_header,
Elf32_Ehdr elf_header,
int  index,
int  fd 
)
Paramètres
section_headeradresse où l'on veut charger le header
elf_headerheader principal du fichier
indexnumero du section header à charger
fddescripteur du fichier à charger
Renvoie
0 si succès, -1 sinon