@@ -37,6 +37,7 @@ static noinline void uprobe_func(void)
37
37
static int verify_perf_link_info (int fd , enum bpf_perf_event_type type , long addr ,
38
38
ssize_t offset , ssize_t entry_offset )
39
39
{
40
+ ssize_t ref_ctr_offset = entry_offset /* ref_ctr_offset for uprobes */ ;
40
41
struct bpf_link_info info ;
41
42
__u32 len = sizeof (info );
42
43
char buf [PATH_MAX ];
@@ -97,6 +98,7 @@ static int verify_perf_link_info(int fd, enum bpf_perf_event_type type, long add
97
98
case BPF_PERF_EVENT_UPROBE :
98
99
case BPF_PERF_EVENT_URETPROBE :
99
100
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" );
100
102
101
103
ASSERT_EQ (info .perf_event .uprobe .name_len , strlen (UPROBE_FILE ) + 1 ,
102
104
"name_len" );
@@ -241,20 +243,32 @@ static void test_uprobe_fill_link_info(struct test_fill_link_info *skel,
241
243
.retprobe = type == BPF_PERF_EVENT_URETPROBE ,
242
244
.bpf_cookie = PERF_EVENT_COOKIE ,
243
245
);
246
+ const char * sema [1 ] = {
247
+ "uprobe_link_info_sema_1" ,
248
+ };
249
+ __u64 * ref_ctr_offset ;
244
250
struct bpf_link * link ;
245
251
int link_fd , err ;
246
252
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 ;
247
259
link = bpf_program__attach_uprobe_opts (skel -> progs .uprobe_run ,
248
260
0 , /* self pid */
249
261
UPROBE_FILE , uprobe_offset ,
250
262
& opts );
251
263
if (!ASSERT_OK_PTR (link , "attach_uprobe" ))
252
- return ;
264
+ goto out ;
253
265
254
266
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 );
256
268
ASSERT_OK (err , "verify_perf_link_info" );
257
269
bpf_link__destroy (link );
270
+ out :
271
+ free (ref_ctr_offset );
258
272
}
259
273
260
274
static int verify_kmulti_link_info (int fd , bool retprobe , bool has_cookies )
0 commit comments