Linker, loader en uitvoerbare formaten

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?

  1. AInterne functies worden versleuteld en kunnen niet worden geanalyseerd
  2. BEr zijn minder symbolen voor de dynamische linker, waardoor het laden sneller gaat, en interne aanroepen hoeven niet via de PLT te lopen
  3. CDe bibliotheek werkt dan op elk OS
Antwoord en toelichting tonen

Antwoord: B. Er zijn minder symbolen voor de dynamische linker, waardoor het laden sneller gaat, en interne aanroepen hoeven niet via de PLT te lopen

Gepubliceerde symbolen van een gedeelde bibliotheek kunnen worden vervangen door een definitie met dezelfde naam in een andere module, dus ook aanroepen van binnenuit moeten via de PLT of GOT lopen. Met hidden zijn ze van buiten niet zichtbaar, vermindert het aantal symbolen dat de dynamische linker onderzoekt en kunnen interne aanroepen rechtstreeks PC-relatief plaatsvinden. Ook naamconflicten met andere bibliotheken worden vermeden en de gepubliceerde ABI blijft klein.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Welk mechanisme waardoor in C++ de constructors van globale objecten vóór main worden uitgevoerd, is juist?
  2. Welke uitspraak over het objectbestand (.o) dat de compiler uit één bronbestand voortbrengt, is juist?
  3. Wat is de juiste hoofdtaak van de linker?
  4. Welke omschrijving van de symboolresolutie die de linker uitvoert, is juist?
  5. Welke omschrijving van de relocatie die de linker uitvoert, is juist?

Vergelijkingen bij dit onderwerp