close

System.map

Přejít na navigaci Přejít na hledání

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

  1. Co je soubor System.map? (nedostupný odkaz) . Získáno 20. září 2011. Archivováno z originálu 10. května 2017. 

Odkazy

  • 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.