AccueilđŸ‡«đŸ‡·Chercher

Executable and Linkable Format

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.

ELF
Executable and Linkable Format
DĂ©composition d'un fichier ELF
Caractéristiques
Extensions
-, .axf, .bin, .elf, .o, .prx, .so, .exe
PUID
Signature
7F 45 4C 46 (hexa)
Développé par
Unix System Laboratories (en)
Type de format
Spécification

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 champValeur
Identification
IndiceValeur
0 - Nombre Magique0x7f
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) Standalone
8 - Version ABI
9-15 Bourrage0
16 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)
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écifique 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

Comparaison avec d'autres systĂšmes d'exploitation

Les structures Ă©quivalentes sont :

Notes et références

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.