This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc 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]

Re: Support __STDC_WANT_LIB_EXT2__ feature test macro


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]