[PATCH v1] bpf: fix compilation of samples/bpf/

From: Constantine Shulyupin
Date: Sat Jul 07 2018 - 11:23:32 EST


Example of errors:

samples/bpf/test_lru_dist.c:39:8: error: redefinition of âstruct list_headâ
struct list_head {
^~~~~~~~~
In file included from samples/bpf/test_lru_dist.c:9:0:
./tools/include/linux/types.h:69:8: note: originally defined here

In file included from samples/bpf/sock_example.c:27:0:
/usr/include/linux/ip.h:102:2: error: unknown type name â__sum16â

samples/bpf/bpf_load.c: In function âload_and_attachâ:
samples/bpf/bpf_load.c:90:15: error: âBPF_PROG_TYPE_RAW_TRACEPOINTâ undeclared (first use in this function); did you mean âBPF_PROG_TYPE_TRACEPOINTâ?

samples/bpf/xdpsock_user.c:10:10: fatal error: linux/if_xdp.h: No such file or directory

samples/bpf/task_fd_query_user.c: In function âtest_debug_fs_uprobeâ:
samples/bpf/task_fd_query_user.c:270:31: error: âBPF_FD_TYPE_URETPROBEâ undeclared (first use in this function); did you mean âBPF_PROG_TYPE_KPROBEâ?

samples/bpf/parse_varlen.c:111:8: error: redefinition of 'vlan_hdr'
struct vlan_hdr {
^
./include/linux/if_vlan.h:38:8: note: previous definition is here

Signed-off-by: Constantine Shulyupin <const@xxxxxxxxxxxxx>
---
Makefile | 1 +
samples/bpf/Makefile | 5 +++--
samples/bpf/xdp_sample_pkts_user.c | 3 +++
3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index d15ac32afbaf..824006258319 100644
--- a/Makefile
+++ b/Makefile
@@ -441,6 +441,7 @@ export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE
export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE
export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL
export KBUILD_ARFLAGS
+export USERINCLUDE

# When compiling out-of-tree modules, put MODVERDIR in the module
# tree rather than in the kernel tree. The kernel tree might
diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile
index 9ea2f7b64869..991273c81459 100644
--- a/samples/bpf/Makefile
+++ b/samples/bpf/Makefile
@@ -167,11 +167,12 @@ always += xdp_fwd_kern.o
always += task_fd_query_kern.o
always += xdp_sample_pkts_kern.o

-HOSTCFLAGS += -I$(objtree)/usr/include
+HOSTCFLAGS += -D__EXPORTED_HEADERS__ $(USERINCLUDE)
HOSTCFLAGS += -I$(srctree)/tools/lib/
HOSTCFLAGS += -I$(srctree)/tools/testing/selftests/bpf/
-HOSTCFLAGS += -I$(srctree)/tools/lib/ -I$(srctree)/tools/include
+HOSTCFLAGS += -I$(srctree)/tools/include
HOSTCFLAGS += -I$(srctree)/tools/perf
+HOSTCFLAGS += -I./include # for generated/autoconf.h from USERINCLUDE

HOSTCFLAGS_bpf_load.o += -I$(objtree)/usr/include -Wno-unused-variable
HOSTCFLAGS_trace_helpers.o += -I$(srctree)/tools/lib/bpf/
diff --git a/samples/bpf/xdp_sample_pkts_user.c b/samples/bpf/xdp_sample_pkts_user.c
index 8dd87c1eb560..be7329697500 100644
--- a/samples/bpf/xdp_sample_pkts_user.c
+++ b/samples/bpf/xdp_sample_pkts_user.c
@@ -15,6 +15,9 @@

#include "perf-sys.h"
#include "trace_helpers.h"
+#ifndef __packed
+#define __packed __attribute__((packed))
+#endif

#define MAX_CPUS 128
static int pmu_fds[MAX_CPUS], if_idx;
--
2.17.1