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__)) */

Reply via email to