All of lore.kernel.org
 help / color / mirror / Atom feed
* [gustavoars:for-next/cast-function 1/3] kernel/trace/ftrace.c:7029:6: error: no previous prototype for function 'arch_ftrace_ops_list_func'
@ 2021-10-13 23:33 ` kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2021-10-13 23:33 UTC (permalink / raw)
  To: Gustavo A. R. Silva
  Cc: llvm, kbuild-all, Gustavo A. R. Silva, LKML, Steven Rostedt

[-- Attachment #1: Type: text/plain, Size: 4977 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git for-next/cast-function
head:   eed09ebd6f47aeb92b3fe3b8d338b2a55e534928
commit: f9d45e65ef7f67bdb39c15d09bc6021f197d893e [1/3] ftrace: Fix -Wcast-function-type warnings on powerpc64
config: i386-buildonly-randconfig-r002-20211013 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project b6a8c695542b2987eb9a203d5663a0740cb4725f)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git/commit/?id=f9d45e65ef7f67bdb39c15d09bc6021f197d893e
        git remote add gustavoars https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git
        git fetch --no-tags gustavoars for-next/cast-function
        git checkout f9d45e65ef7f67bdb39c15d09bc6021f197d893e
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=i386 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   kernel/trace/ftrace.c:297:5: error: no previous prototype for function '__register_ftrace_function' [-Werror,-Wmissing-prototypes]
   int __register_ftrace_function(struct ftrace_ops *ops)
       ^
   kernel/trace/ftrace.c:297:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int __register_ftrace_function(struct ftrace_ops *ops)
   ^
   static 
   kernel/trace/ftrace.c:340:5: error: no previous prototype for function '__unregister_ftrace_function' [-Werror,-Wmissing-prototypes]
   int __unregister_ftrace_function(struct ftrace_ops *ops)
       ^
   kernel/trace/ftrace.c:340:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int __unregister_ftrace_function(struct ftrace_ops *ops)
   ^
   static 
   kernel/trace/ftrace.c:579:5: error: no previous prototype for function 'ftrace_profile_pages_init' [-Werror,-Wmissing-prototypes]
   int ftrace_profile_pages_init(struct ftrace_profile_stat *stat)
       ^
   kernel/trace/ftrace.c:579:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int ftrace_profile_pages_init(struct ftrace_profile_stat *stat)
   ^
   static 
   kernel/trace/ftrace.c:3871:15: error: no previous prototype for function 'arch_ftrace_match_adjust' [-Werror,-Wmissing-prototypes]
   char * __weak arch_ftrace_match_adjust(char *str, const char *search)
                 ^
   kernel/trace/ftrace.c:3871:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   char * __weak arch_ftrace_match_adjust(char *str, const char *search)
   ^
   static 
>> kernel/trace/ftrace.c:7029:6: error: no previous prototype for function 'arch_ftrace_ops_list_func' [-Werror,-Wmissing-prototypes]
   void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,
        ^
   kernel/trace/ftrace.c:7029:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,
   ^
   static 
   5 errors generated.


vim +/arch_ftrace_ops_list_func +7029 kernel/trace/ftrace.c

  7011	
  7012	/*
  7013	 * Some archs only support passing ip and parent_ip. Even though
  7014	 * the list function ignores the op parameter, we do not want any
  7015	 * C side effects, where a function is called without the caller
  7016	 * sending a third parameter.
  7017	 * Archs are to support both the regs and ftrace_ops at the same time.
  7018	 * If they support ftrace_ops, it is assumed they support regs.
  7019	 * If call backs want to use regs, they must either check for regs
  7020	 * being NULL, or CONFIG_DYNAMIC_FTRACE_WITH_REGS.
  7021	 * Note, CONFIG_DYNAMIC_FTRACE_WITH_REGS expects a full regs to be saved.
  7022	 * An architecture can pass partial regs with ftrace_ops and still
  7023	 * set the ARCH_SUPPORTS_FTRACE_OPS.
  7024	 *
  7025	 * In vmlinux.lds.h, ftrace_ops_list_func() is defined to be
  7026	 * arch_ftrace_ops_list_func.
  7027	 */
  7028	#if ARCH_SUPPORTS_FTRACE_OPS
> 7029	void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,
  7030				       struct ftrace_ops *op, struct ftrace_regs *fregs)
  7031	{
  7032		__ftrace_ops_list_func(ip, parent_ip, NULL, fregs);
  7033	}
  7034	#else
  7035	void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip)
  7036	{
  7037		__ftrace_ops_list_func(ip, parent_ip, NULL, NULL);
  7038	}
  7039	#endif
  7040	NOKPROBE_SYMBOL(arch_ftrace_ops_list_func);
  7041	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 37038 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [gustavoars:for-next/cast-function 1/3] kernel/trace/ftrace.c:7029:6: error: no previous prototype for function 'arch_ftrace_ops_list_func'
@ 2021-10-13 23:33 ` kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2021-10-13 23:33 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 5074 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git for-next/cast-function
head:   eed09ebd6f47aeb92b3fe3b8d338b2a55e534928
commit: f9d45e65ef7f67bdb39c15d09bc6021f197d893e [1/3] ftrace: Fix -Wcast-function-type warnings on powerpc64
config: i386-buildonly-randconfig-r002-20211013 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project b6a8c695542b2987eb9a203d5663a0740cb4725f)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git/commit/?id=f9d45e65ef7f67bdb39c15d09bc6021f197d893e
        git remote add gustavoars https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git
        git fetch --no-tags gustavoars for-next/cast-function
        git checkout f9d45e65ef7f67bdb39c15d09bc6021f197d893e
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=i386 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   kernel/trace/ftrace.c:297:5: error: no previous prototype for function '__register_ftrace_function' [-Werror,-Wmissing-prototypes]
   int __register_ftrace_function(struct ftrace_ops *ops)
       ^
   kernel/trace/ftrace.c:297:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int __register_ftrace_function(struct ftrace_ops *ops)
   ^
   static 
   kernel/trace/ftrace.c:340:5: error: no previous prototype for function '__unregister_ftrace_function' [-Werror,-Wmissing-prototypes]
   int __unregister_ftrace_function(struct ftrace_ops *ops)
       ^
   kernel/trace/ftrace.c:340:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int __unregister_ftrace_function(struct ftrace_ops *ops)
   ^
   static 
   kernel/trace/ftrace.c:579:5: error: no previous prototype for function 'ftrace_profile_pages_init' [-Werror,-Wmissing-prototypes]
   int ftrace_profile_pages_init(struct ftrace_profile_stat *stat)
       ^
   kernel/trace/ftrace.c:579:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int ftrace_profile_pages_init(struct ftrace_profile_stat *stat)
   ^
   static 
   kernel/trace/ftrace.c:3871:15: error: no previous prototype for function 'arch_ftrace_match_adjust' [-Werror,-Wmissing-prototypes]
   char * __weak arch_ftrace_match_adjust(char *str, const char *search)
                 ^
   kernel/trace/ftrace.c:3871:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   char * __weak arch_ftrace_match_adjust(char *str, const char *search)
   ^
   static 
