From b3f532ce538f8fc13b7af7cc73b94aa43bb03669 Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Mon, 9 Jul 2012 12:46:00 +0200 Subject: [multiple changes] 2012-07-09 Tristan Gingold * seh_init.c (__gnat_SEH_error_handler): On Win64 and SEH, return for unknown exceptions. * raise-gcc.c (__gnat_personality_seh0): Call __gnat_SEH_error_handler. 2012-07-09 Joel Brobecker * exp_dbug.ads (No_Dollar_In_Label): Delete. 2012-07-09 Vincent Pucci * sem_ch13.adb (Check_Overloaded_Name): New routine. 2012-07-09 Vincent Pucci * freeze.adb (Freeze_Record_Type): Analyze the delayed aspects of the components in a record type. 2012-07-09 Pascal Obry * prj-util.ads: Minor reformatting. From-SVN: r189369 --- gcc/ada/raise-gcc.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'gcc/ada/raise-gcc.c') diff --git a/gcc/ada/raise-gcc.c b/gcc/ada/raise-gcc.c index 53a56e1..0ef580b 100644 --- a/gcc/ada/raise-gcc.c +++ b/gcc/ada/raise-gcc.c @@ -1182,11 +1182,22 @@ __gnat_Unwind_ForcedUnwind (_Unwind_Exception *e, #endif /* __USING_SJLJ_EXCEPTIONS__ */ #ifdef __SEH__ + +#define STATUS_USER_DEFINED (1U << 29) +EXCEPTION_DISPOSITION __gnat_SEH_error_handler + (struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*); + EXCEPTION_DISPOSITION __gnat_personality_seh0 (PEXCEPTION_RECORD ms_exc, void *this_frame, PCONTEXT ms_orig_context, PDISPATCHER_CONTEXT ms_disp) { + /* Possibly transform run-time errors into Ada exceptions. As a small + optimization, we call __gnat_SEH_error_handler only on non-user + exceptions. */ + if (!(ms_exc->ExceptionCode & STATUS_USER_DEFINED)) + __gnat_SEH_error_handler (ms_exc, this_frame, ms_orig_context, ms_disp); + return _GCC_specific_handler (ms_exc, this_frame, ms_orig_context, ms_disp, __gnat_personality_imp); } -- cgit v1.1