1================== 2BPF Selftest Notes 3================== 4General instructions on running selftests can be found in 5`Documentation/bpf/bpf_devel_QA.rst`_. 6 7Additional information about selftest failures are 8documented here. 9 10bpf_iter test failures with clang/llvm 10.0.0 11============================================= 12 13With clang/llvm 10.0.0, the following two bpf_iter tests failed: 14 * ``bpf_iter/ipv6_route`` 15 * ``bpf_iter/netlink`` 16 17The symptom for ``bpf_iter/ipv6_route`` looks like 18 19.. code-block:: c 20 21 2: (79) r8 = *(u64 *)(r1 +8) 22 ... 23 14: (bf) r2 = r8 24 15: (0f) r2 += r1 25 ; BPF_SEQ_PRINTF(seq, "%pi6 %02x ", &rt->fib6_dst.addr, rt->fib6_dst.plen); 26 16: (7b) *(u64 *)(r8 +64) = r2 27 only read is supported 28 29The symptom for ``bpf_iter/netlink`` looks like 30 31.. code-block:: c 32 33 ; struct netlink_sock *nlk = ctx->sk; 34 2: (79) r7 = *(u64 *)(r1 +8) 35 ... 36 15: (bf) r2 = r7 37 16: (0f) r2 += r1 38 ; BPF_SEQ_PRINTF(seq, "%pK %-3d ", s, s->sk_protocol); 39 17: (7b) *(u64 *)(r7 +0) = r2 40 only read is supported 41 42This is due to a llvm BPF backend bug. The fix 43 https://reviews.llvm.org/D78466 44has been pushed to llvm 10.x release branch and will be 45available in 10.0.1. The fix is available in llvm 11.0.0 trunk. 46 47BPF CO-RE-based tests and Clang version 48======================================= 49 50A set of selftests use BPF target-specific built-ins, which might require 51bleeding-edge Clang versions (Clang 12 nightly at this time). 52 53Few sub-tests of core_reloc test suit (part of test_progs test runner) require 54the following built-ins, listed with corresponding Clang diffs introducing 55them to Clang/LLVM. These sub-tests are going to be skipped if Clang is too 56old to support them, they shouldn't cause build failures or runtime test 57failures: 58 59 - __builtin_btf_type_id() ([0], [1], [2]); 60 - __builtin_preserve_type_info(), __builtin_preserve_enum_value() ([3], [4]). 61 62 [0] https://reviews.llvm.org/D74572 63 [1] https://reviews.llvm.org/D74668 64 [2] https://reviews.llvm.org/D85174 65 [3] https://reviews.llvm.org/D83878 66 [4] https://reviews.llvm.org/D83242 67