On Thu, 24 Feb 2022, Andrii Nakryiko wrote: > Allow registering and unregistering custom handlers for BPF program. > This allows user applications and libraries to plug into libbpf's > declarative SEC() definition handling logic. This allows to offload > complex and intricate custom logic into external libraries, but still > provide a great user experience. > > One such example is USDT handling library, which has a lot of code and > complexity which doesn't make sense to put into libbpf directly, but it > would be really great for users to be able to specify BPF programs with > something like SEC("usdt/<path-to-binary>:<usdt_provider>:<usdt_name>") > and have correct BPF program type set (BPF_PROGRAM_TYPE_KPROBE, as it is > uprobe) and even support BPF skeleton's auto-attach logic. > > In some cases, it might be even good idea to override libbpf's default > handling, like for SEC("perf_event") programs. With custom library, it's > possible to extend logic to support specifying perf event specification > right there in SEC() definition without burdening libbpf with lots of > custom logic or extra library dependecies (e.g., libpfm4). With current > patch it's possible to override libbpf's SEC("perf_event") handling and > specify a completely custom ones. > > Further, it's possible to specify a generic fallback handling for any > SEC() that doesn't match any other custom or standard libbpf handlers. > This allows to accommodate whatever legacy use cases there might be, if > necessary. > > See doc comments for libbpf_register_prog_handler() and > libbpf_unregister_prog_handler() for detailed semantics. > > This patch also bumps libbpf development version to v0.8 and adds new > APIs there. > > Signed-off-by: Andrii Nakryiko <andrii@xxxxxxxxxx> Reviewed-by: Alan Maguire <alan.maguire@xxxxxxxxxx> also if you need it, for the series Tested-by: Alan Maguire <alan.maguire@xxxxxxxxxx> Thanks!