Linker, Loader und ausführbare Formate
Welche Aussage trifft beim dynamischen Linken zu, wenn mit der PLT (Procedure Linkage Table) späte Bindung (Lazy Binding) verwendet wird?
- ADie Adresse einer Funktion der Shared Library wird beim ersten Aufruf aufgelöst, und ab dem zweiten Aufruf wird direkt zur aufgelösten Adresse gesprungen
- BVor dem Start des Programms werden stets die Adressen aller Funktionen aufgelöst
- CBei jedem Funktionsaufruf wird die Bibliotheksdatei erneut von der Festplatte gelesen
Antwort und Erläuterung anzeigen
Antwort: A. Die Adresse einer Funktion der Shared Library wird beim ersten Aufruf aufgelöst, und ab dem zweiten Aufruf wird direkt zur aufgelösten Adresse gesprungen
Das Programm ruft externe Funktionen über kleine Einsprungstellen der PLT auf. Bei später Bindung springt die Einsprungstelle beim ersten Aufruf in die Auflösungsroutine des dynamischen Linkers, der die echte Adresse sucht und in die GOT schreibt. Ab dem zweiten Aufruf wird unmittelbar zur Adresse in der GOT gesprungen. Da die Auflösung ungenutzter Funktionen entfällt, startet das Programm schneller. Aus Sicherheitsgründen ist jedoch auch die Einstellung weit verbreitet, beim Start alles aufzulösen und die GOT schreibgeschützt zu machen.