Pergunta

Eu estou trabalhando em um clone do comando elfdump.

O meu programa funciona bem quando executando elfdump -ecps *file* em todos os executáveis. No entanto, quando eu executar o meu programa em um arquivo de biblioteca, digamos libc.so, ele imprime um número de versão incorreto para todos os símbolos na seção .symtab (especificamente eles são todos zero). Eu olhei sobre as toneladas de documentação de vezes, mas eu não consigo descobrir por que isso está acontecendo.

Por favor alguém pode fornecer algumas dicas? Ou possivelmente como detectar se a sua biblioteca ou não, então eu poderia apenas codificar um 0 na?

Foi útil?

Solução

Você pode determinar se você está correndo contra uma biblioteca compartilhada, verificando para ver se o campo e_type é ET_DYN, eu acredito. (Homem elf (5))

Há um artigo por Ulrich Drepper que cobre o glibc per-símbolo versionamento truques em ELF. Talvez haja informações adicionais lá que você não tenha encontrado antes. As páginas do homem no linux não aparecem para cobrir as informações de versão per-símbolo nos docs ELF.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top