[parisc-linux] glibc-2.3.3: a warning with gcc-3.3 become an error with gcc-3.5

Carlos O'Donell carlos at baldric.uwo.ca
Tue Mar 2 12:50:50 MST 2004


Joel,

Could you lookup the C99 specification please?

> --- ./feupdateenv.c.orig	2004-03-02 15:21:25.959085856 +0100
> +++ ./feupdateenv.c	2004-03-02 07:53:27.938166120 +0100
> @@ -28,11 +28,16 @@
>    /* Get the current exception status. */
>    __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw));
>    sw[0] &= FE_ALL_EXCEPT;
> -  envp->__status_word = envp->__status_word | sw[0];
> +/*  envp->__status_word = envp->__status_word | sw[0]; */

This is required to set the flags. Please review the specfications.

>    /* Install new environment.  */
>    fesetenv (envp);
>  
> +  /* Raise the safed exception.  Incidently for us the implementation
> +     defined format of the values in objects of type fexcept_t is the
> +     same as the ones specified using the FE_* constants.  */
> +  feraiseexcept (sw[0]);
> +

AFAIK, this is not correct, the spec says that it will be an OR of the
raised exceptions, e.g. an OR of the raised flags. 

Calling feraiseexcept could fault the program.

>    /* Success.  */
>    return 0;
>  }

c.



More information about the parisc-linux mailing list