Linker, Loader und ausführbare Formate
Welche Aufgabe hat die bei Shared Libraries verwendete GOT (Global Offset Table)?
- ASie ist ein Verzeichnis, das die Namen der Funktionen einer Bibliothek alphabetisch ordnet
- BSie ist eine Tabelle, in der Daten zwischengespeichert werden, die nicht mehr in den Cache passen
- 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.