summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2012-02-22 12:53:04 +0000
committerJoseph Myers <joseph@codesourcery.com>2012-02-22 12:53:04 +0000
commitff3b3d82781300d48abec8a4a1600e7486663705 (patch)
treeb78f4d2ef348be8c78f1325bfc045058b2c7600c
parentef0aab352c3ac1b0670211dac93c0802b2ef046d (diff)
downloadglibc-ff3b3d82781300d48abec8a4a1600e7486663705.tar.gz
glibc-ff3b3d82781300d48abec8a4a1600e7486663705.tar.xz
glibc-ff3b3d82781300d48abec8a4a1600e7486663705.zip
Move __STDC_* predefined macros from features.h to stdc-predef.h.
-rw-r--r--CONFORMANCE13
-rw-r--r--ChangeLog8
-rw-r--r--Makefile2
-rw-r--r--NEWS6
-rw-r--r--include/features.h12
-rw-r--r--include/stdc-predef.h36
6 files changed, 58 insertions, 19 deletions
diff --git a/CONFORMANCE b/CONFORMANCE
index 8275aba26c..b23318ee9d 100644
--- a/CONFORMANCE
+++ b/CONFORMANCE
@@ -134,13 +134,12 @@ Compiler limitations
 ====================
 
 The macros __STDC_IEC_559__, __STDC_IEC_559_COMPLEX__ and
-__STDC_ISO_10646__ are properly supposed to be defined by the
-compiler, and to be constant throughout the translation unit (before
-and after any library headers are included).  However, they mainly
-relate to library features, and the necessary magic has yet to be
-implemented for GCC to predefine them to the correct values for the
-library in use, so glibc defines them in <features.h>.  Programs that
-test them before including any standard headers may misbehave.
+__STDC_ISO_10646__ are properly supposed to be constant throughout the
+translation unit (before and after any library headers are included).
+However, they mainly relate to library features, and GCC only knows to
+preinclude <stdc-predef.h> to get their definitions in version 4.8 and
+later.  Programs that test them before including any standard headers
+may misbehave with older compilers.
 
 GCC doesn't support the optional imaginary types.  Nor does it
 understand the keyword _Complex before GCC 3.0.  This has the
diff --git a/ChangeLog b/ChangeLog
index 80e95d11a1..e1f95328e7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2012-02-22  Joseph Myers  <joseph@codesourcery.com>
 
+	[BZ #10110]
+	* include/stdc-predef.h: New file.  Extracted from features.h.
+	* include/features.h: Include stdc-predef.h.
+	* Makefile (headers): Add stdc-predef.h.
+	* CONFORMANCE (Compiler limitations): Update.
+
+2012-02-22  Joseph Myers  <joseph@codesourcery.com>
+
 	* manual/libc.texinfo (VERSION, UPDATED): Revert.
 
 2012-02-21  David S. Miller  <davem@davemloft.net>
diff --git a/Makefile b/Makefile
index d1fa347882..10a2cce4ea 100644
--- a/Makefile
+++ b/Makefile
@@ -60,7 +60,7 @@ endif # $(AUTOCONF) = no
 		   $(addprefix install-, no-libc.a bin lib data headers others)
 
 headers := limits.h values.h features.h gnu-versions.h bits/libc-lock.h \
-	   bits/xopen_lim.h gnu/libc-version.h
+	   bits/xopen_lim.h gnu/libc-version.h stdc-predef.h
 
 echo-headers: subdir_echo-headers
 
diff --git a/NEWS b/NEWS
index 429f76873b..b210474c3e 100644
--- a/NEWS
+++ b/NEWS
@@ -10,9 +10,9 @@ Version 2.16
 * The following bugs are resolved with this release:
 
   174, 350, 411, 3335, 4026, 4596, 4822, 5077, 5805, 5993, 6884, 6907, 9739,
-  9902, 10140, 10210, 11174, 11322, 11494, 12047, 13058, 13525, 13526,
-  13527, 13528, 13529, 13530, 13531, 13532, 13533, 13547, 13551, 13552,
-  13553, 13555, 13559, 13583, 13618, 13695, 13704
+  9902, 10110, 10140, 10210, 11174, 11322, 11494, 12047, 13058, 13525,
+  13526, 13527, 13528, 13529, 13530, 13531, 13532, 13533, 13547, 13551,
+  13552, 13553, 13555, 13559, 13583, 13618, 13695, 13704
 
 * ISO C11 support:
 
diff --git a/include/features.h b/include/features.h
index 6038ecc78d..c347555ead 100644
--- a/include/features.h
+++ b/include/features.h
@@ -1,5 +1,4 @@
-/* Copyright (C) 1991-1993,1995-2007,2009,2010,2011
-   Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 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
@@ -337,12 +336,9 @@
 # define __USE_FORTIFY_LEVEL 0
 #endif
 
-/* We do support the IEC 559 math functionality, real and complex.  */
-#define __STDC_IEC_559__		1
-#define __STDC_IEC_559_COMPLEX__	1
-
-/* wchar_t uses ISO 10646-1 (2nd ed., published 2000-09-15) / Unicode 3.1.  */
-#define __STDC_ISO_10646__		200009L
+/* Get definitions of __STDC_* predefined macros, if the compiler has
+   not preincluded this header automatically.  */
+#include <stdc-predef.h>
 
 /* This macro indicates that the installed library is the GNU C Library.
    For historic reasons the value now is 6 and this will stay from now
diff --git a/include/stdc-predef.h b/include/stdc-predef.h
new file mode 100644
index 0000000000..ef10c1672e
--- /dev/null
+++ b/include/stdc-predef.h
@@ -0,0 +1,36 @@
+/* Copyright (C) 1991-2012 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	_STDC_PREDEF_H
+#define	_STDC_PREDEF_H	1
+
+/* This header is separate from features.h so that the compiler can
+   include it implicitly at the start of every compilation.  It must
+   not itself include <features.h> or any other header that includes
+   <features.h> because the implicit include comes before any feature
+   test macros that may be defined in a source file before it first
+   explicitly includes a system header.  GCC knows the name of this
+   header in order to preinclude it.  */
+
+/* We do support the IEC 559 math functionality, real and complex.  */
+#define __STDC_IEC_559__		1
+#define __STDC_IEC_559_COMPLEX__	1
+
+/* wchar_t uses ISO 10646-1 (2nd ed., published 2000-09-15) / Unicode 3.1.  */
+#define __STDC_ISO_10646__		200009L
+
+#endif