System.map
System.map je soubor obsahující symbolickou tabulku adres funkcí a procedur používaných jádrem operačního systému Linux . Tato tabulka uvádí názvy proměnných a funkcí a jejich adresy v paměti počítače . Tato tabulka je velmi užitečná při ladění jádra v případě paniky jádra nebo Linuxu oops . System.mapgenerované při kompilaci jádra
.
Tabulka symbolických adres pro načtené jádro je také v souboru /proc/kallsyms.
Vytváření souboru
Soubor System.maplze vytvořit pomocí příkazu nm -n vmlinux > System.map. Při kompilaci jádra se používá následující příkaz (script /usr/src/linux/scripts/mksysmap, verze jádra 2.6.35): $NM -n $1 | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $2, kde $1je soubor vmlinux, $2je soubor System.map.
Vnitřnosti
Příklad obsahu souboru System.map:
c040f4ec b local_apic_timer_verify_ok c040f4f0 b výsledek_kalibrace c040f4f4 b enabled_via_apicbase c040f4f8 b apic_phys c040f500 b apic_pm_state c040f538 B nmi_active c040f53c B nmi_watchdog_enabled c040f540 B neznámý_nmi_panic c040f544 b backtrace_mask c040f548 b zámek.19318 c040f54c b nmi_pm_active c040f550 b last_irq_sums c040f560 b alert_counter
System.mapse vytváří s každým sestavením jádra kvůli skutečnosti, že v různých verzích mohou být různé adresy procedur [1] .
Typy postav
Druhý sloupec označuje typ symbolu (velká písmena znamenají globální nebo exportovaný symbol, malá písmena místní):
- A je absolutní hodnota.
- B nebo b je znak v sekci neinicializovaných dat (obvykle označované jako BSS).
- D nebo d je znak v sekci inicializovaných dat.
- G nebo g je znak v sekci inicializovaných dat pro globální malé objekty.
- i je sekce specifická pro DLL.
- N je znak ladění.
- p je sekce odvíjení stohu.
- R nebo r je znak v sekci pouze pro čtení.
- S nebo s je znak v sekci neinicializovaných dat pro malé objekty.
- T nebo t je znak v sekci kódu.
- U je nedefinovaný symbol.
- V nebo v je slabý předmět.
- W nebo w je slabý objekt, který nebyl takto označen
- - znamená stub znak v objektovém souboru a.out
- ? znamená nedefinovaný typ znaku
Umístění v systému souborů
Po sestavení linuxového jádra je soubor System.mapumístěn v /usr/src/linux/. Některé programy jej však vyžadují na jiných místech a někdy s jiným názvem, například . Takže například k sestavení SVGAlib potřebujete soubor v adresáři/boot/System.map-$(uname -r)System.map/lib/modules/$(uname -r)/build/[ význam skutečnosti? ] .
Viz také
Poznámky
- ↑ Co je soubor System.map? (nedostupný odkaz) . Získáno 20. září 2011. Archivováno z originálu 10. května 2017.
Odkazy
- Alavour Vasudevan. The Linux Kernel HOWTO, System.map ( 4. května 2003). — Popis souboru System.map. Staženo: 20. září 2011.
- System.map soubor (anglicky) (downlink) . - Informace o symbolech, tabulkách symbolů a souboru System.map. Získáno 20. září 2011. Archivováno z originálu 19. května 2012.