From: sdf@google.com
To: oak.zeng@intel.com
Cc: "bpf@vger.kernel.org" <bpf@vger.kernel.org>
Subject: Re: Build error of samples/bpf
Date: Tue, 12 Jul 2022 10:22:48 -0700 [thread overview]
Message-ID: <Ys2tkthkFE1XkEPh@google.com> (raw)
In-Reply-To: <BN6PR11MB16332A018C2FAB69B479EA2B92869@BN6PR11MB1633.namprd11.prod.outlook.com>
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
next prev parent reply other threads:[~2022-07-12 17:22 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <BN6PR11MB16338E9998353C6B239CD27792869@BN6PR11MB1633.namprd11.prod.outlook.com>
2022-07-12 13:50 ` Build error of samples/bpf Zeng, Oak
2022-07-12 17:22 ` sdf [this message]
2022-07-13 15:20 ` Zeng, Oak
2022-07-13 16:18 ` sdf
2022-07-13 20:18 ` Daniel Müller
2022-07-26 20:22 ` Daniel Müller
2022-07-14 5:13 ` Andrii Nakryiko
2022-07-13 18:21 ` Kumar Kartikeya Dwivedi
2022-07-15 3:54 ` Zeng, Oak
2022-07-15 8:26 ` Jiri Olsa
2022-07-15 16:08 ` Zeng, Oak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Ys2tkthkFE1XkEPh@google.com \
--to=sdf@google.com \
--cc=bpf@vger.kernel.org \
--cc=oak.zeng@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox