从后端的 LLVM/clang 中提取基本块/CFG
我已经开始使用 LLVM,我很想知道是否有一种编程方法可以从 LLVM/clang 中提取控制流图和/或基本块,以便对它们进行一些分析。有没有办法挂钩工具链并提取这些信息,而不是直接编译?如果没有,还有哪些替代方案?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
LLVM 支持插件通道。编写一个过程来以您想要的任何格式发出您想要的任何数据是很简单的。
然而,LLVM 已经拥有大量的分析和转换过程。在运行所需的分析过程后,您也许可以使用现有的 LLVM 框架来提取所需的数据。
查看文档,代码,然后在 LLVMdev 列表以获得最佳答案。
LLVM supports plugin passes. It would be straight-forward to write a pass to emit whatever data you want in whatever format you want.
However, LLVM has a large suite of analysis and transform passes already. You may be able to use the existing LLVM framework to extract the data you want after running the analysis passes you want.
Take a look at the docs, the code, and then ask more specific questions on the LLVMdev list to get the best answers.
CFG(控制流图)纯粹是 CLang 的一部分。
CFG 支持访问者(请参阅 CFG.h),但您可能想在 CLang dev 上询问列出是否有可用的代码示例。
The CFG (Control Flow Graph) is purely part of CLang.
The CFG supports Visitors (see CFG.h) but you might want to ask on CLang dev list if there is a code sample available.