Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ a.out(4) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cc(1)

ld(1)

brk(2)

elf(3E)

a.out(4)                                                           a.out(4)

NAME
     a.out - ELF (Executable and Linking Format)-Dateien

SYNTAX
     #include <elf.h>

BESCHREIBUNG
     Der Dateiname a.out ist die Standard-Ausgabedatei des Binders ld(1).
     Der Binder macht eine a.out-Datei ausführbar, wenn beim Binden keine
     Fehler auftraten.

     Programme, die ELF-Dateien verändern, sollten die Bibliothek verwen-
     den, die in elf(3E) beschrieben wird. Es folgt ein Überblick über das
     Dateiformat. Ausführliche Informationen finden Sie auch in der angege-
     benen Literatur.








































Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

a.out(4)                                                           a.out(4)

                   Sichtweise des                   Sichtweise der
                      Binders                    Programmausführung
             _________________________        _________________________
             |                       |        |                       |
             |        ELF-Kopf       |        |        ELF-Kopf       |
             |_______________________|        |_______________________|
             |                       |        |                       |
             |  Programmkopftabelle  |        |  Programmkopftabelle  |
             |       optional        |        |                       |
             |_______________________|        |_______________________|
             |                       |        |                       |
             |      Abschnitt 1      |        |                       |
             |_______________________|        |       Segment 1       |
             |                       |        |                       |
             |      .  .  .          |        |                       |
             |_______________________|        |_______________________|
             |                       |        |                       |
             |      Abschnitt n      |        |                       |
             |_______________________|        |       Segment 2       |
             |                       |        |                       |
             |      .  .  .          |        |                       |
             |_______________________|        |_______________________|
             |                       |        |                       |
             |      .  .  .          |        |       .  .  .         |
             |_______________________|        |_______________________|
             |                       |        |                       |
             | Abschnittskopftabelle |        | Abschnittskopftabelle |
             |                       |        |       optional        |
             |_______________________|        |_______________________|

     Der ELF-Kopf steht am Anfang und enthält eine Beschreibung des Datei-
     aufbaus. Abschnitte enthalten Informationen eines Objekts für den Bin-
     der: Anweisungen, Daten, Symboltabellen, Verschiebe-Informationen usw.
     Segmente enthalten die notwendigen Informationen, um eine Objektdatei
     auszuführen. Ein Segment kann mehrere Abschnitte enthalten.

     Eine Programmkopftabelle gibt dem System an, wie der Prozeß zu erzeu-
     gen ist. Dateien, die als Prozeß ablaufen sollen, müssen eine Pro-
     grammkopftabelle haben. Verschiebbare Dateien müssen keine solche
     Tabelle haben. In einer Abschnittskopftabelle werden die Abschnitte
     der Datei beschrieben. Jeder Abschnitt hat hier einen Eintrag. Dieser
     Eintrag enthält den Abschnittsnamen, die Abschnittsgröße usw. Dateien,
     die gebunden werden sollen, müssen eine Abschnittskopftabelle beinhal-
     ten. Andere Objektdateien müssen diese Tabelle nicht haben.










Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

a.out(4)                                                           a.out(4)

     In der Abbildung steht die Programmkopftabelle direkt hinter dem ELF-
     Kopf und die Abschnittskopftabelle hinter den Abschnitten. Diese Rei-
     henfolge ist nicht zwingend. Segmente und Abschnitte haben keine vor-
     gegebene Reihenfolge. Nur der ELF-Kopf muß am Anfang der Datei stehen.

     Wenn eine a.out-Datei ausgeführt wird, werden drei logische Segmente
     eingerichtet: das Textsegment, das Datensegment (nichtinitialisierte
     Daten stehen hinter initialisierten Daten, wobei nichtinitialisierte
     Daten mit Null initialisiert werden) und das Stapelsegment. Das Text-
     segment kann nicht vom Programm beschrieben werden. Wird das gleiche
     a.out nochmal aufgerufen, greifen die Prozesse auf das gleiche Text-
     segment zu.

     Das Datensegment beginnt an der nächsten maximalen Seitengrenze hinter
     dem Textsegment. Wenn ein Prozeß erzeugt wird, kann der Teil der
     Datei, in dem das Ende des Textsegments und der Anfang des Datenseg-
     ments stehen, zweimal geladen werden. Der doppelte Teil des Textseg-
     ments, der am Anfang des Datensegments steht, wird nie ausgeführt. Er
     wird einfach dupliziert, damit das Betriebssystem den Datenbereich in
     ganzen Seiten einlagern kann, ohne den Datenabschnitt auf eine Seiten-
     grenze schieben zu müssen. Die erste Datenadresse ist daher die näch-
     ste Seitengrenze hinter dem Textsegment plus die Größe des Textseg-
     ments modulo der maximalen Seitengröße. Falls das Textsegment ein
     Vielfaches der maximalen Seitengröße ist, muß kein Teil des Textseg-
     ments dupliziert werden. Der Stapel wird automatisch den Erfordernis-
     sen entsprechend erweitert. Das Datensegment wird durch Aufrufe des
     brk(2)-Systemaufrufs erweitert.

SIEHE AUCH
     cc(1), ld(1), brk(2), elf(3E).

     Kapitel "Objektdateien" im Leitfaden und Werkzeuge für die Programmie-
     rung mit C.





















Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

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