| From ef21fa7c198e04f3d3053b1c5b5f2b4b225c3350 Mon Sep 17 00:00:00 2001 |
| From: Mingzheng Xing <xingmingzheng@iscas.ac.cn> |
| Date: Fri, 25 Aug 2023 03:08:52 +0800 |
| Subject: riscv: Fix build errors using binutils2.37 toolchains |
| |
| From: Mingzheng Xing <xingmingzheng@iscas.ac.cn> |
| |
| commit ef21fa7c198e04f3d3053b1c5b5f2b4b225c3350 upstream. |
| |
| When building the kernel with binutils 2.37 and GCC-11.1.0/GCC-11.2.0, |
| the following error occurs: |
| |
| Assembler messages: |
| Error: cannot find default versions of the ISA extension `zicsr' |
| Error: cannot find default versions of the ISA extension `zifencei' |
| |
| The above error originated from this commit of binutils[0], which has been |
| resolved and backported by GCC-12.1.0[1] and GCC-11.3.0[2]. |
| |
| So fix this by change the GCC version in |
| CONFIG_TOOLCHAIN_NEEDS_OLD_ISA_SPEC to GCC-11.3.0. |
| |
| Link: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=f0bae2552db1dd4f1995608fbf6648fcee4e9e0c [0] |
| Link: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=ca2bbb88f999f4d3cc40e89bc1aba712505dd598 [1] |
| Link: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=d29f5d6ab513c52fd872f532c492e35ae9fd6671 [2] |
| Fixes: ca09f772ccca ("riscv: Handle zicsr/zifencei issue between gcc and binutils") |
| Reported-by: Conor Dooley <conor.dooley@microchip.com> |
| Cc: <stable@vger.kernel.org> |
| Signed-off-by: Mingzheng Xing <xingmingzheng@iscas.ac.cn> |
| Link: https://lore.kernel.org/r/20230824190852.45470-1-xingmingzheng@iscas.ac.cn |
| Closes: https://lore.kernel.org/all/20230823-captive-abdomen-befd942a4a73@wendy/ |
| Reviewed-by: Conor Dooley <conor.dooley@microchip.com> |
| Tested-by: Conor Dooley <conor.dooley@microchip.com> |
| Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/riscv/Kconfig | 8 ++++---- |
| 1 file changed, 4 insertions(+), 4 deletions(-) |
| |
| --- a/arch/riscv/Kconfig |
| +++ b/arch/riscv/Kconfig |
| @@ -535,15 +535,15 @@ config TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZI |
| and Zifencei are supported in binutils from version 2.36 onwards. |
| To make life easier, and avoid forcing toolchains that default to a |
| newer ISA spec to version 2.2, relax the check to binutils >= 2.36. |
| - For clang < 17 or GCC < 11.1.0, for which this is not possible, this is |
| - dealt with in CONFIG_TOOLCHAIN_NEEDS_OLD_ISA_SPEC. |
| + For clang < 17 or GCC < 11.3.0, for which this is not possible or need |
| + special treatment, this is dealt with in TOOLCHAIN_NEEDS_OLD_ISA_SPEC. |
| |
| config TOOLCHAIN_NEEDS_OLD_ISA_SPEC |
| def_bool y |
| depends on TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI |
| # https://github.com/llvm/llvm-project/commit/22e199e6afb1263c943c0c0d4498694e15bf8a16 |
| - # https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=b03be74bad08c382da47e048007a78fa3fb4ef49 |
| - depends on (CC_IS_CLANG && CLANG_VERSION < 170000) || (CC_IS_GCC && GCC_VERSION < 110100) |
| + # https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=d29f5d6ab513c52fd872f532c492e35ae9fd6671 |
| + depends on (CC_IS_CLANG && CLANG_VERSION < 170000) || (CC_IS_GCC && GCC_VERSION < 110300) |
| help |
| Certain versions of clang and GCC do not support zicsr and zifencei via |
| -march. This option causes an older ISA spec compatible with these older |