Executable and Linkable Format
Executable and Linkable Format
| Extensions |
-, .axf, .bin, .elf, .o, .prx, .so |
|---|---|
| PUID | |
| Signature | 7F 45 4C 46 (hexa) |
| Développé par |
Unix System Laboratories (en) |
| Type de format |
Format de fichier exécutable |
| Spécification |
ELF (Executable and Linkable Format, format exécutable et liable ; anciennement Executable and Linking Format) 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 (Unix System Laboratories) 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 informations[1].
Entête d'un fichier ELF
L'entête d'un fichier ELF adopte le format suivant[2]:
| Nom du champ | Valeur | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Identification |
| ||||||||||||||||||||||||
| Type de fichier (16 Bits) |
| ||||||||||||||||||||||||
| Machine cible (16 Bits) |
| ||||||||||||||||||||||||
| Version (32 bits) |
| ||||||||||||||||||||||||
| 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:
| Section | Utilité |
|---|---|
| .text | Contient le code principal |
| .bss | Contient les données non initialisées (équivalent à des variables déclarées mais non affectées) |
| .data | Contient les données utiles au programme |
| .rodata | Contient 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 (Portable Executable) ;
- sous Mac OS, avant la version X : PEF (Preferred Executable Format), voir (en) Preferred Executable Format ;
- sous Mac OS X : Mach-O[3].
Notes et références
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.