summaryrefslogtreecommitdiff
path: root/include/llvm
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm')
-rw-r--r--include/llvm/ExecutionEngine/RuntimeDyld.h7
-rw-r--r--include/llvm/ExecutionEngine/SectionMemoryManager.h2
2 files changed, 9 insertions, 0 deletions
diff --git a/include/llvm/ExecutionEngine/RuntimeDyld.h b/include/llvm/ExecutionEngine/RuntimeDyld.h
index 4222d5335b..c6c126c6e2 100644
--- a/include/llvm/ExecutionEngine/RuntimeDyld.h
+++ b/include/llvm/ExecutionEngine/RuntimeDyld.h
@@ -66,6 +66,11 @@ public:
///
/// Returns true if an error occurred, false otherwise.
virtual bool applyPermissions(std::string *ErrMsg = 0) = 0;
+
+ /// Register the EH frames with the runtime so that c++ exceptions work. The
+ /// default implementation does nothing. Look at SectionMemoryManager for one
+ /// that uses __register_frame.
+ virtual void registerEHFrames(StringRef SectionData);
};
class RuntimeDyld {
@@ -109,6 +114,8 @@ public:
void mapSectionAddress(const void *LocalAddress, uint64_t TargetAddress);
StringRef getErrorString();
+
+ StringRef getEHFrameSection();
};
} // end namespace llvm
diff --git a/include/llvm/ExecutionEngine/SectionMemoryManager.h b/include/llvm/ExecutionEngine/SectionMemoryManager.h
index 9ac8c92524..84a4e08cbb 100644
--- a/include/llvm/ExecutionEngine/SectionMemoryManager.h
+++ b/include/llvm/ExecutionEngine/SectionMemoryManager.h
@@ -72,6 +72,8 @@ public:
/// \returns true if an error occurred, false otherwise.
virtual bool applyPermissions(std::string *ErrMsg = 0);
+ void registerEHFrames(StringRef SectionData);
+
/// This method returns the address of the specified function. As such it is
/// only useful for resolving library symbols, not code generated symbols.
///