Linker, loader en uitvoerbare formaten

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.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Welke omschrijving is juist van lazy binding met de PLT (procedure linkage table) bij dynamisch linken?
  2. Wat is de juiste rol van de dynamische linker (zoals ld.so) die werkt bij het starten van een dynamisch gelinkt programma op Linux?
  3. Wat is het juiste doel van ASLR (address space layout randomization)?
  4. Wat is de belangrijkste reden om een uitvoerbaar bestand als PIE (position-independent executable) te bouwen?
  5. Wat doet de loader van het OS bij het starten van een programma (zoals execve op Linux)?

Vergelijkingen bij dit onderwerp