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.17.13-1+rpi1~2^2~4 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=32aa22c4555ef72c27a43c110e58d198ad6c79ab;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 db76335dd91..0b47da30cd0 100644 --- a/scripts/Makefile.btf +++ b/scripts/Makefile.btf @@ -14,8 +14,6 @@ endif pahole-flags-$(call test-ge, $(pahole-ver), 121) += --btf_gen_floats -pahole-flags-$(call test-ge, $(pahole-ver), 122) += -j$(JOBS) - pahole-flags-$(call test-ge, $(pahole-ver), 125) += --skip_encoding_btf_inconsistent_proto --btf_gen_optimized else @@ -31,6 +29,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$(JOBS) +else +pahole-flags-$(call test-ge, $(pahole-ver), 127) += -j$(JOBS) --btf_features=+reproducible_build +endif + pahole-flags-$(CONFIG_PAHOLE_HAS_LANG_EXCLUDE) += --lang_exclude=rust export PAHOLE_FLAGS := $(pahole-flags-y)