LLVM的LTOPass插件编写

由于LLVM出色的结构,所以我们可以很方便的在LLVM中添加我们自己想要的功能,比如代码结构优化、代码混淆、代码膨胀、控制流混淆等。

参考文档:
LLVM.org - WritingAnLLVMPass
LLVM.org - LinkTimeOptimization

我们要做的就是编写我们自己的LTOPass模块,然后将其注册进LLVM的代码中然后进行编译。

注册方法:

  1. 编写我们自己的Pass模块
  2. 修改llvm/Transforms/IPO/PassManagerBuild.cpp 然后把自己的Pass放进 populateLTOPassManager 中
  3. 把模块放进 llvm/Transforms/IPO/LLVMBuild.txt 中
  4. 编译!

评论

  1. 请问populateLTOPassManager 此方法什么时候回被调用?我在这个方法内添加errs()<<"log";,但是在用编译出来的工具编译源文件时却没有打印日志。这是怎么回事呢

    回复删除

发表评论

此博客中的热门博文

使__attribute__((annotate("xxx")))能作用于OC函数

viewWillAppear不执行的解决办法

iOS中使用xpc/xpc.h