Регистрация внешней функции с помощью JIT от Clang? - PullRequest
2 голосов
/ 18 августа 2010

Я пытаюсь зарегистрировать внешнюю функцию с помощью clangs JIT без успеха.

Вот функция, которую я пытаюсь вызвать:

extern "C"
int myFunction(int val)
{
 fprintf(stderr, "success!");

 return 1;
}

Вот код, который я использую для регистрации:*

llvm::FunctionType* ft = llvm::FunctionType::get(llvm::Type::getInt32Ty(llvm::getGlobalContext()),
  std::vector<const llvm::Type*>(1, llvm::Type::getInt32Ty(llvm::getGlobalContext())), false);

llvm::Function* F = llvm::Function::Create(ft, llvm::Function::ExternalLinkage, "yipee", Mod);
EE->addGlobalMapping(F, (void*)(intptr_t)yipee);

И вот код c, который будет запускаться JIT:

int myFunction(int);
int main()
{
   int dd = myFunction(5);

    return 0;
}

Мой код неверен или что-то еще?Есть идеи?Спасибо.

1 Ответ

1 голос
/ 13 августа 2011

Необходимо убедиться, что внешняя функция связана с той же программой, из которой вызывается JIT.

...