我是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
本身。
我对此程序有几个问题:
如何在迭代模块时识别对TypedObject
的特定调用?我需要检测一个CallInst,更具体地说,是一个调用add
的呼叫。
如何创建上述检测说明?我对创建说明感到困惑。
非常感谢能够提供帮助的人。