Re: [PATCH v3 0/2] Fix kallsyms with CONFIG_LTO_CLANG
From: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Date: 2024-08-13 04:29:13
Also in:
live-patching, lkml
On Wed, 7 Aug 2024 15:05:11 -0700 Song Liu [off-list ref] wrote:
With CONFIG_LTO_CLANG, the compiler/linker adds .llvm.<hash> suffix to local symbols to avoid duplications. Existing scripts/kallsyms sorts symbols without .llvm.<hash> suffix. However, this causes quite some issues later on. Some users of kallsyms, such as livepatch, have to match symbols exactly. Address this by sorting full symbols at build time, and let kallsyms lookup APIs to match the symbols exactly.
I've tested this series and confirmed it makes kprobes work with llvm suffixed symbols. /sys/kernel/tracing # echo "p c_start.llvm.8011538628216713357" >> kprobe_events /sys/kernel/tracing # cat kprobe_events p:kprobes/p_c_start_llvm_8011538628216713357_0 c_start.llvm.8011538628216713357 /sys/kernel/tracing # echo "p c_start" >> kprobe_events /sys/kernel/tracing # cat kprobe_events p:kprobes/p_c_start_llvm_8011538628216713357_0 c_start.llvm.8011538628216713357 p:kprobes/p_c_start_0 c_start And ftrace too. /sys/kernel/tracing # grep ^c_start available_filter_functions c_start.llvm.8011538628216713357 c_start c_start.llvm.17132674095431275852 Tested-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> for this series.
Changes v2 => v3: 1. Remove the _without_suffix APIs, as kprobe will not use them. (Masami Hiramatsu) v2: https://lore.kernel.org/live-patching/20240802210836.2210140-1-song@kernel.org/T/#u (local) Changes v1 => v2: 1. Update the APIs to remove all .XXX suffixes (v1 only removes .llvm.*). 2. Rename the APIs as *_without_suffix. (Masami Hiramatsu) 3. Fix another user from kprobe. (Masami Hiramatsu) 4. Add tests for the new APIs in kallsyms_selftests. v1: https://lore.kernel.org/live-patching/20240730005433.3559731-1-song@kernel.org/T/#u (local) Song Liu (2): kallsyms: Do not cleanup .llvm.<hash> suffix before sorting symbols kallsyms: Match symbols exactly with CONFIG_LTO_CLANG kernel/kallsyms.c | 55 +++++--------------------------------- kernel/kallsyms_selftest.c | 22 +-------------- scripts/kallsyms.c | 31 ++------------------- scripts/link-vmlinux.sh | 4 --- 4 files changed, 9 insertions(+), 103 deletions(-) -- 2.43.5
-- Masami Hiramatsu (Google) [off-list ref]