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);