On 27/06/2024 00:01, Dominique Martinet wrote: > Thanks for the reply! > > Alan Maguire wrote on Wed, Jun 26, 2024 at 03:29:37PM +0100: >> On 26/06/2024 04:22, Dominique Martinet wrote: >>> The SOURCE_DATE_EPOCH environment variable is used in reproducible >>> builds to set build timestamps and is generally synonymous with >>> reproducible builds: instead of making users figure out how to pass >>> pahole flags (e.g. explicitly setting PAHOLE_FLAGS in linux) just assume >>> that the user wants a reproducible build if this variable is set. >> >> From the kernel perspective it looks like as a result of [1] >> [1] https://patchwork.kernel.org/project/linux-kbuild/patch/1443741332.2730.75.camel@xxxxxxxxxxxxxxxxx/ >> the setting of SOURCE_DATE_EPOCH will be converted into >> KBUILD_BUILD_TIMESTAMP; I thought the plan was to add the >> BTF feature flag explicitly if KBUILD_BUILD_TIMESTAMP was set? > > Hmm, that patch (2015) never got in apparently?... > And I don't see anythiing that'd make pahole output reproducible if > either variables are set in the kernel either right now; we still build I can send a patch for this to bpf-next if it's needed. But it'd be good to figure out the right approach first, more below... > plenty of older kernels so even if such a patch gets in I'd rather this > is checked in pahole than kbuild. > I'm not sure that's the right answer though - there's a bunch of existing infrastructure in the kernel tree that relies on KBUILD_BUILD_TIMESTAMP, so to integrate properly with the existing kbuild infrastructure around reproducible builds feels like the right direction to me. It's a bit more work, but not too much. Arnaldo may disagree of course, and he's the maintainer so it's his decision - this is just my personal take. We've tried to explicitly enable flags in pahole Makefile.btf so that it's obvious from pahole invocations which features are wanted, and to get that support on older kernels it would just be a matter of backporting the if > 1.26 use --btf_features ...patch, and a patch for adding the reproducible build option to stable kernels. Similar has been done in the past for other pahole features. All that's needed here for bpf-next tree is I think is the below 3-line addition: diff --git a/scripts/Makefile.btf b/scripts/Makefile.btf index b75f09f3f424..40bb72662967 100644 --- a/scripts/Makefile.btf +++ b/scripts/Makefile.btf @@ -21,6 +21,10 @@ else # Switch to using --btf_features for v1.26 and later. pahole-flags-$(call test-ge, $(pahole-ver), 126) = -j --btf_features=encode_force,var,float,enum64,decl_tag,type_tag,optimized_func,consistent_func,decl_tag_kfuncs +ifneq ($(KBUILD_BUILD_TIMESTAMP),) +pahole-flags-$(call test-ge, $(pahole-ver), 126) += --btf_features=reproducible_build +endif + ifneq ($(KBUILD_EXTMOD),) module-pahole-flags-$(call test-ge, $(pahole-ver), 126) += --btf_features=distilled_base endif Can you test at your end if that does the right thing? Thanks! Alan