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>
* gnat_ug_unx.texi, gnat_ug_vms.texi, gnat_ug_vxw.texi,
......
......@@ -199,7 +199,7 @@ package body Ada.Exceptions is
function Unwind_RaiseException
(E : access GNAT_GCC_Exception)
return Unwind_Reason_Code;
pragma Import (C, Unwind_RaiseException, "_Unwind_RaiseException");
pragma Import (C, Unwind_RaiseException, "__gnat_Unwind_RaiseException");
-----------------------
-- Local Subprograms --
......
......@@ -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
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
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_RaiseException (e)
__gnat_Unwind_RaiseException (e)
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 ();
}
......
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