当前位置: 动力学知识库 > 问答 > 编程问答 >

Identifying user define function through llvm pass

问题描述:

Is there anyway by which I can identify whether the callee function is a user define or not?

For example:

void foo()

{

printf("hello world again");

}

int main()

{

printf("hello world\n");

foo();

}

As in this case foo() is a user define, whereas printf() is a library function.

The method I'm currently using is to iterate over all the modules and check if its size is greater than 0 or not.

i.e:

for(Module::iterator F = M.begin(); F != M.end(); ++F)

{

Function &Func = *F;

if(F->size()>0)

errs() << "User Define";

}

But am not sure about its accuracy?

网友答案:

You can use the isDeclaration method to check whether the function is defined or just declared in the module. This will let you differentiate between functions whose implementation is in the module and function that are expected to be found outside it.

分享给朋友:
您可能感兴趣的文章:
随机阅读: