Je suis en fait recoder le programme nm et objdump. J'ai déjà fini objdump et cela fonctionne bien, donc je travaille sur nm maintenant. Je suis en train de trouver la table Symbole , afin de le faire que je cours à travers la section Table d'en-tête comme ceci:Vous ne trouvez pas le symbole tableau (format Elf) (programmation C)
while (i < elf->e_shnum)
{
if (shdr[i].sh_type == SHT_SYMTAB)
printf("Symbol table found\n");
i++;
}
Je lance jamais par cette condition, déjà essayé dans mon programme objdump et le même problème, ne peut pas trouver SHT_SYMTAB.
Voici comment je reçois la table d'en-tête Section:
Elf64_Shdr *shdr;
unsigned char *shstrtab;
void *data;
Elf64_Ehdr *elf;
//I reduced the code to make it more readable
data = mmap(NULL, filesize(fd), PROT_READ, MAP_SHARED, fd, 0);
elf = ((Elf64_Ehdr *)data);
shdr = ((Elf64_Shdr *)(data + elf->e_shoff));
shstrtab = ((unsigned char *)(data + shdr[elf->e_shstrndx].sh_offset));
Je ne sais pas si je le fais à droite (même si mon objdump fonctionne parfaitement), ou si je ne comprenais pas comment nm fonctionne
Merci pour l'aide :)
Je remplace effectivement le pointeur de données par le Ehdr coulé dans void *, ne fonctionne toujours pas – Drumz