aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--math/Makefile3
-rw-r--r--math/test-fp-ilogb-constants.c40
-rw-r--r--sysdeps/sh/sh4/bits/mathdef.h2
4 files changed, 51 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 3063bd0..b6fc831 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2016-11-23 Joseph Myers <joseph@codesourcery.com>
+
+ [BZ #20859]
+ * sysdeps/sh/sh4/bits/mathdef.h (FP_ILOGB0): Define to
+ (-0x7fffffff) instead of 0x80000001.
+ * math/test-fp-ilogb-constants.c: New file.
+ * math/Makefile (tests): Add test-fp-ilogb-constants.
+
2016-11-23 Maciej W. Rozycki <macro@imgtec.com>
* sysdeps/mips/mips32/crti.S (JALR_RELOC): New macro.
diff --git a/math/Makefile b/math/Makefile
index fe910ef..e84f86a 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -158,7 +158,8 @@ tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \
test-fexcept test-fexcept-traps test-fesetexcept \
test-fesetexcept-traps test-fetestexceptflag test-femode \
test-femode-traps test-iszero-excess-precision \
- test-iseqsig-excess-precision test-flt-eval-method $(tests-static)
+ test-iseqsig-excess-precision test-flt-eval-method \
+ test-fp-ilogb-constants $(tests-static)
tests-static = test-fpucw-static test-fpucw-ieee-static \
test-signgam-uchar-static test-signgam-uchar-init-static \
test-signgam-uint-static test-signgam-uint-init-static \
diff --git a/math/test-fp-ilogb-constants.c b/math/test-fp-ilogb-constants.c
new file mode 100644
index 0000000..eaa9cc1
--- /dev/null
+++ b/math/test-fp-ilogb-constants.c
@@ -0,0 +1,40 @@
+/* Test requirements on FP_ILOGB* constants.
+ Copyright (C) 2016 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <limits.h>
+#include <math.h>
+
+#if FP_ILOGB0 >= 0
+# error "FP_ILOGB0 is positive"
+#endif
+
+#if FP_ILOGB0 != INT_MIN && FP_ILOGB0 != -INT_MAX
+# error "FP_ILOGB0 must be INT_MIN or -INT_MAX"
+#endif
+
+#if FP_ILOGBNAN >= 0 && FP_ILOGBNAN != INT_MAX
+# error "FP_ILOGBNAN must be INT_MIN or INT_MAX"
+#endif
+
+#if FP_ILOGBNAN < 0 && FP_ILOGBNAN != INT_MIN
+# error "FP_ILOGBNAN must be INT_MIN or INT_MAX"
+#endif
+
+/* This is a compilation test. */
+#define TEST_FUNCTION 0
+#include "../test-skeleton.c"
diff --git a/sysdeps/sh/sh4/bits/mathdef.h b/sysdeps/sh/sh4/bits/mathdef.h
index 90dbebb..21ce094 100644
--- a/sysdeps/sh/sh4/bits/mathdef.h
+++ b/sysdeps/sh/sh4/bits/mathdef.h
@@ -34,7 +34,7 @@ typedef float float_t;
typedef double double_t;
/* The values returned by `ilogb' for 0 and NaN respectively. */
-# define FP_ILOGB0 0x80000001
+# define FP_ILOGB0 (-0x7fffffff)
# define FP_ILOGBNAN 0x7fffffff
#endif /* ISO C99 */