System.map
System.map è un file contenente una tabella simbolica di indirizzi di funzioni e procedure utilizzate dal kernel del sistema operativo Linux . Questa tabella elenca i nomi delle variabili e delle funzioni ei relativi indirizzi nella memoria del computer . Questa tabella è molto utile quando si esegue il debug del kernel in caso di panico del kernel o oops di Linux . System.mapgenerato quando il kernel viene
compilato .
Anche la tabella degli indirizzi simbolici per il kernel caricato è in /proc/kallsyms.
Creazione di un file
Il file System.mappuò essere creato con il comando nm -n vmlinux > System.map. Durante la compilazione del kernel, viene utilizzato il seguente comando (script /usr/src/linux/scripts/mksysmap, versione del kernel 2.6.35): $NM -n $1 | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $2, dove $1è file vmlinux, $2è file System.map.
Intestini
Esempio di contenuto del file System.map:
c040f4ec b local_apic_timer_verify_ok c040f4f0 b risultato_calibrazione c040f4f4 b abilitato_via_apicbase c040f4f8 b apic_phys c040f500 b apic_pm_state c040f538 B nmi_attivo c040f53c B nmi_watchdog_enabled c040f540 B unknown_nmi_panic c040f544 b backtrace_mask c040f548 b serratura.19318 c040f54c b nmi_pm_active c040f550 b last_irq_sums c040f560 b contatore_avvisi
System.mapviene creato con ogni build del kernel a causa del fatto che in diverse versioni possono esserci diversi indirizzi di procedure [1] .
Tipi di caratteri
La seconda colonna indica il tipo di simbolo (maiuscolo significa simbolo globale o esportato, minuscolo significa locale):
- A è il valore assoluto.
- B o b è un carattere nella sezione dati non inizializzata (di solito indicata come BSS).
- D o d è un carattere nella sezione dati inizializzata.
- G o g è un carattere nella sezione dati inizializzata per piccoli oggetti globali.
- i è una sezione specifica della DLL.
- N è un carattere di debug.
- p è la sezione di svolgimento dello stack.
- R o r è un carattere in una sezione di sola lettura.
- S o s è un carattere nella sezione dati non inizializzata per piccoli oggetti.
- T o t è un carattere in una sezione di codice.
- U è un simbolo indefinito.
- V o v è un oggetto debole.
- W o w è un oggetto debole che non è stato così etichettato
- - sta per il carattere stub nel file oggetto a.out
- ? significa tipo di carattere non definito
Posizione nel file system
Dopo aver compilato il kernel Linux , il file System.mapsi trova nel file /usr/src/linux/. Tuttavia, alcuni programmi lo richiedono in altri luoghi e talvolta con un nome diverso, come . Quindi, ad esempio, per compilare SVGAlib, è necessario un file nella directory/boot/System.map-$(uname -r)System.map/lib/modules/$(uname -r)/build/[ significato del fatto? ] .
Vedi anche
Note
- ↑ Che cos'è il file System.map? (link non disponibile) . Estratto il 20 settembre 2011 . Archiviato dall'originale il 10 maggio 2017.
Collegamenti
- Alavor Vasudevan. Linux Kernel HOWTO, System.map ( 4 maggio 2003). — Descrizione del file System.map. Estratto: 20 settembre 2011.
- File System.map (inglese) (downlink) . - Informazioni sui simboli, le tabelle dei simboli e il file System.map. Estratto il 20 settembre 2011 . Archiviato dall'originale il 19 maggio 2012.