On Tue, Mar 31, 2026 at 11:15 AM Alexei Starovoitov
<[email protected]> wrote:
>
> On Mon, Mar 30, 2026 at 6:49 PM Hoyeon Lee <[email protected]> wrote:
> >
> > On Tue, Mar 31, 2026 at 9:33 AM Andrii Nakryiko
> > <[email protected]> wrote:
> > >
> > > On Sun, Mar 29, 2026 at 5:44 AM Hoyeon Lee <[email protected]> wrote:
> > > >
> > > > bpf_program__attach_kprobe_opts() currently attaches a single kprobe 
> > > > only
> > > > by func_name, with an optional offset. This covers only the symbol-
> > >
> > > have you tried passing NULL for func_name and specifying absolute
> > > address in opts.offset? Looking at the code I don't see why that won't
> > > work, we don't enforce func_name to be non-NULL
> > >
> > > This NULL will turn into config1 = 0, and offset will be config 2,
> > > which I think is what you want to attach by address, according to
> > > perf_event_open documentation
> > >
> > >                union {
> > >                    __u64 bp_addr;          /* breakpoint address */
> > >                    __u64 kprobe_func;      /* for perf_kprobe */
> > >                    __u64 uprobe_path;      /* for perf_uprobe */
> > >                    __u64 config1;          /* extension of config */
> > >                };
> > >
> > >                union {
> > >                    __u64 bp_len;           /* breakpoint size */
> > >                    __u64 kprobe_addr;      /* with kprobe_func == NULL */
> > >                    __u64 probe_offset;     /* for perf_[k,u]probe */
> > >                    __u64 config2;          /* extension of config1 */
> > >                };
> > >
> > > This is the same approach as with uprobes, btw.
> > >
> > >
> >
> > I tested this after your comment, and you are right. For PMU-based
> > non-legacy attach, func_name = NULL with opts.offset = <raw-address>
> > already works today.
> >
> > However, this does not work for legacy tracefs/debugfs kprobes, because
> > the tracefs event string formatting still expects symbol-based input.
> >
> > So for v3, instead of adding new field to bpf_kprobe_opts(), I'll document
> > that offset can be treated as an absolute address when func_name = NULL,
>
> This is fine.
>
> > and make legacy path support the same raw-address form as well.
>
> but not this. libbpf doesn't need to support legacy interfaces.

Understood. I'll make the legacy kprobe attach API reject func_name =
NULL with offset set to a raw address in v3.

Reply via email to