Atualização do arquivo System.map

1

Eu descobri que o arquivo System.map contém endereços de símbolos. Envolve chamadas do sistema? Eu li que só é atualizado quando um novo kernel é compilado recentemente.

Isso significa que, exceto por uma nova compilação do kernel, elas são sempre armazenadas no mesmo endereço?

    
por user3539 10.01.2011 / 05:21

1 resposta

2

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

    
por 10.01.2011 / 09:19

Tags