Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1d827879 authored by Alexei Starovoitov's avatar Alexei Starovoitov
Browse files

Merge branch 'fix-samples'



Jakub Kicinski says:

====================
Following patches address build issues after recent move to libbpf.
For out-of-tree builds we would see the following error:

gcc: error: samples/bpf/../../tools/lib/bpf/libbpf.a: No such file or directory

libbpf build system is now always invoked explicitly rather than
relying on building single objects most of the time.  We need to
resolve the friction between Kbuild and tools/ build system.

Mini-library called libbpf.h in samples is renamed to bpf_insn.h,
using linux/filter.h seems not completely trivial since some samples
get upset when order on include search path in changed.  We do have
to rename libbpf.h, however, because otherwise it's hard to reliably
get to libbpf's header in out-of-tree builds.

v2:
 - fix the build error harder (patch 3);
 - add patch 5 (make clang less noisy).
====================

Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parents fb40c9dd 768759ed
Loading
Loading
Loading
Loading
+65 −100
Original line number Original line Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
# SPDX-License-Identifier: GPL-2.0

BPF_SAMPLES_PATH ?= $(abspath $(srctree)/$(src))
TOOLS_PATH := $(BPF_SAMPLES_PATH)/../../tools

# List of programs to build
# List of programs to build
hostprogs-y := test_lru_dist
hostprogs-y := test_lru_dist
hostprogs-y += sock_example
hostprogs-y += sock_example
@@ -49,59 +53,58 @@ hostprogs-y += xdpsock
hostprogs-y += xdp_fwd
hostprogs-y += xdp_fwd


# Libbpf dependencies
# Libbpf dependencies
LIBBPF := ../../tools/lib/bpf/libbpf.a
LIBBPF = $(TOOLS_PATH)/lib/bpf/libbpf.a

CGROUP_HELPERS := ../../tools/testing/selftests/bpf/cgroup_helpers.o
CGROUP_HELPERS := ../../tools/testing/selftests/bpf/cgroup_helpers.o
TRACE_HELPERS := ../../tools/testing/selftests/bpf/trace_helpers.o
TRACE_HELPERS := ../../tools/testing/selftests/bpf/trace_helpers.o


test_lru_dist-objs := test_lru_dist.o $(LIBBPF)
fds_example-objs := bpf_load.o fds_example.o
sock_example-objs := sock_example.o $(LIBBPF)
sockex1-objs := bpf_load.o sockex1_user.o
fds_example-objs := bpf_load.o $(LIBBPF) fds_example.o
sockex2-objs := bpf_load.o sockex2_user.o
sockex1-objs := bpf_load.o $(LIBBPF) sockex1_user.o
sockex3-objs := bpf_load.o sockex3_user.o
sockex2-objs := bpf_load.o $(LIBBPF) sockex2_user.o
tracex1-objs := bpf_load.o tracex1_user.o
sockex3-objs := bpf_load.o $(LIBBPF) sockex3_user.o
tracex2-objs := bpf_load.o tracex2_user.o
tracex1-objs := bpf_load.o $(LIBBPF) tracex1_user.o
tracex3-objs := bpf_load.o tracex3_user.o
tracex2-objs := bpf_load.o $(LIBBPF) tracex2_user.o
tracex4-objs := bpf_load.o tracex4_user.o
tracex3-objs := bpf_load.o $(LIBBPF) tracex3_user.o
tracex5-objs := bpf_load.o tracex5_user.o
tracex4-objs := bpf_load.o $(LIBBPF) tracex4_user.o
tracex6-objs := bpf_load.o tracex6_user.o
tracex5-objs := bpf_load.o $(LIBBPF) tracex5_user.o
tracex7-objs := bpf_load.o tracex7_user.o
tracex6-objs := bpf_load.o $(LIBBPF) tracex6_user.o
load_sock_ops-objs := bpf_load.o load_sock_ops.o
tracex7-objs := bpf_load.o $(LIBBPF) tracex7_user.o
test_probe_write_user-objs := bpf_load.o test_probe_write_user_user.o
load_sock_ops-objs := bpf_load.o $(LIBBPF) load_sock_ops.o
trace_output-objs := bpf_load.o trace_output_user.o $(TRACE_HELPERS)
test_probe_write_user-objs := bpf_load.o $(LIBBPF) test_probe_write_user_user.o
lathist-objs := bpf_load.o lathist_user.o
trace_output-objs := bpf_load.o $(LIBBPF) trace_output_user.o $(TRACE_HELPERS)
offwaketime-objs := bpf_load.o offwaketime_user.o $(TRACE_HELPERS)
lathist-objs := bpf_load.o $(LIBBPF) lathist_user.o
spintest-objs := bpf_load.o spintest_user.o $(TRACE_HELPERS)
offwaketime-objs := bpf_load.o $(LIBBPF) offwaketime_user.o $(TRACE_HELPERS)
map_perf_test-objs := bpf_load.o map_perf_test_user.o
spintest-objs := bpf_load.o $(LIBBPF) spintest_user.o $(TRACE_HELPERS)
test_overhead-objs := bpf_load.o test_overhead_user.o
map_perf_test-objs := bpf_load.o $(LIBBPF) map_perf_test_user.o
test_cgrp2_array_pin-objs := test_cgrp2_array_pin.o
test_overhead-objs := bpf_load.o $(LIBBPF) test_overhead_user.o
test_cgrp2_attach-objs := test_cgrp2_attach.o
test_cgrp2_array_pin-objs := test_cgrp2_array_pin.o $(LIBBPF)
test_cgrp2_attach2-objs := test_cgrp2_attach2.o $(CGROUP_HELPERS)
test_cgrp2_attach-objs := test_cgrp2_attach.o $(LIBBPF)
test_cgrp2_sock-objs := test_cgrp2_sock.o
test_cgrp2_attach2-objs := test_cgrp2_attach2.o $(LIBBPF) $(CGROUP_HELPERS)
test_cgrp2_sock2-objs := bpf_load.o test_cgrp2_sock2.o
test_cgrp2_sock-objs := test_cgrp2_sock.o $(LIBBPF)
xdp1-objs := xdp1_user.o
test_cgrp2_sock2-objs := bpf_load.o $(LIBBPF) test_cgrp2_sock2.o
xdp1-objs := xdp1_user.o $(LIBBPF)
# reuse xdp1 source intentionally
# reuse xdp1 source intentionally
xdp2-objs := xdp1_user.o $(LIBBPF)
xdp2-objs := xdp1_user.o
xdp_router_ipv4-objs := bpf_load.o $(LIBBPF) xdp_router_ipv4_user.o
xdp_router_ipv4-objs := bpf_load.o xdp_router_ipv4_user.o
test_current_task_under_cgroup-objs := bpf_load.o $(LIBBPF) $(CGROUP_HELPERS) \
test_current_task_under_cgroup-objs := bpf_load.o $(CGROUP_HELPERS) \
				       test_current_task_under_cgroup_user.o
				       test_current_task_under_cgroup_user.o
