This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
Re: [PATCH] fegetenv/getcontext
- From: Andreas Schwab <schwab at suse dot de>
- To: "Ed Connell" <Ed dot Connell at sas dot com>
- Cc: <libc-alpha at sources dot redhat dot com>
- Date: Fri, 20 Jun 2003 19:41:35 +0200
- Subject: Re: [PATCH] fegetenv/getcontext
- References: <E0EA1095200B074CA58322B446C8D5390287721C@merc17.na.sas.com>
"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."