2009-02-17 105 views
1

我正在研究elfdump命令的克隆。ELF文件版本

在所有可执行文件上运行elfdump -ecps *file*时,我的程序都正常工作。但是,当我在库文件上运行我的程序时,比如说libc.so,它会在.symtab节中为所有符号打印出错误的版本号(具体而言,它们都是零)。我已经仔细查看了文档,但我无法弄清楚为什么会发生这种情况。

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

+0

您的问题还不够具体,我们无法提供超出规格的帮助。该规范在那里,如果你遵循它的话,它应该工作,如果他们不尝试发布一个确切的例子,它可能会得到很好的回应。 – 2009-02-17 16:56:59

回答

3

您可以通过检查e_type字段是否为ET_DYN来确定您是否在共享库上运行,我相信。 (man elf(5))

Ulrich Drepper有一个article,它涵盖了ELF中的glibc每符号版本控制技巧。也许你还没有遇到过那些额外的信息。 linux上的手册页似乎不包含ELF文档中的每个符号版本信息。