debian-glibc, The newest compiler in unstable has caught a bug in the feupdateenv implementation for hppa. The code should not be using the constant input argument as temporary scratch.
Cheers, Carlos. 2004-04-02 Carlos O'Donell <[EMAIL PROTECTED]> * patches/00list: Add hppa feupdateenv patch. * patches/52_glibc233-hppa-feupdateenv.dpatch: New file. --- patches/00list.orig 2004-04-01 17:27:57.033079632 -0500 +++ patches/00list 2004-04-01 17:28:04.618926408 -0500 @@ -79,3 +79,4 @@ mips-sgidefs 51_glibc232-hppa-dist 51_glibc232-hppa-profiling +52_glibc233-hppa-feupdateenv --- patches/52_glibc233-hppa-feupdateenv.dpatch.orig 1969-12-31 19:00:00.000000000 -0500 +++ patches/52_glibc233-hppa-feupdateenv.dpatch 2004-04-01 17:29:09.404077568 -0500 @@ -0,0 +1,50 @@ +#! /bin/sh -e + +# DP: Description: Use temporary storage to save floating point flags. +# DP: Related bugs: Fixes FTBS. +# DP: Author: Carlos O'Donell <[EMAIL PROTECTED]> +# DP: Upstream status: Submitted +# DP: Status Details: Pending. +# DP: Date: 2004-04-02 +# +# Comments: +# +# Used the C99 specificiation as the basis for this change. The specification +# is slightly different from the interpretation of the man page for feupdateenv. +# The change is also based on the previous implementations available in glibc. +# +# Cheers, +# Carlos. +# + +if [ $# -ne 2 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch -d "$2" -f --no-backup-if-mismatch -p0 < $0;; + -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p0 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +# append the patch here and adjust the -p? flag in the patch calls. +diff -u -p -r1.3 feupdateenv.c +--- sysdeps/hppa/fpu/feupdateenv.c 18 Dec 2003 03:57:50 -0000 1.3 ++++ sysdeps/hppa/fpu/feupdateenv.c 2 Apr 2004 06:56:56 -0000 +@@ -27,11 +27,10 @@ feupdateenv (const fenv_t *envp) + + /* 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]; +- + /* Install new environment. */ + fesetenv (envp); ++ /* Raise the saved exceptions */ ++ feraiseexcept(sw[0] & FE_ALL_EXCEPT); + + /* Success. */ + return 0; -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]