【问题标题】:Finding all uses of a specific variable in LLVM在 LLVM 中查找特定变量的所有用途
【发布时间】:2012-09-05 21:22:51
【问题描述】:

我对 LLVM 很陌生。

我正在尝试编写一个 llvm Pass 来执行类似于污点分析的操作。在我的努力中,我需要遍历特定预定义变量的 Def-use 链。比如反汇编一个C程序如下代码

  @someVar = external global %struct.something 

这是在函数上方找到的,我想在我的函数中找到这个 @someVar 的所有用途。我该怎么做?我开始编写函数传递。但是如何获取这个特定标识符的 Def Use 链呢?

我在 LLVM 手册 http://llvm.org/docs/ProgrammersManual.html#iterate_chains 中找到了这个。

但我不确定如何在这种情况下使用它。

P.S 抱歉,如果我的问题含糊不清或幼稚。我是新手,我不知道什么信息是相关的。

【问题讨论】:

    标签: llvm llvm-clang


    【解决方案1】:

    我正在粘贴链接中的代码

    Function *F = ...;
    
    for (Value::use_iterator i = F->use_begin(), e = F->use_end(); i != e; ++i)
      if (Instruction *Inst = dyn_cast<Instruction>(*i)) {
        errs() << "F is used in instruction:\n";
        errs() << *Inst << "\n";
      }
    

    基本上 F 是您要为其查找链的值

    【讨论】:

    • 我明白这一点。我的问题是我猜我如何获得变量的值。我不清楚。
    • @ash 你给出的代码是一个指令。只需执行此值 *v = *i;我在哪里指示
    • 是的。如果要遍历所有指令,我知道该怎么做。但是要获得指向特定值的指针,我不知道该怎么做...在我的示例中,您将如何获得指向 @someVar 值的指针?
    • 是的。但我仍然有问题。我更新了我原来的帖子!谢谢
    • @ash 你现在遇到什么问题
    猜你喜欢
    • 2017-05-07
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多