diff options
author | Juergen Ributzka <juergen@apple.com> | 2014-03-26 18:19:27 +0000 |
---|---|---|
committer | Juergen Ributzka <juergen@apple.com> | 2014-03-26 18:19:27 +0000 |
commit | 50c385683ce74a2ae7f348659844e3a03cc8e7c8 (patch) | |
tree | 0b9b83540c9f46898045c1cc60ef4d1b2bd4dc06 | |
parent | 65a3ced86f2504215f83d35ed1530eb5072cc5ec (diff) | |
download | llvm-50c385683ce74a2ae7f348659844e3a03cc8e7c8.tar.gz llvm-50c385683ce74a2ae7f348659844e3a03cc8e7c8.tar.bz2 llvm-50c385683ce74a2ae7f348659844e3a03cc8e7c8.tar.xz |
[MCJIT] Check if there have been errors during RuntimeDyld execution.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204837 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/ExecutionEngine/RuntimeDyld.h | 1 | ||||
-rw-r--r-- | lib/ExecutionEngine/MCJIT/MCJIT.cpp | 2 | ||||
-rw-r--r-- | lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp | 2 |
3 files changed, 4 insertions, 1 deletions
diff --git a/include/llvm/ExecutionEngine/RuntimeDyld.h b/include/llvm/ExecutionEngine/RuntimeDyld.h index 0b6b75be48..8d7b81bb6e 100644 --- a/include/llvm/ExecutionEngine/RuntimeDyld.h +++ b/include/llvm/ExecutionEngine/RuntimeDyld.h @@ -84,6 +84,7 @@ public: void deregisterEHFrames(); + bool hasError(); StringRef getErrorString(); /// By default, only sections that are "required for execution" are passed to diff --git a/lib/ExecutionEngine/MCJIT/MCJIT.cpp b/lib/ExecutionEngine/MCJIT/MCJIT.cpp index aa5f724024..49b6727561 100644 --- a/lib/ExecutionEngine/MCJIT/MCJIT.cpp +++ b/lib/ExecutionEngine/MCJIT/MCJIT.cpp @@ -115,7 +115,7 @@ bool MCJIT::removeModule(Module *M) { void MCJIT::addObjectFile(object::ObjectFile *Obj) { ObjectImage *LoadedObject = Dyld.loadObject(Obj); - if (!LoadedObject) + if (!LoadedObject || Dyld.hasError()) report_fatal_error(Dyld.getErrorString()); LoadedObjects.push_back(LoadedObject); diff --git a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp b/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp index 7f35083748..12cd81931f 100644 --- a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp +++ b/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp @@ -761,6 +761,8 @@ void RuntimeDyld::mapSectionAddress(const void *LocalAddress, Dyld->mapSectionAddress(LocalAddress, TargetAddress); } +bool RuntimeDyld::hasError() { return Dyld->hasError(); } + StringRef RuntimeDyld::getErrorString() { return Dyld->getErrorString(); } void RuntimeDyld::registerEHFrames() { |