This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch master updated. glibc-2.19-867-g27bb6dc
- From: rth at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 5 Aug 2014 20:38:53 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.19-867-g27bb6dc
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via 27bb6dc0db1d0da548a0be3ec1aa33e2c25565cd (commit)
from d3f364d3c79cc6cbeb0bf6f8cec90c9e4465db0f (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=27bb6dc0db1d0da548a0be3ec1aa33e2c25565cd
commit 27bb6dc0db1d0da548a0be3ec1aa33e2c25565cd
Author: Richard Henderson <rth@twiddle.net>
Date: Tue Aug 5 13:36:36 2014 -0700
alpha: Fix exception raising from soft-fp
Use the SSI_IEEE_RAISE_EXCEPTION function as from feraiseexcept,
instead of __ieee_get+set_fp_status. Always raise the FP exceptions
from float-to-integer conversion.
diff --git a/ChangeLog b/ChangeLog
index d94f255..e02d51c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2014-08-05 Richard Henderson <rth@redhat.com>
+ * sysdeps/alpha/soft-fp/ots_cvtxq.c (_OtsCvtXQ): Always raise
+ exceptions.
+ * sysdeps/alpha/soft-fp/Makefile [soft-fp] (sysdep_routines):
+ Add fraiseexcpt.
+ * sysdeps/alpha/soft-fp/sfp-machine.h (FP_HANDLE_EXCEPTIONS):
+ Use __feraiseexcept.
+ * sysdeps/unix/sysv/linux/alpha/fraiseexcpt.S (feraiseexcept):
+ Protect libm symbols with IS_IN_libm.
+
* sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Remove file.
2014-08-04 Bernard Ogden <bernie.ogden@linaro.org>
diff --git a/sysdeps/alpha/soft-fp/Makefile b/sysdeps/alpha/soft-fp/Makefile
index 5410a78..83baa7c 100644
--- a/sysdeps/alpha/soft-fp/Makefile
+++ b/sysdeps/alpha/soft-fp/Makefile
@@ -2,7 +2,8 @@
ifeq ($(subdir),soft-fp)
sysdep_routines += ots_add ots_sub ots_mul ots_div ots_cmp ots_cmpe \
- ots_cvtxq ots_cvtqx ots_cvtqux ots_cvttx ots_cvtxt ots_nintxq
+ ots_cvtxq ots_cvtqx ots_cvtqux ots_cvttx ots_cvtxt ots_nintxq \
+ fraiseexcpt
endif
ifeq ($(subdir),math)
diff --git a/sysdeps/alpha/soft-fp/ots_cvtxq.c b/sysdeps/alpha/soft-fp/ots_cvtxq.c
index 1eef949..2447a38 100644
--- a/sysdeps/alpha/soft-fp/ots_cvtxq.c
+++ b/sysdeps/alpha/soft-fp/ots_cvtxq.c
@@ -35,9 +35,7 @@ _OtsCvtXQ (long al, long ah, long _round)
FP_INIT_ROUNDMODE;
FP_UNPACK_RAW_Q(A, a);
FP_TO_INT_Q(r, A, 64, s);
-
- if (s > 0 && (_fex &= FP_EX_INVALID))
- FP_HANDLE_EXCEPTIONS;
+ FP_HANDLE_EXCEPTIONS;
return r;
}
diff --git a/sysdeps/alpha/soft-fp/sfp-machine.h b/sysdeps/alpha/soft-fp/sfp-machine.h
index e11a8dd..bd78534 100644
--- a/sysdeps/alpha/soft-fp/sfp-machine.h
+++ b/sysdeps/alpha/soft-fp/sfp-machine.h
@@ -86,13 +86,13 @@ do { \
} \
} while (0)
+/* We copy the libm function into libc for soft-fp. */
+extern int __feraiseexcept (int __excepts) attribute_hidden;
+
#define FP_HANDLE_EXCEPTIONS \
do { \
if (__builtin_expect (_fex, 0)) \
- { \
- unsigned long t = __ieee_get_fp_control (); \
- __ieee_set_fp_control (t | _fex); \
- } \
+ __feraiseexcept (_fex); \
} while (0)
#define FP_TRAPPING_EXCEPTIONS \
diff --git a/sysdeps/unix/sysv/linux/alpha/fraiseexcpt.S b/sysdeps/unix/sysv/linux/alpha/fraiseexcpt.S
index 3db92d5..c5fa62b 100644
--- a/sysdeps/unix/sysv/linux/alpha/fraiseexcpt.S
+++ b/sysdeps/unix/sysv/linux/alpha/fraiseexcpt.S
@@ -46,11 +46,12 @@ ENTRY(__feraiseexcept)
END(__feraiseexcept)
cfi_endproc
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
+#ifdef IS_IN_libm
+# include <shlib-compat.h>
+# if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
strong_alias (__feraiseexcept, __old_feraiseexcept)
compat_symbol (libm, __old_feraiseexcept, feraiseexcept, GLIBC_2_1);
-#endif
-
+# endif
libm_hidden_ver (__feraiseexcept, feraiseexcept)
versioned_symbol (libm, __feraiseexcept, feraiseexcept, GLIBC_2_2);
+#endif
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 9 +++++++++
sysdeps/alpha/soft-fp/Makefile | 3 ++-
sysdeps/alpha/soft-fp/ots_cvtxq.c | 4 +---
sysdeps/alpha/soft-fp/sfp-machine.h | 8 ++++----
sysdeps/unix/sysv/linux/alpha/fraiseexcpt.S | 9 +++++----
5 files changed, 21 insertions(+), 12 deletions(-)
hooks/post-receive
--
GNU C Library master sources