This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
This pair of patches, to GCC and glibc, together fix the issue that the predefined macros __STDC_IEC_559__, __STDC_IEC_559_COMPLEX__ and __STDC_ISO_10646__ should be constant throughout the translation unit, rather than being undefined before any system headers are included and defined only after a system header has been included. This is an area where the compiler and library need to cooperate the implement the correct semantics for the implementation as a whole; it's not suitable for GCC to hardcode the definitions of the macros because they may depend on the library version (especially __STDC_ISO_10646__). The approach chosen is one I've previously mentioned: glibc provides a header <stdc-predef.h>, split out of <features.h>, with just these definitions, and GCC preincludes this header if it exists, while silently ignoring its nonexistence so it continues to work with older glibc; glibc includes the header from <features.h> so the macros will still be defined after the first system header inclusion when building with an older GCC. The glibc patch updates the CONFORMANCE file regarding this and other issues mentioned therein. I strongly suspect that the value of __STDC_ISO_10646__ in glibc is out of date (the comment says Unicode 3.1 and the value is 200009L, but there have been subsequent changes updating glibc to Unicode 5). Updating this (in features.h before this patch or stdc-predef.h after it) is clearly independent of this patch. This header could also be used to implement something like the predefined macros proposed in N1348 <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1348.htm> (I wasn't at the Markham meeting so don't know what the WG14 reaction to that was), where macros would be defined to say what standard headers are available, and would allow the decimal floating-point work to address the issue of not defining __STDC_DEC_FP__ (the DFP library would provide its own version of stdc-predef.h that defines that macro). The patches can be used independently in that new GCC will work with old glibc and old GCC will work with new glibc, but the GCC patch is useless without the glibc patch and GCC needs to know the name of the header in glibc and the GCC testcase needs to know the version in which the header was added, so I don't propose to commit the GCC patch without some form of the glibc patch being committed first. If the patches go in I'll update c99status.html accordingly as a followup. (The GCC patch has been bootstrapped with no regressions on i686-pc-linux-gnu and I've also verified that glibc builds and passes its tests with the glibc patch applied.) -- Joseph S. Myers joseph@codesourcery.com
Attachment:
c99-preinc-gcc
Description: Text document
Attachment:
c99-preinc-glibc
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |