En Linux , el archivo System.map es una tabla de símbolos utilizada por el kernel .
Una tabla de símbolos es una búsqueda entre los nombres de los símbolos y sus direcciones en la memoria. Un nombre de símbolo puede ser el nombre de una variable o el nombre de una función. El System.map es necesario cuando se necesita la dirección de un nombre de símbolo o el nombre de símbolo de una dirección. Es especialmente útil para la depuración del núcleo entra en pánico y kernel oops . El kernel realiza la traducción de dirección a nombre por sí mismo cuando CONFIG_KALLSYMS
está habilitado, por lo que no se requieren herramientas como ksymoops. [1]
Internos
Lo siguiente es parte de un System.map
archivo: [2]
c041bc90 b packet_sklistc041bc94 b packet_sklist_lockc041bc94 b packet_socks_nrc041bc98 A __bss_stopc041bc98 A _endc041c000 A pg0ffffe400 A __kernel_vsyscallffffe410 A SYSENTER_RETURNffffe420 A __kernel_sigreturnffffe440 A __kernel_rt_sigreturn
Debido a que las direcciones pueden cambiar de una compilación a la siguiente, System.map
se genera una nueva para cada compilación del kernel. [3]
Tipos de símbolo
El carácter entre la dirección y el símbolo (separados por espacios) es el tipo de símbolo. El nm
programa de utilidad de los sistemas Unix enumera los símbolos de los archivos objeto. El System.map
está directamente relacionado con él, ya que este archivo es producido por nm
todo el programa del núcleo, al igual que nm
enumera los símbolos y sus tipos para cualquier programa de objeto pequeño. [4]
Algunos de estos tipos son: [4]
A
por absolutoB
ob
para la sección de datos no inicializada (llamada BSS)D
od
para la sección de datos inicializadaG
og
para la sección de datos inicializada para objetos pequeños (global)i
para secciones específicas de DLLN
para depurar símbolop
para sección de desenrollado de pilaR
or
para la sección de datos de solo lecturaS
os
para la sección de datos no inicializados para objetos pequeñosT
ot
para la sección de texto (código)U
por indefinidoV
ov
por objeto débilW
ow
para objetos débiles que no han sido etiquetados de manera-
para el símbolo de puñaladas en un archivo de objeto a.out?
para "tipo de símbolo desconocido"
Ubicación del sistema de archivos
Después de construir el kernel de Linux , System.map
se ubica en la raíz del directorio fuente. Sin embargo, algunos pasos de instalación de software adicionales esperan ubicar el archivo en otro lugar: [5]
Ver también
Referencias
- ^ "Preguntas frecuentes / System.map - principiantes del kernel de Linux" . kernelnewbies.org. 2006-04-14 . Consultado el 6 de abril de 2014 .
- ^ Peter Jay Salzman (28 de mayo de 2003). "El archivo system.map" . Rlworkman.net . Consultado el 6 de abril de 2014 .
- ^ "Kernel-HOWTO" . faqs.org . Consultado el 6 de abril de 2014 .
- ^ a b "nm (1): símbolos de archivos objeto - página de manual de Linux" . Linux.die.net . Consultado el 6 de abril de 2014 .
- ^ "Notas de Peter: System.map" . Linuxmafia.com. 2003-05-29 . Consultado el 6 de abril de 2014 .