mbox series

[bpf-next,v2,0/2] BPF static linker: fix failure when encountering duplicate extern functions

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

Message

Eric Long via B4 Relay Sept. 29, 2024, 9:31 a.m. UTC
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,

Comments

Andrii Nakryiko Sept. 30, 2024, 10:49 p.m. UTC | #1
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>
>
>