给定函数标识符,是否有命令行程序或库函数提供存储在 elf 文件中的地址

given a function identifier, is there a command line program or a library function providing the address as stored in the elf file

我正在寻找一个命令或库函数,returns 一个函数的地址,与 addr2line 相反。

目前,我使用以下命令:

readelf -s ./a.out|grep "\<main\>"|uniq
>    451: 000000000001967f   148 FUNC    GLOBAL DEFAULT   14 main

你也可以为此使用 gdb,info address 打印给定符号的地址,所以像这样的东西应该可以工作:gdb ./a.out -ex 'info address main'

你可以使用 libelf.

或者,此 和答案显示了如何执行 nm 的操作。

您可以轻松修改那里的代码以进行反向操作:遍历所有符号,直到找到正确的符号名称,然后 return 该符号的地址。

如果您需要对多个符号名称执行查找,您当然可以遍历所有符号一次,并构建一个 name -> address 映射,因此后续查找很快。