5

我有一个分析整个模块的通道(使用runOnFunction())。但我想将它应用到每个执行路径上。执行路径是指从程序中的一个点(用 start 注释)到程序的终止点(用 end 注释)的指令序列。

我假设我必须通过构造一个 CallGraph 将我的模块划分为函数,然后通过在前面提到的 CallGraph 的节点中构造 CFG-s 将每个函数划分为指令。我假设我选择的节点的执行路径是在 CallGraph 叶子中完成的所有路径(我应该能够在 CFG-s 之间进行通信)。从该节点,我可以使用图形搜索算法查看所有路径。

是否有可能用用户定义的东西替换runOnFunction()/runOnModule()方法,比如runOnExecutionPath()?如果是这样,LLVM 中是否存在适合存储执行路径的结构?另一种可能性是使用getAnalysis<CallGraph>or getAnalysis<CFG>? 我很困惑。

非常感谢您的任何建议!

4

0 回答 0