diff options
author | Andrew Kaylor <andrew.kaylor@intel.com> | 2013-10-11 21:25:48 +0000 |
---|---|---|
committer | Andrew Kaylor <andrew.kaylor@intel.com> | 2013-10-11 21:25:48 +0000 |
commit | 528f6d787b1a847e61eb2f1114559f423fdeb68c (patch) | |
tree | 7570a5af47ba322b7fa97459017f88717c4ad35c /include | |
parent | b19b474de95112f7e0fc15ab87ad284889d19cd9 (diff) | |
download | external_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 'include')
-rw-r--r-- | include/llvm/ExecutionEngine/RTDyldMemoryManager.h | 7 | ||||
-rw-r--r-- | include/llvm/ExecutionEngine/RuntimeDyld.h | 9 |
2 files changed, 13 insertions, 3 deletions
diff --git a/include/llvm/ExecutionEngine/RTDyldMemoryManager.h b/include/llvm/ExecutionEngine/RTDyldMemoryManager.h index 09a5cb4..468b823 100644 --- a/include/llvm/ExecutionEngine/RTDyldMemoryManager.h +++ b/include/llvm/ExecutionEngine/RTDyldMemoryManager.h @@ -53,7 +53,12 @@ public: StringRef SectionName, bool IsReadOnly) = 0; /// Register the EH frames with the runtime so that c++ exceptions work. - virtual void registerEHFrames(StringRef SectionData); + /// + /// \p Addr parameter provides the local address of the EH frame section + /// data, while \p LoadAddr provides the address of the data in the target + /// address space. If the section has not been remapped (which will usually + /// be the case for local execution) these two values will be the same. + virtual void registerEHFrames(uint8_t *Addr, uint64_t LoadAddr, size_t Size); /// This method returns the address of the specified function or variable. /// It is used to resolve symbols during module linking. diff --git a/include/llvm/ExecutionEngine/RuntimeDyld.h b/include/llvm/ExecutionEngine/RuntimeDyld.h index 1a57317..a5610fb 100644 --- a/include/llvm/ExecutionEngine/RuntimeDyld.h +++ b/include/llvm/ExecutionEngine/RuntimeDyld.h @@ -64,9 +64,14 @@ public: /// This is the address which will be used for relocation resolution. void mapSectionAddress(const void *LocalAddress, uint64_t TargetAddress); - StringRef getErrorString(); + /// Register any EH frame sections that have been loaded but not previously + /// registered with the memory manager. Note, RuntimeDyld is responsible + /// for identifying the EH frame and calling the memory manager with the + /// EH frame section data. However, the memory manager itself will handle + /// the actual target-specific EH frame registration. + void registerEHFrames(); - StringRef getEHFrameSection(); + StringRef getErrorString(); }; } // end namespace llvm |