http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52123
--- Comment #15 from Cesar Strauss <cestrauss at gmail dot com> 2013-03-07 23:03:52 UTC --- (In reply to comment #14) > > I just tried out to bootstrap r196092 on mingw32. There is still one more > > cast > > patch missing to make it work for that target. > > > > diff -uart gcc-4.8.0-r196092/gcc/ada/seh_init.c gcc-4.8.0/gcc/ada/seh_init.c > > --- gcc-4.8.0-r196092/gcc/ada/seh_init.c 2013-02-16 08:26:53 +0000 > > +++ gcc-4.8.0/gcc/ada/seh_init.c 2013-02-06 12:01:20 +0000 > > @@ -198,7 +198,7 @@ > > #endif > > > > Raise_From_Signal_Handler (exception, msg); > > - return 0; /* This is never reached, avoid compiler warning */ > > + return (EXCEPTION_DISPOSITION)0; /* This is never reached, avoid compiler > > warning */ > > } > > #endif /* !(defined (_WIN64) && defined (__SEH__)) */ > > That's ugly, please use ATTRIBUTE_NORETURN instead. How about this (tested on i686-pc-mingw32): Index: seh_init.c =================================================================== --- seh_init.c (revision 196484) +++ seh_init.c (working copy) @@ -60,7 +60,8 @@ extern struct Exception_Data _abort_sign #define Raise_From_Signal_Handler \ ada__exceptions__raise_from_signal_handler -extern void Raise_From_Signal_Handler (struct Exception_Data *, const char *); +extern void Raise_From_Signal_Handler (struct Exception_Data *, const char *) + ATTRIBUTE_NORETURN; #if defined (_WIN32) @@ -72,7 +73,8 @@ extern void Raise_From_Signal_Handler (s extern void _global_unwind2 (void *); EXCEPTION_DISPOSITION __gnat_SEH_error_handler -(struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*); +(struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*) + ATTRIBUTE_NORETURN; struct Exception_Data * __gnat_map_SEH (EXCEPTION_RECORD* ExceptionRecord, const char **msg); @@ -198,7 +200,6 @@ __gnat_SEH_error_handler (struct _EXCEPT #endif Raise_From_Signal_Handler (exception, msg); - return 0; /* This is never reached, avoid compiler warning */ } #endif /* !(defined (_WIN64) && defined (__SEH__)) */