diff options
Diffstat (limited to 'llvm/tools/lli')
| -rw-r--r-- | llvm/tools/lli/ChildTarget/ChildTarget.cpp | 6 | ||||
| -rw-r--r-- | llvm/tools/lli/RemoteJITUtils.h | 1 | ||||
| -rw-r--r-- | llvm/tools/lli/lli.cpp | 21 |
3 files changed, 16 insertions, 12 deletions
diff --git a/llvm/tools/lli/ChildTarget/ChildTarget.cpp b/llvm/tools/lli/ChildTarget/ChildTarget.cpp index 93925d6aa87..33de1850547 100644 --- a/llvm/tools/lli/ChildTarget/ChildTarget.cpp +++ b/llvm/tools/lli/ChildTarget/ChildTarget.cpp @@ -54,8 +54,8 @@ int main(int argc, char *argv[]) { JITServer Server(Channel, SymbolLookup, RegisterEHFrames, DeregisterEHFrames); while (1) { - JITServer::JITProcId Id = JITServer::InvalidId; - if (auto EC = Server.getNextProcId(Id)) { + JITServer::JITFuncId Id = JITServer::InvalidId; + if (auto EC = Server.getNextFuncId(Id)) { errs() << "Error: " << EC.message() << "\n"; return 1; } @@ -63,7 +63,7 @@ int main(int argc, char *argv[]) { case JITServer::TerminateSessionId: return 0; default: - if (auto EC = Server.handleKnownProcedure(Id)) { + if (auto EC = Server.handleKnownFunction(Id)) { errs() << "Error: " << EC.message() << "\n"; return 1; } diff --git a/llvm/tools/lli/RemoteJITUtils.h b/llvm/tools/lli/RemoteJITUtils.h index d5488ad555c..63915d13dde 100644 --- a/llvm/tools/lli/RemoteJITUtils.h +++ b/llvm/tools/lli/RemoteJITUtils.h @@ -16,6 +16,7 @@ #include "llvm/ExecutionEngine/Orc/RPCChannel.h" #include "llvm/ExecutionEngine/RTDyldMemoryManager.h" +#include <mutex> #if !defined(_MSC_VER) && !defined(__MINGW32__) #include <unistd.h> diff --git a/llvm/tools/lli/lli.cpp b/llvm/tools/lli/lli.cpp index 0f30a4a5ff0..ce99b6ac7a0 100644 --- a/llvm/tools/lli/lli.cpp +++ b/llvm/tools/lli/lli.cpp @@ -582,7 +582,7 @@ int main(int argc, char **argv, char * const *envp) { // Reset errno to zero on entry to main. errno = 0; - int Result; + int Result = -1; // Sanity check use of remote-jit: LLI currently only supports use of the // remote JIT on Unix platforms. @@ -681,12 +681,13 @@ int main(int argc, char **argv, char * const *envp) { static_cast<ForwardingMemoryManager*>(RTDyldMM)->setResolver( orc::createLambdaResolver( [&](const std::string &Name) { - orc::TargetAddress Addr = 0; - if (auto EC = R->getSymbolAddress(Addr, Name)) { - errs() << "Failure during symbol lookup: " << EC.message() << "\n"; - exit(1); - } - return RuntimeDyld::SymbolInfo(Addr, JITSymbolFlags::Exported); + if (auto AddrOrErr = R->getSymbolAddress(Name)) + return RuntimeDyld::SymbolInfo(*AddrOrErr, JITSymbolFlags::Exported); + else { + errs() << "Failure during symbol lookup: " + << AddrOrErr.getError().message() << "\n"; + exit(1); + } }, [](const std::string &Name) { return nullptr; } )); @@ -698,8 +699,10 @@ int main(int argc, char **argv, char * const *envp) { EE->finalizeObject(); DEBUG(dbgs() << "Executing '" << EntryFn->getName() << "' at 0x" << format("%llx", Entry) << "\n"); - if (auto EC = R->callIntVoid(Result, Entry)) - errs() << "ERROR: " << EC.message() << "\n"; + if (auto ResultOrErr = R->callIntVoid(Entry)) + Result = *ResultOrErr; + else + errs() << "ERROR: " << ResultOrErr.getError().message() << "\n"; // Like static constructors, the remote target MCJIT support doesn't handle // this yet. It could. FIXME. |

