From 5df1266a05ba1c1d0a3970a2151f66d9a598b333 Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Mon, 16 Jul 2012 14:55:50 +0200 Subject: [multiple changes] 2012-07-16 Thomas Quinot * freeze.adb (Check_Component_Storage_Order): Do not reject a nested composite with different scalar storage order if it is byte aligned. 2012-07-16 Thomas Quinot * gnat_rm.texi: Update documentation for Scalar_Storage_Order. 2012-07-16 Tristan Gingold * a-exexpr.adb (Propagate_Exception): Adjust call to Exception_Traces procedures. * a-exexpr-gcc.adb (Setup_Current_Excep): Now a function that returns an access to the Ada occurrence. (Propagate_GCC_Exception): Adjust calls. * raise.h (struct Exception_Occurrence): Declare. * a-exextr.adb: Remove useless pragma. (Notify_Handled_Exception, Notify_Unhandled_Exception) (Unhandled_Exception_Terminate): Add Excep parameter. * a-except.adb (Notify_Handled_Exception, Notify_Unhandled_Exception) (Unhandled_Exception_Terminate): Add Excep parameter. (Process_Raise_Exception): Adjust calls. * a-except-2005.adb (Notify_Handled_Exception, Notify_Unhandled_Exception) (Unhandled_Exception_Terminate): Add Excep parameter. (Raise_Exception): Calls Raise_Exception_Always. * raise-gcc.c (__gnat_setup_current_excep, __gnat_notify_handled_exception) (__gnat_notify_unhandled_exception): Adjust declarations. (PERSONALITY_FUNCTION): Adjust calls. (__gnat_personality_seh0): Remove warning. 2012-07-16 Javier Miranda * sem_eval.adb (Test_Expression_Is_Foldable): Adding documentation. (Eval_Relational_Op): Adding documentation. From-SVN: r189532 --- gcc/ada/raise-gcc.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'gcc/ada/raise-gcc.c') diff --git a/gcc/ada/raise-gcc.c b/gcc/ada/raise-gcc.c index 8aef5b0..418e080 100644 --- a/gcc/ada/raise-gcc.c +++ b/gcc/ada/raise-gcc.c @@ -77,7 +77,8 @@ __gnat_Unwind_RaiseException (_Unwind_Exception *); _Unwind_Reason_Code __gnat_Unwind_ForcedUnwind (_Unwind_Exception *, void *, void *); -extern void __gnat_setup_current_excep (_Unwind_Exception *); +extern struct Exception_Occurrence *__gnat_setup_current_excep + (_Unwind_Exception *); extern void __gnat_unhandled_except_handler (_Unwind_Exception *); #include "dwarf2.h" @@ -1001,8 +1002,8 @@ setup_to_install (_Unwind_Context *uw_context, /* The following is defined from a-except.adb. Its purpose is to enable automatic backtraces upon exception raise, as provided through the GNAT.Traceback facilities. */ -extern void __gnat_notify_handled_exception (void); -extern void __gnat_notify_unhandled_exception (void); +extern void __gnat_notify_handled_exception (struct Exception_Occurrence *); +extern void __gnat_notify_unhandled_exception (struct Exception_Occurrence *); /* Below is the eh personality routine per se. We currently assume that only GNU-Ada exceptions are met. */ @@ -1131,14 +1132,16 @@ PERSONALITY_FUNCTION (version_arg_t version_arg, } else { + struct Exception_Occurrence *excep; + /* Trigger the appropriate notification routines before the second phase starts, which ensures the stack is still intact. First, setup the Ada occurrence. */ - __gnat_setup_current_excep (uw_exception); + excep = __gnat_setup_current_excep (uw_exception); if (action.kind == unhandler) - __gnat_notify_unhandled_exception (); + __gnat_notify_unhandled_exception (excep); else - __gnat_notify_handled_exception (); + __gnat_notify_handled_exception (excep); return _URC_HANDLER_FOUND; } @@ -1324,7 +1327,7 @@ __gnat_personality_seh0 (PEXCEPTION_RECORD ms_exc, void *this_frame, CONTEXT context; PRUNTIME_FUNCTION mf_func = NULL; ULONG64 mf_imagebase; - ULONG64 mf_rsp; + ULONG64 mf_rsp = 0; /* Get the context. */ RtlCaptureContext (&context); -- cgit v1.1