1

我正在处理elfdump命令的克隆。

elfdump -ecps *file*在所有可执行文件上运行时,我的程序运行良好。但是,当我在库文件(例如 libc.so)上运行程序时,它会为 .symtab 部分中的所有符号打印出不正确的版本号(特别是它们都为零)。我已经查看了很多次文档,但我无法弄清楚为什么会发生这种情况。

有人可以提供一些提示吗?或者可能如何检测它是否是一个库,所以我可以硬编码一个 0?

4

1 回答 1

3

我相信,您可以通过检查 e_type 字段是否为 ET_DYN 来确定您是否正在针对共享库运行。(人精灵(5))

Ulrich Drepper有一篇文章介绍了 ELF 中的 glibc 每符号版本控制技巧。也许那里有您以前没有遇到过的其他信息。linux 上的手册页似乎没有涵盖 ELF 文档中的每个符号版本信息。

于 2009-02-17T17:51:49.597 回答