Home/从单文件到大型项目如何有效生成llvm bitcode

Created Tue, 24 May 2022 19:34:59 +0800 Modified Fri, 23 Sep 2022 03:27:33 +0800
271 Words

生成bitcode文件是能够后续展开分析的前提。 然而llvm的官方文档和通过搜索引擎查找到的教程中鲜少对bitcode的生成,尤其是大项目的bitcode生成进行介绍,在初期摸索时花了不少时间,本篇用来记录自己实际运用到的各种方式和尝试中遇到的问题。

LLVM Pass使用的前提是生成待分析的bitcode作为输入,通过opt指令实现分析。如

# legacy pass
opt --passes=<pass_name>
# new pass
opt 

单源码

编译时生成bitcode/LLVM IR

单源码的bitcode生成通过添加-emit-llvm选项正常编译即可获得

clang 

.bcbitcode文件与.llIR文件转换

# bitcode(.bc) -> llvm ir(.ll)
llvm-as 
# llvm ir(.ll) -> bitcode(.bc)
llvm-

项目