mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-09 13:33:17 +00:00
[MCJIT] Support DisableSymbolSearching and InstallLazyFunctionCreator in MCJIT.
Patch by Anthony Pesch. Thanks Anthony! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215613 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
14ee003f1a
commit
e8d6e37938
@ -316,13 +316,19 @@ uint64_t MCJIT::getSymbolAddress(const std::string &Name,
|
||||
|
||||
// If it hasn't already been generated, see if it's in one of our modules.
|
||||
Module *M = findModuleForSymbol(Name, CheckFunctionsOnly);
|
||||
if (!M)
|
||||
return 0;
|
||||
if (M) {
|
||||
generateCodeForModule(M);
|
||||
|
||||
generateCodeForModule(M);
|
||||
// Check the RuntimeDyld table again, it should be there now.
|
||||
return getExistingSymbolAddress(Name);
|
||||
}
|
||||
|
||||
// Check the RuntimeDyld table again, it should be there now.
|
||||
return getExistingSymbolAddress(Name);
|
||||
// If a LazyFunctionCreator is installed, use it to get/create the function.
|
||||
// FIXME: Should we instead have a LazySymbolCreator callback?
|
||||
if (LazyFunctionCreator)
|
||||
Addr = (uint64_t)LazyFunctionCreator(Name);
|
||||
|
||||
return Addr;
|
||||
}
|
||||
|
||||
uint64_t MCJIT::getGlobalValueAddress(const std::string &Name) {
|
||||
@ -578,5 +584,7 @@ uint64_t LinkingMemoryManager::getSymbolAddress(const std::string &Name) {
|
||||
Result = ParentEngine->getSymbolAddress(Name.substr(1), false);
|
||||
if (Result)
|
||||
return Result;
|
||||
if (ParentEngine->isSymbolSearchingDisabled())
|
||||
return 0;
|
||||
return ClientMM->getSymbolAddress(Name);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user