Eksekverbart og linkbart format
| NISSE | ||
|---|---|---|
|
Lag af en ELF-fil | ||
| Udvikler | ||
| Unix System Laboratories | ||
| Generel information | ||
| filtypenavn |
none, .axf, .bin, .o, .so, .elf, .prx, .puff, .ko, .mod | |
| magiske tal |
0x7F 'E' 'L' 'F' | |
| formattype | Binær , eksekverbar , objekt , delt bibliotek , kernedump | |
| indhold af | Nogle binære eksekverbare formater | |
| åbent format | ? | |
Inden for databehandling er Extensible Linkable Format ( ELF , tidligere kaldet Extensible Linking Format ) , et almindeligt standardfilformat for eksekverbare filer , objektkode , delte biblioteker og kernedumps . Først offentliggjort i specifikationen for Application Binary Interface (ABI) af versionen af Unix -operativsystemet kaldet System V Release 4 (SVR4), og senere i Tool Interface Standard, blev det hurtigt accepteret blandt forskellige systemleverandører.Unix . I 1999 blev det valgt som standard binært filformat for Unix og Unix-lignende systemer på x86 - processorer af 86open- projektet .
Designet er ELF-formatet fleksibelt, kan udvides og på tværs af platforme . For eksempel understøtter det forskellige endianness og adressestørrelser, så det udelukker ikke nogen central processing unit (CPU) eller instruktionssætarkitektur . Dette har gjort det muligt at anvende det af mange forskellige operativsystemer på mange forskellige hardwareplatforme .
— Eksempel på hex-dump af en ELF-filheader [ 1 ]
|
Struktur
Inden for ELF-formatet kan vi skelne flere dele. [ 2 ]
Først ELF-headeren, som indeholder generel information om den eksekverbare. Den angiver placeringen af sektionshoved- og programhovedtabellerne.
Hver af disse overskrifter angiver, hvor dataene for hver af sektionerne er placeret. Programoverskrifterne definerer de eksekverbare regioner eller biblioteker , der skal indlæses for at skabe procesbilledet og starte dets eksekvering. Sektionsoverskrifter indeholder vigtig information til tilknytning og flytning.
Sektionerne har navne, der generelt er ens på alle systemer. Eksempler på afsnit er:
.data Indeholder initialiserede programdata.
.debug Indeholder information til at hjælpe med fejlfinding .
.ctors Indeholder pointere til C++-konstruktører.
.dtors Indeholder pointere til C++-destruktorer.
.dynamic Indeholder oplysninger, der er relevante for dynamiske links.
.dynsym Indeholder symboltabellen for dynamiske links.
.fini Indeholder programafslutningskode.
.init Indeholder programinitieringskode.
.shstrtab Indeholder en strengtabel med navnene på sektionerne.
.strtab Indeholder en tabel med strenge, der normalt bruges til at navngive elementerne i symboltabellen.
.symtab Indeholder en symboltabel.
.text Indeholder den eksekverbare del af et program.
Værktøjer
readelfer et UNIX-program, der viser information om en ELF-fil.
Det er implementeret under GPL-licensen i GNU Binary Utilities .
Se også
- Tillæg: Sammenligning af eksekverbare filformater
- DWARF – et format til fejlretning af data
Referencer
- ^ "Tilgængelige lexers - Pygmenter" .
- ^ Boelen, Michael (1. juli 2018). "De 101 af ELF-filer på Linux: Forståelse og analyse" (html) . Linux revision . Arkiveret fra originalen den 28. april 2019 . Hentet 16. maj 2019 . "En almindelig misforståelse er, at ELF-filer kun er til binære filer eller eksekverbare filer. Vi har allerede set, at de kan bruges til delstykker (objektkode). Et andet eksempel er delte biblioteker eller endda core-dumps (disse kerne- eller a.out-filer). ELF-specifikationen bruges også på Linux til selve kernen og Linux-kernemoduler. »