Globální ofsetová tabulka - Global Offset Table
The Globální ofsetová tabulkanebo MÁM, je část a počítačový program Paměť (spustitelné soubory a sdílené knihovny) používaná k povolení kódu počítačového programu kompilovaného jako soubor ELF soubor do běh správně, nezávislý adresy paměti, kde kód programu nebo data jsou načten za běhu.[1]
Mapuje to symboly v programovacím kódu na jejich odpovídající absolutní adresy paměti umožnit Nezávislý kód pozice (PIC) and Position Independent Executables (PIE)[2] které jsou načteny[3] do a jinou adresu paměti při každém spuštění programu. Adresa runtime paměti, známá také jako absolutní adresa paměti proměnných a funkcí, není známa před spuštěním programu při spuštění kódu PIC nebo PIE[4] takže nemůže být napevno během kompilace a překladač.
Globální offsetová tabulka je reprezentována jako sekce .got a .got.plt v souboru ELF[5] které se načtou do paměti programu při spuštění.[5][6] Operační systém dynamický linker se používá k aktualizaci globální offsetové tabulky přemístění (symbol na absolutní adresy paměti) při spuštění programu nebo jako symboly jsou přístupné.[7]Je to mechanismus, který umožňuje sdílené knihovny (.so) být přemístěn na jinou adresu paměti při spuštění a vyhnout se konfliktům adres paměti s hlavním programem nebo jinými sdílenými knihovnami a ztvrdnout kód počítačového programu z vykořisťování.[8]
Reference
- ^ „Dynamické propojení“. refspecs.linuxfoundation.org.
- ^ "Možnosti genového kódu (pomocí kolekce kompilátorů GNU)". gcc.gnu.org.
- ^ „Jak běží programy: binární soubory ELF [LWN.net]“. lwn.net.
- ^ „Globální ofsetové tabulky“. bottomupcs.sourceforge.net.
- ^ A b „Spustitelný a spojitelný formát (ELF)“. stevens.netmeister.org.
- ^ Wienand, Ian (10. května 2011). „PLT a GOT - klíč ke sdílení kódu a dynamickým knihovnám“. Technologická novinka. Citováno 14. dubna 2020.
- ^ Aichinger, Christian. „Formát ELF - jak programy vypadají zevnitř“. Myšlenky Christiana Aichingera.
- ^ Sidhpurwala, Huzaifa (28. ledna 2018). „Kalení binárních souborů ELF pomocí přemístění jen pro čtení (RELRO)“. červená čepice.
![]() | Tento programování související článek je a pahýl. Wikipedii můžete pomoci pomocí rozšiřovat to. |