Přeskočit na obsah

Executable and Linkable Format

Z Wikipedie, otevřené encyklopedie

Executable and Linkable Format (zkratka ELF) je v informatice standardní souborový formát pro uložení spustitelných souborů, linkovatelných objektů, dynamických (sdílených) knihoven a ladících výpisů (core dumps). ELF formát je poměrně rozšířený, v současnosti ho využívají operační systémy jako Linux, Solaris, IRIX, FreeBSD, NetBSD, OpenBSD a další. ELF formát se také objevuje u konzolí (PlayStation 2, PlayStation Portable a PlayStation 3) Formát byl původně vyvinut v Unix System Laboratories pro operační systém UNIX System V.

Nasazení

V současnosti formát ELF nahradil formáty spustitelných souborů jako jsou a.out nebo COFF. Protože jiné formáty jsou závislé na platformě nebo méně rozšiřitelné než ELF, jsou někteří uživatelé přesvědčení, že ELF překonává jiné formáty. Mimo unixové systémy je ELF použit v operačním systému OpenVMS ve verzi pro Itanium procesor nebo v systému BeOS Revision 4, kde nahrazuje PE formát (Portable Executable) na starších x86 počítačích (PPC verze zůstala při formátu Preferred Executable Format a nikdy nepoužívala PE).

Popis formátu ELF

Soubor ELF obsahuje hlavičku následovanou žádným, jedním nebo více segmenty a žádnou, jednou nebo více sekcí. Segmenty obsahují informace nutné pro běh programového kódu, sekce obsahují informace pro linker (spojování) a relokace (přepočet adresy) objektů, které jsou umístěny v operační paměti počítače. Jednotlivé segmenty a sekce jsou uvedeny v tabulce hlavičky ELF souboru.

Každý ELF soubor se tedy skládá z jedné ELF hlavičky následované souborovými daty. Souborová data mohou obsahovat:

  • hlavičku tabulky programu, popisující žádný nebo více segmentů
  • hlavičku tabulky sekce, popisující žádný nebo více sekcí
  • údaje odkazované položkami z hlavičky tabulky programu nebo sekce

Každý byte v celém souboru je zahrnutý v maximálně jedné sekci najednou, ale v souboru se mohou nacházet také bajty-sirotci, které nejsou zahrnuty do žádné sekce. V typickém případě unixového spustitelného souboru je jedna nebo více sekcí zahrnutá v jednom segmentu.

Nástroje

  • readelf je Unixová binární utilita, která zobrazuje informace o jednom nebo více ELF souborech; GNU implementace pochází z GNU Binutils
  • elfdump je příkaz v Solarisu na prohlížení informací v ELF souboru
  • objdump poskytuje široký rozsah informací o ELF souborech a jiných objektových formátech

ELF v operačních systémech

Formát ELF nahradil některé starší spustitelné soubory v různých aplikačních prostředích. Je využíván v těchto operačních systémech:

V úvodu zmíněných herních konzolích. Dále je používán u některých operačních systémů pro mobilní zařízení. Například:

FatELF

FatELF je rozšířením binárního formátu ELF, který umožňuje, aby spustitelný soubor obsahoval kód pro různé počítačové platformy. Kromě oddělení architektury procesoru (pořadí bytů, velikost slova (32bitový nebo 64bitový), instrukční sady atd.) je potenciální výhodou oddělení softwarových platforem, např. soubory, které podporují několik verzí ABI jádra pro stejnou platformu.

Související články