elf_rawfile(3E) elf_rawfile(3E)
NAME
elfrawfile - Nicht interpretierten Dateiinhalt lesen
SYNTAX
cc [option ...] datei ... -lelf [bibliothek ...]
#include <libelf.h>
char *elfrawfile(Elf *elf, sizet *ptr);
BESCHREIBUNG
elfrawfile() liefert einen Zeiger auf eine nicht interpretierte Spei-
cherdarstellung der Datei. Diese Funktion sollte nur verwendet werden,
um eine gerade gelesene Datei wieder zu erhalten. Beispielsweise kann
ein Programm elfrawfile() verwenden, um die unveränderten Bytes einer
Archivkomponente zu erhalten.
Ein Programm darf den Dateideskriptor, der mit elf verknüpft ist,
nicht schließen oder deaktivieren [siehe elfcntl(3E)], bevor der
erste Aufruf von elfrawfile gemacht wurde, da elfrawfile() die Daten
unter Umständen noch aus der Datei lesen muß, wenn die Daten noch
nicht im Speicher stehen. Im allgemeinen ist diese Funktion für unbe-
kannte Dateitypen effizienter als für Objektdateien. Die Bibliothek
übersetzt die Objektdateien implizit im Speicher, während unbekannte
Dateien unverändert bleiben. Die Anforderung einer uninterpretierten
Abbildung einer Objektdatei kann daher zu einer doppelten Kopie der
Datei im Speicher führen.
elfrawdata() [siehe elfgetdata(3E)] ist eine verwandte Funktion,
welche den Zugriff auf Abschnitte innerhalb einer Datei erlaubt.
Ist ptr ungleich Null, so speichert die Bibliothek die Dateigröße (in
Bytes) an der Adresse, auf die ptr zeigt. Sind keine Daten verfügbar,
ist elf gleich Null; tritt ein Fehler auf, ist der Rückgabewert ein
Nullzeiger; in ptr wird Null abgelegt.
HINWEISE
Ein Programm, das elfrawfile() benutzt und das die gleiche Datei als
Objektdatei interpretiert, hat möglicherweise zwei Kopien einer Datei
im Speicher. Wenn solch ein Programm die nicht interpretierte Speiche-
rabbildung vor den übersetzten Informationen anfordert (durch Funktio-
nen wie elfgetehdr(), elfgetdata() etc.), "friert" die Bibliothek
die ursprüngliche Speicherkopie für die nicht interpretierte Abbildung
ein. Die eingefrorene Kopie wird als Quelle zur Erzeugung von über-
setzten Objekten verwendet, ohne daß die Datei neu gelesen wird. Die
Anwendung sollte die nicht interpretierte Dateiabbildung, die durch
elfrawfile() zurückgegeben wird, lediglich als lesbaren Puffer behan-
deln, es sei denn, es soll die Betrachtungsweise der zu übersetzenden
Daten geändert werden. In jedem Fall kann das Anwendungsprogramm die
übersetzten Objekte ändern, ohne daß die Daten der nicht interpretier-
ten Abbildung verändert werden. Mehrfaches Aufrufen von elfrawfile()
mit demselben ELF-Deskriptor liefert den gleichen Wert zurück; die
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
elf_rawfile(3E) elf_rawfile(3E)
Bibliothek erzeugt keine doppelten Dateikopien.
SIEHE AUCH
elf(3E), elfbegin(3E), elfcntl(3E), elfgetdata(3E),
elfgetehdr(3E), elfgetident(3E), elfkind(3E).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98