Follow-up to resilient split BTF series [1], - cleaning up libbpf relocation code (patch 1); - adding 'struct module' support for base BTF data (patch 2); - splitting out field iteration code into separate file (patch 3); - sharing libbpf relocation code with the kernel (patch 4); - adding a kbuild --btf_features flag to generate distilled base BTF in the module-specific case where KBUILD_EXTMOD is true (patch 5); and - adding test coverage for module-based kfunc dtor (patch 6) Generation of distilled base BTF for modules requires the pahole patch at [2], but without it we just won't get distilled base BTF (and thus BTF relocation on module load) for bpf_testmod.ko. Changes since v1 [3]: - fixed line lengths and made comparison an explicit == 0 (Andrii, patch 1) - moved btf_iter.c changes to separate patch (Andrii, patch 3) - grouped common targets in kernel/bpf/Makefile (Andrii, patch 4) - updated bpf_testmod ctx alloc to use GFP_ATOMIC, and updated dtor selftest to use map-based dtor cleanup (Eduard, patch 6) [1] https://lore.kernel.org/bpf/20240613095014.357981-1-alan.maguire@xxxxxxxxxx/ [2] https://lore.kernel.org/bpf/20240517102714.4072080-1-alan.maguire@xxxxxxxxxx/ [3] https://lore.kernel.org/bpf/20240618162449.809994-1-alan.maguire@xxxxxxxxxx/ Alan Maguire (6): libbpf: BTF relocation followup fixing naming, loop logic module, bpf: store BTF base pointer in struct module libbpf: split field iter code into its own file kernel libbpf,bpf: share BTF relocate-related code with kernel kbuild,bpf: add module-specific pahole flags for distilled base BTF selftests/bpf: add kfunc_call test for simple dtor in bpf_testmod include/linux/btf.h | 64 +++++++ include/linux/module.h | 2 + kernel/bpf/Makefile | 8 +- kernel/bpf/btf.c | 176 ++++++++++++----- kernel/module/main.c | 5 +- scripts/Makefile.btf | 5 + scripts/Makefile.modfinal | 2 +- tools/lib/bpf/Build | 2 +- tools/lib/bpf/btf.c | 162 ---------------- tools/lib/bpf/btf_iter.c | 177 ++++++++++++++++++ tools/lib/bpf/btf_relocate.c | 95 ++++++---- .../selftests/bpf/bpf_testmod/bpf_testmod.c | 46 +++++ .../bpf/bpf_testmod/bpf_testmod_kfunc.h | 9 + .../selftests/bpf/prog_tests/kfunc_call.c | 1 + .../selftests/bpf/progs/kfunc_call_test.c | 37 ++++ 15 files changed, 532 insertions(+), 259 deletions(-) create mode 100644 tools/lib/bpf/btf_iter.c -- 2.31.1