[PATCHv2] sparc: Export mcount for Clang-built modules

Rosen Penev posted 1 patch 14 hours ago
arch/sparc/include/asm/asm-prototypes.h | 1 +
arch/sparc/lib/mcount.S                 | 1 +
2 files changed, 2 insertions(+)
[PATCHv2] sparc: Export mcount for Clang-built modules
Posted by Rosen Penev 14 hours ago
Clang emits calls to mcount for -pg on sparc64, while the
existing ftrace support only exports the _mcount name. With
FUNCTION_TRACER enabled, modules can therefore keep relocations
against mcount and fail during modpost:

  ERROR: modpost: "mcount" [arch/sparc/kernel/chmc.ko] undefined!

_mcount and mcount are aliases in arch/sparc/lib/mcount.S. Export
the plain mcount alias as well so Clang-built modules can resolve
their profiling call target.

Assisted-by: Codex:GPT-5
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 v2: add declaration in asm-prototypes.h
 arch/sparc/include/asm/asm-prototypes.h | 1 +
 arch/sparc/lib/mcount.S                 | 1 +
 2 files changed, 2 insertions(+)

diff --git a/arch/sparc/include/asm/asm-prototypes.h b/arch/sparc/include/asm/asm-prototypes.h
index 270c51017212..a39a24c53216 100644
--- a/arch/sparc/include/asm/asm-prototypes.h
+++ b/arch/sparc/include/asm/asm-prototypes.h
@@ -26,6 +26,7 @@ void *memset(void *s, int c, size_t n);
 typedef int TItype __attribute__((mode(TI)));
 TItype __multi3(TItype a, TItype b);
 void _mcount(void);
+void mcount(void);

 s64 __ashldi3(s64, int);
 s64 __lshrdi3(s64, int);
diff --git a/arch/sparc/lib/mcount.S b/arch/sparc/lib/mcount.S
index f7f7910eb41e..0309ba2c4712 100644
--- a/arch/sparc/lib/mcount.S
+++ b/arch/sparc/lib/mcount.S
@@ -21,6 +21,7 @@
 	EXPORT_SYMBOL(_mcount)
 	.globl		mcount
 	.type		mcount,#function
+	EXPORT_SYMBOL(mcount)
 _mcount:
 mcount:
 #ifdef CONFIG_FUNCTION_TRACER
--
2.54.0