Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

riscv: remove MCOUNT_NAME workaround

Now that the minimum supported version of LLVM for building the kernel has
been bumped to 13.0.1, the condition for using _mcount as MCOUNT_NAME is
always true, as the build will fail during the configuration stage for
older LLVM versions. Replace MCOUNT_NAME with _mcount directly.

This effectively reverts commit 7ce047715030 ("riscv: Workaround mcount
name prior to clang-13").

Link: https://lkml.kernel.org/r/20240125-bump-min-llvm-ver-to-13-0-1-v1-7-f5ff9bda41c5@kernel.org
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Kees Cook <keescook@chromium.org>
Cc: Albert Ou <aou@eecs.berkeley.edu>
Cc: "Aneesh Kumar K.V (IBM)" <aneesh.kumar@kernel.org>
Cc: Ard Biesheuvel <ardb@kernel.org>
Cc: Borislav Petkov (AMD) <bp@alien8.de>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Conor Dooley <conor@kernel.org>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: "Naveen N. Rao" <naveen.n.rao@linux.ibm.com>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Nicolas Schier <nicolas@fjasle.eu>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Paul Walmsley <paul.walmsley@sifive.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Nathan Chancellor and committed by
Andrew Morton
de5f3984 9a12e9a1

+8 -18
+2 -12
arch/riscv/include/asm/ftrace.h
··· 13 13 #endif 14 14 #define HAVE_FUNCTION_GRAPH_RET_ADDR_PTR 15 15 16 - /* 17 - * Clang prior to 13 had "mcount" instead of "_mcount": 18 - * https://github.com/llvm/llvm-project/commit/ef58ae86ba778ed7d01cd3f6bd6d08f943abab44 19 - */ 20 - #if defined(CONFIG_CC_IS_GCC) || CONFIG_CLANG_VERSION >= 130000 21 - #define MCOUNT_NAME _mcount 22 - #else 23 - #define MCOUNT_NAME mcount 24 - #endif 25 - 26 16 #define ARCH_SUPPORTS_FTRACE_OPS 1 27 17 #ifndef __ASSEMBLY__ 28 - void MCOUNT_NAME(void); 18 + void _mcount(void); 29 19 static inline unsigned long ftrace_call_adjust(unsigned long addr) 30 20 { 31 21 return addr; ··· 65 75 * both auipc and jalr at the same time. 66 76 */ 67 77 68 - #define MCOUNT_ADDR ((unsigned long)MCOUNT_NAME) 78 + #define MCOUNT_ADDR ((unsigned long)_mcount) 69 79 #define JALR_SIGN_MASK (0x00000800) 70 80 #define JALR_OFFSET_MASK (0x00000fff) 71 81 #define AUIPC_OFFSET_MASK (0xfffff000)
+5 -5
arch/riscv/kernel/mcount.S
··· 50 50 51 51 SYM_TYPED_FUNC_START(ftrace_stub) 52 52 #ifdef CONFIG_DYNAMIC_FTRACE 53 - .global MCOUNT_NAME 54 - .set MCOUNT_NAME, ftrace_stub 53 + .global _mcount 54 + .set _mcount, ftrace_stub 55 55 #endif 56 56 ret 57 57 SYM_FUNC_END(ftrace_stub) ··· 80 80 #endif 81 81 82 82 #ifndef CONFIG_DYNAMIC_FTRACE 83 - SYM_FUNC_START(MCOUNT_NAME) 83 + SYM_FUNC_START(_mcount) 84 84 la t4, ftrace_stub 85 85 #ifdef CONFIG_FUNCTION_GRAPH_TRACER 86 86 la t0, ftrace_graph_return ··· 126 126 jalr t5 127 127 RESTORE_ABI_STATE 128 128 ret 129 - SYM_FUNC_END(MCOUNT_NAME) 129 + SYM_FUNC_END(_mcount) 130 130 #endif 131 - EXPORT_SYMBOL(MCOUNT_NAME) 131 + EXPORT_SYMBOL(_mcount)
+1 -1
scripts/recordmcount.pl
··· 352 352 $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\s_mcount\$"; 353 353 } elsif ($arch eq "riscv") { 354 354 $function_regex = "^([0-9a-fA-F]+)\\s+<([^.0-9][0-9a-zA-Z_\\.]+)>:"; 355 - $mcount_regex = "^\\s*([0-9a-fA-F]+):\\sR_RISCV_CALL(_PLT)?\\s_?mcount\$"; 355 + $mcount_regex = "^\\s*([0-9a-fA-F]+):\\sR_RISCV_CALL(_PLT)?\\s_mcount\$"; 356 356 $type = ".quad"; 357 357 $alignment = 2; 358 358 } elsif ($arch eq "csky") {