This patch set continues the work of revamping libbpf APIs that are not extensible, as they were added before we figured out all the intricacies of building APIs that can preserve ABI compatibility (both backward and forward). What makes them tricky is that (most of) these APIs are actively used by multiple applications, so we need to be careful about refactoring them. See individual patches for details, but the general approach is similar to previous bpf_prog_load() API revamp. The biggest different and complexity is in changing btf_dump__new(), because function overloading through macro magic doesn't work based on number of arguments, as both new and old APIs have 4 arguments. Because of that, another overloading approach is taken; overload happens based on argument types. I've validated manually (by using local test_progs-shared flavor that is compiling test_progs against libbpf as a shared library) that compiling "old application" (selftests before being adapted to using new variants of revamped APIs) are compiled and successfully run against newest libbpf version as well as the older libbpf version (provided no new variants are used). All these scenarios seem to be working as expected. v1->v2: - add explicit printf_fn NULL check in btf_dump__new() (Alexei); - replaced + with || in __builtin_choose_expr() (Alexei); - dropped test_progs-shared flavor (Alexei). Andrii Nakryiko (9): bpftool: normalize compile rules to specify output file last selftests/bpf: minor cleanups and normalization of Makefile libbpf: turn btf_dedup_opts into OPTS-based struct libbpf: ensure btf_dump__new() and btf_dump_opts are future-proof libbpf: make perf_buffer__new() use OPTS-based interface selftests/bpf: migrate all deprecated perf_buffer uses selftests/bpf: update btf_dump__new() uses to v1.0+ variant tools/runqslower: update perf_buffer__new() calls bpftool: update btf_dump__new() and perf_buffer__new_raw() calls tools/bpf/bpftool/Makefile | 16 ++-- tools/bpf/bpftool/btf.c | 2 +- tools/bpf/bpftool/gen.c | 2 +- tools/bpf/bpftool/map_perf_ring.c | 9 +- tools/bpf/runqslower/runqslower.c | 6 +- tools/lib/bpf/btf.c | 46 ++++++---- tools/lib/bpf/btf.h | 71 +++++++++++++-- tools/lib/bpf/btf_dump.c | 31 +++++-- tools/lib/bpf/libbpf.c | 70 +++++++++++---- tools/lib/bpf/libbpf.h | 86 ++++++++++++++++--- tools/lib/bpf/libbpf.map | 8 ++ tools/lib/bpf/linker.c | 4 +- tools/testing/selftests/bpf/Makefile | 32 +++---- .../selftests/bpf/benchs/bench_ringbufs.c | 8 +- tools/testing/selftests/bpf/btf_helpers.c | 4 +- tools/testing/selftests/bpf/prog_tests/btf.c | 46 ++-------- .../bpf/prog_tests/btf_dedup_split.c | 6 +- .../selftests/bpf/prog_tests/btf_dump.c | 33 +++---- .../selftests/bpf/prog_tests/btf_split.c | 4 +- .../bpf/prog_tests/get_stack_raw_tp.c | 5 +- .../selftests/bpf/prog_tests/kfree_skb.c | 6 +- .../selftests/bpf/prog_tests/perf_buffer.c | 6 +- .../selftests/bpf/prog_tests/xdp_bpf2bpf.c | 7 +- .../selftests/bpf/test_tcpnotify_user.c | 4 +- 24 files changed, 318 insertions(+), 194 deletions(-) -- 2.30.2