gpt4 book ai didi

从另一个文件定义的 LLVM 插入函数调用

转载 作者:行者123 更新时间:2023-12-01 04:49:52 26 4
gpt4 key购买 nike

我想在某个指令之前插入一个函数,但函数调用是在另一个文件中定义的。我试过

IRBuilder<> Builder(pi);
CallInst *callOne = Builder.CreateCall(func_ins, "foo");

在哪里 func_insfunc*(or Value* to be more general)foo是分配的调用函数的变量名前缀。
由于这个函数是在另一个文件中定义的,我不知道指针 func_ins 在哪里应该指向所以我只是将它设置为 但它没有用。

谁能给我一些关于如何解决这个问题的提示?

还有一个问题是我可以使用 WriteBitcodeToFile吗?转储具有外部函数调用文件的检测代码,因为我想知道它可能会报告 Referencing function in another moduleBroken Module在执行模块检查时?

最佳答案

您只能从同一个 Module 调用一个函数, 你不能使用 NULL作为被调用者。

如果函数是在另一个模块中定义的,则需要先在要调用的模块中声明它,然后使用声明进行调用。

要声明它,请在新模块中创建一个相同的函数(通过 Function::Create )并且不要为其分配主体。

关于从另一个文件定义的 LLVM 插入函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24331498/

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