This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] fegetenv/getcontext


"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));
                             ^^^^

The constraint is wrong.  See fesetenv.c for correct usage.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]