从后端的 LLVM/clang 中提取基本块/CFG

Posted

技术标签:

【中文标题】从后端的 LLVM/clang 中提取基本块/CFG【英文标题】:Extracting Basic Blocks/CFG from LLVM/clang on the Backend 【发布时间】:2011-02-08 03:52:58 【问题描述】:

我已经开始使用 LLVM,我很想知道是否有一种编程方式可以从 LLVM/clang 中提取控制流图和/或基本块,以便对它们进行一些分析。有没有办法挂钩工具链并提取这些信息而不是直接编译?如果没有,有什么替代方案?

【问题讨论】:

【参考方案1】:

LLVM 支持插件通道。编写一个 pass 以任何你想要的格式发出你想要的任何数据是很简单的。

但是,LLVM 已经拥有大量的分析和转换通道。在运行所需的分析通道后,您也许可以使用现有的 LLVM 框架来提取所需的数据。

查看docs、code,然后在LLVMdev list 上提出更具体的问题以获得最佳答案。

【讨论】:

【参考方案2】:

CFG(控制流图)纯粹是 CLang 的一部分。

CFG 支持访问者(请参阅 CFG.h),但您可能想在 CLang 开发人员列表中询问是否有可用的代码示例。

【讨论】:

以上是关于从后端的 LLVM/clang 中提取基本块/CFG的主要内容,如果未能解决你的问题,请参考以下文章

OS X 上的 LLVM 与 clang

使用 LLVM/Clang 忽略特定文件中的所有警告

Clang和LLVM - 发布与调试版本

将Clang作为独立项目构建,取决于LLVM二进制文件

stm32如何使用llvm+clang编译

Visual Studio 2019 LLVM clang 标志