[PATCH 1/5] posix: Sync regex code with gnulib

Paul Eggert eggert@cs.ucla.edu
Wed Jan 20 02:55:51 GMT 2021


On 1/19/21 7:43 AM, Bruno Haible wrote:
> Adhemerval Zanella wrote:
>> -# if (__GNUC__ >= 7) || (__clang_major__ >= 10)
>> +# if (__GNUC__ >= 7) || (defined __clang_major__ &&__clang_major__ >= 10)
> I would write it as:
> 
> +# if (__GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)

This line should be used only if _LIBC is defined, so we can simplify it 
to just "#if __GNUC__ >= 7" and thus not worry about Clang.

I see that Gnulib wasn't consistent about this, so I installed the 
attached patch to Gnulib to fix the issue here and elsewhere. The idea 
is that the Gnulib regex_internal.h can be copied back to glibc, and 
that the other uses in Gnulib should be similar.

On 1/19/21 6:43 AM, Adhemerval Zanella wrote:

> Paul, this seemed to a common pattern scatter on multiple file in gnulib.
> Wouldn't be better to consolidate it on cdefs.h?

We could append something like the following to cdefs.h, and switch to 
__attribute_fallthrough__ for modules shared between the two systems. Is 
that something you'd like to pursue? (We should also sync Gnulib cdefs.h 
back to glibc of course.)

#if defined __STDC_VERSION__ && 201710L < __STDC_VERSION__
# define __attribute_fallthrough__ [[__fallthrough__]]
#elif __GNUC_PREREQ (7, 0) || __glibc_has_attribute (__fallthrough__)
# define __attribute_fallthrough__ __attribute__ ((__fallthrough__))
#else
# define __attribute_fallthrough__ ((void) 0)
#endif
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-fnmatch-regex-fts-FALLTHROUGH-consistency.patch
Type: text/x-patch
Size: 3678 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/libc-alpha/attachments/20210119/366717e6/attachment.bin>


More information about the Libc-alpha mailing list