From d3dd70f9bab04e3f78f40400d66b6d47fc555089 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Mon, 16 Sep 2024 01:54:24 +0200 Subject: [PATCH] kbuild, bpf: Fix BTF reproducibility pahole 1.22 introduced the -j option for parallel processing, and kbuild uses it, but this makes its output unreproducible. pahole 1.27 introduced --btf_features=+reproducible_build which makes the output reproducible even when -j is used. Assume that if KBUILD_BUILD_TIMESTAMP is set then a reproducible build is required, and use both options if available or neither if not. Signed-off-by: Ben Hutchings Gbp-Pq: Topic bugfix/all Gbp-Pq: Name kbuild-bpf-fix-btf-reproducibility.patch --- scripts/Makefile.btf | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/scripts/Makefile.btf b/scripts/Makefile.btf index b75f09f3f42..e622cdd3226 100644 --- a/scripts/Makefile.btf +++ b/scripts/Makefile.btf @@ -12,8 +12,6 @@ endif pahole-flags-$(call test-ge, $(pahole-ver), 121) += --btf_gen_floats -pahole-flags-$(call test-ge, $(pahole-ver), 122) += -j - pahole-flags-$(call test-ge, $(pahole-ver), 125) += --skip_encoding_btf_inconsistent_proto --btf_gen_optimized else @@ -27,6 +25,18 @@ endif endif +# pahole 1.22 introduced the -j option for parallel processing, but +# this makes its output unreproducible. +# pahole 1.27 introduced --btf_features=+reproducible_build which +# makes the output reproducible even when -j is used. +# Assume that if KBUILD_BUILD_TIMESTAMP is set then a reproducible +# build is required and we must not use -j alone. +ifeq ($(KBUILD_BUILD_TIMESTAMP),) +pahole-flags-$(call test-ge, $(pahole-ver), 122) += -j +else +pahole-flags-$(call test-ge, $(pahole-ver), 127) += -j --btf_features=+reproducible_build +endif + pahole-flags-$(CONFIG_PAHOLE_HAS_LANG_EXCLUDE) += --lang_exclude=rust export PAHOLE_FLAGS := $(pahole-flags-y) -- 2.30.2