生成bitcode文件是能够后续展开分析的前提。 然而llvm的官方文档和通过搜索引擎查找到的教程中鲜少对bitcode的生成,尤其是大项目的bitcode生成进行介绍,在初期摸索时花了不少时间,本篇用来记录自己实际运用到的各种方式和尝试中遇到的问题。
LLVM Pass使用的前提是生成待分析的bitcode作为输入,通过opt
指令实现分析。如
# legacy pass
opt --passes=<pass_name>
# new pass
opt
单源码
编译时生成bitcode/LLVM IR
单源码的bitcode生成通过添加-emit-llvm
选项正常编译即可获得
clang
.bc
bitcode文件与.ll
IR文件转换
# bitcode(.bc) -> llvm ir(.ll)
llvm-as
# llvm ir(.ll) -> bitcode(.bc)
llvm-