summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorAndrew Kaylor <andrew.kaylor@intel.com>2013-10-11 21:25:48 +0000
committerAndrew Kaylor <andrew.kaylor@intel.com>2013-10-11 21:25:48 +0000
commit528f6d787b1a847e61eb2f1114559f423fdeb68c (patch)
tree7570a5af47ba322b7fa97459017f88717c4ad35c /tools
parentb19b474de95112f7e0fc15ab87ad284889d19cd9 (diff)
downloadexternal_llvm-528f6d787b1a847e61eb2f1114559f423fdeb68c.zip
external_llvm-528f6d787b1a847e61eb2f1114559f423fdeb68c.tar.gz
external_llvm-528f6d787b1a847e61eb2f1114559f423fdeb68c.tar.bz2
Adding multiple object support to MCJIT EH frame handling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192504 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r--tools/lli/RemoteMemoryManager.cpp24
-rw-r--r--tools/lli/RemoteMemoryManager.h11
2 files changed, 9 insertions, 26 deletions
diff --git a/tools/lli/RemoteMemoryManager.cpp b/tools/lli/RemoteMemoryManager.cpp
index 8ccfde8..04fc40e 100644
--- a/tools/lli/RemoteMemoryManager.cpp
+++ b/tools/lli/RemoteMemoryManager.cpp
@@ -204,27 +204,3 @@ uint8_t *RemoteMemoryManager::allocateGlobal(uintptr_t Size, unsigned Alignment)
void RemoteMemoryManager::deallocateFunctionBody(void *Body) {
llvm_unreachable("Unexpected!");
}
-
-static int jit_noop() {
- return 0;
-}
-
-void *RemoteMemoryManager::getPointerToNamedFunction(const std::string &Name,
- bool AbortOnFailure) {
- // We should not invoke parent's ctors/dtors from generated main()!
- // On Mingw and Cygwin, the symbol __main is resolved to
- // callee's(eg. tools/lli) one, to invoke wrong duplicated ctors
- // (and register wrong callee's dtors with atexit(3)).
- // We expect ExecutionEngine::runStaticConstructorsDestructors()
- // is called before ExecutionEngine::runFunctionAsMain() is called.
- if (Name == "__main") return (void*)(intptr_t)&jit_noop;
-
- // FIXME: Would it be responsible to provide GOT?
- if (AbortOnFailure) {
- if (Name == "_GLOBAL_OFFSET_TABLE_")
- report_fatal_error("Program used external function '" + Name +
- "' which could not be resolved!");
- }
-
- return NULL;
-}
diff --git a/tools/lli/RemoteMemoryManager.h b/tools/lli/RemoteMemoryManager.h
index ca157a7..eabe042 100644
--- a/tools/lli/RemoteMemoryManager.h
+++ b/tools/lli/RemoteMemoryManager.h
@@ -74,13 +74,20 @@ public:
unsigned SectionID, StringRef SectionName,
bool IsReadOnly);
- void *getPointerToNamedFunction(const std::string &Name,
- bool AbortOnFailure = true);
+ // For now, remote symbol resolution is not support in lli. The MCJIT
+ // interface does support this, but clients must provide their own
+ // mechanism for finding remote symbol addresses. MCJIT will resolve
+ // symbols from Modules it contains.
+ uint64_t getSymbolAddress(const std::string &Name) {}
void notifyObjectLoaded(ExecutionEngine *EE, const ObjectImage *Obj);
bool finalizeMemory(std::string *ErrMsg);
+ // For now, remote EH frame registration isn't supported. Remote symbol
+ // resolution is a prerequisite to supporting remote EH frame registration.
+ void registerEHFrames(uint8_t *Addr, uint64_t LoadAddr, size_t Size) {}
+
// This is a non-interface function used by lli
void setRemoteTarget(RemoteTarget *T) { Target = T; }