summaryrefslogtreecommitdiff
path: root/gcc/unwind-generic.h
diff options
context:
space:
mode:
authorsandra <sandra@138bc75d-0d04-0410-961f-82ee72b054a4>2007-09-14 18:35:12 +0000
committersandra <sandra@138bc75d-0d04-0410-961f-82ee72b054a4>2007-09-14 18:35:12 +0000
commit07e0e650a389c83f2fca5691a2ffff2382da2acb (patch)
tree16301c9c22fd4a89593267534d7bb3be2bc2087f /gcc/unwind-generic.h
parent3c28ef9eaa6e42b25ca545fe94dde9567ac821a6 (diff)
downloadgcc-07e0e650a389c83f2fca5691a2ffff2382da2acb.tar.gz
2007-09-14 Sandra Loosemore <sandra@codesourcery.com>
Nigel Stephens <nigel@mips.com> gcc/ * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document. * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define. (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to declaration. (_Unwind_ForcedUnwind): Likewise. (_Unwind_Resume): Likewise. (_Unwind_Resume_or_Rethrow): Likewise. (_Unwind_Backtrace): Likewise. (_Unwind_SjLj_RaiseException): Likewise. (_Unwind_SjLj_ForcedUnwind): Likewise. (_Unwind_SjLj_Resume): Likewise. (_Unwind_SjLj_Resume_or_Rethrow): Likewise. * unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to definition. (_Unwind_ForcedUnwind): Likewise. (_Unwind_Resume): Likewise. (_Unwind_Resume_or_Rethrow): Likewise. (_Unwind_Backtrace): Likewise. * unwind-compat.c (_Unwind_Backtrace): Likewise. (_Unwind_ForcedUnwind): Likewise. (_Unwind_RaiseException): Likewise. (_Unwind_Resume): Likewise. (_Unwind_Resume_or_Rethrow): Likewise. * config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force nomips16 mode when IN_LIBGCC2 with hard float. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128501 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/unwind-generic.h')
-rw-r--r--gcc/unwind-generic.h37
1 files changed, 24 insertions, 13 deletions
diff --git a/gcc/unwind-generic.h b/gcc/unwind-generic.h
index 4d5d14df105..cebd663d954 100644
--- a/gcc/unwind-generic.h
+++ b/gcc/unwind-generic.h
@@ -108,6 +108,12 @@ typedef int _Unwind_Action;
#define _UA_FORCE_UNWIND 8
#define _UA_END_OF_STACK 16
+/* The target can override this macro to define any back-end-specific
+ attributes required for the lowest-level stack frame. */
+#ifndef LIBGCC2_UNWIND_ATTRIBUTE
+#define LIBGCC2_UNWIND_ATTRIBUTE
+#endif
+
/* This is an opaque type used to refer to a system-specific data
structure used by the system unwinder. This context is created and
destroyed by the system, and passed to the personality routine
@@ -115,7 +121,8 @@ typedef int _Unwind_Action;
struct _Unwind_Context;
/* Raise an exception, passing along the given exception object. */
-extern _Unwind_Reason_Code _Unwind_RaiseException (struct _Unwind_Exception *);
+extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
+_Unwind_RaiseException (struct _Unwind_Exception *);
/* Raise an exception for forced unwinding. */
@@ -123,20 +130,21 @@ typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn)
(int, _Unwind_Action, _Unwind_Exception_Class,
struct _Unwind_Exception *, struct _Unwind_Context *, void *);
-extern _Unwind_Reason_Code _Unwind_ForcedUnwind (struct _Unwind_Exception *,
- _Unwind_Stop_Fn,
- void *);
+extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
+_Unwind_ForcedUnwind (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
/* Helper to invoke the exception_cleanup routine. */
extern void _Unwind_DeleteException (struct _Unwind_Exception *);
/* Resume propagation of an existing exception. This is used after
e.g. executing cleanup code, and not to implement rethrowing. */
-extern void _Unwind_Resume (struct _Unwind_Exception *);
+extern void LIBGCC2_UNWIND_ATTRIBUTE
+_Unwind_Resume (struct _Unwind_Exception *);
/* @@@ Resume propagation of an FORCE_UNWIND exception, or to rethrow
a normal exception that was handled. */
-extern _Unwind_Reason_Code _Unwind_Resume_or_Rethrow (struct _Unwind_Exception *);
+extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
+_Unwind_Resume_or_Rethrow (struct _Unwind_Exception *);
/* @@@ Use unwind data to perform a stack backtrace. The trace callback
is called for every stack frame in the call chain, but no cleanup
@@ -144,7 +152,8 @@ extern _Unwind_Reason_Code _Unwind_Resume_or_Rethrow (struct _Unwind_Exception *
typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)
(struct _Unwind_Context *, void *);
-extern _Unwind_Reason_Code _Unwind_Backtrace (_Unwind_Trace_Fn, void *);
+extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
+_Unwind_Backtrace (_Unwind_Trace_Fn, void *);
/* These functions are used for communicating information about the unwind
context (i.e. the unwind descriptors and the user register state) between
@@ -191,12 +200,14 @@ struct SjLj_Function_Context;
extern void _Unwind_SjLj_Register (struct SjLj_Function_Context *);
extern void _Unwind_SjLj_Unregister (struct SjLj_Function_Context *);
-extern _Unwind_Reason_Code _Unwind_SjLj_RaiseException
- (struct _Unwind_Exception *);
-extern _Unwind_Reason_Code _Unwind_SjLj_ForcedUnwind
- (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
-extern void _Unwind_SjLj_Resume (struct _Unwind_Exception *);
-extern _Unwind_Reason_Code _Unwind_SjLj_Resume_or_Rethrow (struct _Unwind_Exception *);
+extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
+_Unwind_SjLj_RaiseException (struct _Unwind_Exception *);
+extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
+_Unwind_SjLj_ForcedUnwind (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
+extern void LIBGCC2_UNWIND_ATTRIBUTE
+_Unwind_SjLj_Resume (struct _Unwind_Exception *);
+extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE
+_Unwind_SjLj_Resume_or_Rethrow (struct _Unwind_Exception *);
/* @@@ The following provide access to the base addresses for text
and data-relative addressing in the LDSA. In order to stay link