On Fri, Aug 11, 2023 at 02:36:47AM +0000, Yafang Shao wrote: SNIP > +void test_fill_link_info(void) > +{ > + struct test_fill_link_info *skel; > + int i; > + > + skel = test_fill_link_info__open_and_load(); > + if (!ASSERT_OK_PTR(skel, "skel_open")) > + return; > + > + /* load kallsyms to compare the addr */ > + if (!ASSERT_OK(load_kallsyms_refresh(), "load_kallsyms_refresh")) > + goto cleanup; > + > + kprobe_addr = ksym_get_addr(KPROBE_FUNC); > + if (test__start_subtest("kprobe_link_info")) > + test_kprobe_fill_link_info(skel, BPF_PERF_EVENT_KPROBE, false); > + if (test__start_subtest("kretprobe_link_info")) > + test_kprobe_fill_link_info(skel, BPF_PERF_EVENT_KRETPROBE, false); > + if (test__start_subtest("kprobe_invalid_ubuff")) > + test_kprobe_fill_link_info(skel, BPF_PERF_EVENT_KPROBE, true); > + if (test__start_subtest("tracepoint_link_info")) > + test_tp_fill_link_info(skel); > + > + uprobe_offset = get_uprobe_offset(&uprobe_func); > + if (test__start_subtest("uprobe_link_info")) > + test_uprobe_fill_link_info(skel, BPF_PERF_EVENT_UPROBE); > + if (test__start_subtest("uretprobe_link_info")) > + test_uprobe_fill_link_info(skel, BPF_PERF_EVENT_URETPROBE); > + > + qsort(kmulti_syms, KMULTI_CNT, sizeof(kmulti_syms[0]), symbols_cmp_r); hum, what's the reason for sorting the symbols? other than that it looks good to me Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx> jirka > + for (i = 0; i < KMULTI_CNT; i++) > + kmulti_addrs[i] = ksym_get_addr(kmulti_syms[i]); > + if (test__start_subtest("kprobe_multi_link_info")) > + test_kprobe_multi_fill_link_info(skel, false, false); > + if (test__start_subtest("kretprobe_multi_link_info")) > + test_kprobe_multi_fill_link_info(skel, true, false); > + if (test__start_subtest("kprobe_multi_invalid_ubuff")) > + test_kprobe_multi_fill_link_info(skel, true, true); > + > +cleanup: > + test_fill_link_info__destroy(skel); > +} SNIP