当前位置:  开发笔记 > 编程语言 > 正文

LLVM IR:使用元数据节点识别变量

如何解决《LLVMIR:使用元数据节点识别变量》经验,为你挑选了0个好方法。

目前我正在开发一种工具,用于识别任意程序上的全局变量和字段变量的加载和存储访问.此外,访问变量应由其源级别名称/标识符标识.为了实现这一点,我将诊断程序的源代码编译成带有调试信息的LLVM IR.到目前为止,生成的元数据节点包含所需的源级别标识符.但是,我无法绘制与某些LLVM IR标识符和元数据中的信息的连接.

例如,考虑一个类的satic成员:

 class TestClass {
   public:
    static int Number;
};

相应的LLVM IR如下所示:

@_ZN12TestClass6NumberE = external global i32, align 4

...
!15 = !DIDerivedType(tag: DW_TAG_member, name: "Number", scope: !"_ZTS12TestClass", file: !12, line: 5, baseType: !16, flags: DIFlagPublic | DIFlagStaticMember)

在这个受控的例子中,我知道"@ _ZN12TestClass6NumberE"是"Number"的标识符.但是,总的来说,我没有看到如何找出哪个IR标识符对应于哪个元数据.

有人可以帮帮我吗?

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有