lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Sun, 10 May 2020 10:19:53 +0900
From:   Masahiro Yamada <masahiroy@...nel.org>
To:     Helge Deller <deller@....de>
Cc:     "James E . J . Bottomley" <James.Bottomley@...senpartnership.com>,
        linux-parisc@...r.kernel.org,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] parisc: suppress error messages for 'make clean'

Hi Helge,

On Sun, May 10, 2020 at 2:39 AM Helge Deller <deller@....de> wrote:
>
> * Masahiro Yamada <masahiroy@...nel.org>:
> > Hi Helge,
> >
> > On Sat, May 9, 2020 at 6:46 AM Helge Deller <deller@....de> wrote:
> > >
> > > * Masahiro Yamada <masahiroy@...nel.org>:
> > > > On Sat, Apr 25, 2020 at 2:47 PM Masahiro Yamada <masahiroy@...nel.org> 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

Powered by blists - more mailing lists