Linker, Loader und ausführbare Formate

Welche Aufgabe hat die bei Shared Libraries verwendete GOT (Global Offset Table)?

  1. ASie ist ein Verzeichnis, das die Namen der Funktionen einer Bibliothek alphabetisch ordnet
  2. BSie ist eine Tabelle, in der Daten zwischengespeichert werden, die nicht mehr in den Cache passen
  3. CSie ist eine Tabelle der tatsächlichen Adressen externer Variablen und Funktionen, die der dynamische Linker zur Laufzeit füllt und über die der Code referenziert
Antwort und Erläuterung anzeigen

Antwort: C. Sie ist eine Tabelle der tatsächlichen Adressen externer Variablen und Funktionen, die der dynamische Linker zur Laufzeit füllt und über die der Code referenziert

Positionsunabhängiger Code kann die Adresse von Variablen in anderen Bibliotheken nicht direkt in Befehle schreiben. Daher gibt es in jedem Modul eine Tabelle von Adressen (GOT); der Code liest den GOT-Eintrag über den Abstand zum PC und verwendet die darin stehende Adresse. Der dynamische Linker schreibt beim Laden die tatsächlichen Adressen in die GOT. Überschrieben wird nur die GOT im beschreibbaren Datenbereich, sodass die Codeseiten weiterhin gemeinsam genutzt werden können.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. Welche Aussage trifft beim dynamischen Linken zu, wenn mit der PLT (Procedure Linkage Table) späte Bindung (Lazy Binding) verwendet wird?
  2. Welche Aufgabe hat der dynamische Linker (z. B. ld.so), der beim Start eines dynamisch gelinkten Programms unter Linux tätig wird?
  3. Welche Aussage zum Zweck von ASLR (Address Space Layout Randomization) ist richtig?
  4. Was ist der Hauptgrund dafür, eine ausführbare Datei als PIE (Position Independent Executable) zu erzeugen?
  5. Was tut der Loader des Betriebssystems beim Start eines Programms (z. B. unter Linux mit execve)?

Vergleiche zu diesem Thema