>> kernel/trace/ftrace.c:7029:6: error: no previous prototype for function 'arch_ftrace_ops_list_func' [-Werror,-Wmissing-prototypes]
   void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,
        ^
   kernel/trace/ftrace.c:7029:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,
   ^
   static 
   5 errors generated.


vim +/arch_ftrace_ops_list_func +7029 kernel/trace/ftrace.c

  7011	
  7012	/*
  7013	 * Some archs only support passing ip and parent_ip. Even though
  7014	 * the list function ignores the op parameter, we do not want any
  7015	 * C side effects, where a function is called without the caller
  7016	 * sending a third parameter.
  7017	 * Archs are to support both the regs and ftrace_ops at the same time.
  7018	 * If they support ftrace_ops, it is assumed they support regs.
  7019	 * If call backs want to use regs, they must either check for regs
  7020	 * being NULL, or CONFIG_DYNAMIC_FTRACE_WITH_REGS.
  7021	 * Note, CONFIG_DYNAMIC_FTRACE_WITH_REGS expects a full regs to be saved.
  7022	 * An architecture can pass partial regs with ftrace_ops and still
  7023	 * set the ARCH_SUPPORTS_FTRACE_OPS.
  7024	 *
  7025	 * In vmlinux.lds.h, ftrace_ops_list_func() is defined to be
  7026	 * arch_ftrace_ops_list_func.
  7027	 */
  7028	#if ARCH_SUPPORTS_FTRACE_OPS
