打印文件.o的符号

时间:2018-02-14 12:23:02

标签: symbols nm

我想打印.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。 我不明白如何打印它。

一个想法? 谢谢你!

1 个答案:

答案 0 :(得分:0)

st_name.shstrtab中的偏移量。

您要搜索的字符串为(char *)(addr of shstrtab) + sym->st_name;