Introduce static vs global functions and function by function verification. This is another step toward dynamic re-linking (or replacement) of global functions. See patch 3 for details. The rest are supporting patches. Alexei Starovoitov (6): libbpf: Sanitize BTF_KIND_FUNC linkage libbpf: Collect static vs global info about functions bpf: Introduce function-by-function verification selftests/bpf: Add fexit-to-skb test for global funcs selftests/bpf: Add a test for a large global function selftests/bpf: Modify a test to check global functions include/linux/bpf.h | 7 +- include/linux/bpf_verifier.h | 7 +- include/uapi/linux/btf.h | 6 + kernel/bpf/btf.c | 147 ++++++++--- kernel/bpf/verifier.c | 228 ++++++++++++++---- tools/include/uapi/linux/btf.h | 6 + tools/lib/bpf/libbpf.c | 150 +++++++++++- .../bpf/prog_tests/bpf_verif_scale.c | 2 + .../selftests/bpf/prog_tests/fexit_bpf2bpf.c | 1 + .../selftests/bpf/progs/fexit_bpf2bpf.c | 15 ++ tools/testing/selftests/bpf/progs/pyperf.h | 9 +- .../selftests/bpf/progs/pyperf_global.c | 5 + .../selftests/bpf/progs/test_pkt_access.c | 28 +++ .../selftests/bpf/progs/test_xdp_noinline.c | 4 +- 14 files changed, 528 insertions(+), 87 deletions(-) create mode 100644 tools/testing/selftests/bpf/progs/pyperf_global.c -- 2.23.0