Wat is Symbooltabel?

Lijst in object- en uitvoerbare bestanden met namen van functies en variabelen en bijbehorende adressen. Wordt gebruikt voor linken en debuggen en kan met strip worden verwijderd.

Japanse benaming: シンボルテーブル

“Symbooltabel” komt voor in 2 oefenvragen uit 1 onderwerpen, bijv. Linker, loader en uitvoerbare formaten.

Vakgebied: Linker, loader en uitvoerbare formaten

Nu oefenen: vragen over Symbooltabel

Welke uitspraak over het objectbestand (.o) dat de compiler uit één bronbestand voortbrengt, is juist?

  1. AHet is een compleet programma dat rechtstreeks door het OS kan worden uitgevoerd
  2. BHet is alleen de gecomprimeerde broncode en bevat geen machinecode
  3. CHet bevat machinecode, maar de adressen van functies en variabelen in andere bestanden zijn nog niet bepaald
Antwoord en toelichting tonen

Antwoord: C. Het bevat machinecode, maar de adressen van functies en variabelen in andere bestanden zijn nog niet bepaald

Een objectbestand bevat de machinecode die uit de functies van dat bestand is vertaald, de beginwaarden van variabelen, een lijst van gedefinieerde en gerefereerde namen (symbooltabel) en een lijst van plaatsen waar later adressen moeten worden ingevuld (relocatie-informatie). Instructies die een functie in een ander bestand aanroepen, zoals printf, hebben een voorlopige waarde omdat het adres onbekend is. De linker voegt meerdere objectbestanden samen, bepaalt de adressen en maakt een uitvoerbaar bestand.

Wat gebeurt er als het commando strip op een uitvoerbaar bestand wordt gebruikt?

  1. ADe machinecode-instructies worden geoptimaliseerd en de uitvoering wordt sneller
  2. BHet uitvoerbare bestand wordt versleuteld en anderen kunnen het niet uitvoeren
  3. CDe symbooltabel en debuginformatie worden verwijderd, waardoor het bestand kleiner wordt maar functienamen en dergelijke in een debugger minder zichtbaar zijn
Antwoord en toelichting tonen

Antwoord: C. De symbooltabel en debuginformatie worden verwijderd, waardoor het bestand kleiner wordt maar functienamen en dergelijke in een debugger minder zichtbaar zijn

Een uitvoerbaar bestand kan een symbooltabel met namen van functies en variabelen en debuginformatie met de koppeling aan regels van de broncode bevatten. Deze zijn voor uitvoering niet nodig, dus met strip worden ze verwijderd en wordt het bestand kleiner. Omdat bij foutopsporing functienamen en regelnummers dan niet meer zichtbaar zijn, wordt de informatie van vóór het verwijderen soms apart bewaard. Symbolen die voor dynamisch linken nodig zijn, blijven behouden.

“Symbooltabel” in de toelichting

Vragen met “Symbooltabel” (2)

  1. Welke uitspraak over het objectbestand (.o) dat de compiler uit één bronbestand voortbrengt, is juist?
  2. Wat gebeurt er als het commando strip op een uitvoerbaar bestand wordt gebruikt?

Verwante termen

Objectbestand Relocatie (relocation) Linker Dynamisch linken ASLR BSS-sectie Dynamische linker ELF Entry point Fragmentatie

Naar de woordenlijst