1
我有一個帶有函數的LLVM(版本爲2.7)模塊,該指針指向一個結構體。該結構包含一個指向C++函數的函數指針。模塊函數將被JIT編譯,我需要使用LLVM API在C++中構建該結構。我似乎無法將指向該函數的指針視爲LLVM值,更不用說傳遞指向我無法構建的ConstantStruct的指針了。LLVM:將指向包含指向函數的指針的結構的指針傳遞給JIT函數
我不知道如果我甚至在軌道上,但是這是我到目前爲止有:
void print(char*);
vector<Constant*> functions;
functions.push_back(ConstantExpr::getIntToPtr(
ConstantInt::get(Type::getInt32Ty(context), (int)print),
/* function pointer type here, FunctionType::get(...) doesn't seem to work */
));
ConstantStruct* struct = cast<ConstantStruct>(ConstantStruct::get(
cast<StructType>(m->getTypeByName("printer")),
functions
));
Function* main = m->getFunction("main");
vector<GenericValue> args;
args[0].PointerVal = /* not sure what goes here */
ee->runFunction(main, args);