LLVM的LTOPass插件编写
由于LLVM出色的结构,所以我们可以很方便的在LLVM中添加我们自己想要的功能,比如代码结构优化、代码混淆、代码膨胀、控制流混淆等。
参考文档:
LLVM.org - WritingAnLLVMPass
LLVM.org - LinkTimeOptimization
我们要做的就是编写我们自己的LTOPass模块,然后将其注册进LLVM的代码中然后进行编译。
注册方法:
参考文档:
LLVM.org - WritingAnLLVMPass
LLVM.org - LinkTimeOptimization
我们要做的就是编写我们自己的LTOPass模块,然后将其注册进LLVM的代码中然后进行编译。
注册方法:
- 编写我们自己的Pass模块
- 修改llvm/Transforms/IPO/PassManagerBuild.cpp 然后把自己的Pass放进 populateLTOPassManager 中
- 把模块放进 llvm/Transforms/IPO/LLVMBuild.txt 中
- 编译!
请问populateLTOPassManager 此方法什么时候回被调用?我在这个方法内添加errs()<<"log";,但是在用编译出来的工具编译源文件时却没有打印日志。这是怎么回事呢
回复删除