On Fri, May 26, 2023 at 3:47 PM Daniel Borkmann <daniel@xxxxxxxxxxxxx> wrote: > > Small fix for vmtest.sh that I've been carrying locally for quite a while > now in order to work around the following linker issue: > > # ./vmtest.sh -- ./test_progs -t lsm > [...] > + ip link set lo up > + [ -x /etc/rcS.d/S50-startup ] > + /etc/rcS.d/S50-startup > ./test_progs -t lsm > ./test_progs: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by ./test_progs) > ./test_progs: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./test_progs) > [ 1.356497] ACPI: PM: Preparing to enter system sleep state S5 > [ 1.358950] reboot: Power down > [...] > > With the specified TRUNNER_LDFLAGS out of vmtest to force static linking > runners like test_progs/test_maps/etc work just fine. > Should we make this a command line option to the vmtest.sh script instead? I, for one, can't even successfully build on my machine with this, probably due to missing some -static library package (though I did install libzstd-static). I'm getting: make: *** [Makefile:598: /data/users/andriin/linux/tools/testing/selftests/bpf/test_maps] Error 1 make: *** Waiting for unfinished jobs.... /opt/rh/gcc-toolset-11/root/usr/bin/ld: /lib/../lib64/libelf.a(elf_compress.o): in function `__libelf_compress': (.text[.text.group]+0x2c1): undefined reference to `ZSTD_createCCtx' /opt/rh/gcc-toolset-11/root/usr/bin/ld: (.text[.text.group]+0x436): undefined reference to `ZSTD_compressStream2' /opt/rh/gcc-toolset-11/root/usr/bin/ld: (.text[.text.group]+0x441): undefined reference to `ZSTD_isError' /opt/rh/gcc-toolset-11/root/usr/bin/ld: (.text[.text.group]+0x468): undefined reference to `ZSTD_freeCCtx' /opt/rh/gcc-toolset-11/root/usr/bin/ld: (.text[.text.group]+0x626): undefined reference to `ZSTD_freeCCtx' /opt/rh/gcc-toolset-11/root/usr/bin/ld: (.text[.text.group]+0x6a1): undefined reference to `ZSTD_freeCCtx' /opt/rh/gcc-toolset-11/root/usr/bin/ld: (.text[.text.group]+0x6d1): undefined reference to `ZSTD_freeCCtx' /opt/rh/gcc-toolset-11/root/usr/bin/ld: (.text[.text.group]+0x6fd): undefined reference to `ZSTD_freeCCtx' /opt/rh/gcc-toolset-11/root/usr/bin/ld: /lib/../lib64/libelf.a(elf_compress.o):(.text[.text.group]+0x771): more undefined references to `ZSTD_freeCCtx' follow /opt/rh/gcc-toolset-11/root/usr/bin/ld: /lib/../lib64/libelf.a(elf_compress.o): in function `__libelf_decompress': (.text[.text.group]+0xa42): undefined reference to `ZSTD_decompress' > Signed-off-by: Daniel Borkmann <daniel@xxxxxxxxxxxxx> > --- > tools/testing/selftests/bpf/Makefile | 2 +- > tools/testing/selftests/bpf/vmtest.sh | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile > index cd2426cca3d0..4005d001f46c 100644 > --- a/tools/testing/selftests/bpf/Makefile > +++ b/tools/testing/selftests/bpf/Makefile > @@ -547,7 +547,7 @@ $(OUTPUT)/$(TRUNNER_BINARY): $(TRUNNER_TEST_OBJS) \ > $(TRUNNER_BPFTOOL) \ > | $(TRUNNER_BINARY)-extras > $$(call msg,BINARY,,$$@) > - $(Q)$$(CC) $$(CFLAGS) $$(filter %.a %.o,$$^) $$(LDLIBS) -o $$@ > + $(Q)$$(CC) $$(CFLAGS) $(TRUNNER_LDFLAGS) $$(filter %.a %.o,$$^) $$(LDLIBS) -o $$@ > $(Q)$(RESOLVE_BTFIDS) --btf $(TRUNNER_OUTPUT)/btf_data.bpf.o $$@ > $(Q)ln -sf $(if $2,..,.)/tools/build/bpftool/$(USE_BOOTSTRAP)bpftool \ > $(OUTPUT)/$(if $2,$2/)bpftool > diff --git a/tools/testing/selftests/bpf/vmtest.sh b/tools/testing/selftests/bpf/vmtest.sh > index 685034528018..455518745cf9 100755 > --- a/tools/testing/selftests/bpf/vmtest.sh > +++ b/tools/testing/selftests/bpf/vmtest.sh > @@ -160,7 +160,7 @@ update_selftests() > local selftests_dir="${kernel_checkout}/tools/testing/selftests/bpf" > > cd "${selftests_dir}" > - ${make_command} > + TRUNNER_LDFLAGS=-static ${make_command} > > # Mount the image and copy the selftests to the image. > mount_image > -- > 2.21.0 > >