Re: [PATCH bpf-next] bpf, vmtest: Build test_progs and friends as statically linked

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
>
>





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux