elf_version(3E) elf_version(3E)
NAME
elfversion - Versionen abgleichen
SYNTAX
cc [option ...] datei ... -lelf [bibliothek ...]
#include <libelf.h>
unsigned elfversion(unsigned ver);
BESCHREIBUNG
Wie unter elf(3E) erläutert, besitzen das Programm, die Bibliothek und
eine Objektdatei verschiedene Ansichten über die "neueste" ELF-
Version. elfversion() erlaubt einem Programm die Feststellung der
internen Version der ELF-Bibliothek. Ferner wird dem Programm ermög-
licht, die verwendeten Speichertypen anzugeben; dies geschieht durch
die Übergabe der Arbeitsversion ver an die Bibliothek. Jedes Programm,
das die ELF-Bibliothek benutzt, muß die Versionen, wie beschrieben,
abgleichen.
Die Include-Datei libelf.h stellt dem Programm die Version über das
Makro EVCURRENT zur Verfügung. Wenn die bibliotheksinterne Version
(die höchste, der Bibliothek bekannte Version) kleiner als die dem
Progamm bekannte Version ist, könnten der Bibliothek semantische
Informationen fehlen, die vom Programm vorausgesetzt werden. Daher
akzeptiert elfversion() keine Arbeitsversion, die der Bibliothek
unbekannt ist.
Die Übergabe von ver gleich EVNONE veranlaßt elfversion() dazu, die
bibliotheksinterne Version zurückzuliefern, ohne daß die Arbeitsver-
sion geändert wird. Wenn die Version ver der Bibliothek bekannt ist,
liefert elfversion() die vorherige Arbeitsversionsnummer zurück.
Ansonsten bleibt die Arbeitsversion unverändert und elfversion() lie-
fert EVNONE.
BEISPIELE
Der folgende Programmauszug aus einem Anwendungsprogramm schützt
davor, eine ältere Bibliothek zu verwenden.
if (elfversion(EVCURRENT) == EVNONE)
{
/* Bibliothek veraltet */
/* Fehlerbehandlung */
}
HINWEISE
Die Arbeitsversion sollte für alle Operationen mit einem bestimmten
ELF-Deskriptor identisch sein. Das Ändern der Version zwischen den
Operationen eines Deskriptors führt unter Umständen nicht zu dem
erwarteten Ergebnis.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
elf_version(3E) elf_version(3E)
SIEHE AUCH
elf(3E), elfbegin(3E), elfxlate(3E).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98