Message ID | f1be72eb0fd589df5a535792a3f21949bd46da50.1625734629.git.hns@goldelico.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | Regex fixes for mips and x86 cross-compile | expand |
On Thu, Jul 8, 2021 at 5:57 PM H. Nikolaus Schaller <hns@goldelico.com> wrote: > > When cross compiling a MIPS kernel on a BSD based HOSTCC leads > to 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 egrep uses this egrep pattern: > > (|MINOR_|PATCHLEVEL_) > > This 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 egrep implementation > while a BSD host complains. > > Such patterns can be replaced by a transformation like > > "(|p1|p2)" -> "(p1|p2)?" > > Fixes: 48c35b2d245f ("[MIPS] There is no __GNUC_MAJOR__") > Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com> > --- Applied to linux-kbuild/fixes. Thanks. > arch/mips/Makefile | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/mips/Makefile b/arch/mips/Makefile > index 258234c35a096..674f68d16a73f 100644 > --- a/arch/mips/Makefile > +++ b/arch/mips/Makefile > @@ -321,7 +321,7 @@ KBUILD_LDFLAGS += -m $(ld-emul) > > ifdef CONFIG_MIPS > CHECKFLAGS += $(shell $(CC) $(KBUILD_CFLAGS) -dM -E -x c /dev/null | \ > - egrep -vw '__GNUC_(|MINOR_|PATCHLEVEL_)_' | \ > + egrep -vw '__GNUC_(MINOR_|PATCHLEVEL_)?_' | \ > sed -e "s/^\#define /-D'/" -e "s/ /'='/" -e "s/$$/'/" -e 's/\$$/&&/g') > endif > > -- > 2.31.1 >
diff --git a/arch/mips/Makefile b/arch/mips/Makefile index 258234c35a096..674f68d16a73f 100644 --- a/arch/mips/Makefile +++ b/arch/mips/Makefile @@ -321,7 +321,7 @@ KBUILD_LDFLAGS += -m $(ld-emul) ifdef CONFIG_MIPS CHECKFLAGS += $(shell $(CC) $(KBUILD_CFLAGS) -dM -E -x c /dev/null | \ - egrep -vw '__GNUC_(|MINOR_|PATCHLEVEL_)_' | \ + egrep -vw '__GNUC_(MINOR_|PATCHLEVEL_)?_' | \ sed -e "s/^\#define /-D'/" -e "s/ /'='/" -e "s/$$/'/" -e 's/\$$/&&/g') endif
When cross compiling a MIPS kernel on a BSD based HOSTCC leads to 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 egrep uses this egrep pattern: (|MINOR_|PATCHLEVEL_) This 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 egrep implementation while a BSD host complains. Such patterns can be replaced by a transformation like "(|p1|p2)" -> "(p1|p2)?" Fixes: 48c35b2d245f ("[MIPS] There is no __GNUC_MAJOR__") Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com> --- arch/mips/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)