> 7029	void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,
  7030				       struct ftrace_ops *op, struct ftrace_regs *fregs)
  7031	{
  7032		__ftrace_ops_list_func(ip, parent_ip, NULL, fregs);
  7033	}
  7034	#else
  7035	void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip)
  7036	{
  7037		__ftrace_ops_list_func(ip, parent_ip, NULL, NULL);
  7038	}
  7039	#endif
  7040	NOKPROBE_SYMBOL(arch_ftrace_ops_list_func);
  7041	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 37038 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [gustavoars:for-next/cast-function 1/3] kernel/trace/ftrace.c:7029:6: error: no previous prototype for function 'arch_ftrace_ops_list_func'
  2021-10-13 23:33 ` kernel test robot
@ 2021-10-14 17:53   ` Steven Rostedt
  -1 siblings, 0 replies; 6+ messages in thread
From: Steven Rostedt @ 2021-10-14 17:53 UTC (permalink / raw)
  To: kernel test robot
  Cc: Gustavo A. R. Silva, llvm, kbuild-all, Gustavo A. R. Silva, LKML

On Thu, 14 Oct 2021 07:33:21 +0800
kernel test robot <lkp@intel.com> wrote:

> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git for-next/cast-function
> head:   eed09ebd6f47aeb92b3fe3b8d338b2a55e534928
> commit: f9d45e65ef7f67bdb39c15d09bc6021f197d893e [1/3] ftrace: Fix -Wcast-function-type warnings on powerpc64
> config: i386-buildonly-randconfig-r002-20211013 (attached as .config)
> compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project b6a8c695542b2987eb9a203d5663a0740cb4725f)
> reproduce (this is a W=1 build):
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git/commit/?id=f9d45e65ef7f67bdb39c15d09bc6021f197d893e
>         git remote add gustavoars https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git
>         git fetch --no-tags gustavoars for-next/cast-function
>         git checkout f9d45e65ef7f67bdb39c15d09bc6021f197d893e
>         # save the attached .config to linux build tree
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=i386 
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
> 
> All errors (new ones prefixed by >>):
> 
>    kernel/trace/ftrace.c:297:5: error: no previous prototype for function '__register_ftrace_function' [-Werror,-Wmissing-prototypes]
>    int __register_ftrace_function(struct ftrace_ops *ops)
>        ^
>    kernel/trace/ftrace.c:297:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
>    int __register_ftrace_function(struct ftrace_ops *ops)
>    ^
>    static 
>    kernel/trace/ftrace.c:340:5: error: no previous prototype for function '__unregister_ftrace_function' [-Werror,-Wmissing-prototypes]
>    int __unregister_ftrace_function(struct ftrace_ops *ops)
>        ^
>    kernel/trace/ftrace.c:340:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
>    int __unregister_ftrace_function(struct ftrace_ops *ops)
>    ^
>    static 
>    kernel/trace/ftrace.c:579:5: error: no previous prototype for function 'ftrace_profile_pages_init' [-Werror,-Wmissing-prototypes]
>    int ftrace_profile_pages_init(struct ftrace_profile_stat *stat)
>        ^
>    kernel/trace/ftrace.c:579:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
>    int ftrace_profile_pages_init(struct ftrace_profile_stat *stat)
>    ^
>    static 
>    kernel/trace/ftrace.c:3871:15: error: no previous prototype for function 'arch_ftrace_match_adjust' [-Werror,-Wmissing-prototypes]
>    char * __weak arch_ftrace_match_adjust(char *str, const char *search)
>                  ^
>    kernel/trace/ftrace.c:3871:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
>    char * __weak arch_ftrace_match_adjust(char *str, const char *search)
>    ^
>    static 
> >> kernel/trace/ftrace.c:7029:6: error: no previous prototype for function 'arch_ftrace_ops_list_func' [-Werror,-Wmissing-prototypes]  
>    void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,
>         ^
>    kernel/trace/ftrace.c:7029:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
>    void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,
>    ^
>    static 
>    5 errors generated.
> 
> 
> vim +/arch_ftrace_ops_list_func +7029 kernel/trace/ftrace.c
> 
>   7011	
>   7012	/*
>   7013	 * Some archs only support passing ip and parent_ip. Even though
>   7014	 * the list function ignores the op parameter, we do not want any
>   7015	 * C side effects, where a function is called without the caller
>   7016	 * sending a third parameter.
>   7017	 * Archs are to support both the regs and ftrace_ops at the same time.
>   7018	 * If they support ftrace_ops, it is assumed they support regs.
>   7019	 * If call backs want to use regs, they must either check for regs
>   7020	 * being NULL, or CONFIG_DYNAMIC_FTRACE_WITH_REGS.
>   7021	 * Note, CONFIG_DYNAMIC_FTRACE_WITH_REGS expects a full regs to be saved.
>   7022	 * An architecture can pass partial regs with ftrace_ops and still
>   7023	 * set the ARCH_SUPPORTS_FTRACE_OPS.
>   7024	 *
>   7025	 * In vmlinux.lds.h, ftrace_ops_list_func() is defined to be
>   7026	 * arch_ftrace_ops_list_func.
>   7027	 */
>   7028	#if ARCH_SUPPORTS_FTRACE_OPS
> > 7029	void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,  
>   7030				       struct ftrace_ops *op, struct ftrace_regs *fregs)
>   7031	{
>   7032		__ftrace_ops_list_func(ip, parent_ip, NULL, fregs);
>   7033	}
>   7034	#else
>   7035	void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip)
>   7036	{
>   7037		__ftrace_ops_list_func(ip, parent_ip, NULL, NULL);
>   7038	}
>   7039	#endif
>   7040	NOKPROBE_SYMBOL(arch_ftrace_ops_list_func);
>   7041	
> 
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

