ACK: [I/linux][PATCH] UBUNTU: SAUCE: arm: Fix instruction set selection for GCC 11

Dimitri John Ledkov dimitri.ledkov at canonical.com
Mon Aug 9 15:26:13 UTC 2021


Acked-by: Dimitri John Ledkov <dimitri.ledkov at canonical.com>

It would be nice to still open an LP bug task against gcc-11 to double
check with toolchain maintainer if that is expected behaviour change /
feature or a bug.

On Mon, Aug 9, 2021 at 4:23 PM Juerg Haefliger
<juerg.haefliger at canonical.com> wrote:
>
> BugLink: https://bugs.launchpad.net/bugs/1939308
>
> GCC 11 on ARM now complains like the following when trying to determine if
> an arch is supported. Presumably because it enforces the default option
> which (in our case) is '--with-float=hard'?
>   $ arm-linux-gnueabihf-gcc-11 -march=armv7-a -c -x c /dev/null
>   cc1: error: ‘-mfloat-abi=hard’: selected architecture lacks an FPU
>
> Due to that, the kernel build system selects the wrong compiler options
> which throws errros like this:
>   /tmp/ccrHfZPj.s: Assembler messages:
>   /tmp/ccrHfZPj.s:116: Error: selected processor does not support `dmb ish' in ARM mode
>   /tmp/ccrHfZPj.s:150: Error: selected processor does not support `isb ' in ARM mode
>   /tmp/ccrHfZPj.s:160: Error: selected processor does not support `mrrc p15,1,r4,r5,c14' in ARM mode
>   /tmp/ccrHfZPj.s:245: Error: selected processor does not support `dmb ish' in ARM mode
>   /tmp/ccrHfZPj.s:503: Error: selected processor does not support `dmb ish' in ARM mode
>   /tmp/ccrHfZPj.s:527: Error: selected processor does not support `dmb ish' in ARM mode
>   /tmp/ccrHfZPj.s:698: Error: selected processor does not support `dmb ish' in ARM mode
>   /tmp/ccrHfZPj.s:731: Error: selected processor does not support `isb ' in ARM mode
>
> Fix that by moving the option '-msoft-float' up before the
> 'arch-$(CONFIG_CPU_<foo>)' instruction selection macros.
>
> Signed-off-by: Juerg Haefliger <juergh at canonical.com>
> ---
>  arch/arm/Makefile | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm/Makefile b/arch/arm/Makefile
> index 415c3514573a..efa9518223b0 100644
> --- a/arch/arm/Makefile
> +++ b/arch/arm/Makefile
> @@ -56,6 +56,9 @@ endif
>  #
>  KBUILD_CFLAGS  += $(call cc-option,-fno-ipa-sra)
>
> +# Need -msoft-float for gcc 11 for the below instruction set selection
> +KBUILD_CFLAGS  += -msoft-float
> +
>  # This selects which instruction set is used.
>  # Note that GCC does not numerically define an architecture version
>  # macro, but instead defines a whole series of macros which makes
> @@ -125,7 +128,7 @@ AFLAGS_ISA  :=$(CFLAGS_ISA)
>  endif
>
>  # Need -Uarm for gcc < 3.x
> -KBUILD_CFLAGS  +=$(CFLAGS_ABI) $(CFLAGS_ISA) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
> +KBUILD_CFLAGS  +=$(CFLAGS_ABI) $(CFLAGS_ISA) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -Uarm
>  KBUILD_AFLAGS  +=$(CFLAGS_ABI) $(AFLAGS_ISA) $(arch-y) $(tune-y) -include asm/unified.h -msoft-float
>
>  CHECKFLAGS     += -D__arm__
> --
> 2.30.2
>
>
> --
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team



-- 
Regards,

Dimitri.



More information about the kernel-team mailing list