On Wed, 7 Aug 2024 15:05:11 -0700 Song Liu <song@xxxxxxxxxx> 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@xxxxxxxxxx> Reviewed-by: Masami Hiramatsu (Google) <mhiramat@xxxxxxxxxx> 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@xxxxxxxxxx/T/#u > > 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@xxxxxxxxxx/T/#u > > 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) <mhiramat@xxxxxxxxxx>