是否可以从库中获取函数的签名?

时间:2019-01-05 15:36:23

标签: linux shared-libraries ld nm

让我们假设nm在库utils中报告了一个功能符号:

$ nm --defined-only utils.so
T function_symbol

是否可以确定该函数的签名(返回类型和参数)?还是至少有参数个数和每个参数的大小?

1 个答案:

答案 0 :(得分:1)

可以从DWARF调试信息中获取此信息。但是,如果调试信息不​​可用(要么是因为它已被剥离,要么是因为它不是在编译过程中首先生成的),则这是不可能的。 ELF对象不包含此信息。

对于C ++函数符号,改写显示了函数参数的类型,但是即使在那儿,函数结果的类型也丢失了,因此图像仍然不完整。