【发布时间】:2013-08-05 07:42:39
【问题描述】:
我试图通过 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-i-a-stuff-that-happens-when-i-include-iostream
我从我的代码中删除了 iostream,然后我只得到了“main”作为输出。
但是对于可以说包含以下函数的多功能 C++ 程序:convertperm、findType 和 main(没有 iostream),我得到以下输出
_Z11convertpermSs
_Z8findtypeSs
主要
多功能C程序正常工作
谁能解决这个问题?
【问题讨论】:
-
使用
c++filt工具转换错位名称。如果您只想打印来自源文件(而不是包含的标头)的声明,请使用调试元数据。
标签: compiler-construction llvm llvm-clang