Ошибка во время выполнения в LLVM Pass, сообщение «Ptr должен быть указателем на тип Val!» «Сбой». - PullRequest
1 голос
/ 23 января 2020

Я хочу вставить "mallo c" в целевой код с помощью прохода llvm.

Для этого мои коды указаны ниже.

allocated = new GlobalVariable(module,
    Type::getInt64PtrTy(*ctx),
    false,
    GlobalValue::CommonLinkage,
    0,
    "main_func_address"
);
Function* mainFunction = module.getFunction("main");

BasicBlock& mbb = mainFunction->getEntryBlock();

IRBuilder<> IRB(dyn_cast<Instruction>(mbb.getFirstInsertionPt()));
std::vector<Value*> malloc_arg;
Value* size_malloc = ConstantInt::get(Type::getInt32Ty(*ctx), 1);
errs()<<"Create Call\n";
IRB.CreateCall(mallocFunc, size_malloc);
errs()<<"Create Store\n";
IRB.CreateStore(size_malloc, allocated);

Произошла ошибка в "IRB.CreateStore". Сообщение об ошибке: «void llvm :: StoreInst :: AssertOK (): Утверждение` getOperand (0) -> getType () == cast (getOperand (1) -> getType ()) -> getElementType () && "Ptr должно быть указатель на тип Val! " Как я могу это сделать?

...