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 . 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 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,3 +1,11 @@ +2012-02-22 Joseph Myers + + [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 * manual/libc.texinfo (VERSION, UPDATED): Revert. 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 /* 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 + . */ + +#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 or any other header that includes + 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