ELF (, format exécutable et liable ; anciennement ) est un format de fichier binaire utilisé pour l'enregistrement de code compilé (objets, exécutables, bibliothèques de fonctions). Il a été développé par l’USL () pour remplacer les anciens formats a.out et COFF qui avaient atteint leurs limites. Aujourd'hui, ce format est utilisé dans la plupart des systèmes d'exploitation de type Unix (GNU/Linux, Solaris, IRIX, System V, BSD), à l'exception de Mac OS X.

Le format de fichier ELF

Chaque fichier ELF est constitué d'un en-tête fixe, puis de segments et de sections. Les segments contiennent les informations nécessaires à l'exécution du programme contenu dans le fichier, alors que les sections contiennent les informations pour la résolution des liens entre fonctions et le replacement des données. Sur la plupart des systèmes Unix, la commande man elf donnera de plus amples informationsPage de manuel « elf »..

Entête d'un fichier ELF L'entête d'un fichier ELF adopte le format suivantHeader ELF dans la documentation d'ORACLE.: Nom du champ Valeur Identification Indice Valeur 0 - Nombre Magique 0x7f 1 - Nombre Magique 'E' 2 - Nombre Magique 'L' 3 - Nombre Magique 'F' 4 - 64Bits ou 32Bits (0) Aucun (1) 32Bits (2) 64Bits 5 - Endianness (0) Aucun (1) LSB (2) MSB 6 - Version du format de l'entête 7 - ABI (0) UNIX System V (1) HP-UX (2) NetBSD (3) Linux (6) Sun Solaris (7) IBM AIX (8) SGI Irix (9) FreeBSD (10) Compaq TRU64 (11) Novell Modesto (12) OpenBSD (64) ARM EABI (97) ARM (255) Standalone8 - Version ABI9-15 Bourrage 016 Taille du champ "Identification" Type de fichier (16 Bits) (0) Aucun (1) Repositionable (2) Executable (3) Objet partagé (4) Fichier Core Machine cible (16 Bits) (0) Aucune (2) SPARC (3) Intel 80386 (4) Motorola 68000 (7) Intel i860 (8) MIPS I (19) Intel i960 (20) PowerPC (40) ARM (50) Intel IA64 (62) x64 (243) RISC-V Version (32 bits) (0) Aucune (1) Version actuelle Point d'entrée (32 Bits ou 64 Bits) (0) si aucun point d'entrée Offset (en octets) de la table contenant l'entête de programme (32 Bits ou 64 Bits) Offset (en octets) de la table des entêtes de sections (32 Bits ou 64 Bits) Drapeaux spécifiques au processeur (32 Bits) Taille (en octets) de l'entête ELF (16 Bits) Taille (en octets) d'une entrée dans la table contenant l'entête de programme (16 Bits) Nombre d'entrées dans la table contenant l'entête de programme (16 Bits) Taille (en octets) d'une entrée dans la table des entêtes de sections (16 Bits) Nombre d'entrées dans la table des entêtes de sections (16 Bits) Indice dans la table des entêtes de sections de l'entrée associée à la table contenant les noms des sections (16 Bits) (0) si non défini

La Structure D'un Fichier ELF Comme beaucoup d'autres formats éxécutables (comme PE), les fichiers ELF sont organisés en sections. Ces sections sont les suivantes: +SectionUtilité.textContient le code principal.bssContient les données non initialisées (équivalent à des variables déclarées mais non affectées).dataContient les données utiles au programme.rodataContient les données en lecture seule (impossible à modifier, même au cours du programme)

Comparaison avec d'autres systèmes d'exploitation Les structures équivalentes sont : sous Windows : format PE () ; sous Mac OS, avant la version X : PEF (), voir ; sous Mac OS X : Mach-OMach-O, sur le site pour développeurs d'Apple..

Notes et références

Catégorie:Fichier exécutable