Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Move __STDC_* predefined macros from features.h to stdc-predef.h.
  • Loading branch information
Joseph Myers committed Feb 22, 2012
1 parent ef0aab3 commit ff3b3d8
Show file tree
Hide file tree
Showing 6 changed files with 58 additions and 19 deletions.
13 changes: 6 additions & 7 deletions CONFORMANCE
Expand Up @@ -134,13 +134,12 @@ Compiler limitations
==================== ====================


The macros __STDC_IEC_559__, __STDC_IEC_559_COMPLEX__ and The macros __STDC_IEC_559__, __STDC_IEC_559_COMPLEX__ and
__STDC_ISO_10646__ are properly supposed to be defined by the __STDC_ISO_10646__ are properly supposed to be constant throughout the
compiler, and to be constant throughout the translation unit (before translation unit (before and after any library headers are included).
and after any library headers are included). However, they mainly However, they mainly relate to library features, and GCC only knows to
relate to library features, and the necessary magic has yet to be preinclude <stdc-predef.h> to get their definitions in version 4.8 and
implemented for GCC to predefine them to the correct values for the later. Programs that test them before including any standard headers
library in use, so glibc defines them in <features.h>. Programs that may misbehave with older compilers.
test them before including any standard headers may misbehave.


GCC doesn't support the optional imaginary types. Nor does it GCC doesn't support the optional imaginary types. Nor does it
understand the keyword _Complex before GCC 3.0. This has the understand the keyword _Complex before GCC 3.0. This has the
Expand Down
8 changes: 8 additions & 0 deletions ChangeLog
@@ -1,3 +1,11 @@
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> 2012-02-22 Joseph Myers <joseph@codesourcery.com>


* manual/libc.texinfo (VERSION, UPDATED): Revert. * manual/libc.texinfo (VERSION, UPDATED): Revert.
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Expand Up @@ -60,7 +60,7 @@ endif # $(AUTOCONF) = no
$(addprefix install-, no-libc.a bin lib data headers others) $(addprefix install-, no-libc.a bin lib data headers others)


headers := limits.h values.h features.h gnu-versions.h bits/libc-lock.h \ 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 echo-headers: subdir_echo-headers


Expand Down
6 changes: 3 additions & 3 deletions NEWS
Expand Up @@ -10,9 +10,9 @@ Version 2.16
* The following bugs are resolved with this release: * The following bugs are resolved with this release:


174, 350, 411, 3335, 4026, 4596, 4822, 5077, 5805, 5993, 6884, 6907, 9739, 174, 350, 411, 3335, 4026, 4596, 4822, 5077, 5805, 5993, 6884, 6907, 9739,
9902, 10140, 10210, 11174, 11322, 11494, 12047, 13058, 13525, 13526, 9902, 10110, 10140, 10210, 11174, 11322, 11494, 12047, 13058, 13525,
13527, 13528, 13529, 13530, 13531, 13532, 13533, 13547, 13551, 13552, 13526, 13527, 13528, 13529, 13530, 13531, 13532, 13533, 13547, 13551,
13553, 13555, 13559, 13583, 13618, 13695, 13704 13552, 13553, 13555, 13559, 13583, 13618, 13695, 13704


* ISO C11 support: * ISO C11 support:


Expand Down
12 changes: 4 additions & 8 deletions include/features.h
@@ -1,5 +1,4 @@
/* Copyright (C) 1991-1993,1995-2007,2009,2010,2011 /* Copyright (C) 1991-2012 Free Software Foundation, Inc.
Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
Expand Down Expand Up @@ -337,12 +336,9 @@
# define __USE_FORTIFY_LEVEL 0 # define __USE_FORTIFY_LEVEL 0
#endif #endif


/* We do support the IEC 559 math functionality, real and complex. */ /* Get definitions of __STDC_* predefined macros, if the compiler has
#define __STDC_IEC_559__ 1 not preincluded this header automatically. */
#define __STDC_IEC_559_COMPLEX__ 1 #include <stdc-predef.h>

/* wchar_t uses ISO 10646-1 (2nd ed., published 2000-09-15) / Unicode 3.1. */
#define __STDC_ISO_10646__ 200009L


/* This macro indicates that the installed library is the GNU C Library. /* 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 For historic reasons the value now is 6 and this will stay from now
Expand Down
36 changes: 36 additions & 0 deletions 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

0 comments on commit ff3b3d8

Please sign in to comment.