如何在llvm中获得由allocaInstr实际分配的地址



我正在尝试对所有文件进行一些检测。我想完成的任务之一是:

当我遇到AllocaInstr时:

%1 = alloca i32

我想在它之后测量一个函数call __save_addr(),如下所示:

%1 = alloca i32
call __save_addr(i32* %1)

有办法做到这一点吗?

  1. 遍历函数中的所有指令。

  2. 检查是否是AllocaInst。如果是

  3. 创建一个新的CallInst调用你的函数*,并传递AllocaInst实例作为第一个参数

*如果你的函数已经在模块中,你可以通过Module::getFunction找到它;如果它在另一个模块中,你必须为它创建一个声明。

相关内容

  • 没有找到相关文章

最新更新