Re: [PATCH bpf-next v1 04/14] selftests/bpf: Add kfunc set test to resolve_btfids
Alexei Starovoitov <[email protected]>
| Newsgroups | org.kernel.vger.linux-kbuild,org.kernel.vger.bpf |
|---|---|
| Message-ID | <CAADnVQLLcDPnt5q3MdYjHC1zCJuBPrbRYgoY__5Gk=GKoBvWAg@mail.gmail.com> |
On Tue, Jun 16, 2026 at 12:07 AM Emil Tsalapatis <[email protected]> wrote: > > On Mon Jun 1, 2026 at 6:17 PM EDT, Ihor Solodrai wrote: > > Extend the resolve_btfids selftest to cover kfunc sets defined with > > BTF_KFUNCS_START/BTF_KFUNCS_END. > > > > The test verifies that resolve_btfids correctly processes BTF_ID_FLAGS, > > resolves function IDs, and checks the kfunc set is sorted. > > > > Signed-off-by: Ihor Solodrai <[email protected]> > > Reviewed-by: Emil Tsalapatis <[email protected]> > > One nit below. > > > --- > > .../selftests/bpf/prog_tests/resolve_btfids.c | 56 +++++++++++++++++++ > > tools/testing/selftests/bpf/progs/btf_data.c | 10 ++++ > > 2 files changed, 66 insertions(+) > > > > diff --git a/tools/testing/selftests/bpf/prog_tests/resolve_btfids.c b/tools/testing/selftests/bpf/prog_tests/resolve_btfids.c > > index d0e51979d455..f6fd79b9dd23 100644 > > --- a/tools/testing/selftests/bpf/prog_tests/resolve_btfids.c > > +++ b/tools/testing/selftests/bpf/prog_tests/resolve_btfids.c > > @@ -10,6 +10,10 @@ > > #include <linux/btf_ids.h> > > #include "test_progs.h" > > > > +#ifndef KF_FASTCALL > > +#define KF_FASTCALL (1 << 12) > > +#endif > > + > > struct symbol { > > const char *name; > > int type; > > @@ -26,6 +30,17 @@ struct symbol test_symbols[] = { > > { "func", BTF_KIND_FUNC, -1 }, > > }; > > > > +struct kfunc_symbol { > > + const char *name; > > + s32 id; > > + u32 flags; > > +}; > > + > > +static struct kfunc_symbol kfunc_symbols[] = { > > + { "kfunc_a", -1, 0 }, > > + { "kfunc_b", -1, KF_FASTCALL }, > > +}; > > + > > /* Align the .BTF_ids section to 4 bytes */ > > asm ( > > ".pushsection " BTF_IDS_SECTION " ,\"a\"; \n" > > @@ -77,7 +92,13 @@ BTF_ID(union, U) > > BTF_ID(func, func) > > BTF_SET_END(test_set) > > > > +BTF_KFUNCS_START(test_kfunc_set) > > +BTF_ID_FLAGS(func, kfunc_a) > > +BTF_ID_FLAGS(func, kfunc_b, KF_FASTCALL) > > +BTF_KFUNCS_END(test_kfunc_set) > > + > > #pragma GCC visibility pop > > + > > static int > > __resolve_symbol(struct btf *btf, int type_id) > > { > > @@ -108,6 +129,18 @@ __resolve_symbol(struct btf *btf, int type_id) > > test_symbols[i].id = type_id; > > } > > > > + if (BTF_INFO_KIND(type->info) == BTF_KIND_FUNC) { > > + str = btf__name_by_offset(btf, type->name_off); > > + if (str) { > > This can be rewritten to collapse the nesting: > if (BTF_INFO_KIND(type->info) != BTF_KIND_FUNC) > return 0; > > str = btf__name_by_offset(btf, type->name_off); > if (!str) > return 0; > > <the rest> Thank you for this comment :) Together we can fight claude habits :)