我想打印.o文件的符号(与nm命令相同)。 我迭代每个部分。并使用这个条件:
if (section[i].sh_type == SHT_SYMTAB)
{
sym = (Elf64_Sym *)((char *)content +
section[i].sh_offset);
}
当我有我的Elf64_Sym结构时,我想要打印符号名称。结构是:
typedef struct {
uint32_t st_name;
unsigned char st_info;
unsigned char st_other;
uint16_t st_shndx;
Elf64_Addr st_value;
uint64_t st_size;
} Elf64_Sym;
如何打印st_name?他的类型是uint32_t。 我不明白如何打印它。
一个想法? 谢谢你!
答案 0 :(得分:0)
st_name
是.shstrtab
中的偏移量。
您要搜索的字符串为(char *)(addr of shstrtab) + sym->st_name;