Commit 23cae84f by Olivier Hainque Committed by Geert Bosch

a-except.adb (Unwind_RaiseException): Import a GNAT specific wrapper...

	ada/9911
	* a-except.adb (Unwind_RaiseException): Import a GNAT specific
	wrapper, which name remains constant whatever underlying GCC
	scheme.

	* raise.c (__gnat_Unwind_RaiseException): New wrappers, providing
	the stable interface needed for a-except.

From-SVN: r63795
parent db720d9a
2003-03-04 Olivier Hainque <hainque@act-europe.fr>
ada/9911
* a-except.adb (Unwind_RaiseException): Import a GNAT specific
wrapper, which name remains constant whatever underlying GCC
scheme.
* raise.c (__gnat_Unwind_RaiseException): New wrappers, providing
the stable interface needed for a-except.
2003-03-02 Andreas Jaeger <aj@suse.de> 2003-03-02 Andreas Jaeger <aj@suse.de>
* gnat_ug_unx.texi, gnat_ug_vms.texi, gnat_ug_vxw.texi, * gnat_ug_unx.texi, gnat_ug_vms.texi, gnat_ug_vxw.texi,
......
...@@ -199,7 +199,7 @@ package body Ada.Exceptions is ...@@ -199,7 +199,7 @@ package body Ada.Exceptions is
function Unwind_RaiseException function Unwind_RaiseException
(E : access GNAT_GCC_Exception) (E : access GNAT_GCC_Exception)
return Unwind_Reason_Code; return Unwind_Reason_Code;
pragma Import (C, Unwind_RaiseException, "_Unwind_RaiseException"); pragma Import (C, Unwind_RaiseException, "__gnat_Unwind_RaiseException");
----------------------- -----------------------
-- Local Subprograms -- -- Local Subprograms --
......
...@@ -597,21 +597,48 @@ __gnat_eh_personality (version, actions, exception_class, ue_header, context) ...@@ -597,21 +597,48 @@ __gnat_eh_personality (version, actions, exception_class, ue_header, context)
} }
#else /* IN_RTS - For eh personality routine */ /* If the underlying GCC scheme for exception handling is SJLJ, the standard
propagation routine (_Unwind_RaiseException) is actually renamed using a
#define directive (see unwing-sjlj.c). We need a consistently named
interface to import from a-except, so stubs are defined here. */
#ifdef __USING_SJLJ_EXCEPTIONS__
_Unwind_Reason_Code
__gnat_Unwind_RaiseException (e)
struct _Unwind_Exception *e;
{
return _Unwind_SjLj_RaiseException (e);
}
#else
/* __USING_SJLJ_EXCEPTIONS__ not defined */
void
__gnat_Unwind_RaiseException (e)
struct _Unwind_Exception *e;
{
return _Unwind_RaiseException (e);
}
#endif
#else
/* IN_RTS not defined */
/* The calls to the GCC runtime interface for exception raising are currently /* The calls to the GCC runtime interface for exception raising are currently
issued from a-except.adb, which is used by both the runtime library and issued from a-except.adb, which is used by both the runtime library and
the compiler. As the compiler binary is not linked against the GCC runtime the compiler. As the compiler binary is not linked against the GCC runtime
library, we need a stub for this interface in the compiler case. */ library, we need a stub for this interface in the compiler case. */
/* Since we don't link the compiler with a host libgcc, we should not be
using the GCC eh mechanism for the compiler and so expect this function
never to be called. */
_Unwind_Reason_Code _Unwind_Reason_Code
_Unwind_RaiseException (e) __gnat_Unwind_RaiseException (e)
struct _Unwind_Exception *e ATTRIBUTE_UNUSED; struct _Unwind_Exception *e ATTRIBUTE_UNUSED;
{ {
/* Since we don't link the compiler with a host libgcc, we should not be
using the GCC eh mechanism for the compiler and so expect this function
never to be called. */
abort (); abort ();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment