Domanda

Sto lavorando su un clone del comando elfdump.

Il mio programma funziona bene quando funziona elfdump -ecps *file* su tutti i file eseguibili. Tuttavia, quando eseguo il mio programma su un file di libreria, diciamo libc.so, esso stampa un numero di versione non corretta per tutti i simboli nella sezione .symtab (in particolare sono tutti pari a zero). Ho guardato oltre le tonnellate di documentazione di volte, ma non riesco a capire perché questo sta accadendo.

Qualcuno può fornire alcuni suggerimenti? O forse come rilevare se la sua una libreria o non così ho potuto solo hard-code uno 0 nella?

È stato utile?

Soluzione

È possibile determinare se si sta eseguendo contro una libreria condivisa da controllare per vedere se il campo è E_TYPE ET_DYN, credo. (Uomo elf (5))

C'è un articolo da Ulrich Drepper che copre il glibc per-simbolo delle versioni trucchi in ELF. Forse c'è informazioni aggiuntive lì che non hai incontrato prima. Le pagine man su Linux non sembrano coprire le informazioni per-simbolo delle versioni nella documentazione ELF.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top