This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.24-621-gc6be839


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  c6be839efded78768ad3c70d7f2e913a9fb8603c (commit)
      from  c35db50ff51480c39e5ce493561df1c4581da9fc (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=c6be839efded78768ad3c70d7f2e913a9fb8603c

commit c6be839efded78768ad3c70d7f2e913a9fb8603c
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Mon Jan 9 18:27:49 2017 +0000

    Fix math/test-fenv for no-exceptions / no-rounding-modes configurations.
    
    This patch fixes math/test-fenv.c to check EXCEPTION_TESTS and
    ROUNDING_TESTS to avoid failing in cases where some exceptions or
    rounding modes are defined but not supported at runtime.
    
    Tested for mips64 soft float and for x86_64.
    
    	* math/test-fenv.c (fe_tests): Skip most tests when exceptions not
    	supported.
    	(feholdexcept_tests): Skip tests requiring exceptions or rounding
    	modes support if not supported.

diff --git a/ChangeLog b/ChangeLog
index 1454293..034cce9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2017-01-09  Joseph Myers  <joseph@codesourcery.com>
 
+	* math/test-fenv.c (fe_tests): Skip most tests when exceptions not
+	supported.
+	(feholdexcept_tests): Skip tests requiring exceptions or rounding
+	modes support if not supported.
+
 	* sysdeps/unix/sysv/linux/microblaze/localplt.data (__pread64):
 	Add libc.so PLT entry.
 	(__tls_get_addr): Make ld.so PLT entry optional.
diff --git a/math/test-fenv.c b/math/test-fenv.c
index d698ec3..b24b3a1 100644
--- a/math/test-fenv.c
+++ b/math/test-fenv.c
@@ -208,6 +208,9 @@ fe_tests (void)
   test_exceptions ("feclearexcept (FE_ALL_EXCEPT) clears all exceptions",
                    NO_EXC, 0);
 
+  /* Skip further tests here if exceptions not supported.  */
+  if (!EXCEPTION_TESTS (float) && FE_ALL_EXCEPT != 0)
+    return;
   /* raise all exceptions and test if all are raised */
   feraiseexcept (FE_ALL_EXCEPT);
   test_exceptions ("feraiseexcept (FE_ALL_EXCEPT) raises all exceptions",
@@ -657,8 +660,9 @@ feholdexcept_tests (void)
 #ifdef FE_DIVBYZERO
   feraiseexcept (FE_DIVBYZERO);
 #endif
-  test_exceptions ("feholdexcept_tests FE_DIVBYZERO test",
-		   DIVBYZERO_EXC, 0);
+  if (EXCEPTION_TESTS (float))
+    test_exceptions ("feholdexcept_tests FE_DIVBYZERO test",
+		     DIVBYZERO_EXC, 0);
   res = feholdexcept (&saved);
   if (res != 0)
     {
@@ -667,7 +671,7 @@ feholdexcept_tests (void)
     }
 #if defined FE_TONEAREST && defined FE_TOWARDZERO
   res = fesetround (FE_TOWARDZERO);
-  if (res != 0)
+  if (res != 0 && ROUNDING_TESTS (float, FE_TOWARDZERO))
     {
       printf ("fesetround failed: %d\n", res);
       ++count_errors;
@@ -676,8 +680,9 @@ feholdexcept_tests (void)
   test_exceptions ("feholdexcept_tests 0 test", NO_EXC, 0);
 #ifdef FE_INVALID
   feraiseexcept (FE_INVALID);
-  test_exceptions ("feholdexcept_tests FE_INVALID test",
-		   INVALID_EXC, 0);
+  if (EXCEPTION_TESTS (float))
+    test_exceptions ("feholdexcept_tests FE_INVALID test",
+		     INVALID_EXC, 0);
 #endif
   res = feupdateenv (&saved);
   if (res != 0)
@@ -693,15 +698,16 @@ feholdexcept_tests (void)
       ++count_errors;
     }
 #endif
-  test_exceptions ("feholdexcept_tests FE_DIVBYZERO|FE_INVALID test",
-		   DIVBYZERO_EXC | INVALID_EXC, 0);
+  if (EXCEPTION_TESTS (float))
+    test_exceptions ("feholdexcept_tests FE_DIVBYZERO|FE_INVALID test",
+		     DIVBYZERO_EXC | INVALID_EXC, 0);
   feclearexcept (FE_ALL_EXCEPT);
 #ifdef FE_INVALID
   feraiseexcept (FE_INVALID);
 #endif
 #if defined FE_TONEAREST && defined FE_UPWARD
   res = fesetround (FE_UPWARD);
-  if (res != 0)
+  if (res != 0 && ROUNDING_TESTS (float, FE_UPWARD))
     {
       printf ("fesetround failed: %d\n", res);
       ++count_errors;
@@ -724,8 +730,9 @@ feholdexcept_tests (void)
   test_exceptions ("feholdexcept_tests 0 2nd test", NO_EXC, 0);
 #ifdef FE_INEXACT
   feraiseexcept (FE_INEXACT);
-  test_exceptions ("feholdexcept_tests FE_INEXACT test",
-		   INEXACT_EXC, 0);
+  if (EXCEPTION_TESTS (float))
+    test_exceptions ("feholdexcept_tests FE_INEXACT test",
+		     INEXACT_EXC, 0);
 #endif
   res = feupdateenv (&saved2);
   if (res != 0)
@@ -735,15 +742,16 @@ feholdexcept_tests (void)
     }
 #if defined FE_TONEAREST && defined FE_UPWARD
   res = fegetround ();
-  if (res != FE_UPWARD)
+  if (res != FE_UPWARD && ROUNDING_TESTS (float, FE_UPWARD))
     {
       printf ("feupdateenv didn't restore rounding mode: %d\n", res);
       ++count_errors;
     }
   fesetround (FE_TONEAREST);
 #endif
-  test_exceptions ("feholdexcept_tests FE_INEXACT|FE_INVALID test",
-		   INVALID_EXC | INEXACT_EXC, 0);
+  if (EXCEPTION_TESTS (float))
+    test_exceptions ("feholdexcept_tests FE_INEXACT|FE_INVALID test",
+		     INVALID_EXC | INEXACT_EXC, 0);
   feclearexcept (FE_ALL_EXCEPT);
 }
 

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog        |    5 +++++
 math/test-fenv.c |   34 +++++++++++++++++++++-------------
 2 files changed, 26 insertions(+), 13 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]