如何为包含许多源代码文件和巨大的Makefile(例如memcached)的大型程序生成llvm bitcode?

时间:2017-01-09 12:50:49

标签: llvm llvm-clang llvm-ir

我有我在玩具程序上测试的通行证,现在我想在大型程序上运行它,其中许多是像memcached这样的开源程序。这些程序有自己的Makefile和复杂的编译过程。我想为这些程序生成一个bitcode文件,让我的传递工作。帮助和建议将不胜感激!

2 个答案:

答案 0 :(得分:1)

根据您的传递内容,您可以:

  • 使用LTO构建:将-flto添加到CFLAGS并使用您自己构建的链接器插件构建应用程序从构建系统的角度来看是非常无缝的。但是,它需要了解如何设置LTO。
  • 使用您自己构建的clang构建:将您的传递静态添加到LLVM管道并使用您自己构建的clang。根据构建系统,导出指向已安装的clang的CC / CXX环境变​​量就足够了。
  • 通过动态加载你的pass来构建,例如Polly是(可选)做的。

答案 1 :(得分:0)

如果将-emit-llvm添加到clang标志中,它将发出BC文件而不是目标文件或LL文件而不是汇编。

您可能需要更多地修改makefile,以便让您从正确的方向开始。