Similar to the tracing_multi link support for kernel functions [1], add support for bpf progs.
When attaching to bpf progs, it must attaches to the target by text poke way. [1] https://lore.kernel.org/bpf/[email protected]/ Leon Hwang (13): bpf: Initialize ftrace_managed in bpf_trampoline_get bpf: Factor out update_fentry_multi helper bpf: Drop unnecessary ftrace_location() in update_fentry_multi() bpf: Add tracing_multi link support for bpf progs libbpf: Add tracing_multi link support for bpf progs bpf: Add tracing_multi link fdinfo support for bpf progs bpf: Add tracing_multi link info support for bpf progs selftests/bpf: Add tracing_multi bpf prog attach test selftests/bpf: Add tracing_multi bpf prog attach failure tests selftests/bpf: Add tracing_multi bpf prog cookie test selftests/bpf: Add tracing_multi bpf prog rollback test selftests/bpf: Add tracing_multi bpf prog link info test selftests/bpf: Test tailcall with fentry.multi include/linux/bpf.h | 3 + include/uapi/linux/bpf.h | 6 +- kernel/bpf/trampoline.c | 87 +++--- kernel/bpf/verifier.c | 22 +- kernel/trace/bpf_trace.c | 212 ++++++++++++--- tools/bpf/bpftool/link.c | 59 +++- tools/include/uapi/linux/bpf.h | 6 +- tools/lib/bpf/bpf.c | 1 + tools/lib/bpf/bpf.h | 2 + tools/lib/bpf/libbpf.c | 39 ++- tools/lib/bpf/libbpf.h | 4 +- tools/lib/bpf/libbpf_internal.h | 1 + .../selftests/bpf/prog_tests/fill_link_info.c | 170 ++++++++++-- .../selftests/bpf/prog_tests/tailcalls.c | 62 +++++ .../selftests/bpf/prog_tests/tracing_multi.c | 254 ++++++++++++++++++ .../selftests/bpf/progs/tracing_multi_bpf.c | 61 +++++ 16 files changed, 869 insertions(+), 120 deletions(-) create mode 100644 tools/testing/selftests/bpf/progs/tracing_multi_bpf.c -- 2.55.0
