在LLVM中的另一个函数调用之前/之后插入外部函数调用

时间:2017-10-01 12:21:29

标签: c insert llvm call

我是LLVM的新手,想要创建一个LLVM传递,以下列方式对c文件执行检测:

假设我正在检查c函数lst *add(list* lst, int num),它将int添加到链表中。我想在调用之前和之后插入一些指令,以便我可以将函数的输入和输出记录到文件中。录音机是一个外部工具。

仪器前:

int val = 9;
lst = add(lst, val);

仪表后:

int val = 9;
TypedObject lstObj = {type_lst, lst};
record_input("add", lstObj);

lst = add(lst, val);

TypedObject lstObj = {type_lst, lst}; 
record_output("add", lstObj);

记录功能会收到type的{​​{1}}(我在我制作的录音机工具中使用的东西)和TypedObject本身。

我对此程序有几个问题:

  1. 如何在迭代模块时识别对TypedObject的特定调用?我需要检测一个CallInst,更具体地说,是一个调用add的呼叫。

  2. 如何创建上述检测说明?我对创建说明感到困惑。

  3. 非常感谢能够提供帮助的人。

0 个答案:

没有答案