about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--math/fsetexcptflg.c5
-rw-r--r--math/test-fexcept.c8
3 files changed, 17 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index c67476fca5..172b0c9275 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2017-01-05  Joseph Myers  <joseph@codesourcery.com>
+
+	[BZ #21028]
+	* math/fsetexcptflg.c (__fesetexceptflag): Always return 0.
+	* math/test-fexcept.c (test_set): Allow failure of feraiseexcept
+	if EXCEPTION_TESTS returns false.
+
 2017-01-05  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
 	[BZ #20558]
diff --git a/math/fsetexcptflg.c b/math/fsetexcptflg.c
index 2e8237ee32..e79095b04e 100644
--- a/math/fsetexcptflg.c
+++ b/math/fsetexcptflg.c
@@ -23,8 +23,9 @@
 int
 __fesetexceptflag (const fexcept_t *flagp, int excepts)
 {
-  /* This always fails unless nothing needs to be done.  */
-  return (excepts != 0);
+  /* This always succeeds, as all exceptions are always clear
+     (including in the saved state) so nothing needs to be done.  */
+  return 0;
 }
 #if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
 strong_alias (__fesetexceptflag, __old_fesetexceptflag)
diff --git a/math/test-fexcept.c b/math/test-fexcept.c
index 6aa54b49b4..854080173a 100644
--- a/math/test-fexcept.c
+++ b/math/test-fexcept.c
@@ -61,7 +61,13 @@ test_set (int initial, const fexcept_t *saved, int mask, int expected)
   if (ret != 0)
     {
       puts ("feraiseexcept failed");
-      result = 1;
+      if (initial == 0 || EXCEPTION_TESTS (float))
+	{
+	  puts ("failure of feraiseexcept was unexpected");
+	  result = 1;
+	}
+      else
+	puts ("failure of feraiseexcept OK, skipping further tests");
       return result;
     }
   ret = fesetexceptflag (saved, mask);