xref: /linux/tools/testing/selftests/bpf/README.rst (revision 05ee19c18c2bb3dea69e29219017367c4a77e65a)
1==================
2BPF Selftest Notes
3==================
4
5Additional information about selftest failures are
6documented here.
7
8bpf_iter test failures with clang/llvm 10.0.0
9=============================================
10
11With clang/llvm 10.0.0, the following two bpf_iter tests failed:
12  * ``bpf_iter/ipv6_route``
13  * ``bpf_iter/netlink``
14
15The symptom for ``bpf_iter/ipv6_route`` looks like
16
17.. code-block:: c
18
19  2: (79) r8 = *(u64 *)(r1 +8)
20  ...
21  14: (bf) r2 = r8
22  15: (0f) r2 += r1
23  ; BPF_SEQ_PRINTF(seq, "%pi6 %02x ", &rt->fib6_dst.addr, rt->fib6_dst.plen);
24  16: (7b) *(u64 *)(r8 +64) = r2
25  only read is supported
26
27The symptom for ``bpf_iter/netlink`` looks like
28
29.. code-block:: c
30
31  ; struct netlink_sock *nlk = ctx->sk;
32  2: (79) r7 = *(u64 *)(r1 +8)
33  ...
34  15: (bf) r2 = r7
35  16: (0f) r2 += r1
36  ; BPF_SEQ_PRINTF(seq, "%pK %-3d ", s, s->sk_protocol);
37  17: (7b) *(u64 *)(r7 +0) = r2
38  only read is supported
39
40This is due to a llvm BPF backend bug. The fix
41  https://reviews.llvm.org/D78466
42has been pushed to llvm 10.x release branch and will be
43available in 10.0.1. The fix is available in llvm 11.0.0 trunk.
44