Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ elf_getscn(3E) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

elf(3E)

elf_getscn(3E)                                               elf_getscn(3E)

NAME
     elfgetscn, elfndxscn, elfnewscn, elfnextscn - Abschnittsinforma-
     tionen lesen

SYNTAX
     cc [option ...] datei ... -lelf [bibliothek ...]

     #include <libelf.h>

     ElfScn *elfgetscn(Elf *elf, sizet index);

     sizet elfndxscn(ElfScn *scn);

     ElfScn *elfnewscn(Elf *elf);

     ElfScn *elfnextscn(Elf *elf, ElfScn *scn);

BESCHREIBUNG
     Diese Funktionen bieten einen indizierten und sequentiellen Zugriff
     auf die Abschnitte, die zu dem ELF-Deskriptor elf gehören. Wenn ein
     Programm eine neue Datei erstellt, liegt es in dessen Verantwortung,
     zunächst einen ELF-Kopf für die Datei zu erzeugen, bevor Abschnitte
     definiert werden; siehe dazu auch elfgetehdr(3E).

     elfgetscn() erwartet in der Abschnittskopftabelle einer Datei einen
     Index und liefert als Ergebnis eines Abschnittsdeskriptor. Bitte
     beachten Sie, daß der erste "echte" Abschnitt den Index 1 hat. Ein
     Programm kann zwar einen Abschnittsdeskriptor für einen Abschnitt mit
     Index 0 (SHNUNDEF, der undefinierte Abschnitt) erhalten, jedoch ent-
     hält dieser Abschnitt keine Daten, und der Abschnittskopf ist "leer"
     (aber vorhanden). Wenn der angegebene Abschnitt nicht existiert, ein
     Fehler auftritt, oder wenn elf gleich Null ist, liefert elfgetscn()
     einen Nullzeiger als Ergebnis.

     elfnewscn() erzeugt einen neuen Abschnitt und hängt ihn an das Ende
     der Liste für elf. Da der SHNUNDEF-Abschnitt benötigt wird, ihn die
     Anwendungen jedoch nicht "interessieren", erzeugt ihn die Bibliothek
     automatisch. Der erste Aufruf von elfnewscn() für einen ELF-Deskrip-
     tor ohne existierende Abschnitte liefert deshalb einen Deskriptor für
     Abschnitt 1. Wenn ein Fehler auftritt, oder wenn elf gleich Null ist,
     liefert elfnewscn() einen Nullzeiger als Ergebnis zurück.

     Nachdem ein neuer Abschnittsdeskriptor erzeugt wurde, kann ein Pro-
     gramm mit Hilfe von elfgetshdr() den neu erzeugten, "sauberen"
     Abschnittskopf anfordern. Dem neuen Abschnittsdeskriptor sind keine
     Daten zugeordnet [siehe auch elfgetdata(3E)]. Wenn ein neuer
     Abschnitt auf diese Weise erzeugt wird, so aktualisiert die Bibliothek
     die Komponente eshnum des ELF-Kopfes und setzt das ELFFDIRTY-Bit
     für den Abschnitt [siehe elfflag(3E)]. Bei der Erstellung einer neuen
     Datei liegt es im Verantwortungsbereich des Programms, daß zunächst
     ein ELF-Kopf für die Datei angelegt wird [siehe elfgetehdr(3E)] und
     erst danach neue Abschnitte erzeugt werden.



Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

elf_getscn(3E)                                               elf_getscn(3E)

     elfnextscn() erwartet einen Deskriptor für einen bereits existieren-
     den Abschnitt scn und liefert als Ergebnis einen Abschnittsdeskriptor
     für den nächsthöheren Abschnitt. Durch die Verwendung von Null für scn
     erhält man einen Abschnittsdeskriptor für den Abschnitt mit Index 1
     (der Abschnitt mit Index SHNUNDEF wird dabei übersprungen). Wenn
     keine weiteren Abschnitte vorhanden sind, oder wenn ein Fehler auf-
     tritt, liefert elfnextscn() als Ergebnis einen Nullzeiger.

     elfndxscn() erwartet einen Deskriptor eines existierenden Abschnitts
     scn und liefert als Ergebnis dessen Index in der Abschnittstabelle.
     Wenn scn gleich Null ist, oder wenn ein Fehler auftritt, liefert
     elfndxscn() den Wert SHNUNDEF als Ergebnis.

BEISPIELE
     Im folgenden Beispiel wird sequentiell auf die Abschnitte einer Datei
     zugegriffen. Mit jedem Durchlauf der Schleife wird ein Abschnitt der
     Datei bearbeitet; die Schleife endet, wenn alle Abschnitte bearbeitet
     wurden.

        scn = 0;
        while ((scn = elfnextscn(elf, scn)] != 0)
        {
              /* Abschnitt bearbeiten */
        }

SIEHE AUCH
     elf(3E), elfbegin(3E), elfflag(3E), elfgetdata(3E),
     elfgetehdr(3E), elfgetshdr(3E).


























Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026