trace_event-objs := bpf_load.o $(LIBBPF) trace_event_user.o $(TRACE_HELPERS)
trace_event-objs := bpf_load.o trace_event_user.o $(TRACE_HELPERS)
sampleip-objs := bpf_load.o $(LIBBPF) sampleip_user.o $(TRACE_HELPERS)
sampleip-objs := bpf_load.o sampleip_user.o $(TRACE_HELPERS)
tc_l2_redirect-objs := bpf_load.o $(LIBBPF) tc_l2_redirect_user.o
tc_l2_redirect-objs := bpf_load.o tc_l2_redirect_user.o
lwt_len_hist-objs := bpf_load.o $(LIBBPF) lwt_len_hist_user.o
lwt_len_hist-objs := bpf_load.o lwt_len_hist_user.o
xdp_tx_iptunnel-objs := bpf_load.o $(LIBBPF) xdp_tx_iptunnel_user.o
xdp_tx_iptunnel-objs := bpf_load.o xdp_tx_iptunnel_user.o
test_map_in_map-objs := bpf_load.o $(LIBBPF) test_map_in_map_user.o
test_map_in_map-objs := bpf_load.o test_map_in_map_user.o
per_socket_stats_example-objs := cookie_uid_helper_example.o $(LIBBPF)
per_socket_stats_example-objs := cookie_uid_helper_example.o
xdp_redirect-objs := bpf_load.o $(LIBBPF) xdp_redirect_user.o
xdp_redirect-objs := bpf_load.o xdp_redirect_user.o
xdp_redirect_map-objs := bpf_load.o $(LIBBPF) xdp_redirect_map_user.o
xdp_redirect_map-objs := bpf_load.o xdp_redirect_map_user.o
xdp_redirect_cpu-objs := bpf_load.o $(LIBBPF) xdp_redirect_cpu_user.o
xdp_redirect_cpu-objs := bpf_load.o xdp_redirect_cpu_user.o
xdp_monitor-objs := bpf_load.o $(LIBBPF) xdp_monitor_user.o
xdp_monitor-objs := bpf_load.o xdp_monitor_user.o
xdp_rxq_info-objs := xdp_rxq_info_user.o $(LIBBPF)
xdp_rxq_info-objs := xdp_rxq_info_user.o
syscall_tp-objs := bpf_load.o $(LIBBPF) syscall_tp_user.o
syscall_tp-objs := bpf_load.o syscall_tp_user.o
cpustat-objs := bpf_load.o $(LIBBPF) cpustat_user.o
cpustat-objs := bpf_load.o cpustat_user.o
xdp_adjust_tail-objs := xdp_adjust_tail_user.o $(LIBBPF)
xdp_adjust_tail-objs := xdp_adjust_tail_user.o
xdpsock-objs := bpf_load.o $(LIBBPF) xdpsock_user.o
xdpsock-objs := bpf_load.o xdpsock_user.o
xdp_fwd-objs := bpf_load.o $(LIBBPF) xdp_fwd_user.o
xdp_fwd-objs := bpf_load.o xdp_fwd_user.o


