Re: [PATCH v2 3/3] build: rust: provide an option to inline C helpers into Rust

From: Nathan Chancellor

Date: Fri Mar 13 2026 - 20:40:26 EST


On Fri, Mar 06, 2026 at 05:32:33PM +0000, Alice Ryhl wrote:
> On Tue, Feb 03, 2026 at 11:34:10AM +0000, Alice Ryhl wrote:
> > $(obj)/bindings/bindings_helpers_generated.rs: $(src)/helpers/helpers.c FORCE
> > $(call if_changed_dep,bindgen)
> >
> > +quiet_cmd_rust_helper = HELPER $@
> > + cmd_rust_helper = \
> > + $(CC) $(filter-out $(CFLAGS_REMOVE_helpers/helpers.o), $(c_flags)) \
> > + -c -g0 $< $(if $(filter %_module.bc,$@),-DMODULE) -emit-llvm -o $@
> > +
> > +$(obj)/helpers/helpers.bc $(obj)/helpers/helpers_module.bc: $(src)/helpers/helpers.c FORCE
> > + +$(call if_changed_dep,rust_helper)
>
> I think this needs:
>
> $(obj)/helpers/helpers.bc: private part-of-builtin := y
> $(obj)/helpers/helpers_module.bc: private part-of-module := y
>
> at least it seems to make a difference for AutoFDO.

Would

$(obj)/helpers/helpers.bc $(obj)/helpers/helpers_module.bc: private is-kernel-object := y

work as well? Presumably, this is because c_flags only has the AutoFDO
flags when is-kernel-object is set, which is only true when
helpers/helpers.o is a part of obj-y.

Cheers,
Nathan