Indice
Executable and linkable format
Executable and Linkable Format | |
---|---|
Struttura di un file ELF | |
Estensione | .bin, .elf, .o, .out, .so
|
Magic number | 0x7F 'E' 'L' 'F'
|
Sviluppatore | UNIX System Laboratories |
L'Executable and Linkable Format[1] (ELF, lett. Formato eseguibile e collegabile, precedentemente noto come Extensible Linking Format) è un formato di file standard per eseguibili, librerie condivise e core dump.
Pubblicato inizialmente nelle specifiche application binary interface di System V e poi in Tool Interface Standard, è stato quindi accettato da diversi produttori di sistemi Unix. Nel 1999 è stato scelto come formato standard dei file binari per i sistemi Unix e Unix-like su architettura x86 dal progetto 86open.
Storia
[modifica | modifica wikitesto]Il formato ELF ha rimpiazzato formati eseguibili come a.out e COFF in Linux, Solaris, IRIX e BSD, con l'eccezione di macOS che usa Mach-O. ELF è anche usato nella versione Itanium di OpenVMS, un sistema operativo non unix, e ha rimpiazzato il Preferred Executable Format su BeOS Revision 4 e successive su architetture x86, AmigaOS 4.0 e MorphOS su architettura PowerPC (BeOS su PowerPC utilizza ancora PEF), anch'essi non UNIX-based. Persino la PlayStation 2 e la PlayStation Portable usano ELF come loro formato per i file eseguibili.[senza fonte]
Layout di un file ELF
[modifica | modifica wikitesto]Ogni ELF file è formato da una intestazione ELF, seguita da zero o più segmenti e zero o più sezioni. I segmenti contengono informazioni necessarie per l'esecuzione del file, mentre le sezioni contengono dati importanti per il linking e la relocation. Ogni byte nell'intero file è associato a non più di una sezione per volta ma ci possono essere byte orfani, non coperti da una sezione. Nel caso normale di un eseguibile Unix, una o più sezioni sono incluse in un segmento. I segmenti e le sezioni del file sono elencate rispettivamente in una tabella nell'intestazione del programma e in una tabella nell'intestazione della sezione.
Su molti sistemi Unix, il comando man elf
può dare più dettagli.
Strumenti
[modifica | modifica wikitesto]readelf
è una utility che mostra informazioni su uno o più file ELF. Un'implementazione GPL è fornita da GNU Binutils.elfdump
è un comando di Solaris per mostrare informazioni su un file ELF.
Note
[modifica | modifica wikitesto]- ^ (EN) TIS Committee, Tool Interface Standard (TIS) Portable Formats Specification Version 1.1 (PDF), ottobre 1993, p. i. URL consultato il 20 settembre 2023.
Bibliografia
[modifica | modifica wikitesto]- (EN) TIS Committee, Tool Interface Standard (TIS) Executable and Linking Format (ELF) Specification Version 1.2 (PDF), maggio 1995. URL consultato il 20 settembre 2023.
- (EN) Object Files (PDF), in System V Application Binary Interface, Edition 4.1, 18 marzo 1997. URL consultato il 20 settembre 2023.
Voci correlate
[modifica | modifica wikitesto]Collegamenti esterni
[modifica | modifica wikitesto]- (EN) The elfutils project, su Sourceware. URL consultato il 20 settembre 2023.
- (EN) NetBSD ELF FAQ, su NetBSD. URL consultato il 20 settembre 2023.