> * Similarly to IRIX 6, there was a mismatch in ada/init.c for the type
>   of the signal handler installed with sigaction.  g++ also doesn't like
>   arithmetic on void * ;-)

I'm a bit puzzled as to why the C compiler isn't complaining, and what
error message the C++ compiler is generating, can you clarify?

Why is the code accepted by the C compiler in the first place?

>       gcc/ada:
>       PR bootstrap/49794
>       * init.c [sun && __SVR4 && !__vxworks] (__gnat_install_handler):
>       Assign to act.sa_sigaction.
>       * tracebak.c [USE_GENERIC_UNWINDER] (__gnat_backtrace): Cast
>       current->return_address to char * before arithmetic.

The tracebak.c part is OK.

> diff --git a/gcc/ada/init.c b/gcc/ada/init.c
> --- a/gcc/ada/init.c
> +++ b/gcc/ada/init.c
> @@ -1031,7 +1031,7 @@ __gnat_install_handler (void)
>       exceptions.  Make sure that the handler isn't interrupted by another
>       signal that might cause a scheduling event!  */
>  
> -  act.sa_handler = __gnat_error_handler;
> +  act.sa_sigaction = __gnat_error_handler;
>    act.sa_flags = SA_NODEFER | SA_RESTART | SA_SIGINFO;
>    sigemptyset (&act.sa_mask);
>  

Reply via email to