【问题标题】:Print symbol of file .o文件 .o 的打印符号
【发布时间】:2018-02-14 12:23:02
【问题描述】:

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

一个想法? 谢谢你!

【问题讨论】:

  • 我不记得它是偏移量还是字符串表的索引。反正就是其中之一。
  • 好的,谢谢。但是如何访问字符串表?

标签: symbols nm


【解决方案1】:

st_name.shstrtab 中的偏移量。

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

【讨论】:

    猜你喜欢
    • 2014-07-11
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    相关资源
    最近更新 更多