Wat is GOT (global offset table)?

Tabel met de werkelijke adressen van externe variabelen en functies. De dynamische linker vult deze tijdens runtime in en positie-onafhankelijke code verwijst via deze tabel, zodat de codepagina's niet hoeven te worden aangepast.

Japanse benaming: GOT(グローバルオフセットテーブル)

“GOT (global offset table)” komt voor in 5 oefenvragen uit 1 onderwerpen, bijv. Linker, loader en uitvoerbare formaten.

Vakgebied: Linker, loader en uitvoerbare formaten

Nu oefenen: vragen over GOT (global offset table)

Wat is de juiste rol van de GOT (global offset table) die bij gedeelde bibliotheken wordt gebruikt?

  1. AEen inhoudsopgave waarin de namen van bibliotheekfuncties alfabetisch zijn geordend
  2. BEen tabel waarin data die niet in de cache pasten tijdelijk worden geplaatst
  3. CEen tabel met de werkelijke adressen van externe variabelen en functies, die de dynamische linker tijdens uitvoering invult en waarlangs de code verwijst
Antwoord en toelichting tonen

Antwoord: C. Een tabel met de werkelijke adressen van externe variabelen en functies, die de dynamische linker tijdens uitvoering invult en waarlangs de code verwijst

Position-independent code kan adressen van variabelen in andere bibliotheken niet rechtstreeks in instructies schrijven. Daarom heeft elke module een tabel met adressen (GOT); de code leest een item van de GOT via de afstand vanaf PC en gebruikt het daarin staande adres. De dynamische linker schrijft bij het laden de werkelijke adressen in de GOT. Omdat alleen de GOT in het beschrijfbare datagebied wordt herschreven, kunnen de codepagina's gedeeld blijven.

“GOT (global offset table)” in de toelichting

Vragen met “GOT (global offset table)” (5)

  1. Wat is de juiste rol van de GOT (global offset table) die bij gedeelde bibliotheken wordt gebruikt?
  2. Welke omschrijving van position-independent code (PIC) is juist?
  3. Welke omschrijving is juist van lazy binding met de PLT (procedure linkage table) bij dynamisch linken?
  4. 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?
  5. 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

Via Dynamische linker PLT (procedure linkage table) Dynamisch linken Positie-onafhankelijke code (PIC) Objectbestand Relocatie (relocation) Linker Gedeelde bibliotheek (shared library) ABI (application binary interface)

Naar de woordenlijst