Reproducible builds [1] require that the same source code with the same set of tools can build identical objects each time, but pahole in parallel mode was non-deterministic in BTF generation prior to dba7b5e ("pahole: Encode BTF serially in a reproducible build") This was a problem since said BTF is baked into kernels and modules in .BTF sections, so parallel pahole was causing non-reproducible binary generation. Now with the above commit we have support for parallel reproducible BTF generation in pahole. KBUILD_BUILD_TIMESTAMP is set for reproducible builds, so if it is set, add reproducible_build to --btf_features. [1] Documentation/kbuild/reproducible-builds.rst Signed-off-by: Alan Maguire <alan.maguire@xxxxxxxxxx> --- scripts/Makefile.btf | 4 ++++ 1 file changed, 4 insertions(+) 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 -- 2.31.1