summaryrefslogtreecommitdiffstats
path: root/cpukit/libdl/rtl-unwind.h
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2017-03-28 17:23:05 +1100
committerChris Johns <chrisj@rtems.org>2017-04-04 13:26:01 +1000
commitd2e31f70c12f6363cef79ffad781df6ec0acdfb5 (patch)
tree3ebf30b9233ccfbff397ef245f3b74f1f2bd69dd /cpukit/libdl/rtl-unwind.h
parentdosfs: Fix file name search (diff)
downloadrtems-d2e31f70c12f6363cef79ffad781df6ec0acdfb5.tar.bz2
libdl: Back port C++ exception throw and catch from 4.12.
Closes #2956.
Diffstat (limited to 'cpukit/libdl/rtl-unwind.h')
-rw-r--r--cpukit/libdl/rtl-unwind.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/cpukit/libdl/rtl-unwind.h b/cpukit/libdl/rtl-unwind.h
new file mode 100644
index 0000000000..f88787e1ba
--- /dev/null
+++ b/cpukit/libdl/rtl-unwind.h
@@ -0,0 +1,63 @@
+/*
+ * COPYRIGHT (c) 2016 Chris Johns <chrisj@rtems.org>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+/**
+ * @file
+ *
+ * @ingroup rtems_rtl
+ *
+ * @brief RTEMS Run-Time Linker Unwind Support.
+ */
+
+#if !defined (_RTEMS_RTL_UNWIND_H_)
+#define _RTEMS_RTL_UNWIND_H_
+
+#include "rtl-elf.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * Architecture specific handler to check if a section contains exception
+ * handler data..
+ *
+ * @param obj The object file.
+ * @param name The section's name.
+ * @param uint32 flags The object file's flags.
+ * @retval true The section contains unwind information.
+ * @retval false The section does not contain unwind information.
+ */
+bool rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj,
+ const char* name,
+ uint32_t flags);
+
+/**
+ * Architecture specific handler to add an object file's unwind information to
+ * the base image.
+ *
+ * @param obj The object file.
+ * @retval true The unwind information has been registered.
+ * @retval false The unwind information could not be registered.
+ */
+bool rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj);
+
+/**
+ * Architecture specific handler to remove an object file's unwind information
+ * from the base image.
+ *
+ * @param obj The object file.
+ * @retval true The unwind information has been deregistered.
+ * @retval false The unwind information could not be deregistered.
+ */
+bool rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif