about summary refs log tree commit diff
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 17d5aeb515..c0dbfa236c 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 0000000000..4c9f592f99
--- /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 050204ab66..014829790a 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 a7c2b07fd8..ac3a90a582 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 95b39b3d92..6e4bf9e528 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 5418beacfb..2213635bd8 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 fbca194a78..021563f211 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 0000000000..065e2ff55f
--- /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 44a7642342..e689835716 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 0000000000..8ece1265c9
--- /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 702bd0e33a..7926c6aaf7 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 74abf97ea3..31fc4001df 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 392e4e5ac6..eeea6fcdc2 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 5ad04aecef..eeea6fcdc2 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 55a35306ce..65ab45aad3 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 0000000000..159cea39ac
--- /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 17ad1efa89..1c6aee6ba5 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 */