From: "H. Nikolaus Schaller" <hns@goldelico.com>
To: Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
x86@kernel.org, Jessica Yu <jeyu@kernel.org>,
Miroslav Benes <mbenes@suse.cz>,
Emil Velikov <emil.l.velikov@gmail.com>,
Nick Desaulniers <ndesaulniers@google.com>
Cc: letux-kernel@openphoenux.org, "H. Peter Anvin" <hpa@zytor.com>,
linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org,
kernel@pyra-handheld.com,
"H. Nikolaus Schaller" <hns@goldelico.com>
Subject: [PATCH 0/2] Regex fixes for mips and x86 cross-compile
Date: Thu, 8 Jul 2021 10:57:08 +0200 [thread overview]
Message-ID: <cover.1625734629.git.hns@goldelico.com> (raw)
Trying to run the x86 relocs tool on a BSD based HOSTCC (cross
compilation environment) leads to errors like
VOFFSET arch/x86/boot/compressed/../voffset.h - due to: vmlinux
CC arch/x86/boot/compressed/misc.o - due to: arch/x86/boot/compressed/../voffset.h
OBJCOPY arch/x86/boot/compressed/vmlinux.bin - due to: vmlinux
RELOCS arch/x86/boot/compressed/vmlinux.relocs - due to: vmlinux
empty (sub)expressionarch/x86/boot/compressed/Makefile:118: recipe for target 'arch/x86/boot/compressed/vmlinux.relocs' failed
make[3]: *** [arch/x86/boot/compressed/vmlinux.relocs] Error 1
and when cross compiling a MIPS kernel on a BSD based HOSTCC
we get errors like
SYNC include/config/auto.conf.cmd - due to: .config
egrep: empty (sub)expression
UPD include/config/kernel.release
HOSTCC scripts/dtc/dtc.o - due to target missing
It turns out that relocs.c on x86 uses patterns like
"something(|_end)"
while MIPS uses egrep with
(|MINOR_|PATCHLEVEL_)
In both cases it is not valid syntax or gives undefined results
according to POSIX 9.5.3 ERE Grammar
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html
It seems to be silently accepted by the Linux regcmp() or egrep
implementation while a BSD host complains.
Such patterns can be replaced by a transformation like
"(|p1|p2)" -> "(p1|p2)?"
Test Linux:
root@letux:~# echo foo | egrep '^(|foo)$'
foo
root@letux:~# echo fool | egrep '^(foo)?$'
root@letux:~# echo fun | egrep '^(|foo)$'
root@letux:~# echo f | egrep '^(|foo)$'
root@letux:~# echo | egrep '^(|foo)$'
root@letux:~# echo foo | egrep '^(foo)?$'
foo
root@letux:~# echo fool | egrep '^(foo)?$'
root@letux:~# echo fun | egrep '^(foo)?$'
root@letux:~# echo f | egrep '^(foo)?$'
root@letux:~# echo | egrep '^(foo)?$'
root@letux:~#
Test BSD:
iMac:master hns$ echo foo | egrep '^(|foo)$'
egrep: empty (sub)expression
iMac:master hns$ echo fool | egrep '^(foo)?$'
egrep: empty (sub)expression
iMac:master hns$ echo fun | egrep '^(|foo)$'
egrep: empty (sub)expression
iMac:master hns$ echo f | egrep '^(|foo)$'
egrep: empty (sub)expression
iMac:master hns$ echo | egrep '^(|foo)$'
egrep: empty (sub)expression
iMac:master hns$ echo foo | egrep '^(foo)?$'
foo
iMac:master hns$ echo fool | egrep '^(foo)?$'
iMac:master hns$ echo fun | egrep '^(foo)?$'
iMac:master hns$ echo f | egrep '^(foo)?$'
iMac:master hns$ echo | egrep '^(foo)?$'
iMac:master hns$
H. Nikolaus Schaller (2):
x86/tools/relocs: Fix non-POSIX regexp
arch: mips: Fix non-POSIX regexp
arch/mips/Makefile | 2 +-
arch/x86/tools/relocs.c | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
--
2.31.1
next reply other threads:[~2021-07-08 9:03 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-08 8:57 H. Nikolaus Schaller [this message]
2021-07-08 8:57 ` [PATCH 1/2] x86/tools/relocs: Fix non-POSIX regexp H. Nikolaus Schaller
2021-08-05 11:52 ` Masahiro Yamada
2021-07-08 8:57 ` [PATCH 2/2] arch: mips: " H. Nikolaus Schaller
2021-08-05 11:53 ` Masahiro Yamada
2021-07-19 19:04 ` [PATCH 0/2] Regex fixes for mips and x86 cross-compile H. Nikolaus Schaller
2021-07-19 20:37 ` Nick Desaulniers
2021-08-03 15:58 ` H. Nikolaus Schaller
2021-08-05 11:54 ` Masahiro Yamada
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1625734629.git.hns@goldelico.com \
--to=hns@goldelico.com \
--cc=bp@alien8.de \
--cc=emil.l.velikov@gmail.com \
--cc=hpa@zytor.com \
--cc=jeyu@kernel.org \
--cc=kernel@pyra-handheld.com \
--cc=letux-kernel@openphoenux.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=mbenes@suse.cz \
--cc=mingo@redhat.com \
--cc=ndesaulniers@google.com \
--cc=tglx@linutronix.de \
--cc=tsbogend@alpha.franken.de \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.