aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog25
-rw-r--r--NEWS5
-rw-r--r--bits/libc-header-start.h9
-rw-r--r--include/features.h1
-rw-r--r--manual/arith.texi21
-rw-r--r--manual/creature.texi9
-rw-r--r--math/bits/mathcalls.h4
-rw-r--r--math/math.h7
8 files changed, 65 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog
index 00fd7c107a..bd751f26d0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,28 @@
+2016-08-03 Joseph Myers <joseph@codesourcery.com>
+
+ * bits/libc-header-start.h (__GLIBC_USE_IEC_60559_BFP_EXT): New
+ macro.
+ * include/features.h (__STDC_WANT_IEC_60559_BFP_EXT__): Document.
+ * manual/arith.texi (issignaling): Document as ISO from TS
+ 18661-1:2014.
+ (nextup): Likewise.
+ (nextupf): Likewise.
+ (nextupl): Likewise.
+ (nextdown): Likewise.
+ (nextdownf): Likewise.
+ (nextdownl): Likewise.
+ * manual/creature.texi (__STDC_WANT_IEC_60559_BFP_EXT__): Document
+ macro.
+ * math/math.h: Define
+ __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION and include
+ <bits/libc-header-start.h> instead of including <features.h>.
+ (issignaling): Define if [__GLIBC_USE (IEC_60559_BFP_EXT)], not
+ [__USE_GNU].
+ * math/bits/mathcalls.h (nextdown): Declare if
+ [__GLIBC_USE (IEC_60559_BFP_EXT)], not [__USE_GNU].
+ (nextup): Likewise.
+ (__issignaling): Likewise.
+
2016-08-03 Paul E. Murphy <murphyp@linux.vnet.ibm.com>
* s_ccoshf.c (__ccoshf): Remove FE_INVALID
diff --git a/NEWS b/NEWS
index d057c06b57..495bde01be 100644
--- a/NEWS
+++ b/NEWS
@@ -12,6 +12,11 @@ Version 2.25
TR. Note that not all functions from that TR are supported by the GNU C
Library.
+* The feature test macro __STDC_WANT_IEC_60559_BFP_EXT__, from ISO/IEC TS
+ 18661-1:2014, is supported to enable declarations of functions and macros
+ from that TS. Note that most features from that TS are not supported by
+ the GNU C Library.
+
Security related changes:
[Add security related changes here]
diff --git a/bits/libc-header-start.h b/bits/libc-header-start.h
index c6663074a8..6a5850526c 100644
--- a/bits/libc-header-start.h
+++ b/bits/libc-header-start.h
@@ -41,3 +41,12 @@
#else
# define __GLIBC_USE_LIB_EXT2 0
#endif
+
+/* ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__
+ macro. */
+#undef __GLIBC_USE_IEC_60559_BFP_EXT
+#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_BFP_EXT__
+# define __GLIBC_USE_IEC_60559_BFP_EXT 1
+#else
+# define __GLIBC_USE_IEC_60559_BFP_EXT 0
+#endif
diff --git a/include/features.h b/include/features.h
index 404014115a..f2cd148fa4 100644
--- a/include/features.h
+++ b/include/features.h
@@ -25,6 +25,7 @@
_ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
_ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
__STDC_WANT_LIB_EXT2__ Extensions to ISO C99 from TR 27431-2:2010.
+ __STDC_WANT_IEC_60559_BFP_EXT__ Extensions to ISO C11 from TS 18661-1:2014.
_POSIX_SOURCE IEEE Std 1003.1.
_POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
if >=199309L, add IEEE Std 1003.1b-1993;
diff --git a/manual/arith.texi b/manual/arith.texi
index f54b1ec7df..3d8bdd8cad 100644
--- a/manual/arith.texi
+++ b/manual/arith.texi
@@ -397,12 +397,11 @@ to
@end deftypefn
@comment math.h
-@comment GNU
+@comment ISO
@deftypefn {Macro} int issignaling (@emph{float-type} @var{x})
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This macro returns a nonzero value if @var{x} is a signaling NaN
-(sNaN). It is based on draft TS 18661 and currently enabled as a GNU
-extension.
+(sNaN). It is from TS 18661-1:2014.
@end deftypefn
Another set of floating-point classification functions was provided by
@@ -1703,13 +1702,13 @@ double}.
@end deftypefun
@comment math.h
-@comment GNU
+@comment ISO
@deftypefun double nextup (double @var{x})
@comment math.h
-@comment GNU
+@comment ISO
@deftypefunx float nextupf (float @var{x})
@comment math.h
-@comment GNU
+@comment ISO
@deftypefunx {long double} nextupl (long double @var{x})
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
The @code{nextup} function returns the next representable neighbor of @var{x}
@@ -1718,18 +1717,18 @@ subnormal number in the type of @var{x} the function returns @code{-0}. If
@math{@var{x} = @code{0}} the function returns the smallest positive subnormal
number in the type of @var{x}. If @var{x} is NaN, NaN is returned.
If @var{x} is @math{+@infinity{}}, @math{+@infinity{}} is returned.
-@code{nextup} is based on TS 18661 and currently enabled as a GNU extension.
+@code{nextup} from TS 18661-1:2014.
@code{nextup} never raises an exception except for signaling NaNs.
@end deftypefun
@comment math.h
-@comment GNU
+@comment ISO
@deftypefun double nextdown (double @var{x})
@comment math.h
-@comment GNU
+@comment ISO
@deftypefunx float nextdownf (float @var{x})
@comment math.h
-@comment GNU
+@comment ISO
@deftypefunx {long double} nextdownl (long double @var{x})
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
The @code{nextdown} function returns the next representable neighbor of @var{x}
@@ -1738,7 +1737,7 @@ subnormal number in the type of @var{x} the function returns @code{+0}. If
@math{@var{x} = @code{0}} the function returns the smallest negative subnormal
number in the type of @var{x}. If @var{x} is NaN, NaN is returned.
If @var{x} is @math{-@infinity{}}, @math{-@infinity{}} is returned.
-@code{nextdown} is based on TS 18661 and currently enabled as a GNU extension.
+@code{nextdown} is from TS 18661-1:2014.
@code{nextdown} never raises an exception except for signaling NaNs.
@end deftypefun
diff --git a/manual/creature.texi b/manual/creature.texi
index 65c5928343..61b17ce22b 100644
--- a/manual/creature.texi
+++ b/manual/creature.texi
@@ -174,6 +174,15 @@ of the features from this TR are supported by @theglibc{}.
@end defvr
@comment (none)
+@comment ISO
+@defvr Macro __STDC_WANT_IEC_60559_BFP_EXT__
+If you define this macro, features from ISO/IEC TS 18661-1:2014
+(Floating-point extensions for C: Binary floating-point arithmetic)
+are enabled. Only some of the features from this TS are supported by
+@theglibc{}.
+@end defvr
+
+@comment (none)
@comment GNU
@defvr Macro _GNU_SOURCE
If you define this macro, everything is included: @w{ISO C89}, @w{ISO
diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h
index e2cf49f627..e1c0521ae8 100644
--- a/math/bits/mathcalls.h
+++ b/math/bits/mathcalls.h
@@ -294,7 +294,7 @@ __MATHCALLX (nextafter,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
__MATHCALLX (nexttoward,, (_Mdouble_ __x, long double __y), (__const__));
# endif
-#ifdef __USE_GNU
+#if __GLIBC_USE (IEC_60559_BFP_EXT)
/* Return X - epsilon. */
__MATHCALL (nextdown,, (_Mdouble_ __x));
/* Return X + epsilon. */
@@ -377,7 +377,7 @@ __MATHCALL (fma,, (_Mdouble_ __x, _Mdouble_ __y, _Mdouble_ __z));
__END_NAMESPACE_C99
#endif
-#ifdef __USE_GNU
+#if __GLIBC_USE (IEC_60559_BFP_EXT)
/* Test for signaling NaN. */
__MATHDECL_1 (int, __issignaling,, (_Mdouble_ __value))
__attribute__ ((__const__));
diff --git a/math/math.h b/math/math.h
index 4724b10b6f..ff9d70adf5 100644
--- a/math/math.h
+++ b/math/math.h
@@ -23,7 +23,8 @@
#ifndef _MATH_H
#define _MATH_H 1
-#include <features.h>
+#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
+#include <bits/libc-header-start.h>
__BEGIN_DECLS
@@ -328,7 +329,7 @@ enum
#endif /* Use ISO C99. */
-#ifdef __USE_GNU
+#if __GLIBC_USE (IEC_60559_BFP_EXT)
/* Return nonzero value if X is a signaling NaN. */
# ifdef __NO_LONG_DOUBLE_MATH
# define issignaling(x) \
@@ -340,7 +341,7 @@ enum
: sizeof (x) == sizeof (double) \
? __issignaling (x) : __issignalingl (x))
# endif
-#endif /* Use GNU. */
+#endif /* Use IEC_60559_BFP_EXT. */
#ifdef __USE_MISC
/* Support for various different standard error handling behaviors. */