This should fix this issue as well as some of the other ones reported on
this commit.

[ I'll be adding this update to my own version in my tree ]

-- Steve

diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index b86f52683b6f..8771c435f34b 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -178,7 +178,8 @@
 			ftrace_ops_list_func = arch_ftrace_ops_list_func;
 #else
 # ifdef CONFIG_FUNCTION_TRACER
-#  define MCOUNT_REC()	ftrace_stub_graph = ftrace_stub;
+#  define MCOUNT_REC()	ftrace_stub_graph = ftrace_stub;	\
+			ftrace_ops_list_func = arch_ftrace_ops_list_func;
 # else
 #  define MCOUNT_REC()
 # endif
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
index 832e65f06754..871b51bec170 100644
--- a/include/linux/ftrace.h
+++ b/include/linux/ftrace.h
@@ -30,16 +30,25 @@
 #define ARCH_SUPPORTS_FTRACE_OPS 0
 #endif
 
+#ifdef CONFIG_FUNCTION_TRACER
+struct ftrace_ops;
 /*
  * If the arch's mcount caller does not support all of ftrace's
  * features, then it must call an indirect function that
  * does. Or at least does enough to prevent any unwelcome side effects.
+ *
+ * Also define the function prototype that these architectures use
+ * to call the ftrace_ops_list_func().
  */
 #if !ARCH_SUPPORTS_FTRACE_OPS
 # define FTRACE_FORCE_LIST_FUNC 1
+void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip);
 #else
 # define FTRACE_FORCE_LIST_FUNC 0
+void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,
+			       struct ftrace_ops *op, struct ftrace_regs *fregs);
 #endif
+#endif /* CONFIG_FUNCTION_TRACER */
 
 /* Main tracing buffer and events set up */
 #ifdef CONFIG_TRACING
@@ -88,8 +97,6 @@ extern int
 ftrace_enable_sysctl(struct ctl_table *table, int write,
 		     void *buffer, size_t *lenp, loff_t *ppos);
 
