On Thu, Oct 01, 2026 at 10:52:11PM +0000, Jay Wang wrote: > The next patch makes CONFIG_DEBUG_INFO_BTF a tristate. With =m, Kconfig > defines CONFIG_DEBUG_INFO_BTF_MODULE instead of CONFIG_DEBUG_INFO_BTF, > so every check that must hold for both =y and =m has to be written for > it: > > - #ifdef CONFIG_DEBUG_INFO_BTF becomes #if IS_ENABLED(...) where the > generated BTF and its id tables must be the same for =y and =m: the > .BTF_ids tables (btf_ids.h), the BTF type tags (compiler_types.h), and > the tracepoint and syscall BTF ids (trace_events.h, trace_syscalls.c). > Leaving them would silently produce empty id sets with =m. > > - obj-$(CONFIG_DEBUG_INFO_BTF) and include-$(CONFIG_DEBUG_INFO_BTF) > become $(subst m,y,...) where the object is built into the kernel > regardless: sysfs_btf.o, the netfilter and xfrm kfunc objects, and > scripts/Makefile.btf. Otherwise =m would try to build them as > modules (xfrm_state_bpf.o fails modpost for lack of MODULE_LICENSE) > or skip the BTF generation flags. > > - "depends on !DEBUG_INFO_BTF" becomes "depends on DEBUG_INFO_BTF=n" > for RUST and GENDWARFKSYMS: with =m the BTF is generated as with =y, > so the pahole restrictions they express still apply, but !m is m, > which a bool option takes as y. > > No functional change: CONFIG_DEBUG_INFO_BTF is still a bool, for which > IS_ENABLED() and #ifdef agree, $(subst m,y,y) is y and "=n" is "!". > > Signed-off-by: Jay Wang <[email protected]> > --- > Makefile | 3 ++- > include/linux/btf_ids.h | 2 +- > include/linux/compiler_types.h | 2 +- > include/trace/trace_events.h | 2 +- > init/Kconfig | 2 +- > kernel/bpf/Makefile | 2 +- > kernel/module/Kconfig | 2 +- > kernel/trace/trace_syscalls.c | 6 +++--- > net/netfilter/Makefile | 6 +++--- > net/xfrm/Makefile | 4 ++-- > 10 files changed, 16 insertions(+), 15 deletions(-) > > diff --git a/Makefile b/Makefile > index 751a08643bf8..f561516e1735 100644 > --- a/Makefile > +++ b/Makefile > @@ -1208,7 +1208,8 @@ endif > # include additional Makefiles when needed > include-y := scripts/Makefile.warn > include-$(CONFIG_DEBUG_INFO) += scripts/Makefile.debug > -include-$(CONFIG_DEBUG_INFO_BTF)+= scripts/Makefile.btf > +# CONFIG_DEBUG_INFO_BTF is a tristate; BTF is generated for both y and m > +include-$(subst m,y,$(CONFIG_DEBUG_INFO_BTF)) += scripts/Makefile.btf
Please drop the comment and use the shorter 'm' to 'y' conversion: include-$(CONFIG_DEBUG_INFO_BTF:m=y) += scripts/Makefile.btf and possibly also for kernel/bpf/Makefile and net/netfilter/Makefile. Thanks -- Nicolas
