Skip to content

Commit 51a82d5

Browse files
W-M-Rxiaoxiang781216
authored andcommitted
arm/clang: Fix crash caused by clang compiling with -mfpu=fpv5-d16 and -march=armv8.1-m.main+mve.fp+fp.dp
The above combination of compilation causes the compiler to crash: #1 0x0000000001fbe154 llvm::sys::CleanupOnSignal(unsigned long) (clang18/bin/clang-19+0x1fbe154) #2 0x0000000001f21203 llvm::CrashRecoveryContext::HandleExit(int) (clang18/bin/clang-19+0x1f21203) apache#3 0x0000000001fb7b7e llvm::sys::Process::Exit(int, bool) (clang18/bin/clang-19+0x1fb7b7e) apache#4 0x0000000000b25f0d (clang18/bin/clang-19+0xb25f0d) ................................................................................ ................................................................................ This problem occurs in clang18 and above, and there are compilation instructions that are incompatible with GCC. By following the recommended v8.1m corresponding fpu modification, no crash will occur ➜ NX git:(master) ✗ clang --target=arm-none-eabi -mfpu=help clang: note: available multilibs are: --target=thumbv8m.main-unknown-none-eabi -mfpu=none --target=thumbv8m.main-unknown-none-eabi -mfpu=none -fno-exceptions -fno-rtti --target=thumbv8m.main-unknown-none-eabihf -mfpu=fpv5-sp-d16 --target=thumbv8m.main-unknown-none-eabihf -mfpu=fpv5-sp-d16 -fno-exceptions -fno-rtti --target=thumbv8.1m.main-unknown-none-eabi -mfpu=none --target=thumbv8.1m.main-unknown-none-eabi -mfpu=none -fno-exceptions -fno-rtti --target=thumbv8.1m.main-unknown-none-eabihf -march=thumbv8.1m.main+fp16 -mfpu=fp-armv8-fullfp16-sp-d16 --target=thumbv8.1m.main-unknown-none-eabihf -march=thumbv8.1m.main+fp16 -mfpu=fp-armv8-fullfp16-sp-d16 -fno-exceptions -fno-rtti --target=thumbv8.1m.main-unknown-none-eabihf -march=thumbv8.1m.main+fp16 -mfpu=fp-armv8-fullfp16-d16 --target=thumbv8.1m.main-unknown-none-eabihf -march=thumbv8.1m.main+fp16 -mfpu=fp-armv8-fullfp16-d16 -fno-exceptions -fno-rtti --target=thumbv8.1m.main-unknown-none-eabihf -march=thumbv8.1m.main+mve -mfpu=none --target=thumbv8.1m.main-unknown-none-eabihf -march=thumbv8.1m.main+mve -mfpu=none -fno-exceptions -fno-rtti Signed-off-by: wangmingrong1 <[email protected]>
1 parent ae70e09 commit 51a82d5

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

arch/arm/src/armv8-m/Toolchain.defs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,22 @@ else ifeq ($(CONFIG_ARCH_CORTEXM55),y)
8181
TOOLCHAIN_MARCH := -march=armv8.1-m.main$(EXTCPUFLAGS)
8282
LLVM_CPUTYPE := cortex-m55
8383
ifeq ($(CONFIG_ARCH_FPU),y)
84-
TOOLCHAIN_MFLOAT := -mfpu=fpv5-d16
84+
ifeq ($(CONFIG_ARCH_TOOLCHAIN_GCC),y)
85+
TOOLCHAIN_MFLOAT := -mfpu=fpv5-d16
86+
else ifeq ($(CONFIG_ARCH_TOOLCHAIN_CLANG),y)
87+
TOOLCHAIN_MFLOAT := -mfpu=fp-armv8-fullfp16-d16
88+
endif
8589
endif
8690
else ifeq ($(CONFIG_ARCH_CORTEXM85),y)
8791
TOOLCHAIN_MTUNE := -mtune=cortex-m85
8892
TOOLCHAIN_MARCH := -march=armv8.1-m.main$(EXTCPUFLAGS)
8993
LLVM_CPUTYPE := cortex-m85
9094
ifeq ($(CONFIG_ARCH_FPU),y)
91-
TOOLCHAIN_MFLOAT := -mfpu=fpv5-d16
95+
ifeq ($(CONFIG_ARCH_TOOLCHAIN_GCC),y)
96+
TOOLCHAIN_MFLOAT := -mfpu=fpv5-d16
97+
else ifeq ($(CONFIG_ARCH_TOOLCHAIN_CLANG),y)
98+
TOOLCHAIN_MFLOAT := -mfpu=fp-armv8-fullfp16-d16
99+
endif
92100
endif
93101
endif
94102

0 commit comments

Comments
 (0)