On Fri, Feb 11, 2022 at 01:14:50PM -0800, Andrii Nakryiko wrote: > Add a selftest validating various aspects of libbpf's handling of custom > SEC() handlers. It also demonstrates how libraries can ensure very early > callbacks registration and unregistration using > __attribute__((constructor))/__attribute__((destructor)) functions. > > Reviewed-by: Alan Maguire <alan.maguire@xxxxxxxxxx> > Signed-off-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > --- > .../bpf/prog_tests/custom_sec_handlers.c | 176 ++++++++++++++++++ > .../bpf/progs/test_custom_sec_handlers.c | 63 +++++++ > 2 files changed, 239 insertions(+) > create mode 100644 tools/testing/selftests/bpf/prog_tests/custom_sec_handlers.c > create mode 100644 tools/testing/selftests/bpf/progs/test_custom_sec_handlers.c > > diff --git a/tools/testing/selftests/bpf/prog_tests/custom_sec_handlers.c b/tools/testing/selftests/bpf/prog_tests/custom_sec_handlers.c > new file mode 100644 > index 000000000000..28264528280d > --- /dev/null > +++ b/tools/testing/selftests/bpf/prog_tests/custom_sec_handlers.c > @@ -0,0 +1,176 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* Copyright (c) 2022 Facebook */ > + > +#include <test_progs.h> > +#include "test_custom_sec_handlers.skel.h" > + > +#define COOKIE_ABC1 1 > +#define COOKIE_ABC2 2 > +#define COOKIE_CUSTOM 3 > +#define COOKIE_FALLBACK 4 > +#define COOKIE_KPROBE 5 > + > +static int custom_init_prog(struct bpf_program *prog, long cookie) > +{ > + if (cookie == COOKIE_ABC1) > + bpf_program__set_autoload(prog, false); > + > + return 0; > +} What is the value of init_fn callback? afaict it was and still unused in libbpf. The above example doesn't make a compelling case, since set_autoload can be done out of preload callback. Maybe drop init_fn for now and extend libbpf_prog_handler_opts when there is actual need for it?