Wat is PLT (procedure linkage table)?

Tabel met kleine ingangen om functies van gedeelde bibliotheken aan te roepen. Bij lazy binding lost de dynamische linker bij de eerste aanroep het adres op en schrijft het in de GOT.

Japanse benaming: PLT(プロシージャリンケージテーブル)

“PLT (procedure linkage table)” komt voor in 3 oefenvragen uit 1 onderwerpen, bijv. Linker, loader en uitvoerbare formaten.

Vakgebied: Linker, loader en uitvoerbare formaten

Nu oefenen: vragen over PLT (procedure linkage table)

Welke omschrijving is juist van lazy binding met de PLT (procedure linkage table) bij dynamisch linken?

  1. AHet adres van een functie in een gedeelde bibliotheek wordt opgelost wanneer de functie voor het eerst wordt aangeroepen en vanaf de tweede keer wordt rechtstreeks naar het opgeloste adres gesprongen
  2. BVóór het starten van het programma worden altijd de adressen van alle functies opgelost
  3. CBij elke functie-aanroep wordt het bibliotheekbestand opnieuw van schijf gelezen
Antwoord en toelichting tonen

Antwoord: A. Het adres van een functie in een gedeelde bibliotheek wordt opgelost wanneer de functie voor het eerst wordt aangeroepen en vanaf de tweede keer wordt rechtstreeks naar het opgeloste adres gesprongen

Het programma roept externe functies aan via een kleine ingang in de PLT. Bij lazy binding springt de ingang bij de eerste aanroep naar de oplosroutine van de dynamische linker, die het echte adres zoekt en in de GOT schrijft. Vanaf de tweede keer wordt rechtstreeks naar het adres in de GOT gesprongen. Doordat het oplossen van ongebruikte functies kan worden overgeslagen, start het sneller. Voor de veiligheid wordt echter ook veel de instelling gebruikt waarbij alles bij het opstarten wordt opgelost en de GOT alleen-lezen wordt.

“PLT (procedure linkage table)” in de toelichting

Vragen met “PLT (procedure linkage table)” (3)

  1. Welke omschrijving is juist van lazy binding met de PLT (procedure linkage table) bij dynamisch linken?
  2. Bij het disassembleren van een objectbestand bleek het sprongdoel van de instructie die de externe functie printf aanroept een voorlopige waarde zoals 0 te zijn. Wanneer wordt deze waarde juist ingevuld?
  3. Welk voordeel is juist van het zetten van de symboolzichtbaarheid (visibility) op „hidden” voor interne functies, terwijl bij het maken van een gedeelde bibliotheek alleen de van buiten gebruikte functies worden gepubliceerd?

Verwante termen

Dynamische linker GOT (global offset table) Dynamisch linken Via Objectbestand Relocatie (relocation) Linker Gedeelde bibliotheek (shared library) ABI (application binary interface) ASLR

Naar de woordenlijst