aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog29
-rw-r--r--bits/fp-logb.h28
-rw-r--r--bits/mathdef.h9
-rw-r--r--math/Makefile2
-rw-r--r--math/math.h19
-rw-r--r--sysdeps/aarch64/bits/mathdef.h9
-rw-r--r--sysdeps/alpha/bits/mathdef.h12
-rw-r--r--sysdeps/ia64/bits/fp-logb.h24
-rw-r--r--sysdeps/ia64/bits/mathdef.h9
-rw-r--r--sysdeps/m68k/m680x0/bits/fp-logb.h24
-rw-r--r--sysdeps/m68k/m680x0/bits/mathdef.h9
-rw-r--r--sysdeps/mips/bits/mathdef.h9
-rw-r--r--sysdeps/powerpc/bits/mathdef.h16
-rw-r--r--sysdeps/s390/bits/mathdef.h9
-rw-r--r--sysdeps/sparc/bits/mathdef.h12
-rw-r--r--sysdeps/x86/bits/fp-logb.h24
-rw-r--r--sysdeps/x86/bits/mathdef.h9
17 files changed, 148 insertions, 105 deletions
diff --git a/ChangeLog b/ChangeLog
index 17d5aeb..c0dbfa2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,34 @@
2016-12-01 Joseph Myers <joseph@codesourcery.com>
+ * bits/fp-logb.h: New file.
+ * sysdeps/ia64/bits/fp-logb.h: Likewise.
+ * sysdeps/m68k/m680x0/bits/fp-logb.h: Likewise.
+ * sysdeps/x86/bits/fp-logb.h: Likewise.
+ * math/Makefile (headers): Add bits/fp-logb.h.
+ * math/math.h: Include <bits/fp-logb.h>.
+ [__USE_ISOC99] (FP_ILOGB0): Define based on __FP_LOGB0_IS_MIN.
+ [__USE_ISOC99] (FP_ILOGBNAN): Define based on __FP_LOGBNAN_IS_MIN.
+ * bits/mathdef.h (FP_ILOGB0): Remove.
+ (FP_ILOGBNAN): Likewise.
+ * sysdeps/aarch64/bits/mathdef.h (FP_ILOGB0): Likewise.
+ (FP_ILOGBNAN): Likewise.
+ * sysdeps/alpha/bits/mathdef.h (FP_ILOGB0): Likewise.
+ (FP_ILOGBNAN): Likewise.
+ * sysdeps/ia64/bits/mathdef.h (FP_ILOGB0): Likewise.
+ (FP_ILOGBNAN): Likewise.
+ * sysdeps/m68k/m680x0/bits/mathdef.h (FP_ILOGB0): Likewise.
+ (FP_ILOGBNAN): Likewise.
+ * sysdeps/mips/bits/mathdef.h (FP_ILOGB0): Likewise.
+ (FP_ILOGBNAN): Likewise.
+ * sysdeps/powerpc/bits/mathdef.h (FP_ILOGB0): Likewise.
+ (FP_ILOGBNAN): Likewise.
+ * sysdeps/s390/bits/mathdef.h (FP_ILOGB0): Likewise.
+ (FP_ILOGBNAN): Likewise.
+ * sysdeps/sparc/bits/mathdef.h (FP_ILOGB0): Likewise.
+ (FP_ILOGBNAN): Likewise.
+ * sysdeps/x86/bits/mathdef.h (FP_ILOGB0): Likewise.
+ (FP_ILOGBNAN): Likewise.
+
* scripts/build-many-glibcs.py: Add bot to usage message. Import
time module.
(Context.__init__): Initialize self.logsdir_old.
diff --git a/bits/fp-logb.h b/bits/fp-logb.h
new file mode 100644
index 0000000..4c9f592
--- /dev/null
+++ b/bits/fp-logb.h
@@ -0,0 +1,28 @@
+/* Define __FP_LOGB0_IS_MIN and __FP_LOGBNAN_IS_MIN.
+ 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/>. */
+
+#ifndef _MATH_H
+# error "Never use <bits/fp-logb.h> directly; include <math.h> instead."
+#endif
+
+/* __FP_LOGB0_IS_MIN is defined to 1 if FP_ILOGB0 is INT_MIN, and 0 if
+ it is -INT_MAX. __FP_LOGBNAN_IS_MIN is defined to 1 if FP_ILOGBNAN
+ is INT_MIN, and 0 if it is INT_MAX. */
+
+#define __FP_LOGB0_IS_MIN 0
+#define __FP_LOGBNAN_IS_MIN 0
diff --git a/bits/mathdef.h b/bits/mathdef.h
index 050204a..0148297 100644
--- a/bits/mathdef.h
+++ b/bits/mathdef.h
@@ -19,15 +19,6 @@
# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
#endif
-#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-# define _MATH_H_MATHDEF 1
-
-/* The values returned by `ilogb' for 0 and NaN respectively. */
-# define FP_ILOGB0 (-2147483647)
-# define FP_ILOGBNAN 2147483647
-
-#endif /* ISO C99 */
-
#ifndef __NO_LONG_DOUBLE_MATH
/* Signal that we do not really have a `long double'. The disables the
declaration of all the `long double' function variants. */
diff --git a/math/Makefile b/math/Makefile
index a7c2b07..ac3a90a 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -28,7 +28,7 @@ headers := math.h bits/mathcalls.h bits/mathinline.h bits/huge_val.h \
bits/fenv.h bits/fenvinline.h bits/mathdef.h tgmath.h \
bits/math-finite.h bits/math-vector.h \
bits/libm-simd-decl-stubs.h bits/iscanonical.h \
- bits/flt-eval-method.h bits/fp-fast.h
+ bits/flt-eval-method.h bits/fp-fast.h bits/fp-logb.h
# FPU support code.
aux := setfpucw fpu_control
diff --git a/math/math.h b/math/math.h
index 95b39b3..6e4bf9e 100644
--- a/math/math.h
+++ b/math/math.h
@@ -97,13 +97,30 @@ typedef _Float128x double_t;
# endif
#endif
-/* Define macros for the return value of ilogb.
+/* Define macros for the return value of ilogb, based on
+ __FP_LOGB0_IS_MIN and __FP_LOGBNAN_IS_MIN.
FP_ILOGB0 Expands to a value returned by `ilogb (0.0)'.
FP_ILOGBNAN Expands to a value returned by `ilogb (NAN)'.
*/
+#include <bits/fp-logb.h>
+#ifdef __USE_ISOC99
+# if __FP_LOGB0_IS_MIN
+# define FP_ILOGB0 (-2147483647 - 1)
+# else
+# define FP_ILOGB0 (-2147483647)
+# endif
+# if __FP_LOGBNAN_IS_MIN
+# define FP_ILOGBNAN (-2147483647 - 1)
+# else
+# define FP_ILOGBNAN 2147483647
+# endif
+#endif
+
+/* Get information about long double. */
+
#include <bits/mathdef.h>
/* Get the architecture specific values describing the floating-point
diff --git a/sysdeps/aarch64/bits/mathdef.h b/sysdeps/aarch64/bits/mathdef.h
index 5418bea..2213635 100644
--- a/sysdeps/aarch64/bits/mathdef.h
+++ b/sysdeps/aarch64/bits/mathdef.h
@@ -19,12 +19,3 @@
#if !defined _MATH_H && !defined _COMPLEX_H
# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
#endif
-
-#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-# define _MATH_H_MATHDEF 1
-
-/* The values returned by `ilogb' for 0 and NaN respectively. */
-# define FP_ILOGB0 (-2147483647)
-# define FP_ILOGBNAN (2147483647)
-
-#endif /* ISO C99 */
diff --git a/sysdeps/alpha/bits/mathdef.h b/sysdeps/alpha/bits/mathdef.h
index fbca194..021563f 100644
--- a/sysdeps/alpha/bits/mathdef.h
+++ b/sysdeps/alpha/bits/mathdef.h
@@ -19,18 +19,6 @@
# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
#endif
-/* FIXME! This file describes properties of the compiler, not the machine;
- it should not be part of libc! */
-
-#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-# define _MATH_H_MATHDEF 1
-
-/* The values returned by `ilogb' for 0 and NaN respectively. */
-# define FP_ILOGB0 (-2147483647)
-# define FP_ILOGBNAN (2147483647)
-
-#endif /* ISO C99 && MATH_H */
-
#if defined _COMPLEX_H && !defined _COMPLEX_H_MATHDEF
# define _COMPLEX_H_MATHDEF 1
# if defined(__GNUC__) && !__GNUC_PREREQ(3,4)
diff --git a/sysdeps/ia64/bits/fp-logb.h b/sysdeps/ia64/bits/fp-logb.h
new file mode 100644
index 0000000..065e2ff
--- /dev/null
+++ b/sysdeps/ia64/bits/fp-logb.h
@@ -0,0 +1,24 @@
+/* Define __FP_LOGB0_IS_MIN and __FP_LOGBNAN_IS_MIN. IA64 version.
+ 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/>. */
+
+#ifndef _MATH_H
+# error "Never use <bits/fp-logb.h> directly; include <math.h> instead."
+#endif
+
+#define __FP_LOGB0_IS_MIN 1
+#define __FP_LOGBNAN_IS_MIN 0
diff --git a/sysdeps/ia64/bits/mathdef.h b/sysdeps/ia64/bits/mathdef.h
index 44a7642..e689835 100644
--- a/sysdeps/ia64/bits/mathdef.h
+++ b/sysdeps/ia64/bits/mathdef.h
@@ -18,12 +18,3 @@
#if !defined _MATH_H && !defined _COMPLEX_H
# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
#endif
-
-#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-# define _MATH_H_MATHDEF 1
-
-/* The values returned by `ilogb' for 0 and NaN respectively. */
-# define FP_ILOGB0 (-2147483647 - 1)
-# define FP_ILOGBNAN 2147483647
-
-#endif /* ISO C99 */
diff --git a/sysdeps/m68k/m680x0/bits/fp-logb.h b/sysdeps/m68k/m680x0/bits/fp-logb.h
new file mode 100644
index 0000000..8ece126
--- /dev/null
+++ b/sysdeps/m68k/m680x0/bits/fp-logb.h
@@ -0,0 +1,24 @@
+/* Define __FP_LOGB0_IS_MIN and __FP_LOGBNAN_IS_MIN. M68K version.
+ 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/>. */
+
+#ifndef _MATH_H
+# error "Never use <bits/fp-logb.h> directly; include <math.h> instead."
+#endif
+
+#define __FP_LOGB0_IS_MIN 1
+#define __FP_LOGBNAN_IS_MIN 0
diff --git a/sysdeps/m68k/m680x0/bits/mathdef.h b/sysdeps/m68k/m680x0/bits/mathdef.h
index 702bd0e..7926c6a 100644
--- a/sysdeps/m68k/m680x0/bits/mathdef.h
+++ b/sysdeps/m68k/m680x0/bits/mathdef.h
@@ -18,12 +18,3 @@
#if !defined _MATH_H && !defined _COMPLEX_H
# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
#endif
-
-#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-# define _MATH_H_MATHDEF 1
-
-/* The values returned by `ilogb' for 0 and NaN respectively. */
-# define FP_ILOGB0 (-2147483647 - 1)
-# define FP_ILOGBNAN (2147483647)
-
-#endif /* ISO C99 */
diff --git a/sysdeps/mips/bits/mathdef.h b/sysdeps/mips/bits/mathdef.h
index 74abf97..31fc400 100644
--- a/sysdeps/mips/bits/mathdef.h
+++ b/sysdeps/mips/bits/mathdef.h
@@ -21,15 +21,6 @@
#include <sgidefs.h>
-#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-# define _MATH_H_MATHDEF 1
-
-/* The values returned by `ilogb' for 0 and NaN respectively. */
-# define FP_ILOGB0 (-2147483647)
-# define FP_ILOGBNAN 2147483647
-
-#endif /* ISO C99 */
-
#if ! defined __NO_LONG_DOUBLE_MATH && _MIPS_SIM == _ABIO32
/* Signal that we do not really have a `long double'. This disables the
declaration of all the `long double' function variants. */
diff --git a/sysdeps/powerpc/bits/mathdef.h b/sysdeps/powerpc/bits/mathdef.h
index 392e4e5..eeea6fc 100644
--- a/sysdeps/powerpc/bits/mathdef.h
+++ b/sysdeps/powerpc/bits/mathdef.h
@@ -18,19 +18,3 @@
#if !defined _MATH_H && !defined _COMPLEX_H
# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
#endif
-
-
-/* FIXME! This file describes properties of the compiler, not the machine;
- it should not be part of libc!
-
- FIXME! This file does not deal with the -fshort-double option of
- gcc! */
-
-#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-# define _MATH_H_MATHDEF 1
-
-/* The values returned by `ilogb' for 0 and NaN respectively. */
-# define FP_ILOGB0 (-2147483647)
-# define FP_ILOGBNAN (2147483647)
-
-#endif /* ISO C99 */
diff --git a/sysdeps/s390/bits/mathdef.h b/sysdeps/s390/bits/mathdef.h
index 5ad04ae..eeea6fc 100644
--- a/sysdeps/s390/bits/mathdef.h
+++ b/sysdeps/s390/bits/mathdef.h
@@ -18,12 +18,3 @@
#if !defined _MATH_H && !defined _COMPLEX_H
# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
#endif
-
-#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-# define _MATH_H_MATHDEF 1
-
-/* The values returned by `ilogb' for 0 and NaN respectively. */
-# define FP_ILOGB0 (-2147483647)
-# define FP_ILOGBNAN 2147483647
-
-#endif /* ISO C99 */
diff --git a/sysdeps/sparc/bits/mathdef.h b/sysdeps/sparc/bits/mathdef.h
index 55a3530..65ab45a 100644
--- a/sysdeps/sparc/bits/mathdef.h
+++ b/sysdeps/sparc/bits/mathdef.h
@@ -20,15 +20,3 @@
#endif
#include <bits/wordsize.h>
-
-/* FIXME! This file describes properties of the compiler, not the machine;
- it should not be part of libc! */
-
-#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-# define _MATH_H_MATHDEF 1
-
-/* The values returned by `ilogb' for 0 and NaN respectively. */
-# define FP_ILOGB0 (-2147483647)
-# define FP_ILOGBNAN (2147483647)
-
-#endif /* ISO C99 */
diff --git a/sysdeps/x86/bits/fp-logb.h b/sysdeps/x86/bits/fp-logb.h
new file mode 100644
index 0000000..159cea3
--- /dev/null
+++ b/sysdeps/x86/bits/fp-logb.h
@@ -0,0 +1,24 @@
+/* Define __FP_LOGB0_IS_MIN and __FP_LOGBNAN_IS_MIN. x86 version.
+ 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/>. */
+
+#ifndef _MATH_H
+# error "Never use <bits/fp-logb.h> directly; include <math.h> instead."
+#endif
+
+#define __FP_LOGB0_IS_MIN 1
+#define __FP_LOGBNAN_IS_MIN 1
diff --git a/sysdeps/x86/bits/mathdef.h b/sysdeps/x86/bits/mathdef.h
index 17ad1ef..1c6aee6 100644
--- a/sysdeps/x86/bits/mathdef.h
+++ b/sysdeps/x86/bits/mathdef.h
@@ -18,12 +18,3 @@
#if !defined _MATH_H && !defined _COMPLEX_H
# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
#endif
-
-#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-# define _MATH_H_MATHDEF 1
-
-/* The values returned by `ilogb' for 0 and NaN respectively. */
-# define FP_ILOGB0 (-2147483647 - 1)
-# define FP_ILOGBNAN (-2147483647 - 1)
-
-#endif /* ISO C99 */