gpt4 book ai didi

c++ - ELF文件中符号表中的符号信息能否获取对象名?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:34:35 25 4
gpt4 key购买 nike

我已经成功解析了一个由多个源文件编译而成的elf文件(可执行文件)。我能够获取绑定(bind)(本地、全局、弱)、类型(对象、文件、部分、函数)、符号大小和符号地址以及符号名称(来自字符串表)。

符号链接(symbolic link)到的部分我也知道。

我的问题是,我们能否从符号表信息中得到包含该符号的准确目标文件名(**.obj)?我在解析时是否遗漏了一些信息?

最佳答案

您不能直接获取目标文件名,它会在链接过程中丢失。但是,根据用于创建可执行文件的构建过程,您可以从 STT_FILE 符号推断目标文件名(例如,可执行文件包含名称为 foo.c 的 STT_FILE 符号 -> 您可以推断目标文件是 foo。 o).

似乎特定源文件中的符号跟在 STT_FILE 符号之后,绑定(bind)了 STB_LOCAL。

来自 System V ABI 标准:

STT_FILE -- Conventionally, the symbol’s name gives the name of the source file associated with the object file. A file symbol has STB_LOCAL binding, its section index is SHN_ABS, and it precedes the other STB_LOCAL symbols for the file, if it is present.

关于c++ - ELF文件中符号表中的符号信息能否获取对象名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6981787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com