"Tobin C. Harding" [off-list ref] writes:
Sparse emits warning: symbol 'prepare_ftrace_return' was not
declared. Should it be static? prepare_ftrace_return() is called
from assembler and should not be static. Adding a header file
declaring the function will fix the sparse warning while adding
documentation to the call.
Add header file ftrace.h with single function declaration. Protect
declaration with preprocessor guard so it may be included in
assembly. Include new header in all files that call
prepare_ftrace_return() and in ftrace.c where function is defined.
Signed-off-by: Tobin C. Harding <redacted>
---
Github issue: #37 Fix sparse warnings
Tested by building on Power8.
There are a bunch of these in arch/powerpc/kernel/. Do we want to add
a header for each one, cluttering up the directory to fix the sparse
warnings?
No we don't.
In fact we already have a header for this, ie. functions defined in asm
but called from C, it's arch/powerpc/include/asm/asm-prototypes.h.
So I've reworked it to:
diff --git a/arch/powerpc/include/asm/asm-prototypes.h b/arch/powerpc/include/asm/asm-prototypes.h
index f6c5264287e5..e02db66a77e3 100644
--- a/arch/powerpc/include/asm/asm-prototypes.h
+++ b/arch/powerpc/include/asm/asm-prototypes.h
@@ -120,6 +120,8 @@ extern s64 __ashrdi3(s64, int);
extern int __cmpdi2(s64, s64);
extern int __ucmpdi2(u64, u64);
+/* tracing */
void _mcount(void);
+unsigned long prepare_ftrace_return(unsigned long parent, unsigned long ip);
#endif /* _ASM_POWERPC_ASM_PROTOTYPES_H */
diff --git a/arch/powerpc/kernel/ftrace.c b/arch/powerpc/kernel/ftrace.c
index 5c9f50c1aa99..32509de6ce4c 100644
--- a/arch/powerpc/kernel/ftrace.c
+++ b/arch/powerpc/kernel/ftrace.c
@@ -21,6 +21,7 @@
#include <linux/init.h>
#include <linux/list.h>
+#include <asm/asm-prototypes.h>
#include <asm/cacheflush.h>
#include <asm/code-patching.h>
#include <asm/ftrace.h>
cheers