summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuergen Ributzka <juergen@apple.com>2014-03-26 18:19:27 +0000
committerJuergen Ributzka <juergen@apple.com>2014-03-26 18:19:27 +0000
commit50c385683ce74a2ae7f348659844e3a03cc8e7c8 (patch)
tree0b9b83540c9f46898045c1cc60ef4d1b2bd4dc06
parent65a3ced86f2504215f83d35ed1530eb5072cc5ec (diff)
downloadllvm-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.h1
-rw-r--r--lib/ExecutionEngine/MCJIT/MCJIT.cpp2
-rw-r--r--lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp2
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() {