【发布时间】:2014-11-19 17:58:29
【问题描述】:
我正在开发一些适用于 llvm 字节码文件的 C/C++/Objective C 静态分析实用程序。它的基本思想很简单:
1. 实用程序使用参数“-c -emit-llvm -femit-all-decls -g”执行clang/clang++,为测试的源文件生成llvm字节码文件。
2. 如果文件被创建,它被 LLVM C 绑定读取并检查。与某些特定代码点相关的问题通过源引用报告,因为存在带有源引用的调试元数据。
我有一个运行良好的实用程序原型,但最近我将 Xcode 更新到 6.1 并且源引用丢失了。
为了解决这个问题,我尝试使用更新的编译器重建我的工具和 llvm 静态库,但它并没有解决我的问题。
我试图从 llvm 收到任何提示,我最终得到的唯一结果是:
➜ bin ./llvm-dis test.bc
警告:忽略 test.bc 中具有无效版本 (600054001) 的调试信息
所以 llvm-dis 向我显示了上面的警告并生成了 test.ll 文件,该文件被剥离了任何调试元数据属性。
这是我正在使用的简单测试源文件:
int returnFive() {
return 5;
}
以及一些可能有用的信息:
➜ bin clang --version
Apple LLVM 6.0 版 (clang-600.0.54)(基于 LLVM 3.5svn)
目标:x86_64-apple-darwin14.0.0
线程模型:posix
➜ bin ./llvm-config --version
3.5.0
➜ bin ./llvm-config --host-target
x86_64-apple-darwin14.0.0
对我来说,这似乎非常兼容,但事实并非如此,也许有人可以就如何解决这个问题给我任何建议?
【问题讨论】:
标签: xcode clang llvm llvm-clang