Re: [PATCH] libbpf: fix multi-uprobe attach not working with dynamic symbols

From: Jiri Olsa
Date: Thu Apr 03 2025 - 05:46:16 EST


On Fri, Mar 28, 2025 at 11:14:54AM -0700, Andrii Nakryiko wrote:
> On Thu, Mar 27, 2025 at 3:08 AM Mateusz Bieganski
> <bieganski.gm@xxxxxxxxx> wrote:
> >
> > ENOENT is incorrectly propagated to caller, if requested symbol is
> > present in dynamic linker symbol table and not present in symbol table.
> >
> > Signed-off-by: Mateusz Bieganski <bieganski.gm@xxxxxxxxx>
> > ---
> > tools/lib/bpf/elf.c | 4 +++-
> > 1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/tools/lib/bpf/elf.c b/tools/lib/bpf/elf.c
> > index 823f83ad819c..41839ef5bc97 100644
> > --- a/tools/lib/bpf/elf.c
> > +++ b/tools/lib/bpf/elf.c
> > @@ -439,8 +439,10 @@ int elf_resolve_syms_offsets(const char *binary_path, int cnt,
> > struct elf_sym *sym;
> >
> > err = elf_sym_iter_new(&iter, elf_fd.elf, binary_path, sh_types[i], st_type);
> > - if (err == -ENOENT)
> > + if (err == -ENOENT) {
> > + err = 0;
> > continue;
> > + }
>
> Don't we have the same problem in elf_resolve_pattern_offsets() as
> well? Can you please fix both issues in one go?
>
> It seems it's only elf_find_func_offset() that do want to preserve
> that -ENOENT, all others are just error-prone implementations.

+1, thanks for the fix

jirka

>
> pw-bot: cr
>
> > if (err)
> > goto out;
> >
> > --
> > 2.39.5
> >