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.21-57-g92b67e8


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  92b67e8def0df81462304de6ce76c494aabad3b7 (commit)
      from  132a1328eccd20621b77f7810eebbeec0a1af187 (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=92b67e8def0df81462304de6ce76c494aabad3b7

commit 92b67e8def0df81462304de6ce76c494aabad3b7
Author: Roland McGrath <roland@hack.frob.com>
Date:   Tue Feb 10 13:55:29 2015 -0800

    Clean up math/test-snan.

diff --git a/ChangeLog b/ChangeLog
index 4851863..ef9bbf6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2015-02-10  Roland McGrath  <roland@hack.frob.com>
+
+	* math/test-snan.c: Drop unnecessary #include's of <stdlib.h>,
+	<sys/time.h>, <string.h>, and <errno.h>.
+	(dest_offset, dest_address, value, zero): Remove unused variables.
+	(ldouble): Remove typedef.
+	(myFPsighandler): Use simple handler signature, not SA_SIGINFO
+	signature.  Pass 1 to siglongjmp rather than 0 (which is converted to
+	1).  Fix code style.
+	(set_sigaction_FP, remove_sigaction_FP): Functions removed.
+	(check): Function removed.
+	(CHECK): New macro.
+	(TEST_FUNC): Fix code style.  Use CHECK macro rather than repeating
+	boilerplate feclearexcept + feenableexcept + sigsetjmp code.
+	Don't call set_sigaction_FP and remove_sigaction_FP here.
+	(ldouble_test): Just use 'long double' as macro argument, no need for
+	the 'ldouble' typedef.
+	(do_test): Set up SIGFPE handler at start, using plain signal rather
+	than sigaction.  Fix code style.
+
 2015-02-10  Evangelos Foutras  <evangelos@foutrelis.com>
 
 	[BZ #17949]
diff --git a/math/test-snan.c b/math/test-snan.c
index 2bcf2be..0c36224 100644
--- a/math/test-snan.c
+++ b/math/test-snan.c
@@ -19,73 +19,40 @@
 
 #define _GNU_SOURCE 1
 #include <stdio.h>
-#include <stdlib.h>
-#include <sys/time.h>
-#include <string.h>
 #include <math.h>
 #include <float.h>
 #include <fenv.h>
 #include <signal.h>
 #include <setjmp.h>
-#include <errno.h>
 
 #include <math-tests.h>
 
 
-int dest_offset;
-char *dest_address;
-double	value = 123.456;
-double	zero = 0.0;
-
 static sigjmp_buf sigfpe_buf;
 
-typedef long double ldouble;
-
-
-void
-myFPsighandler(int signal,
-             siginfo_t *info,
-             void *context)
-{
-  siglongjmp(sigfpe_buf, 0);
-}
-
-int
-set_sigaction_FP(void)
+static void
+myFPsighandler (int signal)
 {
-    struct sigaction sa;
-    /* register RT signal handler via sigaction */
-    sa.sa_flags = SA_SIGINFO;
-    sa.sa_sigaction = &myFPsighandler;
-    sigemptyset(&sa.sa_mask);
-    sigaction(SIGFPE, &sa, NULL);
-
-    return 0;
-}
-
-int
-remove_sigaction_FP(void)
-{
-    struct sigaction sa;
-    /* restore default RT signal handler via sigaction */
-    sa.sa_flags = SA_SIGINFO;
-    sa.sa_handler = SIG_DFL;
-    sigemptyset(&sa.sa_mask);
-    sigaction(SIGFPE, &sa, NULL);
-
-    return 0;
+  siglongjmp (sigfpe_buf, 1);
 }
 
 static int errors = 0;
 
-static void
-check (const char *testname, int result)
-{
-  if (!result) {
-    printf ("Failure: %s\n", testname);
-    errors++;
-  }
-}
+#define CHECK(testname, expr)						      \
+  do {									      \
+    feclearexcept (FE_ALL_EXCEPT);					      \
+    feenableexcept (FE_ALL_EXCEPT);					      \
+    if (sigsetjmp (sigfpe_buf, 0))					      \
+      {									      \
+	printf ("%s raised SIGFPE\n", testname);			      \
+	++errors;							      \
+      }									      \
+    else if (!(expr))							      \
+      {									      \
+        printf ("Failure: %s\n", testname);				      \
+        ++errors;							      \
+      }									      \
+  } while (0)
 
 #define TEST_FUNC(NAME, FLOAT, SUFFIX)					      \
 static void								      \
@@ -112,278 +79,63 @@ NAME (void)								      \
   (void) &minus_sNaN_var;						      \
   (void) &Inf_var;							      \
 									      \
-  set_sigaction_FP ();							      \
-  fegetenv(&saved_fenv);						      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " issignaling (qNaN) raised SIGFPE\n");		      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " issignaling (qNaN)", !issignaling (qNaN_var));	      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " issignaling (-qNaN) raised SIGFPE\n");		      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " issignaling (-qNaN)", !issignaling (-qNaN_var));	      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " issignaling (sNaN) raised SIGFPE\n");		      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " issignaling (sNaN)",				      \
-	     SNAN_TESTS (FLOAT) ? issignaling (sNaN_var) : 1);		      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " issignaling (-sNaN) raised SIGFPE\n");		      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " issignaling (-sNaN)",				      \
-	     SNAN_TESTS (FLOAT) ? issignaling (minus_sNaN_var) : 1);	      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " isnan (qNaN) raised SIGFPE\n");			      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " isnan (qNaN)", isnan (qNaN_var));			      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " isnan (-qNaN) raised SIGFPE\n");			      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " isnan (-qNaN)", isnan (-qNaN_var));		      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " isnan (sNaN) raised SIGFPE\n");			      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " isnan (sNaN)",					      \
-	     SNAN_TESTS (FLOAT) ? isnan (sNaN_var) : 1);		      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " isnan (-sNaN) raised SIGFPE\n");			      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " isnan (-sNaN)",					      \
-	     SNAN_TESTS (FLOAT) ? isnan (minus_sNaN_var) : 1);		      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " isinf (qNaN) raised SIGFPE\n");			      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " isinf (qNaN)", !isinf (qNaN_var));		      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " isinf (-qNaN) raised SIGFPE\n");			      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " isinf (-qNaN)", !isinf (-qNaN_var));		      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " isinf (sNaN) raised SIGFPE\n");			      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " isinf (sNaN)",					      \
-	     SNAN_TESTS (FLOAT) ? !isinf (sNaN_var) : 1);		      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " isinf (-sNaN) raised SIGFPE\n");			      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " isinf (-sNaN)",					      \
-	     SNAN_TESTS (FLOAT) ? !isinf (minus_sNaN_var) : 1);		      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " isfinite (qNaN) raised SIGFPE\n");		      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " isfinite (qNaN)", !isfinite (qNaN_var));		      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " isfinite (-qNaN) raised SIGFPE\n");		      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " isfinite (-qNaN)", !isfinite (-qNaN_var));	      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " isfinite (sNaN) raised SIGFPE\n");		      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " isfinite (sNaN)",					      \
-	     SNAN_TESTS (FLOAT) ? !isfinite (sNaN_var) : 1);		      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " isfinite (-sNaN) raised SIGFPE\n");		      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " isfinite (-sNaN)",				      \
-	     SNAN_TESTS (FLOAT) ? !isfinite (minus_sNaN_var) : 1);	      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " isnormal (qNaN) raised SIGFPE\n");		      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " isnormal (qNaN)", !isnormal (qNaN_var));		      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " isnormal (-qNaN) raised SIGFPE\n");		      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " isnormal (-qNaN)", !isnormal (-qNaN_var));	      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " isnormal (sNaN) isnormal SIGFPE\n");		      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " isnormal (sNaN)",					      \
-	     SNAN_TESTS (FLOAT) ? !isnormal (sNaN_var) : 1);		      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " isnormal (-sNaN) raised SIGFPE\n");		      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " isnormal (-sNaN)",				      \
-	     SNAN_TESTS (FLOAT) ? !isnormal (minus_sNaN_var) : 1);	      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " fpclassify (qNaN) raised SIGFPE\n");		      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " fpclassify (qNaN)", (fpclassify (qNaN_var)==FP_NAN));   \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " fpclassify (-qNaN) raised SIGFPE\n");		      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " fpclassify (-qNaN)", (fpclassify (-qNaN_var)==FP_NAN)); \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " fpclassify (sNaN) isnormal SIGFPE\n");		      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " fpclassify (sNaN)",				      \
-	     SNAN_TESTS (FLOAT) ? fpclassify (sNaN_var) == FP_NAN : 1);	      \
-    }									      \
-									      \
-  feclearexcept(FE_ALL_EXCEPT);						      \
-  feenableexcept (FE_ALL_EXCEPT);					      \
-  if (sigsetjmp(sigfpe_buf, 0))						      \
-    {									      \
-      printf (#FLOAT " fpclassify (-sNaN) raised SIGFPE\n");		      \
-      errors++;								      \
-    } else {								      \
-      check (#FLOAT " fpclassify (-sNaN)",				      \
-	     SNAN_TESTS (FLOAT) ? fpclassify (minus_sNaN_var) == FP_NAN : 1); \
-    }									      \
-									      \
-  fesetenv(&saved_fenv); /* restore saved fenv */			      \
-  remove_sigaction_FP();						      \
-}
+  fegetenv (&saved_fenv);						      \
+									      \
+  CHECK (#FLOAT " issignaling (qNaN)", !issignaling (qNaN_var));	      \
+  CHECK (#FLOAT " issignaling (-qNaN)", !issignaling (-qNaN_var));	      \
+  CHECK (#FLOAT " issignaling (sNaN)",					      \
+         SNAN_TESTS (FLOAT) ? issignaling (sNaN_var) : 1);		      \
+  CHECK (#FLOAT " issignaling (-sNaN)",					      \
+         SNAN_TESTS (FLOAT) ? issignaling (minus_sNaN_var) : 1);	      \
+  CHECK (#FLOAT " isnan (qNaN)", isnan (qNaN_var));			      \
+  CHECK (#FLOAT " isnan (-qNaN)", isnan (-qNaN_var));			      \
+  CHECK (#FLOAT " isnan (sNaN)",					      \
+         SNAN_TESTS (FLOAT) ? isnan (sNaN_var) : 1);			      \
+  CHECK (#FLOAT " isnan (-sNaN)",					      \
+         SNAN_TESTS (FLOAT) ? isnan (minus_sNaN_var) : 1);		      \
+  CHECK (#FLOAT " isinf (qNaN)", !isinf (qNaN_var));			      \
+  CHECK (#FLOAT " isinf (-qNaN)", !isinf (-qNaN_var));			      \
+  CHECK (#FLOAT " isinf (sNaN)",					      \
+         SNAN_TESTS (FLOAT) ? !isinf (sNaN_var) : 1);			      \
+  CHECK (#FLOAT " isinf (-sNaN)",					      \
+         SNAN_TESTS (FLOAT) ? !isinf (minus_sNaN_var) : 1);		      \
+  CHECK (#FLOAT " isfinite (qNaN)", !isfinite (qNaN_var));		      \
+  CHECK (#FLOAT " isfinite (-qNaN)", !isfinite (-qNaN_var));		      \
+  CHECK (#FLOAT " isfinite (sNaN)",					      \
+         SNAN_TESTS (FLOAT) ? !isfinite (sNaN_var) : 1);		      \
+  CHECK (#FLOAT " isfinite (-sNaN)",					      \
+         SNAN_TESTS (FLOAT) ? !isfinite (minus_sNaN_var) : 1);		      \
+  CHECK (#FLOAT " isnormal (qNaN)", !isnormal (qNaN_var));		      \
+  CHECK (#FLOAT " isnormal (-qNaN)", !isnormal (-qNaN_var));		      \
+  CHECK (#FLOAT " isnormal (sNaN)",					      \
+         SNAN_TESTS (FLOAT) ? !isnormal (sNaN_var) : 1);		      \
+  CHECK (#FLOAT " isnormal (-sNaN)",					      \
+         SNAN_TESTS (FLOAT) ? !isnormal (minus_sNaN_var) : 1);		      \
+  CHECK (#FLOAT " fpclassify (qNaN)", (fpclassify (qNaN_var)==FP_NAN));	      \
+  CHECK (#FLOAT " fpclassify (-qNaN)", (fpclassify (-qNaN_var)==FP_NAN));     \
+  CHECK (#FLOAT " fpclassify (sNaN)",					      \
+         SNAN_TESTS (FLOAT) ? fpclassify (sNaN_var) == FP_NAN : 1);	      \
+  CHECK (#FLOAT " fpclassify (-sNaN)",					      \
+         SNAN_TESTS (FLOAT) ? fpclassify (minus_sNaN_var) == FP_NAN : 1);     \
+									      \
+  fesetenv (&saved_fenv); /* restore saved fenv */			      \
+}									      \
 
 TEST_FUNC (float_test, float, f)
 TEST_FUNC (double_test, double, )
 #ifndef NO_LONG_DOUBLE
-TEST_FUNC (ldouble_test, ldouble, l)
+TEST_FUNC (ldouble_test, long double, l)
 #endif
 
 static int
 do_test (void)
 {
-  float_test();
-  double_test();
+  signal (SIGFPE, &myFPsighandler);
+
+  float_test ();
+  double_test ();
 #ifndef NO_LONG_DOUBLE
-  ldouble_test();
+  ldouble_test ();
 #endif
 
   return errors != 0;

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

Summary of changes:
 ChangeLog        |   20 +++
 math/test-snan.c |  378 +++++++++--------------------------------------------
 2 files changed, 85 insertions(+), 313 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]