# Tell kbuild to always build the programs
# Tell kbuild to always build the programs
always := $(hostprogs-y)
always := $(hostprogs-y)
@@ -173,53 +176,12 @@ HOSTCFLAGS_spintest_user.o += -I$(srctree)/tools/lib/bpf/
HOSTCFLAGS_trace_event_user.o += -I$(srctree)/tools/lib/bpf/
HOSTCFLAGS_trace_event_user.o += -I$(srctree)/tools/lib/bpf/
HOSTCFLAGS_sampleip_user.o += -I$(srctree)/tools/lib/bpf/
HOSTCFLAGS_sampleip_user.o += -I$(srctree)/tools/lib/bpf/


HOSTLOADLIBES_test_lru_dist += -lelf
HOST_LOADLIBES		+= $(LIBBPF) -lelf
HOSTLOADLIBES_sock_example += -lelf
HOSTLOADLIBES_tracex4		+= -lrt
HOSTLOADLIBES_fds_example += -lelf
HOSTLOADLIBES_trace_output	+= -lrt
HOSTLOADLIBES_sockex1 += -lelf
HOSTLOADLIBES_map_perf_test	+= -lrt
HOSTLOADLIBES_sockex2 += -lelf
HOSTLOADLIBES_test_overhead	+= -lrt
HOSTLOADLIBES_sockex3 += -lelf
HOSTLOADLIBES_xdpsock		+= -pthread
HOSTLOADLIBES_tracex1 += -lelf
HOSTLOADLIBES_tracex2 += -lelf
HOSTLOADLIBES_tracex3 += -lelf
HOSTLOADLIBES_tracex4 += -lelf -lrt
HOSTLOADLIBES_tracex5 += -lelf
HOSTLOADLIBES_tracex6 += -lelf
HOSTLOADLIBES_tracex7 += -lelf
HOSTLOADLIBES_test_cgrp2_array_pin += -lelf
HOSTLOADLIBES_test_cgrp2_attach += -lelf
HOSTLOADLIBES_test_cgrp2_attach2 += -lelf
HOSTLOADLIBES_test_cgrp2_sock += -lelf
HOSTLOADLIBES_test_cgrp2_sock2 += -lelf
HOSTLOADLIBES_load_sock_ops += -lelf
HOSTLOADLIBES_test_probe_write_user += -lelf
HOSTLOADLIBES_trace_output += -lelf -lrt
HOSTLOADLIBES_lathist += -lelf
HOSTLOADLIBES_offwaketime += -lelf
HOSTLOADLIBES_spintest += -lelf
HOSTLOADLIBES_map_perf_test += -lelf -lrt
HOSTLOADLIBES_test_overhead += -lelf -lrt
HOSTLOADLIBES_xdp1 += -lelf
HOSTLOADLIBES_xdp2 += -lelf
HOSTLOADLIBES_xdp_router_ipv4 += -lelf
HOSTLOADLIBES_test_current_task_under_cgroup += -lelf
HOSTLOADLIBES_trace_event += -lelf
HOSTLOADLIBES_sampleip += -lelf
HOSTLOADLIBES_tc_l2_redirect += -l elf
HOSTLOADLIBES_lwt_len_hist += -l elf
HOSTLOADLIBES_xdp_tx_iptunnel += -lelf
HOSTLOADLIBES_test_map_in_map += -lelf
HOSTLOADLIBES_per_socket_stats_example += -lelf
HOSTLOADLIBES_xdp_redirect += -lelf
HOSTLOADLIBES_xdp_redirect_map += -lelf
HOSTLOADLIBES_xdp_redirect_cpu += -lelf
HOSTLOADLIBES_xdp_monitor += -lelf
HOSTLOADLIBES_xdp_rxq_info += -lelf
HOSTLOADLIBES_syscall_tp += -lelf
HOSTLOADLIBES_cpustat += -lelf
HOSTLOADLIBES_xdp_adjust_tail += -lelf
HOSTLOADLIBES_xdpsock += -lelf -pthread
HOSTLOADLIBES_xdp_fwd += -lelf