-struct ftrace_ops;
-
 #ifndef CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS
 
 struct ftrace_regs {

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [gustavoars:for-next/cast-function 1/3] kernel/trace/ftrace.c:7029:6: error: no previous prototype for function 'arch_ftrace_ops_list_func'
@ 2021-10-14 17:53   ` Steven Rostedt
  0 siblings, 0 replies; 6+ messages in thread
From: Steven Rostedt @ 2021-10-14 17:53 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 7354 bytes --]

On Thu, 14 Oct 2021 07:33:21 +0800
kernel test robot <lkp@intel.com> wrote:

> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git for-next/cast-function
> head:   eed09ebd6f47aeb92b3fe3b8d338b2a55e534928
> commit: f9d45e65ef7f67bdb39c15d09bc6021f197d893e [1/3] ftrace: Fix -Wcast-function-type warnings on powerpc64
> config: i386-buildonly-randconfig-r002-20211013 (attached as .config)
> compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project b6a8c695542b2987eb9a203d5663a0740cb4725f)
> reproduce (this is a W=1 build):
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git/commit/?id=f9d45e65ef7f67bdb39c15d09bc6021f197d893e
>         git remote add gustavoars https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git
>         git fetch --no-tags gustavoars for-next/cast-function
>         git checkout f9d45e65ef7f67bdb39c15d09bc6021f197d893e
>         # save the attached .config to linux build tree
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=i386 
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
> 
> All errors (new ones prefixed by >>):
> 
>    kernel/trace/ftrace.c:297:5: error: no previous prototype for function '__register_ftrace_function' [-Werror,-Wmissing-prototypes]
>    int __register_ftrace_function(struct ftrace_ops *ops)
>        ^
>    kernel/trace/ftrace.c:297:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
>    int __register_ftrace_function(struct ftrace_ops *ops)
>    ^
>    static 
>    kernel/trace/ftrace.c:340:5: error: no previous prototype for function '__unregister_ftrace_function' [-Werror,-Wmissing-prototypes]
>    int __unregister_ftrace_function(struct ftrace_ops *ops)
>        ^
>    kernel/trace/ftrace.c:340:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
>    int __unregister_ftrace_function(struct ftrace_ops *ops)
>    ^
>    static 
>    kernel/trace/ftrace.c:579:5: error: no previous prototype for function 'ftrace_profile_pages_init' [-Werror,-Wmissing-prototypes]
>    int ftrace_profile_pages_init(struct ftrace_profile_stat *stat)
>        ^
>    kernel/trace/ftrace.c:579:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
>    int ftrace_profile_pages_init(struct ftrace_profile_stat *stat)
>    ^
>    static 
>    kernel/trace/ftrace.c:3871:15: error: no previous prototype for function 'arch_ftrace_match_adjust' [-Werror,-Wmissing-prototypes]
>    char * __weak arch_ftrace_match_adjust(char *str, const char *search)
>                  ^
>    kernel/trace/ftrace.c:3871:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
>    char * __weak arch_ftrace_match_adjust(char *str, const char *search)
>    ^
>    static 
> >> kernel/trace/ftrace.c:7029:6: error: no previous prototype for function 'arch_ftrace_ops_list_func' [-Werror,-Wmissing-prototypes]  
>    void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,
>         ^
>    kernel/trace/ftrace.c:7029:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
>    void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,
>    ^
>    static 
>    5 errors generated.
> 
> 
> vim +/arch_ftrace_ops_list_func +7029 kernel/trace/ftrace.c
> 
>   7011	
>   7012	/*
>   7013	 * Some archs only support passing ip and parent_ip. Even though
>   7014	 * the list function ignores the op parameter, we do not want any
>   7015	 * C side effects, where a function is called without the caller
>   7016	 * sending a third parameter.
>   7017	 * Archs are to support both the regs and ftrace_ops at the same time.
>   7018	 * If they support ftrace_ops, it is assumed they support regs.
>   7019	 * If call backs want to use regs, they must either check for regs
>   7020	 * being NULL, or CONFIG_DYNAMIC_FTRACE_WITH_REGS.
>   7021	 * Note, CONFIG_DYNAMIC_FTRACE_WITH_REGS expects a full regs to be saved.
>   7022	 * An architecture can pass partial regs with ftrace_ops and still
>   7023	 * set the ARCH_SUPPORTS_FTRACE_OPS.
>   7024	 *
>   7025	 * In vmlinux.lds.h, ftrace_ops_list_func() is defined to be
>   7026	 * arch_ftrace_ops_list_func.
>   7027	 */
>   7028	#if ARCH_SUPPORTS_FTRACE_OPS
> > 7029	void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,  
>   7030				       struct ftrace_ops *op, struct ftrace_regs *fregs)
>   7031	{
>   7032		__ftrace_ops_list_func(ip, parent_ip, NULL, fregs);
>   7033	}
>   7034	#else
>   7035	void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip)
>   7036	{
>   7037		__ftrace_ops_list_func(ip, parent_ip, NULL, NULL);
>   7038	}
>   7039	#endif
>   7040	NOKPROBE_SYMBOL(arch_ftrace_ops_list_func);
>   7041	
> 
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

This should fix this issue as well as some of the other ones reported on
this commit.

[ I'll be adding this update to my own version in my tree ]

-- Steve

diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index b86f52683b6f..8771c435f34b 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -178,7 +178,8 @@
 			ftrace_ops_list_func = arch_ftrace_ops_list_func;
 #else
 # ifdef CONFIG_FUNCTION_TRACER
-#  define MCOUNT_REC()	ftrace_stub_graph = ftrace_stub;
+#  define MCOUNT_REC()	ftrace_stub_graph = ftrace_stub;	\
+			ftrace_ops_list_func = arch_ftrace_ops_list_func;
 # else
 #  define MCOUNT_REC()
 # endif
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
index 832e65f06754..871b51bec170 100644
--- a/include/linux/ftrace.h
+++ b/include/linux/ftrace.h
@@ -30,16 +30,25 @@
 #define ARCH_SUPPORTS_FTRACE_OPS 0
 #endif
 
+#ifdef CONFIG_FUNCTION_TRACER
+struct ftrace_ops;
 /*
  * If the arch's mcount caller does not support all of ftrace's
  * features, then it must call an indirect function that
  * does. Or at least does enough to prevent any unwelcome side effects.
+ *
+ * Also define the function prototype that these architectures use
+ * to call the ftrace_ops_list_func().
  */
 #if !ARCH_SUPPORTS_FTRACE_OPS
 # define FTRACE_FORCE_LIST_FUNC 1
+void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip);
 #else
 # define FTRACE_FORCE_LIST_FUNC 0
+void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,
+			       struct ftrace_ops *op, struct ftrace_regs *fregs);
 #endif
+#endif /* CONFIG_FUNCTION_TRACER */
 
 /* Main tracing buffer and events set up */
 #ifdef CONFIG_TRACING
@@ -88,8 +97,6 @@ extern int
 ftrace_enable_sysctl(struct ctl_table *table, int write,
 		     void *buffer, size_t *lenp, loff_t *ppos);
 
-struct ftrace_ops;
-
 #ifndef CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS
 
 struct ftrace_regs {

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [gustavoars:for-next/cast-function 1/3] kernel/trace/ftrace.c:7029:6: error: no previous prototype for function 'arch_ftrace_ops_list_func'
  2021-10-14 17:53   ` Steven Rostedt
@ 2021-10-14 18:14     ` Gustavo A. R. Silva
  -1 siblings, 0 replies; 6+ messages in thread
From: Gustavo A. R. Silva @ 2021-10-14 18:14 UTC (permalink / raw)
  To: Steven Rostedt
  Cc: kernel test robot, llvm, kbuild-all, Gustavo A. R. Silva, LKML

On Thu, Oct 14, 2021 at 01:53:17PM -0400, Steven Rostedt wrote:
> This should fix this issue as well as some of the other ones reported on
> this commit.
> 
> [ I'll be adding this update to my own version in my tree ]

Great. I'll apply it to my tree. Thanks! :)

--
Gustavo

> 
> -- Steve
> 
> diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
> index b86f52683b6f..8771c435f34b 100644
> --- a/include/asm-generic/vmlinux.lds.h
> +++ b/include/asm-generic/vmlinux.lds.h
> @@ -178,7 +178,8 @@
>  			ftrace_ops_list_func = arch_ftrace_ops_list_func;
>  #else
>  # ifdef CONFIG_FUNCTION_TRACER
> -#  define MCOUNT_REC()	ftrace_stub_graph = ftrace_stub;
> +#  define MCOUNT_REC()	ftrace_stub_graph = ftrace_stub;	\
> +			ftrace_ops_list_func = arch_ftrace_ops_list_func;
>  # else
>  #  define MCOUNT_REC()
>  # endif
> diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
> index 832e65f06754..871b51bec170 100644
> --- a/include/linux/ftrace.h
> +++ b/include/linux/ftrace.h
> @@ -30,16 +30,25 @@
>  #define ARCH_SUPPORTS_FTRACE_OPS 0
>  #endif
>  
> +#ifdef CONFIG_FUNCTION_TRACER
> +struct ftrace_ops;
>  /*
>   * If the arch's mcount caller does not support all of ftrace's
>   * features, then it must call an indirect function that
>   * does. Or at least does enough to prevent any unwelcome side effects.
> + *
> + * Also define the function prototype that these architectures use
> + * to call the ftrace_ops_list_func().
>   */
>  #if !ARCH_SUPPORTS_FTRACE_OPS
>  # define FTRACE_FORCE_LIST_FUNC 1
> +void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip);
>  #else
>  # define FTRACE_FORCE_LIST_FUNC 0
> +void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,
> +			       struct ftrace_ops *op, struct ftrace_regs *fregs);
>  #endif
> +#endif /* CONFIG_FUNCTION_TRACER */
>  
>  /* Main tracing buffer and events set up */
>  #ifdef CONFIG_TRACING
> @@ -88,8 +97,6 @@ extern int
>  ftrace_enable_sysctl(struct ctl_table *table, int write,
>  		     void *buffer, size_t *lenp, loff_t *ppos);
>  
> -struct ftrace_ops;
> -
>  #ifndef CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS
>  
>  struct ftrace_regs {

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [gustavoars:for-next/cast-function 1/3] kernel/trace/ftrace.c:7029:6: error: no previous prototype for function 'arch_ftrace_ops_list_func'
@ 2021-10-14 18:14     ` Gustavo A. R. Silva
  0 siblings, 0 replies; 6+ messages in thread
From: Gustavo A. R. Silva @ 2021-10-14 18:14 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 2253 bytes --]

