include/linux/ftrace.h:138:9: error: call to undeclared function 'arch_ftrace_get_regs'; ISO C99 and later do not support implicit function declarations

From: kernel test robot
Date: Sat Oct 12 2024 - 00:41:05 EST


Hi Puranjay,

FYI, the error/warning still remains.

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 09f6b0c8904bfaa1e0601bc102e1b6aa6de8c98f
commit: 7caa9765465f60b6d88e22264892cee12d971888 ftrace: riscv: move from REGS to ARGS
date: 5 months ago
config: riscv-randconfig-r053-20241012 (https://download.01.org/0day-ci/archive/20241012/202410121234.0HjqU4Ie-lkp@xxxxxxxxx/config)
compiler: clang version 20.0.0git (https://github.com/llvm/llvm-project 70e0a7e7e6a8541bcc46908c592eed561850e416)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241012/202410121234.0HjqU4Ie-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202410121234.0HjqU4Ie-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

In file included from arch/riscv/kernel/asm-offsets.c:10:
In file included from include/linux/mm.h:2253:
include/linux/vmstat.h:514:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
514 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
In file included from arch/riscv/kernel/asm-offsets.c:12:
>> include/linux/ftrace.h:138:9: error: call to undeclared function 'arch_ftrace_get_regs'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
138 | return arch_ftrace_get_regs(fregs);
| ^
include/linux/ftrace.h:138:9: note: did you mean 'ftrace_get_regs'?
include/linux/ftrace.h:133:40: note: 'ftrace_get_regs' declared here
133 | static __always_inline struct pt_regs *ftrace_get_regs(struct ftrace_regs *fregs)
| ^
134 | {
135 | if (!fregs)
136 | return NULL;
137 |
138 | return arch_ftrace_get_regs(fregs);
| ~~~~~~~~~~~~~~~~~~~~
| ftrace_get_regs
>> include/linux/ftrace.h:138:9: error: incompatible integer to pointer conversion returning 'int' from a function with result type 'struct pt_regs *' [-Wint-conversion]
138 | return arch_ftrace_get_regs(fregs);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning and 2 errors generated.
make[3]: *** [scripts/Makefile.build:117: arch/riscv/kernel/asm-offsets.s] Error 1
make[3]: Target 'prepare' not remade because of errors.
make[2]: *** [Makefile:1203: prepare0] Error 2
make[2]: Target 'prepare' not remade because of errors.
make[1]: *** [Makefile:240: __sub-make] Error 2
make[1]: Target 'prepare' not remade because of errors.
make: *** [Makefile:240: __sub-make] Error 2
make: Target 'prepare' not remade because of errors.


vim +/arch_ftrace_get_regs +138 include/linux/ftrace.h

d19ad0775dcd64 Steven Rostedt (VMware 2020-10-28 132)
d19ad0775dcd64 Steven Rostedt (VMware 2020-10-28 133) static __always_inline struct pt_regs *ftrace_get_regs(struct ftrace_regs *fregs)
d19ad0775dcd64 Steven Rostedt (VMware 2020-10-28 134) {
d19ad0775dcd64 Steven Rostedt (VMware 2020-10-28 135) if (!fregs)
d19ad0775dcd64 Steven Rostedt (VMware 2020-10-28 136) return NULL;
d19ad0775dcd64 Steven Rostedt (VMware 2020-10-28 137)
02a474ca266a47 Steven Rostedt (VMware 2020-10-27 @138) return arch_ftrace_get_regs(fregs);
d19ad0775dcd64 Steven Rostedt (VMware 2020-10-28 139) }
d19ad0775dcd64 Steven Rostedt (VMware 2020-10-28 140)

:::::: The code at line 138 was first introduced by commit
:::::: 02a474ca266a47ea8f4d5a11f4ffa120f83730ad ftrace/x86: Allow for arguments to be passed in to ftrace_regs by default

:::::: TO: Steven Rostedt (VMware) <rostedt@xxxxxxxxxxx>
:::::: CC: Steven Rostedt (VMware) <rostedt@xxxxxxxxxxx>

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki