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