Message ID | 20240929-libbpf-dup-extern-funcs-v2-0-0cc81de3f79f@hack3r.moe (mailing list archive) |
---|---|
Headers | show |
Series | BPF static linker: fix failure when encountering duplicate extern functions | expand |
On Sun, Sep 29, 2024 at 2:31 AM Eric Long via B4 Relay <devnull+i.hack3r.moe@kernel.org> wrote: > > Currently, if `bpftool gen object` tries to link two objects that > contains the same extern function prototype, libbpf will try to get > their (non-existent) size by calling bpf__resolve_size like extern > variables and fail with: > > libbpf: global 'whatever': failed to resolve size of underlying type: -22 > > This should not be the case, and this series adds conditions to update > size only when the BTF kind is not function. > > Fixes: a46349227cd8 ("libbpf: Add linker extern resolution support for functions and global variables") > Signed-off-by: Eric Long <i@hack3r.moe> > --- > Changes in v2: > - Fix compile errors. Oops! > - Link to v1: https://lore.kernel.org/r/20240929-libbpf-dup-extern-funcs-v1-0-df15fbd6525b@hack3r.moe > > --- > Eric Long (2): > libbpf: do not resolve size on duplicate FUNCs > selftests/bpf: make sure linking objects with duplicate extern functions doesn't fail please shorten second patch's subject and patch set's owb subject as well, they are too long, generally we try to fit them under 80 characters > > tools/lib/bpf/linker.c | 23 ++++++++++++---------- > tools/testing/selftests/bpf/Makefile | 3 ++- > .../selftests/bpf/prog_tests/dup_extern_funcs.c | 9 +++++++++ > .../selftests/bpf/progs/dup_extern_funcs1.c | 20 +++++++++++++++++++ > .../selftests/bpf/progs/dup_extern_funcs2.c | 18 +++++++++++++++++ > 5 files changed, 62 insertions(+), 11 deletions(-) > --- > base-commit: 93eeaab4563cc7fc0309bc1c4d301139762bbd60 > change-id: 20240929-libbpf-dup-extern-funcs-871f4bad2122 > > Best regards, > -- > Eric Long <i@hack3r.moe> > >
Currently, if `bpftool gen object` tries to link two objects that contains the same extern function prototype, libbpf will try to get their (non-existent) size by calling bpf__resolve_size like extern variables and fail with: libbpf: global 'whatever': failed to resolve size of underlying type: -22 This should not be the case, and this series adds conditions to update size only when the BTF kind is not function. Fixes: a46349227cd8 ("libbpf: Add linker extern resolution support for functions and global variables") Signed-off-by: Eric Long <i@hack3r.moe> --- Changes in v2: - Fix compile errors. Oops! - Link to v1: https://lore.kernel.org/r/20240929-libbpf-dup-extern-funcs-v1-0-df15fbd6525b@hack3r.moe --- Eric Long (2): libbpf: do not resolve size on duplicate FUNCs selftests/bpf: make sure linking objects with duplicate extern functions doesn't fail tools/lib/bpf/linker.c | 23 ++++++++++++---------- tools/testing/selftests/bpf/Makefile | 3 ++- .../selftests/bpf/prog_tests/dup_extern_funcs.c | 9 +++++++++ .../selftests/bpf/progs/dup_extern_funcs1.c | 20 +++++++++++++++++++ .../selftests/bpf/progs/dup_extern_funcs2.c | 18 +++++++++++++++++ 5 files changed, 62 insertions(+), 11 deletions(-) --- base-commit: 93eeaab4563cc7fc0309bc1c4d301139762bbd60 change-id: 20240929-libbpf-dup-extern-funcs-871f4bad2122 Best regards,