gpt4 book ai didi

c++ - 如何从 LLVM 中的 CallInst 获取间接调用的函数名称

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:01:51 26 4
gpt4 key购买 nike

Function *fun = call->getCalledFunction();

getCalledFunction(); 如果是间接调用则返回 null。如何获取函数名或指针名?

我在 Stack Overflow 中发现所有与此问题相关的问题都谈到了直接调用的函数名,或者指针类型。

我只想跟踪这样的案例:

void foo(){}
void goo(){}
void main(){
int x = 1;
void (*p)();
if(x)
p = &foo;
else
p = &goo;
p(); // print the called function name
}

最佳答案

我遇到了同样的问题。这是我阅读 llvm 源代码后的解决方案:

Function* fp = CI->getCalledFunction();
if (fp==NULL) {
Value* v=CI->getCalledValue();
Value* sv = v->stripPointerCasts();
StringRef fname = sv->getName();
errs()<<fname<<"\n";
}

关于c++ - 如何从 LLVM 中的 CallInst 获取间接调用的函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28653072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com