On Thu, Oct 14, 2021 at 01:53:17PM -0400, Steven Rostedt wrote:
> This should fix this issue as well as some of the other ones reported on
> this commit.
> 
> [ I'll be adding this update to my own version in my tree ]

Great. I'll apply it to my tree. Thanks! :)

--
Gustavo

> 
> -- Steve
> 
> diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
> index b86f52683b6f..8771c435f34b 100644
> --- a/include/asm-generic/vmlinux.lds.h
> +++ b/include/asm-generic/vmlinux.lds.h
> @@ -178,7 +178,8 @@
>  			ftrace_ops_list_func = arch_ftrace_ops_list_func;
>  #else
>  # ifdef CONFIG_FUNCTION_TRACER
> -#  define MCOUNT_REC()	ftrace_stub_graph = ftrace_stub;
> +#  define MCOUNT_REC()	ftrace_stub_graph = ftrace_stub;	\
> +			ftrace_ops_list_func = arch_ftrace_ops_list_func;
>  # else
>  #  define MCOUNT_REC()
>  # endif
> diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
> index 832e65f06754..871b51bec170 100644
> --- a/include/linux/ftrace.h
> +++ b/include/linux/ftrace.h
> @@ -30,16 +30,25 @@
>  #define ARCH_SUPPORTS_FTRACE_OPS 0
>  #endif
>  
> +#ifdef CONFIG_FUNCTION_TRACER
> +struct ftrace_ops;
>  /*
>   * If the arch's mcount caller does not support all of ftrace's
>   * features, then it must call an indirect function that
>   * does. Or at least does enough to prevent any unwelcome side effects.
> + *
> + * Also define the function prototype that these architectures use
> + * to call the ftrace_ops_list_func().
>   */
>  #if !ARCH_SUPPORTS_FTRACE_OPS
>  # define FTRACE_FORCE_LIST_FUNC 1
> +void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip);
>  #else
>  # define FTRACE_FORCE_LIST_FUNC 0
> +void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,
> +			       struct ftrace_ops *op, struct ftrace_regs *fregs);
>  #endif
> +#endif /* CONFIG_FUNCTION_TRACER */
>  
>  /* Main tracing buffer and events set up */
>  #ifdef CONFIG_TRACING
> @@ -88,8 +97,6 @@ extern int
>  ftrace_enable_sysctl(struct ctl_table *table, int write,
>  		     void *buffer, size_t *lenp, loff_t *ppos);
>  
> -struct ftrace_ops;
> -
>  #ifndef CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS
>  
>  struct ftrace_regs {

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-10-14 18:14 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-13 23:33 [gustavoars:for-next/cast-function 1/3] kernel/trace/ftrace.c:7029:6: error: no previous prototype for function 'arch_ftrace_ops_list_func' kernel test robot
2021-10-13 23:33 ` kernel test robot
2021-10-14 17:53 ` Steven Rostedt
2021-10-14 17:53   ` Steven Rostedt
2021-10-14 18:14   ` Gustavo A. R. Silva
2021-10-14 18:14     ` Gustavo A. R. Silva

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.