This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Support __STDC_WANT_LIB_EXT2__ feature test macro
- From: Carlos O'Donell <carlos at redhat dot com>
- To: Joseph Myers <joseph at codesourcery dot com>, libc-alpha at sourceware dot org
- Date: Fri, 10 Jun 2016 10:39:27 -0400
- Subject: Re: Support __STDC_WANT_LIB_EXT2__ feature test macro
- Authentication-results: sourceware.org; auth=none
- References: <alpine dot DEB dot 2 dot 20 dot 1606092257500 dot 31478 at digraph dot polyomino dot org dot uk>
On 06/09/2016 07:00 PM, Joseph Myers wrote:
> This patch implements support for the __STDC_WANT_LIB_EXT2__ feature
> test macro from ISO/IEC TR 24731-2:2010, thereby implementing one
> possible approach for supporting ISO C feature test macros.
>
> Recall that, as described in
> <https://sourceware.org/ml/libc-alpha/2016-05/msg00486.html>, these
> macros work based on the definition when affected headers are
> included, so cannot be handled once when the first system header is
> included because that might not be one of the headers the particular
> macro in question affects.
> <https://sourceware.org/ml/libc-alpha/2016-05/msg00680.html> expresses
> views on possible approaches for implementation and
> <https://sourceware.org/ml/libc-alpha/2016-06/msg00039.html> follows
> up on that.
>
> This patch arranges things so that the relevant condition is
> __GLIBC_USE (LIB_EXT2), following one of the suggestions given.
> Headers using these macros include <bits/libc-header-start.h>, which
> in turn includes <features.h>. Headers must define
> __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION before including
> <bits/libc-header-start.h>, to discourage inclusion outside glibc as
> requested. __USE_GNU conditions on affected functions are changed to
> __GLIBC_USE (LIB_EXT2), while it's added as an additional alternative
> on the conditions for functions already enabled for some POSIX
> versions.
>
> It would be possible to convert existing __USE_* conditionals to
> __GLIBC_USE (with the relevant __GLIBC_USE_* being defined in
> <features.h> where __USE_* are presently defined), and so make them
> typo-proof (given -Wundef -Werror in glibc builds) because __GLIBC_USE
> is used with #if not #ifdef / #if defined.
>
> No attempt is made to enforce the rule about diagnosing different
> definitions of __STDC_WANT_LIB_EXT2__ when affected headers are
> included; such a diagnostic is incompatible with multiple-include
> guards on the affected headers, unless compiler extensions are added
> to support it.
>
> As previously noted, glibc does not implement all features from TR
> 24731-2:2010: the functions aswprintf vaswprintf getwdelim getwline
> are not in glibc, although they would be appropriate to add if someone
> wished to do so. But I think it makes sense to support the feature
> test macro if *any* of the controlled features are present in glibc.
>
> Tested for x86_64 and x86 (testsuite, and that installed stripped
> shared libraries are unchanged by the patch).
This looks good to me. I like the direction these changes are going in.
--
Cheers,
Carlos.