Executable and Linkable Format

Executable and Linking Format (ELF, pôvodne nazývaný Extensible Linking Format) je spoločný štandardný súborový formát pre spúštateľné súbory, objektový kód, zdieľané knižnice a core dumpy. Prvýkrát publikovaný v špecifikácii aplikačného binárneho rozhrania System V a neskôr v Tool Interface Standard, bol rýchlo prijatý medzi rôznymi dodávateľmi Unix systémov. V roku 1999 bol zvolený ako štandardný binárny súborový formát pre Unix a systémy na báze Unixu projektom 86open.

ELF
Prípona súboružiadna, .o, .so
TvorcaUnix System Laboratories

V dnešnej dobe ELF formát nahradil formáty spúšťateľných súborov ako sú a.out a COFF v operačných systémoch Linux, Solaris, IRIX, FreeBSD, NetBSD a OpenBSD (DragonFly BSD bol odštiepený od FreeBSD po prechode na ELF). Pretože iné formáty sú proprietárne, platformovo-špecifické alebo menej rozširovateľné než ELF, tak sú niektorí užívatelia presvedčení, že ELF prekonáva ostatné formáty, iní užívatelia ho zas môžu považovať za konkurenciu ostatných formátov. ELF je tiež použitý v operačnom systéme OpenVMS nevychádzajúcom z UNIXu v jeho verzii pre Itanium procesor, rovnako aj nahrádza Portable Executable na systéme BeOS Revision 4 a neskorších pre x86 počítače (PPC verzia zostala pri formáte Preferred Executable Format a nikdy nepoužívala Portable Executable), ktorý rovnako nie je založený na UNIXe. PlayStation Portable, PlayStation 2 a PlayStation 3 konzoly taktiež používajú ELF ako ich spúštateľný súborový formát.

Rozloženie súboru ELF

upraviť

Každý ELF súbor sa skladá z jednej ELF hlavičky, nasledovanej súborovými dátami. Súborové dáta môžu obsahovať:

  • Hlavičku tabuľky programu, popisujúcu nulu alebo viacero segmentov
  • Hlavičku tabuľky sekcie, popisujúcu nulu alebo viacero sekcií
  • Údaje odkazované položkami z hlavičky tabuľky programu alebo sekcie

Segmenty obsahujú informácie, ktoré sú nutné pre beh programového súboru a sekcie obsahujú dôležité údaje pre linkovanie a relokáciu. Každý bajt v celom súbore je zahrnutý v maximálne jednej sekcií naraz, ale v súbore sa môžu nachádzať aj bajty-siroty, ktoré nie sú pokryté žiadnou sekciou. V normálnom prípade Unixového spúšťateľného súboru je jedna alebo viac sekcií zahrnutá v jednom segmente.

Nástroje

upraviť
  • readelf je Unixová binárna utilita, ktorá zobrazuje informácie o jednom alebo viacerých ELF súboroch. GPL implementácia je poskytnutá v GNU Binutils.
  • elfdump je príkaz v Solarise na prezeranie informácií v ELF súbore.
  • objdump poskytuje široký rozsah informácií o ELF súboroch a iných objektových formátoch.

Pozri aj

upraviť

Externé odkazy

upraviť