Ele provavelmente tem seus símbolos regulares removidos e o que resta são seus símbolos dinâmicos, que você pode obter com nm -D
.
Eu esperava ver o número de símbolos no arquivo libc.so.6 , incluindo printf . Eu usei a ferramenta nm para encontrá-los, no entanto, diz que não há nenhum símbolo em libc.so.6.
@PSkocik respondeu isso. Eu só quero adicionar mais detalhes. Existem dois tipos de seções de símbolos no ELF: .symtab
e .dynsym
(consulte o Especificação Linux Básica Básica, também conhecida como LSB_5.0.0 , para detalhes). .symtab
é para a etapa de vinculação da própria biblioteca compartilhada. Quando a vinculação estiver concluída, a seção .symtab
não será mais necessária. A seção .dynsym
contém símbolos importantes que devem ser pesquisados pelo vinculador dinâmico no tempo de execução. nm
, por padrão, apenas exibe símbolos na seção .symtab
.
LSB_5.0.0 Seção 10.2.2.1, “ Tipos de seção ELF ”, diz que uma biblioteca compartilhada em conformidade deve ter .symtab
ou .dynsym
, mas não ambos. Como parte da biblioteca ABI, a libc é removida do .symtab
para estar em conformidade com as especificações.
Descubra se é um objeto compartilhado ou um arquivo ASCII regular. Se for um objeto compartilhado, você deverá ver "objeto compartilhado ELB de 32 bits LSB"
file /lib/i386-linux-gnu/libc.so.6