diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2012-07-16 14:55:50 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2012-07-16 14:55:50 +0200 |
commit | 5df1266a05ba1c1d0a3970a2151f66d9a598b333 (patch) | |
tree | 15da4473a32f859d7ef09103804af2ae6a9451ef /gcc/ada/raise-gcc.c | |
parent | e187fa72fb4806da5b93af1d346446b9fc7f0993 (diff) | |
download | gcc-5df1266a05ba1c1d0a3970a2151f66d9a598b333.zip gcc-5df1266a05ba1c1d0a3970a2151f66d9a598b333.tar.gz gcc-5df1266a05ba1c1d0a3970a2151f66d9a598b333.tar.bz2 |
[multiple changes]
2012-07-16 Thomas Quinot <quinot@adacore.com>
* 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 <quinot@adacore.com>
* gnat_rm.texi: Update documentation for Scalar_Storage_Order.
2012-07-16 Tristan Gingold <gingold@adacore.com>
* 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 <miranda@adacore.com>
* sem_eval.adb (Test_Expression_Is_Foldable): Adding documentation.
(Eval_Relational_Op): Adding documentation.
From-SVN: r189532
Diffstat (limited to 'gcc/ada/raise-gcc.c')
-rw-r--r-- | gcc/ada/raise-gcc.c | 17 |
1 files changed, 10 insertions, 7 deletions
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); |