You need to sign in or sign up before continuing.
  • Yonghong Song's avatar
    selftests/bpf: Ignore .llvm.<hash> suffix in kallsyms_find() · 898ac74c
    Yonghong Song authored
    
    
    I hit the following failure when running selftests with
    internal backported upstream kernel:
      test_ksyms:PASS:kallsyms_fopen 0 nsec
      test_ksyms:FAIL:ksym_find symbol 'bpf_link_fops' not found
      #123     ksyms:FAIL
    
    In /proc/kallsyms, we have
      $ cat /proc/kallsyms | grep bpf_link_fops
      ffffffff829f0cb0 d bpf_link_fops.llvm.12608678492448798416
    The CONFIG_LTO_CLANG_THIN is enabled in the kernel which is responsible
    for bpf_link_fops.llvm.12608678492448798416 symbol name.
    
    In prog_tests/ksyms.c we have
      kallsyms_find("bpf_link_fops", &link_fops_addr)
    and kallsyms_find() compares "bpf_link_fops" with symbols
    in /proc/kallsyms in order to find the entry. With
    bpf_link_fops.llvm.<hash> in /proc/kallsyms, the kallsyms_find()
    failed.
    
    To fix the issue, in kallsyms_find(), if a symbol has suffix
    .llvm.<hash>, that suffix will be ignored for comparison.
    This fixed the test failure.
    Signed-off-by: default avatarYonghong Song <yonghong.song@linux.dev>
    Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20240604180034.1356016-1-yonghong.song@linux.dev
    898ac74c
trace_helpers.c 9.14 KB