diff options
author | Lang Hames <lhames@gmail.com> | 2013-12-07 03:05:51 +0000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2013-12-07 03:05:51 +0000 |
commit | e7777cdc643d15671c5a7bc7c24753820298c100 (patch) | |
tree | 474612a707de090c7ca2651c5d1d391c2c855fff /lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h | |
parent | eb2934e78230f0a03db4b35b33ba9eda77755967 (diff) | |
download | llvm-e7777cdc643d15671c5a7bc7c24753820298c100.tar.gz llvm-e7777cdc643d15671c5a7bc7c24753820298c100.tar.bz2 llvm-e7777cdc643d15671c5a7bc7c24753820298c100.tar.xz |
Add support for archives and object file caching under MCJIT.
Patch by Andy Kaylor, with minor edits to resolve merge conflicts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196639 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h')
-rw-r--r-- | lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h b/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h index 3014b30773..183cf6cf36 100644 --- a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h +++ b/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h @@ -311,12 +311,18 @@ protected: virtual void updateGOTEntries(StringRef Name, uint64_t Addr) {} virtual ObjectImage *createObjectImage(ObjectBuffer *InputBuffer); + virtual ObjectImage *createObjectImageFromFile(object::ObjectFile *InputObject); + + // This is the implementation for the two public overloads + ObjectImage *loadObject(ObjectImage *InputObject); + public: RuntimeDyldImpl(RTDyldMemoryManager *mm) : MemMgr(mm), HasError(false) {} virtual ~RuntimeDyldImpl(); ObjectImage *loadObject(ObjectBuffer *InputBuffer); + ObjectImage *loadObject(object::ObjectFile *InputObject); void *getSymbolAddress(StringRef Name) { // FIXME: Just look up as a function for now. Overly simple of course. @@ -354,6 +360,7 @@ public: StringRef getErrorString() { return ErrorStr; } virtual bool isCompatibleFormat(const ObjectBuffer *Buffer) const = 0; + virtual bool isCompatibleFile(const ObjectFile *Obj) const = 0; virtual void registerEHFrames(); |