| Zeile 1: | Zeile 1: | ||
| − | + | Das Executable and Linking Format(kurz ELF) ist ein Dateiformat für ausführbare Dateien. | |
| − | Es gibt 3 verschiedene Arten von | + | Es gibt 3 verschiedene Arten von ELF-Dateien: |
* executable | * executable | ||
* relocatable | * relocatable | ||
| Zeile 7: | Zeile 7: | ||
== Aufbau == | == Aufbau == | ||
| − | === | + | === ELF-Header === |
| − | Der | + | Der ELF-Header ist wie folgt aufgebaut. |
{| border="1" | {| border="1" | ||
| Zeile 15: | Zeile 15: | ||
| [[#e_ident | e_ident]] || 0x00 || 16 || Enthält Daten zur Identifikation | | [[#e_ident | e_ident]] || 0x00 || 16 || Enthält Daten zur Identifikation | ||
|- | |- | ||
| − | | [[#e_type | e_type]] || 0x10 || 2 || Enthält den | + | | [[#e_type | e_type]] || 0x10 || 2 || Enthält den ELF-Typ |
|- | |- | ||
| [[#e_machine | e_machine]] || 0x12 || 2 || Beschreibt die benötigte Architektur | | [[#e_machine | e_machine]] || 0x12 || 2 || Beschreibt die benötigte Architektur | ||
| Zeile 29: | Zeile 29: | ||
| [[#e_flags | e_flags]] || 0x24 || 4 || Verschiedene Flags | | [[#e_flags | e_flags]] || 0x24 || 4 || Verschiedene Flags | ||
|- | |- | ||
| − | | [[#e_ehsize | e_ehsize]] || 0x28 || 2 || Größe des | + | | [[#e_ehsize | e_ehsize]] || 0x28 || 2 || Größe des ELF-Headers |
|- | |- | ||
| [[#e_phentsize | e_phentsize]] || 0x2A || 2 || Größe eines Eintrags im Programm-Header | | [[#e_phentsize | e_phentsize]] || 0x2A || 2 || Größe eines Eintrags im Programm-Header | ||
| Zeile 43: | Zeile 43: | ||
==== e_ident ==== | ==== e_ident ==== | ||
| − | Das Feld e_ident ist 16 Byte groß und enthält Werte zur Identifikation der | + | Das Feld e_ident ist 16 Byte groß und enthält Werte zur Identifikation der ELF-Datei. |
Dies sind die Indexes: | Dies sind die Indexes: | ||
{| border="1" | {| border="1" | ||
| Zeile 126: | Zeile 126: | ||
==== e_type ==== | ==== e_type ==== | ||
| − | Dieses Feld beschreibt, welches | + | Dieses Feld beschreibt, welches ELF-Format benutzt wird: |
{| border="1" | {| border="1" | ||
! Name || Wert || Beschreibung | ! Name || Wert || Beschreibung | ||
| Zeile 144: | Zeile 144: | ||
| ET_HIPROC || 0x00ff || Kein Typ | | ET_HIPROC || 0x00ff || Kein Typ | ||
|} | |} | ||
| − | Für eine ausführbare | + | Für eine ausführbare ELF-Datei, müsste hier ET_EXEC stehen. |
==== e_machine ==== | ==== e_machine ==== | ||
| Zeile 169: | Zeile 169: | ||
==== e_version ==== | ==== e_version ==== | ||
| − | Beschreibt die Aktuelle | + | Beschreibt die Aktuelle ELF-Version |
{| border="1" | {| border="1" | ||
! Name || Wert || Beschreibung | ! Name || Wert || Beschreibung | ||
| Zeile 191: | Zeile 191: | ||
==== e_ehsize ==== | ==== e_ehsize ==== | ||
| − | Größe des | + | Größe des ELF-Headers. |
==== e_phentsize ==== | ==== e_phentsize ==== | ||
| Zeile 232: | Zeile 232: | ||
==== p_type ==== | ==== p_type ==== | ||
| − | Dieses Feld gibt den Typ des Segments an, für eine ausführbare | + | Dieses Feld gibt den Typ des Segments an, für eine ausführbare ELF-Datei ist vor allem PT_LOAD relevant. |
Die folgenden Beschreibungen sind auf PT_LOAD bezogen (es kann sein, dass sie auch auf andere Typen zutreffen). | Die folgenden Beschreibungen sind auf PT_LOAD bezogen (es kann sein, dass sie auch auf andere Typen zutreffen). | ||
| Zeile 315: | Zeile 315: | ||
= Links = | = Links = | ||
| − | * [http://www.acm.uiuc.edu/sigops/rsrc/pfmt11.pdf | + | * [http://www.acm.uiuc.edu/sigops/rsrc/pfmt11.pdf ELF für x86] |
[[Category:Dateityp]] | [[Category:Dateityp]] | ||