about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-11-05 21:19:37 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-11-05 21:19:37 +0000
commitf248238cf43bd751db29e6f151d6da7645337ff5 (patch)
treea27ff09a2c76a490ee7642b03ddb39aa60e121bf
parent8fed86556b7e162d2926f0ba6a573ed193ff882f (diff)
downloadglibc-f248238cf43bd751db29e6f151d6da7645337ff5.tar.gz
glibc-f248238cf43bd751db29e6f151d6da7645337ff5.tar.xz
glibc-f248238cf43bd751db29e6f151d6da7645337ff5.zip
Fix features.h for -Wundef (bug 19212).
features.h is not clean with -Wundef (for the installed header, of
course this only appears with -Wsystem-headers).  In ISO C standards
modes, you get a series of warnings / errors relating to
_POSIX_C_SOURCE and _XOPEN_SOURCE not being defined when tested in
standards mode and uses #undef _GNU_SOURCE to avoid the default
_GNU_SOURCE from libc-symbols.h.  This patch changes the relevant #if
conditionals to avoid these warnings / errors.

Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch).

	[BZ #19212]
	* include/features.h [(_XOPEN_SOURCE - 0) >= 500]: Change
	conditional to [defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >=
	500].
	[_POSIX_C_SOURCE >= 1]: Change conditional to [defined
	_POSIX_C_SOURCE && _POSIX_C_SOURCE >= 1].
	[(_POSIX_C_SOURCE - 0) >= 199309L]: Change conditional to [defined
	_POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199309L].
	[(_POSIX_C_SOURCE - 0) >= 199506L]: Change conditional to [defined
	_POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199506L].
	[(_POSIX_C_SOURCE - 0) >= 200112L]: Change conditional to [defined
	_POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200112L].
	[(_POSIX_C_SOURCE - 0) >= 200809L]: Change conditional to [defined
	_POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200809L].
-rw-r--r--ChangeLog15
-rw-r--r--NEWS2
-rw-r--r--include/features.h17
3 files changed, 26 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index bc2bc6935e..3ee9f19cf8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,20 @@
 2015-11-05  Joseph Myers  <joseph@codesourcery.com>
 
+	[BZ #19212]
+	* include/features.h [(_XOPEN_SOURCE - 0) >= 500]: Change
+	conditional to [defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >=
+	500].
+	[_POSIX_C_SOURCE >= 1]: Change conditional to [defined
+	_POSIX_C_SOURCE && _POSIX_C_SOURCE >= 1].
+	[(_POSIX_C_SOURCE - 0) >= 199309L]: Change conditional to [defined
+	_POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199309L].
+	[(_POSIX_C_SOURCE - 0) >= 199506L]: Change conditional to [defined
+	_POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199506L].
+	[(_POSIX_C_SOURCE - 0) >= 200112L]: Change conditional to [defined
+	_POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200112L].
+	[(_POSIX_C_SOURCE - 0) >= 200809L]: Change conditional to [defined
+	_POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200809L].
+
 	[BZ #19209]
 	* math/bits/math-finite.h (ldexp): Remove declaration.
 	(ldexpf): Likewise.
diff --git a/NEWS b/NEWS
index 63ff0afbc1..901f92b4cc 100644
--- a/NEWS
+++ b/NEWS
@@ -22,7 +22,7 @@ Version 2.23
   19003, 19007, 19012, 19016, 19018, 19032, 19046, 19048, 19049, 19050,
   19059, 19071, 19074, 19076, 19077, 19078, 19079, 19085, 19086, 19088,
   19094, 19095, 19124, 19125, 19129, 19134, 19137, 19156, 19174, 19181,
-  19189, 19201, 19205, 19209.
+  19189, 19201, 19205, 19209, 19212.
 
 * A defect in the malloc implementation, present since glibc 2.15 (2012) or
   glibc 2.10 via --enable-experimental-malloc (2009), could result in the
diff --git a/include/features.h b/include/features.h
index bb8061073e..774afdd2fe 100644
--- a/include/features.h
+++ b/include/features.h
@@ -224,8 +224,9 @@
 # undef  _POSIX_C_SOURCE
 # define _POSIX_C_SOURCE	200809L
 #endif
-#if ((!defined __STRICT_ANSI__ || (_XOPEN_SOURCE - 0) >= 500) && \
-     !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE)
+#if ((!defined __STRICT_ANSI__					\
+      || (defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 500))	\
+     && !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE)
 # define _POSIX_SOURCE	1
 # if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 500
 #  define _POSIX_C_SOURCE	2
@@ -239,7 +240,9 @@
 # define __USE_POSIX_IMPLICITLY	1
 #endif
 
-#if defined _POSIX_SOURCE || _POSIX_C_SOURCE >= 1 || defined _XOPEN_SOURCE
+#if (defined _POSIX_SOURCE					\
+     || (defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 1)	\
+     || defined _XOPEN_SOURCE)
 # define __USE_POSIX	1
 #endif
 
@@ -247,15 +250,15 @@
 # define __USE_POSIX2	1
 #endif
 
-#if (_POSIX_C_SOURCE - 0) >= 199309L
+#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199309L
 # define __USE_POSIX199309	1
 #endif
 
-#if (_POSIX_C_SOURCE - 0) >= 199506L
+#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199506L
 # define __USE_POSIX199506	1
 #endif
 
-#if (_POSIX_C_SOURCE - 0) >= 200112L
+#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200112L
 # define __USE_XOPEN2K		1
 # undef __USE_ISOC95
 # define __USE_ISOC95		1
@@ -263,7 +266,7 @@
 # define __USE_ISOC99		1
 #endif
 
-#if (_POSIX_C_SOURCE - 0) >= 200809L
+#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200809L
 # define __USE_XOPEN2K8		1
 # undef  _ATFILE_SOURCE
 # define _ATFILE_SOURCE	1