On Fri, Mar 22, 2024 at 3:26 AM Alan Maguire <alan.maguire@xxxxxxxxxx> wrote: > > Support creation of module BTF along with base reference BTF; > the latter is stored in a .BTF.base_ref ELF section and supplements > split BTF references to base BTF with information about base types, > allowing for later reconciliation of split BTF with a (possibly > changed) base. resolve_btfids uses the "-r" option to specify > that the BTF.ids section should be populated with split BTF > relative to the added .BTF.base_ref section rather than relative > to the vmlinux base. > > Modules using base reference BTF can be built via > > BTF_BASE_REF=1 make -C. -M=path2/module > > The default is still to use split BTF relative to vmlinux. > > Signed-off-by: Alan Maguire <alan.maguire@xxxxxxxxxx> > --- > scripts/Makefile.btf | 7 +++++++ > scripts/Makefile.modfinal | 4 ++-- > 2 files changed, 9 insertions(+), 2 deletions(-) > > diff --git a/scripts/Makefile.btf b/scripts/Makefile.btf > index 9694ca3c5252..c8212b2ab7ca 100644 > --- a/scripts/Makefile.btf > +++ b/scripts/Makefile.btf > @@ -19,4 +19,11 @@ pahole-flags-$(call test-ge, $(pahole-ver), 126) = -j --btf_features=encode_forc > > pahole-flags-$(CONFIG_PAHOLE_HAS_LANG_EXCLUDE) += --lang_exclude=rust > > +ifeq ($(BTF_BASE_REF),1) > +module-pahole-flags-$(call test-ge, $(pahole-ver), 126) += --btf_features=base_ref > +module-resolve-btfids-flags-$(call test-ge, $(pahole-ver), 126) = -r > +endif The patch set looks great to me. I wonder whether we should drop this extra BTF_BASE_REF flag and do it unconditionally. Currently btf_parse_module() doesn't have any real checks whether module's btf matches base_btf. All the btf_check_*() might succeed by luck even if vmlinux btf is different. Since .BTF.base_ref is small we can always emit it and during module load the btf_reconcile() step will be that safety check. Less build options, less moving pieces and doing it all the time will make the whole process robust. Conditional BTF_BASE_REF=1 will likely mean that there will be bugs that only few folks will hit.