On Tue, Feb 18, 2025 at 02:59:22PM -0500, Steven Rostedt wrote:
From: Steven Rostedt <rostedt@goodmis.org>
When a function is annotated as "weak" and is overridden, the code is not
removed. If it is traced, the fentry/mcount location in the weak function
will be referenced by the "__mcount_loc" section. This will then be added
to the available_filter_functions list. Since only the address of the
functions are listed, to find the name to show, a search of kallsyms is
used.
This breaks builds with ftrace on architectures without KASLR, one
affected configuration is bcm2835_defconfig:
/home/broonie/git/bisect/kernel/trace/ftrace.c: In function 'ftrace_process_locs':
/home/broonie/git/bisect/kernel/trace/ftrace.c:7057:24: error: implicit declaration of function 'kaslr_offset' [-Werror=implicit-function-declaration]
7057 | kaslr = !mod ? kaslr_offset() : 0;
| ^~~~~~~~~~~~
since that happens to enable CONFIG_FUNCTION_TRACER but doesn't have
KASLR, we don't have stubs for KASLR on architectures that don't have
it. It also looks like from a quick glance at least RISC-V will fail to
link since it only provides kaslr_offset() with RANDOMIZE_BASE enabled.
This all feels a bit footgunish.