@@ -37,6 +37,7 @@ static noinline void uprobe_func(void)
3737static int verify_perf_link_info (int fd , enum bpf_perf_event_type type , long addr ,
3838 ssize_t offset , ssize_t entry_offset )
3939{
40+ ssize_t ref_ctr_offset = entry_offset /* ref_ctr_offset for uprobes */ ;
4041 struct bpf_link_info info ;
4142 __u32 len = sizeof (info );
4243 char buf [PATH_MAX ];
@@ -97,6 +98,7 @@ static int verify_perf_link_info(int fd, enum bpf_perf_event_type type, long add
9798 case BPF_PERF_EVENT_UPROBE :
9899 case BPF_PERF_EVENT_URETPROBE :
99100 ASSERT_EQ (info .perf_event .uprobe .offset , offset , "uprobe_offset" );
101+ ASSERT_EQ (info .perf_event .uprobe .ref_ctr_offset , ref_ctr_offset , "uprobe_ref_ctr_offset" );
100102
101103 ASSERT_EQ (info .perf_event .uprobe .name_len , strlen (UPROBE_FILE ) + 1 ,
102104 "name_len" );
@@ -241,20 +243,32 @@ static void test_uprobe_fill_link_info(struct test_fill_link_info *skel,
241243 .retprobe = type == BPF_PERF_EVENT_URETPROBE ,
242244 .bpf_cookie = PERF_EVENT_COOKIE ,
243245 );
246+ const char * sema [1 ] = {
247+ "uprobe_link_info_sema_1" ,
248+ };
249+ __u64 * ref_ctr_offset ;
244250 struct bpf_link * link ;
245251 int link_fd , err ;
246252
253+ err = elf_resolve_syms_offsets ("/proc/self/exe" , 1 , sema ,
254+ (unsigned long * * ) & ref_ctr_offset , STT_OBJECT );
255+ if (!ASSERT_OK (err , "elf_resolve_syms_offsets_object" ))
256+ return ;
257+
258+ opts .ref_ctr_offset = * ref_ctr_offset ;
247259 link = bpf_program__attach_uprobe_opts (skel -> progs .uprobe_run ,
248260 0 , /* self pid */
249261 UPROBE_FILE , uprobe_offset ,
250262 & opts );
251263 if (!ASSERT_OK_PTR (link , "attach_uprobe" ))
252- return ;
264+ goto out ;
253265
254266 link_fd = bpf_link__fd (link );
255- err = verify_perf_link_info (link_fd , type , 0 , uprobe_offset , 0 );
267+ err = verify_perf_link_info (link_fd , type , 0 , uprobe_offset , * ref_ctr_offset );
256268 ASSERT_OK (err , "verify_perf_link_info" );
257269 bpf_link__destroy (link );
270+ out :
271+ free (ref_ctr_offset );
258272}
259273
260274static int verify_kmulti_link_info (int fd , bool retprobe , bool has_cookies )
0 commit comments