On Fri, Dec 25, 2020 at 10:30:43PM +0900, John Millikin wrote: > The syntax for POSIX regexes technically doesn't allow empty branches in > conditional match groups. GNU libc accepts them as equivalent to `()', > but other libc implementations (e.g. macOS libc) reject them with a > parse error. > > Changing to compliant syntax, `(|_sym)' to `(()|_sym)', lets the `relocs' > tool run successfully when using a non-GNU platform as a build host for > cross-compiling the kernel. > > Signed-off-by: John Millikin <j...@john-millikin.com> > --- > > Helper binary to verify behavior for the current platform: > > #include <regex.h> > #include <stdio.h> > int main(int argc, char **argv) { > regex_t compiled; > int err = regcomp(&compiled, argv[1], REG_EXTENDED|REG_NOSUB); > if (err != 0) { > char errbuf[128]; > regerror(err, &compiled, errbuf, sizeof(errbuf)); > printf("regcomp(\"%s\"): %s\n", argv[1], errbuf); > return 1; > } > printf("regcomp(\"%s\"): OK\n", argv[1]); > return 0; > } > > Output from GNU libc 2.28 and a fussier non-GNU libc: > > debian:~$ ./regcomp '^a(|b)$' > regcomp("^a(|b)$"): OK > debian:~$ ./regcomp '^a(()|b)$' > regcomp("^a(()|b)$"): OK > > darwin:~$ ./regcomp '^a(|b)$' > regcomp("^a(|b)$"): empty (sub)expression > darwin:~$ ./regcomp '^a(()|b)$' > regcomp("^a(()|b)$"): OK >
I guess you can add those to the commit message as they explain in detail what the situation is. > arch/x86/tools/relocs.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c > index ce7188cbdae5..e6f28616a625 100644 > --- a/arch/x86/tools/relocs.c > +++ b/arch/x86/tools/relocs.c > @@ -57,12 +57,12 @@ static const char * const sym_regex_kernel[S_NSYMTYPES] = > { > [S_REL] = $ test-apply.sh /tmp/build.01 checking file arch/x86/tools/relocs.c patch: **** malformed patch at line 67: [S_REL] = Don't tell me the apple mangles patches... :-) -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette