Systeem.map
System.map is een bestand met een symbolische tabel met adressen van functies en procedures die worden gebruikt door de kernel van het Linux -besturingssysteem . Deze tabel bevat de namen van variabelen en functies en hun adressen in het computergeheugen . Deze tabel is erg handig bij het debuggen van de kernel in het geval van kernel panic of Linux oeps . System.mapgegenereerd wanneer de kernel wordt
gecompileerd .
De symbolische adrestabel voor de geladen kernel bevindt zich ook in het /proc/kallsyms.
Een bestand maken
Het bestand System.mapkan worden aangemaakt met het commando nm -n vmlinux > System.map. Bij het compileren van de kernel wordt het volgende commando gebruikt (script /usr/src/linux/scripts/mksysmap, kernelversie 2.6.35): $NM -n $1 | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $2, where $1is file vmlinux, $2is file System.map.
Ingewanden
Voorbeeld bestandsinhoud System.map:
c040f4ec b local_apic_timer_verify_ok c040f4f0 b kalibratieresultaat 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 unknown_nmi_panic c040f544 b backtrace_mask c040f548 b lock.19318 c040f54c b nmi_pm_active c040f550 b last_irq_sums c040f560 b alert_counter
System.mapwordt gemaakt met elke kernel-build vanwege het feit dat er in verschillende versies verschillende adressen van procedures kunnen zijn [1] .
Karaktertypes
De tweede kolom geeft het type symbool aan (hoofdletters betekent globaal of geëxporteerd symbool, kleine letters betekent lokaal):
- A is de absolute waarde.
- B of b is een teken in het gedeelte met niet-geïnitialiseerde gegevens (meestal BSS genoemd).
- D of d is een teken in het gedeelte met geïnitialiseerde gegevens.
- G of g is een teken in de sectie met geïnitialiseerde gegevens voor globale kleine objecten.
- i is een DLL-specifieke sectie.
- N is een debug-teken.
- p is de stapelafwikkelsectie.
- R of r is een teken in een alleen-lezen sectie.
- S of s is een teken in de niet-geïnitialiseerde gegevenssectie voor kleine objecten.
- T of t is een teken in een codesectie.
- U is een ongedefinieerd teken.
- V of v is een zwak object.
- W of w is een zwak object dat niet zo is gelabeld
- - staat voor het stub-teken in het objectbestand a.out
- ? betekent ongedefinieerd tekentype
Locatie op het bestandssysteem
Nadat de Linux-kernel is gebouwd, bevindt het bestand System.mapzich in de /usr/src/linux/. Sommige programma's vereisen het echter op andere plaatsen en soms met een andere naam, zoals . Dus om bijvoorbeeld SVGAlib te bouwen, heb je een bestand in de directory nodig/boot/System.map-$(uname -r)System.map/lib/modules/$(uname -r)/build/[ betekenis van het feit? ] .
Zie ook
Opmerkingen
- ↑ Wat is het System.map-bestand? (niet beschikbare link) . Ontvangen 20 september 2011. Gearchiveerd van het origineel op 10 mei 2017.
Links
- Alavor Vasudevan. De Linux Kernel HOWTO, System.map ( 4 mei 2003). — Beschrijving van het bestand System.map. Opgehaald: 20 september 2011.
- System.map-bestand (Engels) (downlink) . - Informatie over symbolen, symbooltabellen en het bestand System.map. Ontvangen 20 september 2011. Gearchiveerd van het origineel op 19 mei 2012.