[PATCH] fegetenv/getcontext

Andreas Jaeger aj@suse.de
Fri Jun 20 16:28:00 GMT 2003


"Ed Connell" <Ed.Connell@sas.com> writes:

> Hi
>
> fegetenv and getcontext currently corrupt the floating point
> mask on x86.  I have included a patch and a testcase.  I 
> was only able to test this patch on 2.2.93 but looking at
> CVS, I see no reason the behavior should be different now.
> Someone involved with x86-64 should see if they need a
> similar patch.  The problem can be seen on RH 8 and RH 9.
>
> Cheers
> Ed
>
> 2003-05-19  Ed Connell  <ed.connell@sas.com>
>
>       * sysdeps/unix/sysv/linux/i386/getcontext.S (getcontext): 
>         Retain floating point mask
>       * sysdeps/i386/fpu/fegetenv.c (fegetenv): Likewise.
>
> --- glibc-2.3.2/sysdeps/i386/fpu/fegetenv.c     2001-07-07 15:21:23.000000000 -0400
> +++ glibc-2.3.2/sysdeps/i386/fpu/fegetenv.c.edconn      2003-05-19 16:27:16.000000000 -0400
> @@ -25,6 +25,7 @@
>  __fegetenv (fenv_t *envp)
>  {
>    __asm__ ("fnstenv %0" : "=m" (*envp));
> +  __asm__ ("fldenv %0" : "=m" (*envp));

Maybe I'm missing something but we store it in memory - and then you
load it again directly?  Why will that help?

Andreas
-- 
 Andreas Jaeger, SuSE Linux AG, aj@suse.de, http://www.suse.de/~aj
  GPG fingerprint = 93A3 365E CE47 B889 DF7F  FED1 389A 563C C272 A126
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20030620/79f6df70/attachment.sig>


More information about the Libc-alpha mailing list