From: Ben Hutchings Date: Sun, 15 Sep 2024 23:54:24 +0000 (+0200) Subject: kbuild, bpf: Fix BTF reproducibility X-Git-Tag: archive/raspbian/6.12.27-1+rpi1^2~3 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=d3dd70f9bab04e3f78f40400d66b6d47fc555089;p=linux.git 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 --- 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)