lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CADYN=9LxMhccyx6wncjO99am7z+8wNWoMzV3DCSyCdJYktGevg@mail.gmail.com>
Date:   Mon, 21 Nov 2022 11:45:33 +0100
From:   Anders Roxell <anders.roxell@...aro.org>
To:     Björn Töpel <bjorn@...nel.org>
Cc:     "David S. Miller" <davem@...emloft.net>,
        Eric Dumazet <edumazet@...gle.com>,
        Jakub Kicinski <kuba@...nel.org>,
        Paolo Abeni <pabeni@...hat.com>, netdev@...r.kernel.org,
        Björn Töpel <bjorn@...osinc.com>,
        Lina Wang <lina.wang@...iatek.com>,
        linux-kselftest@...r.kernel.org
Subject: Re: [PATCH net-next] selftests: net: Add cross-compilation support
 for BPF programs

On Sat, 19 Nov 2022 at 18:19, Björn Töpel <bjorn@...nel.org> wrote:
>
> From: Björn Töpel <bjorn@...osinc.com>
>
> The selftests/net does not have proper cross-compilation support, and
> does not properly state libbpf as a dependency. Mimic/copy the BPF
> build from selftests/bpf, which has the nice side-effect that libbpf
> is built as well.
>
> Signed-off-by: Björn Töpel <bjorn@...osinc.com>
> ---
> Now that BPF builds are starting to show up in more places
> (selftests/net, and soon selftests/hid), maybe it would be cleaner to
> move parts of the BPF builds to lib.mk?

Yes, since its in tc-testing too.
Maybe thats what we should do already now?

Cheers,
Anders

>
> Björn
> ---
>  tools/testing/selftests/net/bpf/Makefile | 45 +++++++++++++++++++++---
>  1 file changed, 41 insertions(+), 4 deletions(-)
>
> diff --git a/tools/testing/selftests/net/bpf/Makefile b/tools/testing/selftests/net/bpf/Makefile
> index 8ccaf8732eb2..a26cb94354f6 100644
> --- a/tools/testing/selftests/net/bpf/Makefile
> +++ b/tools/testing/selftests/net/bpf/Makefile
> @@ -1,14 +1,51 @@
>  # SPDX-License-Identifier: GPL-2.0
>
>  CLANG ?= clang
> +SCRATCH_DIR := $(OUTPUT)/tools
> +BUILD_DIR := $(SCRATCH_DIR)/build
> +BPFDIR := $(abspath ../../../lib/bpf)
> +APIDIR := $(abspath ../../../include/uapi)
> +
>  CCINCLUDE += -I../../bpf
> -CCINCLUDE += -I../../../../lib
>  CCINCLUDE += -I../../../../../usr/include/
> +CCINCLUDE += -I$(SCRATCH_DIR)/include
> +
> +BPFOBJ := $(BUILD_DIR)/libbpf/libbpf.a
> +
> +MAKE_DIRS := $(BUILD_DIR)/libbpf
> +$(MAKE_DIRS):
> +       mkdir -p $@
>
>  TEST_CUSTOM_PROGS = $(OUTPUT)/bpf/nat6to4.o
>  all: $(TEST_CUSTOM_PROGS)
>
> -$(OUTPUT)/%.o: %.c
> -       $(CLANG) -O2 -target bpf -c $< $(CCINCLUDE) -o $@
> +# Get Clang's default includes on this system, as opposed to those seen by
> +# '-target bpf'. This fixes "missing" files on some architectures/distros,
> +# such as asm/byteorder.h, asm/socket.h, asm/sockios.h, sys/cdefs.h etc.
> +#
> +# Use '-idirafter': Don't interfere with include mechanics except where the
> +# build would have failed anyways.
> +define get_sys_includes
> +$(shell $(1) $(2) -v -E - </dev/null 2>&1 \
> +       | sed -n '/<...> search starts here:/,/End of search list./{ s| \(/.*\)|-idirafter \1|p }') \
> +$(shell $(1) $(2) -dM -E - </dev/null | grep '__riscv_xlen ' | awk '{printf("-D__riscv_xlen=%d -D__BITS_PER_LONG=%d", $$3, $$3)}')
> +endef
> +
> +ifneq ($(CROSS_COMPILE),)
> +CLANG_TARGET_ARCH = --target=$(notdir $(CROSS_COMPILE:%-=%))
> +endif
> +
> +CLANG_SYS_INCLUDES = $(call get_sys_includes,$(CLANG),$(CLANG_TARGET_ARCH))
> +
> +$(TEST_CUSTOM_PROGS): $(BPFOBJ)
> +       $(CLANG) -O2 -target bpf -c $(@:.o=.c) $(CCINCLUDE) $(CLANG_SYS_INCLUDES) -o $@
> +
> +$(BPFOBJ): $(wildcard $(BPFDIR)/*.[ch] $(BPFDIR)/Makefile)                    \
> +          $(APIDIR)/linux/bpf.h                                               \
> +          | $(BUILD_DIR)/libbpf
> +       $(MAKE) $(submake_extras) -C $(BPFDIR) OUTPUT=$(BUILD_DIR)/libbpf/     \
> +                   EXTRA_CFLAGS='-g -O0'                                      \
> +                   DESTDIR=$(SCRATCH_DIR) prefix= all install_headers
> +
> +EXTRA_CLEAN := $(TEST_CUSTOM_PROGS) $(SCRATCH_DIR)
>
> -EXTRA_CLEAN := $(TEST_CUSTOM_PROGS)
>
> base-commit: 8bd8dcc5e47f0f9dc40187c3b8b42d992181eee1
> --
> 2.37.2
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