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  linux-cve-announce  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:   Sat, 6 Nov 2021 17:59:44 +0100
From:   Sebastian Reichel <sebastian.reichel@...labora.com>
To:     Arnd Bergmann <arnd@...nel.org>
Cc:     Russell King <linux@...linux.org.uk>,
        Arnd Bergmann <arnd@...db.de>,
        Antonio Terceiro <antonio.terceiro@...aro.org>,
        Naresh Kamboju <naresh.kamboju@...aro.org>,
        Sebastian Andrzej Siewior <sebastian@...akpoint.cc>,
        Matthias Klose <doko@...ian.org>, stable@...r.kernel.org,
        Masahiro Yamada <masahiroy@...nel.org>,
        Nathan Chancellor <nathan@...nel.org>,
        Nick Desaulniers <ndesaulniers@...gle.com>,
        linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] ARM: drop cc-option fallbacks for architecture selection

Hi,

On Mon, Oct 18, 2021 at 04:07:12PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@...db.de>
> 
> Naresh and Antonio ran into a build failure with latest Debian
> armhf compilers, with lots of output like
> 
>  tmp/ccY3nOAs.s:2215: Error: selected processor does not support `cpsid i' in ARM mode
> 
> As it turns out, $(cc-option) fails early here when the FPU is not
> selected before CPU architecture is selected, as the compiler
> option check runs before enabling -msoft-float, which causes
> a problem when testing a target architecture level without an FPU:
> 
> cc1: error: '-mfloat-abi=hard': selected architecture lacks an FPU
> 
> Passing e.g. -march=armv6k+fp in place of -march=armv6k would avoid this
> issue, but the fallback logic is already broken because all supported
> compilers (gcc-5 and higher) are much more recent than these options,
> and building with -march=armv5t as a fallback no longer works.
> 
> The best way forward that I see is to just remove all the checks, which
> also has the nice side-effect of slightly improving the startup time for
> 'make'.
> 
> The -mtune=marvell-f option was apparently never supported by any mainline
> compiler, and the custom Codesourcery gcc build that did support is
> now too old to build kernels, so just use -mtune=xscale unconditionally
> for those.
> 
> This should be safe to apply on all stable kernels, and will be required
> in order to keep building them with gcc-11 and higher.
> 
> Reported-by: Antonio Terceiro <antonio.terceiro@...aro.org>
> Reported-by: Naresh Kamboju <naresh.kamboju@...aro.org>
> Reported-by: Sebastian Andrzej Siewior <sebastian@...akpoint.cc>
> Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=996419
> Cc: Matthias Klose <doko@...ian.org>
> Cc: stable@...r.kernel.org
> Signed-off-by: Arnd Bergmann <arnd@...db.de>
> ---

Thanks, I ran into this issue after affected gcc release migrated to
Debian testing. The patch makes the kernel compile again:

Tested-by: Sebastian Reichel <sebastian.reichel@...labora.com>

Would be great if this could become part of 5.16-rc1, which is
usually used as base by subsystem maintainers.

Thanks,

-- Sebastian

>  arch/arm/Makefile | 22 +++++++++++-----------
>  1 file changed, 11 insertions(+), 11 deletions(-)
> 
> diff --git a/arch/arm/Makefile b/arch/arm/Makefile
> index 847c31e7c368..fa45837b8065 100644
> --- a/arch/arm/Makefile
> +++ b/arch/arm/Makefile
> @@ -60,15 +60,15 @@ KBUILD_CFLAGS	+= $(call cc-option,-fno-ipa-sra)
>  # Note that GCC does not numerically define an architecture version
>  # macro, but instead defines a whole series of macros which makes
>  # testing for a specific architecture or later rather impossible.
> -arch-$(CONFIG_CPU_32v7M)	=-D__LINUX_ARM_ARCH__=7 -march=armv7-m -Wa,-march=armv7-m
> -arch-$(CONFIG_CPU_32v7)		=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
> -arch-$(CONFIG_CPU_32v6)		=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6)
> +arch-$(CONFIG_CPU_32v7M)	=-D__LINUX_ARM_ARCH__=7 -march=armv7-m
> +arch-$(CONFIG_CPU_32v7)		=-D__LINUX_ARM_ARCH__=7 -march=armv7-a
> +arch-$(CONFIG_CPU_32v6)		=-D__LINUX_ARM_ARCH__=6 -march=armv6
>  # Only override the compiler option if ARMv6. The ARMv6K extensions are
>  # always available in ARMv7
>  ifeq ($(CONFIG_CPU_32v6),y)
> -arch-$(CONFIG_CPU_32v6K)	=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6k,-march=armv5t -Wa$(comma)-march=armv6k)
> +arch-$(CONFIG_CPU_32v6K)	=-D__LINUX_ARM_ARCH__=6 -march=armv6k
>  endif
> -arch-$(CONFIG_CPU_32v5)		=-D__LINUX_ARM_ARCH__=5 $(call cc-option,-march=armv5te,-march=armv4t)
> +arch-$(CONFIG_CPU_32v5)		=-D__LINUX_ARM_ARCH__=5 -march=armv5te
>  arch-$(CONFIG_CPU_32v4T)	=-D__LINUX_ARM_ARCH__=4 -march=armv4t
>  arch-$(CONFIG_CPU_32v4)		=-D__LINUX_ARM_ARCH__=4 -march=armv4
>  arch-$(CONFIG_CPU_32v3)		=-D__LINUX_ARM_ARCH__=3 -march=armv3m
> @@ -82,7 +82,7 @@ tune-$(CONFIG_CPU_ARM720T)	=-mtune=arm7tdmi
>  tune-$(CONFIG_CPU_ARM740T)	=-mtune=arm7tdmi
>  tune-$(CONFIG_CPU_ARM9TDMI)	=-mtune=arm9tdmi
>  tune-$(CONFIG_CPU_ARM940T)	=-mtune=arm9tdmi
> -tune-$(CONFIG_CPU_ARM946E)	=$(call cc-option,-mtune=arm9e,-mtune=arm9tdmi)
> +tune-$(CONFIG_CPU_ARM946E)	=-mtune=arm9e
>  tune-$(CONFIG_CPU_ARM920T)	=-mtune=arm9tdmi
>  tune-$(CONFIG_CPU_ARM922T)	=-mtune=arm9tdmi
>  tune-$(CONFIG_CPU_ARM925T)	=-mtune=arm9tdmi
> @@ -90,11 +90,11 @@ tune-$(CONFIG_CPU_ARM926T)	=-mtune=arm9tdmi
>  tune-$(CONFIG_CPU_FA526)	=-mtune=arm9tdmi
>  tune-$(CONFIG_CPU_SA110)	=-mtune=strongarm110
>  tune-$(CONFIG_CPU_SA1100)	=-mtune=strongarm1100
> -tune-$(CONFIG_CPU_XSCALE)	=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale
> -tune-$(CONFIG_CPU_XSC3)		=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale
> -tune-$(CONFIG_CPU_FEROCEON)	=$(call cc-option,-mtune=marvell-f,-mtune=xscale)
> -tune-$(CONFIG_CPU_V6)		=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm)
> -tune-$(CONFIG_CPU_V6K)		=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm)
> +tune-$(CONFIG_CPU_XSCALE)	=-mtune=xscale
> +tune-$(CONFIG_CPU_XSC3)		=-mtune=xscale
> +tune-$(CONFIG_CPU_FEROCEON)	=-mtune=xscale
> +tune-$(CONFIG_CPU_V6)		=-mtune=arm1136j-s
> +tune-$(CONFIG_CPU_V6K)		=-mtune=arm1136j-s
>  
>  # Evaluate tune cc-option calls now
>  tune-y := $(tune-y)
> -- 
> 2.29.2
> 

Download attachment "signature.asc" of type "application/pgp-signature" (834 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