Without this patch, arm kernels will fail to build with gcc 11, which is the default in kali now.
100 lines
4.9 KiB
Diff
100 lines
4.9 KiB
Diff
From: Arnd Bergmann <arnd@arndb.de>
|
|
Date: Mon, 18 Oct 2021 16:07:12 +0200
|
|
Subject: ARM: drop cc-option fallbacks for architecture selection
|
|
Origin: https://lore.kernel.org/linux-arm-kernel/20211018140735.3714254-1-arnd@kernel.org/
|
|
|
|
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@linaro.org>
|
|
Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
|
|
Reported-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
|
|
Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=996419
|
|
Cc: Matthias Klose <doko@debian.org>
|
|
Cc: stable@vger.kernel.org
|
|
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
|
|
---
|
|
arch/arm/Makefile | 22 +++++++++++-----------
|
|
1 file changed, 11 insertions(+), 11 deletions(-)
|
|
|
|
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
|
|
index 1c540157e283..c4e3cfee9303 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.33.1
|
|
|