BPF List
 help / color / mirror / Atom feed
* [PATCH bpf-next] selftests/bpf: Override EXTRA_LDFLAGS for static builds
@ 2026-05-13 11:24 Paul Chaignon
  2026-05-13 15:20 ` Jakub Sitnicki
  2026-05-14  4:23 ` sashiko-bot
  0 siblings, 2 replies; 3+ messages in thread
From: Paul Chaignon @ 2026-05-13 11:24 UTC (permalink / raw)
  To: bpf
  Cc: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko,
	Eduard Zingerman, Kumar Kartikeya Dwivedi, Alexis Lothoré,
	Quentin Monnet

When running vmtest.sh with static linking, the bpftool_map_access
selftests fail. These selftests are calling the bpftool binary in
tools/sbin/ directly, which results in the following error:

    error while loading shared libraries: libLLVM.so.21.1:
      cannot open shared object file: No such file or directory

To fix this, we need to also build bpftool statically. That can be done
by setting EXTRA_LDFLAGS=-static.

Fixes: 2d96bbdfd3b5 ("selftests/bpf: convert test_bpftool_map_access.sh into test_progs framework")
Signed-off-by: Paul Chaignon <paul.chaignon@gmail.com>
---
 tools/testing/selftests/bpf/README.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/testing/selftests/bpf/README.rst b/tools/testing/selftests/bpf/README.rst
index 776fbe3cb8f9..37164322a102 100644
--- a/tools/testing/selftests/bpf/README.rst
+++ b/tools/testing/selftests/bpf/README.rst
@@ -77,7 +77,7 @@ In case of linker errors when running selftests, try using static linking:
 
 .. code-block:: console
 
-  $ LDLIBS=-static PKG_CONFIG='pkg-config --static' vmtest.sh
+  $ LDLIBS=-static EXTRA_LDFLAGS=-static PKG_CONFIG='pkg-config --static' vmtest.sh
 
 .. note:: Some distros may not support static linking.
 
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH bpf-next] selftests/bpf: Override EXTRA_LDFLAGS for static builds
  2026-05-13 11:24 [PATCH bpf-next] selftests/bpf: Override EXTRA_LDFLAGS for static builds Paul Chaignon
@ 2026-05-13 15:20 ` Jakub Sitnicki
  2026-05-14  4:23 ` sashiko-bot
  1 sibling, 0 replies; 3+ messages in thread
From: Jakub Sitnicki @ 2026-05-13 15:20 UTC (permalink / raw)
  To: Paul Chaignon
  Cc: bpf, Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko,
	Eduard Zingerman, Kumar Kartikeya Dwivedi, Alexis Lothoré,
	Quentin Monnet

On Wed, May 13, 2026 at 01:24:37PM +0200, Paul Chaignon wrote:
> When running vmtest.sh with static linking, the bpftool_map_access
> selftests fail. These selftests are calling the bpftool binary in
> tools/sbin/ directly, which results in the following error:
> 
>     error while loading shared libraries: libLLVM.so.21.1:
>       cannot open shared object file: No such file or directory
> 
> To fix this, we need to also build bpftool statically. That can be done
> by setting EXTRA_LDFLAGS=-static.
> 
> Fixes: 2d96bbdfd3b5 ("selftests/bpf: convert test_bpftool_map_access.sh into test_progs framework")
> Signed-off-by: Paul Chaignon <paul.chaignon@gmail.com>
> ---

That seems to do the trick.

Reviewed-by: Jakub Sitnicki <jakub@cloudflare.com>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH bpf-next] selftests/bpf: Override EXTRA_LDFLAGS for static builds
  2026-05-13 11:24 [PATCH bpf-next] selftests/bpf: Override EXTRA_LDFLAGS for static builds Paul Chaignon
  2026-05-13 15:20 ` Jakub Sitnicki
@ 2026-05-14  4:23 ` sashiko-bot
  1 sibling, 0 replies; 3+ messages in thread
From: sashiko-bot @ 2026-05-14  4:23 UTC (permalink / raw)
  To: Paul Chaignon; +Cc: bpf

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] The suggested workaround `EXTRA_LDFLAGS=-static` in README.rst breaks the bpftool build or silently disables LLVM support.
--

commit dcbd0d5d7a0eb4a9300ad0890d83b7e4cdfd3aeb
Author: Paul Chaignon <paul.chaignon@gmail.com>

selftests/bpf: Override EXTRA_LDFLAGS for static builds

This commit updates the README.rst for BPF selftests to include
EXTRA_LDFLAGS=-static when recommending how to statically link,
in order to fix shared library loading errors with libLLVM.so
when running vmtest.sh.

> diff --git a/tools/testing/selftests/bpf/README.rst b/tools/testing/selftests/bpf/README.rst
> index 776fbe3cb8f9b..37164322a1023 100644
> --- a/tools/testing/selftests/bpf/README.rst
> +++ b/tools/testing/selftests/bpf/README.rst
> @@ -77,7 +77,7 @@ In case of linker errors when running selftests, try using static linking:
>  
>  .. code-block:: console
>  
> -  $ LDLIBS=-static PKG_CONFIG='pkg-config --static' vmtest.sh
> +  $ LDLIBS=-static EXTRA_LDFLAGS=-static PKG_CONFIG='pkg-config --static' vmtest.sh

Can adding EXTRA_LDFLAGS=-static break the bpftool build or silently disable
LLVM support?

In the bpftool Makefile, LLVM's --system-libs and -lstdc++ are only appended
to LIBS if llvm-config --shared-mode outputs 'static'. However, the
feature-llvm test in tools/build/feature/Makefile unconditionally includes
--system-libs and uses g++, which automatically includes -lstdc++.

If a system has static LLVM libraries but llvm-config --shared-mode is set
to 'shared' (common on many distros), the feature-llvm test statically links
successfully, but bpftool's Makefile will attempt to build with LLVM support
using gcc -static while omitting --system-libs and -lstdc++. This can cause
the build to fail with undefined references.

Additionally, if static LLVM libraries are entirely absent, the feature test
fails, causing bpftool to silently build without LLVM support.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/714556da329c812988010ffe53173d9152570a78.1778669303.git.paul.chaignon@gmail.com?part=1

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-05-14  4:23 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-13 11:24 [PATCH bpf-next] selftests/bpf: Override EXTRA_LDFLAGS for static builds Paul Chaignon
2026-05-13 15:20 ` Jakub Sitnicki
2026-05-14  4:23 ` sashiko-bot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox