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

Is it possible to get function's signature from a library?

假设 nm 在库 utils 中报告了一个函数符号:

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

是否可以确定该函数的签名(return 类型和参数)?或者至少参数个数和每个参数的大小?

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

对于 C++ 函数符号,修饰显示了函数参数的类型,但即使在那里,函数结果的类型也丢失了,所以图片仍然不完整。