System.map
System.map to plik zawierający symboliczną tablicę adresów funkcji i procedur używanych przez jądro systemu operacyjnego Linux . Ta tabela zawiera nazwy zmiennych i funkcji oraz ich adresy w pamięci komputera . Ta tabela jest bardzo przydatna podczas debugowania jądra w przypadku paniki jądra lub problemów z Linuksem . System.mapgenerowane podczas kompilacji jądra
.
Tablica adresów symbolicznych dla załadowanego jądra znajduje się również w pliku /proc/kallsyms.
Tworzenie pliku
Plik System.mapmożna utworzyć za pomocą polecenia nm -n vmlinux > System.map. Podczas kompilacji jądra używa się następującego polecenia (skrypt /usr/src/linux/scripts/mksysmap, wersja jądra 2.6.35): $NM -n $1 | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $2, gdzie $1jest plik vmlinux, $2jest plik System.map.
Wnętrzności
Przykład zawartości pliku System.map:
c040f4ec b local_apic_timer_verify_ok c040f4f0 b wynik_kalibracji c040f4f4 b enabled_via_apicbase c040f4f8 b apic_phys c040f500 b apic_pm_state c040f538 B nmi_aktywne c040f53c B nmi_watchdog_enabled c040f540 B unknown_nmi_panic c040f544 b backtrace_mask c040f548 b zamek.19318 c040f54c b nmi_pm_active c040f550 b last_irq_sums c040f560 b alert_counter
System.mapjest tworzony z każdą kompilacją jądra ze względu na fakt, że w różnych wersjach mogą występować różne adresy procedur [1] .
Typy postaci
Druga kolumna wskazuje typ symbolu (duże litery oznaczają symbol globalny lub eksportowany, małe litery oznaczają lokalny):
- A to wartość bezwzględna.
- B lub b to znak w sekcji niezainicjowanych danych (zwykle określanej jako BSS).
- D lub d to znak w zainicjowanej sekcji danych.
- G lub g to znak w zainicjowanej sekcji danych dla globalnych małych obiektów.
- i jest sekcją specyficzną dla biblioteki DLL.
- N to znak debugowania.
- p jest sekcją rozwijania stosu.
- R lub r to znak w sekcji tylko do odczytu.
- S lub s to znak w niezainicjowanej sekcji danych dla małych obiektów.
- T lub t to znak w sekcji kodu.
- U jest niezdefiniowanym symbolem.
- V lub v to słaby obiekt.
- W lub w to słaby obiekt, który nie został tak oznaczony
- - oznacza znak skrótu w pliku obiektowym a.out
- ? oznacza nieokreślony typ postaci
Lokalizacja w systemie plików
Po zbudowaniu jądra Linux plik System.mapznajduje się w /usr/src/linux/. Jednak niektóre programy wymagają go w innych miejscach i czasami pod inną nazwą, np . . Na przykład, aby zbudować SVGAlib, potrzebujesz pliku w katalogu/boot/System.map-$(uname -r)System.map/lib/modules/$(uname -r)/build/[ znaczenie faktu? ] .
Zobacz także
Notatki
- ↑ Co to jest plik System.map? (niedostępny link) . Pobrano 20 września 2011 r. Zarchiwizowane z oryginału w dniu 10 maja 2017 r.
Linki
- Alavor Vasudevan. Linux Kernel HOWTO, System.map ( 4 maja 2003). — Opis pliku System.map. Źródło: 20 września 2011.
- Plik System.map (angielski) (łącze w dół) . - Informacje o symbolach, tablicach symboli i pliku System.map. Pobrano 20 września 2011. Zarchiwizowane z oryginału w dniu 19 maja 2012.