[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[PATCH] Fix FTBS for debian-glibc on hppa



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 <carlos@baldric.uwo.ca>

	* 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 <carlos@baldric.uwo.ca>
+# 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;



Reply to: