Roh*_*lla 3 compiler-construction llvm llvm-clang
我试图通过LLVM解析代码,在我的C / C ++代码中打印所有函数的名称。我参考了此处给出的示例http://llvm.org/docs/WritingAnLLVMPass.html#basic-code-required 该示例适用于C代码输入,但对于C ++输入,它在一个简单的Hello World程序中显示以下函数名称
__cxx_global_var_init
主要
全球 _I_a
然后,我发现LLVM的iostream存在某些问题,如下所述:http : //llvm.org/docs/FAQ.html#what-is-this-llvm-global-ctors-and-global-ia-stuff-that当我包含iostream时发生
我从代码中删除了iostream,然后仅获得“ main”作为输出。
但是对于可以说包含以下功能的多功能C ++程序:convertperm,findType和main(没有iostream),我得到以下输出
_Z11convertpermSs
_Z8findtypeSs
主要
多功能C程序正常运行
谁能提供解决此问题的方法?
欢迎来到C ++名称修改的美好世界:)
您的前端(我假设是Clang)已重命名了这些功能,此过程称为mangling。如果您想找回原始的函数名称,则需要对损坏的名称进行解密。您可以阅读链接的文章,以了解更多有关为什么以及如何进行拆装的信息。
据我所知,LLVM中没有内置的C ++分解器,但是您可以使用外部的,例如libstdc ++的abi::__cxa_demangle。
| 归档时间: |
|
| 查看次数: |
732 次 |
| 最近记录: |