[PATCH] ARM: fix GCC 11.x build failures for ARMv7

Ian Abbott abbotti at mev.co.uk
Fri Apr 8 10:01:54 PDT 2022


Building barebox for ARMv7 with GCC 11.x results in errors similar to
the following:

  CC      common/state/state_variables.o
{standard input}: Assembler messages:
{standard input}:1535: Error: selected processor does not support `rev r3,r3' in Thumb mode
{standard input}:1576: Error: selected processor does not support `rev r3,r3' in Thumb mode

Or:

  CC      common/state/state_variables.o
{standard input}: Assembler messages:
{standard input}:1405: Error: selected processor does not support `rev r3,r3' in ARM mode
{standard input}:1453: Error: selected processor does not support `rev r3,r3' in ARM mode

The problem is that the compiler option `-march=armv7-a` is not being
chosen by "arch/arm/Makefile", but rather the fallback options
`-march=armv5t -Wa,-march=armv7-a` are being chosen.

Appending `-msoft-float` to `KBUILD_CPPFLAGS` earlier in
"arch/arm/Makefile" before the tests for supported `-march` options
seems to fix the problem.

Signed-off-by: Ian Abbott <abbotti at mev.co.uk>
---
 arch/arm/Makefile | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 610ded8a12..124a3fc40c 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -8,6 +8,7 @@ ifeq ($(CONFIG_CPU_V8),y)
 KBUILD_CPPFLAGS	+=$(call cc-option,-maarch64,)
 else
 KBUILD_CPPFLAGS	+=$(call cc-option,-marm,)
+KBUILD_CPPFLAGS	+= -msoft-float
 endif
 
 ifeq ($(CONFIG_CPU_BIG_ENDIAN),y)
@@ -78,7 +79,7 @@ KBUILD_CPPFLAGS += $(CFLAGS_ABI) $(arch-y) $(tune-y)
 KBUILD_AFLAGS   += -include asm/unified.h
 export S64 = _64
 else
-KBUILD_CPPFLAGS += $(CFLAGS_ABI) $(arch-y) $(tune-y) -msoft-float $(CFLAGS_THUMB2)
+KBUILD_CPPFLAGS += $(CFLAGS_ABI) $(arch-y) $(tune-y) $(CFLAGS_THUMB2)
 KBUILD_AFLAGS   += -include asm/unified.h -msoft-float $(AFLAGS_THUMB2)
 endif
 
-- 
2.35.1




More information about the barebox mailing list