On 07/12, Zeng, Oak wrote:
Hello all,
I tried to build the latest samples/bpf following instructions in the
README.rst in samples/bpf folder. I ran into various issue such as:
samples/bpf/Makefile:375: *** Cannot find a vmlinux for VMLINUX_BTF at
any of " /home/szeng/dii-tools/linux/vmlinux", build the kernel or set
VMLINUX_BTF or VMLINUX_H variable
I was able to fix above issue by enable CONFIG_DEBUG_INFO_BTF in
kernel .config file.
But I eventually ran into other errors. I had to fix those errors by
install dwarves, updating my clang/llvm to version 10.
I was able to build it if I comment out all the xdp programs from
Makefile. It seems those xdp programs require advanced features such as
data structure layout in vmlinux.h (dumped from vmlinux using bpftool)
and this require special kernel config support.
So I thought instead of fixing those errors one by one, I should ask
those who are working in this area, is there any instructions on how to
build samples/bpf? The README.rst seems out-of-date, for example, it
doesn't mention CONFIG_DEBUG_INFO_BTF. The required llvm/clang version in
README.rst is also out-of-date.
More specifically, to build samples/bpf, is there an example
kernel .config to use? I tried those config here
https://github.com/torvalds/linux/blob/master/tools/testing/selftests/bpf/config
but build errors persist.
Or is there any other tools I need to install/update on my system?
In general, I'd say, samples/bpf tend to go stale. We mostly work on
the selftests and don't pay too much attention to the samples :-(
Ideally, the samples should be part of selftests so they get
exercised by the CI.
One thing I can suggest is to look at tools/testing/selftests/bpf/vmtest.sh
script. It builds the kernels with vetted configs capable of running
selftests. That should be, in theory, be enough to compile the samples.
My whole build log is as below:
szeng@linux:~/dii-tools/linux$ make M=samples/bpf
readelf: Error: Missing knowledge of 32-bit reloc types used in DWARF
sections of machine number 247
readelf: Warning: unable to apply unsupported reloc type 10 to
section .debug_info
readelf: Warning: unable to apply unsupported reloc type 1 to
section .debug_info
readelf: Warning: unable to apply unsupported reloc type 10 to
section .debug_info make -C
/home/szeng/dii-tools/linux/samples/bpf/../../tools/lib/bpf RM='rm -rf'
EXTRA_CFLAGS="-Wall -O2 -Wmissing-prototypes -Wstrict-prototypes
-I./usr/include -I./tools/testing/selftests/bpf/
-I/home/szeng/dii-tools/linux/samples/bpf/libbpf/include
-I./tools/include -I./tools/perf -DHAVE_ATTR_TEST=0" \
LDFLAGS= srctree=/home/szeng/dii-tools/linux/samples/bpf/../../ \
O= OUTPUT=/home/szeng/dii-tools/linux/samples/bpf/libbpf/
DESTDIR=/home/szeng/dii-tools/linux/samples/bpf/libbpf prefix= \
/home/szeng/dii-tools/linux/samples/bpf/libbpf/libbpf.a
install_headers
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/libbpf.o
CC /home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/bpf.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/nlattr.o
CC /home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/btf.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/libbpf_errno.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/str_error.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/netlink.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/bpf_prog_linfo.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/libbpf_probes.o
CC /home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/xsk.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/hashmap.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/btf_dump.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/ringbuf.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/strset.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/linker.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/gen_loader.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/relo_core.o
LD
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/libbpf-in.o
LINK /home/szeng/dii-tools/linux/samples/bpf/libbpf/libbpf.a
INSTALL headers
CC samples/bpf/test_lru_dist
CC samples/bpf/sock_example
CC samples/bpf/../../tools/testing/selftests/bpf/cgroup_helpers.o
CC samples/bpf/../../tools/testing/selftests/bpf/trace_helpers.o
CC samples/bpf/cookie_uid_helper_example.o
CC samples/bpf/cpustat_user.o
CC samples/bpf/fds_example.o
CC samples/bpf/hbm.o
CC samples/bpf/i915_latency_hist_user.o
CC samples/bpf/i915_stat_user.o
CC samples/bpf/ibumad_user.o
CC samples/bpf/lathist_user.o
CC samples/bpf/lwt_len_hist_user.o
CC samples/bpf/map_perf_test_user.o
CC samples/bpf/offwaketime_user.o
CC samples/bpf/sampleip_user.o
CC samples/bpf/sockex1_user.o
CC samples/bpf/sockex2_user.o
CC samples/bpf/sockex3_user.o
CC samples/bpf/spintest_user.o
CC samples/bpf/syscall_tp_user.o
CC samples/bpf/task_fd_query_user.o
CC samples/bpf/tc_l2_redirect_user.o
CC samples/bpf/test_cgrp2_array_pin.o
CC samples/bpf/test_cgrp2_attach.o
CC samples/bpf/test_cgrp2_sock.o
CC samples/bpf/test_cgrp2_sock2.o
CC samples/bpf/test_current_task_under_cgroup_user.o
CC samples/bpf/test_map_in_map_user.o
CC samples/bpf/test_overhead_user.o
CC samples/bpf/test_probe_write_user_user.o
CC samples/bpf/trace_event_user.o
CC samples/bpf/trace_output_user.o
CC samples/bpf/tracex1_user.o
CC samples/bpf/tracex2_user.o
CC samples/bpf/tracex3_user.o
CC samples/bpf/tracex4_user.o
CC samples/bpf/tracex5_user.o
CC samples/bpf/tracex6_user.o
CC samples/bpf/tracex7_user.o
CC samples/bpf/xdp1_user.o
CC samples/bpf/xdp_adjust_tail_user.o
CC samples/bpf/xdp_fwd_user.o
make -C /home/szeng/dii-tools/linux/samples/bpf/../../tools/bpf/bpftool
srctree=/home/szeng/dii-tools/linux/samples/bpf/../../ \
OUTPUT=/home/szeng/dii-tools/linux/samples/bpf/bpftool/ \
LIBBPF_OUTPUT=/home/szeng/dii-tools/linux/samples/bpf/libbpf/ \
LIBBPF_DESTDIR=/home/szeng/dii-tools/linux/samples/bpf/libbpf/
Auto-detecting system features:
... libbfd: [ OFF ]
... disassembler-four-args: [ OFF ]
... zlib: [ on ]
... libcap: [ OFF ]
... clang-bpf-co-re: [ on ]
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/libbpf.o
CC /home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/bpf.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/nlattr.o
CC /home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/btf.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/libbpf_errno.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/str_error.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/netlink.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/bpf_prog_linfo.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/libbpf_probes.o
CC /home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/xsk.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/hashmap.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/btf_dump.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/ringbuf.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/strset.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/linker.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/gen_loader.o
CC
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/relo_core.o
LD
/home/szeng/dii-tools/linux/samples/bpf/libbpf/staticobjs/libbpf-in.o
LINK /home/szeng/dii-tools/linux/samples/bpf/libbpf/libbpf.a
CLANG /home/szeng/dii-tools/linux/samples/bpf/bpftool/profiler.bpf.o
GEN /home/szeng/dii-tools/linux/samples/bpf/bpftool/profiler.skel.h
CC /home/szeng/dii-tools/linux/samples/bpf/bpftool/prog.o
CLANG /home/szeng/dii-tools/linux/samples/bpf/bpftool/pid_iter.bpf.o
GEN /home/szeng/dii-tools/linux/samples/bpf/bpftool/pid_iter.skel.h
CC /home/szeng/dii-tools/linux/samples/bpf/bpftool/pids.o
LINK /home/szeng/dii-tools/linux/samples/bpf/bpftool/bpftool
CC samples/bpf/xdp_router_ipv4_user.o
CC samples/bpf/xdp_rxq_info_user.o
CC samples/bpf/xdp_sample_pkts_user.o
CC samples/bpf/xdp_tx_iptunnel_user.o
CC samples/bpf/xdpsock_ctrl_proc.o
CC samples/bpf/xsk_fwd.o
CLANG-BPF samples/bpf/xdp_sample.bpf.o
CLANG-BPF samples/bpf/xdp_redirect_map_multi.bpf.o
CLANG-BPF samples/bpf/xdp_redirect_cpu.bpf.o
CLANG-BPF samples/bpf/xdp_redirect_map.bpf.o
CLANG-BPF samples/bpf/xdp_monitor.bpf.o
CLANG-BPF samples/bpf/xdp_redirect.bpf.o
BPF GEN-OBJ samples/bpf/xdp_monitor
BPF GEN-SKEL samples/bpf/xdp_monitor
libbpf: map 'rx_cnt': unexpected def kind var.
Error: failed to open BPF object file: Invalid argument
samples/bpf/Makefile:430: recipe for
target 'samples/bpf/xdp_monitor.skel.h' failed
make[1]: *** [samples/bpf/xdp_monitor.skel.h] Error 255
make[1]: *** Deleting file 'samples/bpf/xdp_monitor.skel.h'
Makefile:1868: recipe for target 'samples/bpf' failed
make: *** [samples/bpf] Error 2
Thanks,
Oak