文件 .o 的打印符号
Posted
技术标签:
【中文标题】文件 .o 的打印符号【英文标题】:Print symbol of file .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。 我不明白如何打印它。
一个想法? 谢谢你!
【问题讨论】:
我不记得它是偏移量还是字符串表的索引。反正就是其中之一。 好的,谢谢。但是如何访问字符串表? 【参考方案1】:st_name
是.shstrtab
中的偏移量。
您要搜索的字符串是(char *)(addr of shstrtab) + sym->st_name;
【讨论】:
以上是关于文件 .o 的打印符号的主要内容,如果未能解决你的问题,请参考以下文章