Re: [PATCH] parisc: suppress error messages for 'make clean'

From: Masahiro Yamada
Date: Sat May 09 2020 - 21:21:13 EST


Hi Helge,

On Sun, May 10, 2020 at 2:39 AM Helge Deller <deller@xxxxxx> wrote:
>
> * Masahiro Yamada <masahiroy@xxxxxxxxxx>:
> > Hi Helge,
> >
> > On Sat, May 9, 2020 at 6:46 AM Helge Deller <deller@xxxxxx> wrote:
> > >
> > > * Masahiro Yamada <masahiroy@xxxxxxxxxx>:
> > > > On Sat, Apr 25, 2020 at 2:47 PM Masahiro Yamada <masahiroy@xxxxxxxxxx> wrote:
> > > > >
> > > > > 'make ARCH=parisc clean' emits a tons of error messages as follows:
> > > > >
> > > > > $ make ARCH=parisc clean
> > > > > gcc: error: unrecognized command line option '-mno-space-regs'
> > > > > gcc: error: unrecognized command line option '-mfast-indirect-calls'; did you mean '-mforce-indirect-call'?
> > > > > gcc: error: unrecognized command line option '-mdisable-fpregs'
> > > > > gcc: error: missing argument to '-Wframe-larger-than='
> > > > > gcc: error: unrecognized command line option '-mno-space-regs'
> > > > > gcc: error: unrecognized command line option '-mfast-indirect-calls'; did you mean '-mforce-indirect-call'?
> > > > > gcc: error: unrecognized command line option '-mdisable-fpregs'
> > > > > gcc: error: missing argument to '-Wframe-larger-than='
> > > > > ...
> > > > >
> > > > > You can supporess them except '-Wframe-larger-than' by setting correct
> > > > > CROSS_COMPILE=, but we should not require any compiler for cleaning.
> > > > >
> > > > > This $(shell ...) is evaluated so many times because LIBGCC is exported.
> > > > > Use the ':=' operator to evaluate it just once, and sink the stderr.
> > > > >
> > > >
> > > > Applied to linux-kbuild.
> > >
> > > That patch breaks then building the boot loader/compressor:
> > > ...
> > > hppa-linux-gnu-ld -X -e startup --as-needed -T arch/parisc/boot/compressed/vmlinux.lds arch/parisc/boot/compressed/head.o arch/parisc/boot/compressed/real2.o arch/parisc/boot/compressed/firmware.o arch/parisc/boot/compressed/misc.o arch/parisc/boot/compressed/piggy.o -o arch/parisc/boot/compressed/vmlinux
> > > hppa-linux-gnu-ld: arch/parisc/boot/compressed/misc.o: in function `dec_vli':
> > > (.text+0x104): undefined reference to `__ashldi3'
> > > hppa-linux-gnu-ld: arch/parisc/boot/compressed/misc.o: in function `lzma_len':
> > > (.text+0x2b0): undefined reference to `$$mulI'
> > > hppa-linux-gnu-ld: (.text+0x344): undefined reference to `$$mulI'
> > > hppa-linux-gnu-ld: (.text+0x3f8): undefined reference to `$$mulI'
> > >
> > >
> > > The patch below works, but I wonder if it's possible to avoid
> > > to examine LIBGCC twice....?
> > >
> > > Helge
> >
> >
> > Sorry for the breakage.
> >
> > How about moving LIBGCC below ?
>
> Good idea.
> The patch below does work for me.
> We do not need $KBUILD_CFLAGS to get the libgcc.a filename,


I not not sure about this change.


Generally speaking, the path to libgcc.a is affected
by compiler flags, especially, bit size flags,
endian flags, etc.


For example, my distro gcc is biarch for i386/x86_64.

$ gcc -print-libgcc-file-name
/usr/lib/gcc/x86_64-linux-gnu/9/libgcc.a
$ gcc -m64 -print-libgcc-file-name
/usr/lib/gcc/x86_64-linux-gnu/9/libgcc.a
$ gcc -m32 -print-libgcc-file-name
/usr/lib/gcc/x86_64-linux-gnu/9/32/libgcc.a




One real example in Linux is arch/arc/Makefile.
ARC supports both big endian and little endian.

If you drop cflags-y from line 59
of arch/arc/Makefile, vmlinux fails to link
due to endian mismatch.


I am not familiar with parisc.
Also, as it turned out,
this change is not so trivial.

I think the best approach is to leave this up to you
since you are the parisc maintainer.

I will drop this patch from my kbuild tree,
then you will apply what you think is best
to your tree.

What do you think?




> so we do not need to pipe the output to /dev/null either.
> Can you try if that works, and if yes, can you apply it?
>
> Helge
>
>
> diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile
> index 628cd8bb7ad8..fadbbd010337 100644
> --- a/arch/parisc/Makefile
> +++ b/arch/parisc/Makefile
> @@ -21,8 +21,6 @@ KBUILD_IMAGE := vmlinuz
>
> NM = sh $(srctree)/arch/parisc/nm
> CHECKFLAGS += -D__hppa__=1
> -LIBGCC = $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name)
> -export LIBGCC
>
> ifdef CONFIG_64BIT
> UTS_MACHINE := parisc64
> @@ -110,6 +108,8 @@ cflags-$(CONFIG_PA8X00) += -march=2.0 -mschedule=8000
> head-y := arch/parisc/kernel/head.o
>
> KBUILD_CFLAGS += $(cflags-y)
> +LIBGCC := $(shell $(CC) -print-libgcc-file-name)
> +export LIBGCC
>
> kernel-y := mm/ kernel/ math-emu/
>


--
Best Regards
Masahiro Yamada