# Allows pointing LLC/CLANG to a LLVM backend with bpf support, redefine on cmdline:
# Allows pointing LLC/CLANG to a LLVM backend with bpf support, redefine on cmdline:
#  make samples/bpf/ LLC=~/git/llvm/build/bin/llc CLANG=~/git/llvm/build/bin/clang
#  make samples/bpf/ LLC=~/git/llvm/build/bin/llc CLANG=~/git/llvm/build/bin/clang
@@ -233,15 +195,16 @@ CLANG_ARCH_ARGS = -target $(ARCH)
endif
endif


# Trick to allow make to be run from this directory
# Trick to allow make to be run from this directory
all: $(LIBBPF)
all:
	$(MAKE) -C ../../ $(CURDIR)/
	$(MAKE) -C ../../ $(CURDIR)/ BPF_SAMPLES_PATH=$(CURDIR)


clean:
clean:
	$(MAKE) -C ../../ M=$(CURDIR) clean
	$(MAKE) -C ../../ M=$(CURDIR) clean
	@rm -f *~
	@rm -f *~


$(LIBBPF): FORCE
$(LIBBPF): FORCE
	$(MAKE) -C $(dir $@)
# Fix up variables inherited from Kbuild that tools/ build system won't like
	$(MAKE) -C $(dir $@) RM='rm -rf' LDFLAGS= srctree=$(BPF_SAMPLES_PATH)/../../ O=


$(obj)/syscall_nrs.s:	$(src)/syscall_nrs.c
$(obj)/syscall_nrs.s:	$(src)/syscall_nrs.c
	$(call if_changed_dep,cc_s_c)
	$(call if_changed_dep,cc_s_c)
@@ -272,7 +235,8 @@ verify_target_bpf: verify_cmds
		exit 2; \
		exit 2; \
	else true; fi
	else true; fi


$(src)/*.c: verify_target_bpf
$(BPF_SAMPLES_PATH)/*.c: verify_target_bpf $(LIBBPF)
$(src)/*.c: verify_target_bpf $(LIBBPF)


$(obj)/tracex5_kern.o: $(obj)/syscall_nrs.h
$(obj)/tracex5_kern.o: $(obj)/syscall_nrs.h


@@ -280,7 +244,8 @@ $(obj)/tracex5_kern.o: $(obj)/syscall_nrs.h
# But, there is no easy way to fix it, so just exclude it since it is
# But, there is no easy way to fix it, so just exclude it since it is
# useless for BPF samples.
# useless for BPF samples.
$(obj)/%.o: $(src)/%.c
$(obj)/%.o: $(src)/%.c
	$(CLANG) $(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(EXTRA_CFLAGS) -I$(obj) \
	@echo "  CLANG-bpf " $@
	$(Q)$(CLANG) $(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(EXTRA_CFLAGS) -I$(obj) \
		-I$(srctree)/tools/testing/selftests/bpf/ \
		-I$(srctree)/tools/testing/selftests/bpf/ \
		-D__KERNEL__ -Wno-unused-value -Wno-pointer-sign \
		-D__KERNEL__ -Wno-unused-value -Wno-pointer-sign \
		-D__TARGET_ARCH_$(ARCH) -Wno-compare-distinct-pointer-types \
		-D__TARGET_ARCH_$(ARCH) -Wno-compare-distinct-pointer-types \
+3 −5
Original line number Original line Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0 */
/* SPDX-License-Identifier: GPL-2.0 */
/* eBPF mini library */
/* eBPF instruction mini library */
#ifndef __LIBBPF_H
#ifndef __BPF_INSN_H
#define __LIBBPF_H
#define __BPF_INSN_H

#include <bpf/bpf.h>


struct bpf_insn;
struct bpf_insn;


+1 −1
Original line number Original line Diff line number Diff line
@@ -24,7 +24,7 @@
#include <poll.h>
#include <poll.h>
#include <ctype.h>
#include <ctype.h>
#include <assert.h>
#include <assert.h>
#include "libbpf.h"
#include <bpf/bpf.h>
#include "bpf_load.h"
#include "bpf_load.h"
#include "perf-sys.h"
#include "perf-sys.h"


+1 −1
Original line number Original line Diff line number Diff line
@@ -2,7 +2,7 @@
#ifndef __BPF_LOAD_H
#ifndef __BPF_LOAD_H
#define __BPF_LOAD_H
#define __BPF_LOAD_H


#include "libbpf.h"
#include <bpf/bpf.h>


#define MAX_MAPS 32
#define MAX_MAPS 32
#define MAX_PROGS 32
#define MAX_PROGS 32
+1 −1
Original line number Original line Diff line number Diff line
@@ -51,7 +51,7 @@
#include <sys/types.h>
#include <sys/types.h>
#include <unistd.h>
#include <unistd.h>
#include <bpf/bpf.h>
#include <bpf/bpf.h>
#include "libbpf.h"
#include "bpf_insn.h"


#define PORT 8888
#define PORT 8888


Loading