close

System.map

Vai alla navigazione Vai alla ricerca

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

  1. Che cos'è il file System.map? (link non disponibile) . Estratto il 20 settembre 2011 . Archiviato dall'originale il 10 maggio 2017. 

Collegamenti

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