System.map
contém um tabela de símbolos , ou seja, uma lista de nomes de funções no kernel Linux, com para cada função o endereço no qual seu código é carregado na memória (os endereços não são físicos, eles estão no kernel espaço de endereçamento, como qualquer tabela de símbolos executáveis está no espaço de endereçamento do processo carregado). Isso não está limitado a chamadas do sistema (as interfaces expostas a processos do usuário): o arquivo também lista funções que podem ser chamadas por um módulo carregado e até mesmo por funções internas. As chamadas do sistema são os símbolos cujo nome começa com sys_
.
Os endereços estão associados a um determinado binário do kernel ( vmlinux
, bzImage
ou outro formato; o formato da imagem não altera os endereços, é apenas uma codificação); eles são reproduzíveis para uma determinada fonte, configuração e compilador do kernel. O arquivo é gerado por scripts/mksysmap
próximo ao final do processo de criação do kernel; é a saída do comando nm
.
O arquivo é usado principalmente para depuração, mas também é lido durante a compilação de alguns módulos de terceiros que usam interfaces de kernel instáveis (instáveis como na mudança de uma versão para a próxima).