aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--NEWS7
-rw-r--r--include/features.h21
-rw-r--r--manual/creature.texi7
4 files changed, 42 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 5b1ab7f40a..9263294b07 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2019-08-13 Joseph Myers <joseph@codesourcery.com>
+
+ * include/features.h (_ISOC2X_SOURCE): New feature test macro.
+ Undefine and define to 1 if [_GNU_SOURCE].
+ (__GLIBC_USE_ISOC2X): New macro. Undefine and redefine depending
+ on [_ISOC2X_SOURCE] and [__STDC_VERSION__ > 201710L].
+ (__USE_ISOC11): Also define to 1 if [_ISOC2X_SOURCE].
+ (__USE_ISOC99): Likewise.
+ (__USE_ISOC95): Likewise.
+ * manual/creature.texi (_ISOC2X_SOURCE): Document.
+
2019-08-13 Florian Weimer <fweimer@redhat.com>
* login/getutid_r.c (__getutid_r): _HAVE_UT_ID and _HAVE_UT_TYPE
diff --git a/NEWS b/NEWS
index 4326997ddd..8ca7585c2c 100644
--- a/NEWS
+++ b/NEWS
@@ -9,7 +9,12 @@ Version 2.31
Major new features:
- [Add new features here]
+* The GNU C Library now supports a feature test macro _ISOC2X_SOURCE to
+ enable features from the draft ISO C2X standard. Only some features from
+ this draft standard are supported by the GNU C Library, and as the draft
+ is under active development, the set of features enabled by this macro is
+ liable to change. Features from C2X are also enabled by _GNU_SOURCE, or
+ by compiling with "gcc -std=gnu2x".
Deprecated and removed features, and other changes affecting compatibility:
diff --git a/include/features.h b/include/features.h
index bf47d881dd..8187539581 100644
--- a/include/features.h
+++ b/include/features.h
@@ -24,6 +24,7 @@
__STRICT_ANSI__ ISO Standard C.
_ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
_ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
+ _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
__STDC_WANT_LIB_EXT2__
Extensions to ISO C99 from TR 27431-2:2010.
__STDC_WANT_IEC_60559_BFP_EXT__
@@ -139,6 +140,7 @@
#undef __USE_GNU
#undef __USE_FORTIFY_LEVEL
#undef __KERNEL_STRICT_NAMES
+#undef __GLIBC_USE_ISOC2X
#undef __GLIBC_USE_DEPRECATED_GETS
#undef __GLIBC_USE_DEPRECATED_SCANF
@@ -195,6 +197,8 @@
# define _ISOC99_SOURCE 1
# undef _ISOC11_SOURCE
# define _ISOC11_SOURCE 1
+# undef _ISOC2X_SOURCE
+# define _ISOC2X_SOURCE 1
# undef _POSIX_SOURCE
# define _POSIX_SOURCE 1
# undef _POSIX_C_SOURCE
@@ -216,26 +220,37 @@
#if (defined _DEFAULT_SOURCE \
|| (!defined __STRICT_ANSI__ \
&& !defined _ISOC99_SOURCE && !defined _ISOC11_SOURCE \
+ && !defined _ISOC2X_SOURCE \
&& !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE \
&& !defined _XOPEN_SOURCE))
# undef _DEFAULT_SOURCE
# define _DEFAULT_SOURCE 1
#endif
+/* This is to enable the ISO C2X extension. */
+#if (defined _ISOC2X_SOURCE \
+ || (defined __STDC_VERSION__ && __STDC_VERSION__ > 201710L))
+# define __GLIBC_USE_ISOC2X 1
+#else
+# define __GLIBC_USE_ISOC2X 0
+#endif
+
/* This is to enable the ISO C11 extension. */
-#if (defined _ISOC11_SOURCE \
+#if (defined _ISOC11_SOURCE || defined _ISOC2X_SOURCE \
|| (defined __STDC_VERSION__ && __STDC_VERSION__ >= 201112L))
# define __USE_ISOC11 1
#endif
/* This is to enable the ISO C99 extension. */
-#if (defined _ISOC99_SOURCE || defined _ISOC11_SOURCE \
+#if (defined _ISOC99_SOURCE || defined _ISOC11_SOURCE \
+ || defined _ISOC2X_SOURCE \
|| (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L))
# define __USE_ISOC99 1
#endif
/* This is to enable the ISO C90 Amendment 1:1995 extension. */
-#if (defined _ISOC99_SOURCE || defined _ISOC11_SOURCE \
+#if (defined _ISOC99_SOURCE || defined _ISOC11_SOURCE \
+ || defined _ISOC2X_SOURCE \
|| (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199409L))
# define __USE_ISOC95 1
#endif
diff --git a/manual/creature.texi b/manual/creature.texi
index 8876b2ab77..be5050468b 100644
--- a/manual/creature.texi
+++ b/manual/creature.texi
@@ -177,6 +177,13 @@ when the compiler uses an earlier language version.
If this macro is defined, ISO C11 extensions to ISO C99 are included.
@end defvr
+@defvr Macro _ISOC2X_SOURCE
+@standards{C2X, (none)}
+If this macro is defined, ISO C2X extensions to ISO C11 are included.
+Only some features from this draft standard are supported by
+@theglibc{}.
+@end defvr
+
@defvr Macro __STDC_WANT_LIB_EXT2__
@standards{ISO, (none)}
If you define this macro to the value @code{1}, features from ISO/IEC