elf_xlate(3E) elf_xlate(3E)
NAME
elfxlate: elf32xlatetof, elf32xlatetom - Klassenabhängige Datenum-
setzung
SYNTAX
cc [option ...] datei ... -lelf [bibliothek ...]
#include <libelf.h>
ElfData *elf32xlatetof(ElfData *dst, const ElfData *src,
unsigned encode);
ElfData *elf32xlatetom(ElfData *dst, const ElfData *src,
unsigned encode);
BESCHREIBUNG
elf32xlatetom() setzt Datenstrukturen der 32-Bit-Klasse aus der
Dateidarstellung in ihre Speicherdarstellung um. elf32xlatetof()
führt den umgekehrten Prozeß durch. Diese Konversion ist für Cross-
Entwicklungsumgebungen (Cross Compilation) sehr wichtig. src ist ein
Zeiger auf den Quellpuffer, der die originalen Daten enthält; dst ist
ein Zeiger auf den Zielpuffer, der die übersetzten Daten aufnimmt.
encode gibt die Byte-Ordnung an, in der die Dateiobjekte dargestellt
werden (sollen); die Byte-Ordnung muß ein Wert sein, der für den Ein-
trag eident[EIDATA] [siehe elfgetident(3E)] des ELF-Kopfes defi-
niert ist. Wenn die Daten umgesetzt werden können, liefern die Funk-
tionen dst zurück. Ansonsten wird Null zurückgegeben, da ein Fehler
auftrat, wie zum Beispiel inkompatible Typen, Zielpufferüberlauf etc.
Der ElfData-Deskriptor wird unter elfgetdata(3E) näher beschrieben;
er wird durch die Übersetzungsroutinen wie folgt verwendet:
dbuf Sowohl die Quelle als auch das Ziel müssen gültige Puffer-
zeiger enthalten.
dtype Diese Komponente gibt den Typ der Daten an, auf die dbuf
zeigt, und den Typ der Daten, die im Zielpuffer angelegt
werden. Das Programm übergibt einen dtype-Wert für die
Quelle; die Bibliothek setzt den dtype des Ziels auf den
gleichen Wert. Diese Werte werden unten erläutert.
dsize Diese Komponente enthält die Gesamtlänge des durch die
Quelldaten belegten und die Größe des für die Zieldaten
allokierten Speichers. Wenn der Zielpuffer nicht groß genug
ist, ändern die Routinen den ursprünglichen Inhalt nicht.
Die Umsetzungsroutinen setzen die Komponente dsize des
Ziels nach der erfolgten Umsetzung auf die tatsächlich
benötigte Größe. Die Größen von Quelle und Ziel können
unterschiedlich sein.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
elf_xlate(3E) elf_xlate(3E)
dversion Diese Komponente enthält die (gewünschte) Versionsnummer
der Objekte im Puffer. Die Quell- und Zielversionen sind
unabhängig.
Die Übersetzungsroutinen erlauben die Identität von Quell- und Ziel-
puffer. Dies bedeutet, daß dst->dbuf gleich src->dbuf sein kann. In
anderen Fällen, wo Quell- und Zielpuffer überlappen, ist das resultie-
rende Verhalten undefiniert.
____________________________________
| Elf-Typ | 32-Bit-Speichertypen|
|____________|______________________|
| ELFTADDR | Elf32Addr |
| ELFTBYTE | unsigned char |
| ELFTDYN | Elf32Dyn |
| ELFTEHDR | Elf32Ehdr |
| ELFTHALF | Elf32Half |
| ELTTOFF | Elf32Off |
| ELFTPHDR | Elf32Phdr |
| ELFTREL | Elf32Rel |
| ELFTRELA | Elf32Rela |
| ELFTSHDR | Elf32Shdr |
| ELFTSWORD| Elf32Sword |
| ELFTSYM | Elf32Sym |
| ELFTWORD | Elf32Word |
|____________|______________________|
Das Umsetzen von Puffern des Typs ELFTBYTE ändert die Byte-Ordnung
nicht.
SIEHE AUCH
elf(3E), elffsize(3E), elfgetdata(3E), elfgetident(3E).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98