[PATCH] kernel/configs: Disable LTO on kernel/configs.o

From: Yifan Hong
Date: Mon Apr 29 2024 - 18:08:11 EST


This solves an incremental
build issue that, when a config changes, config_data
and config_data.gz is rebuilt, but because the
thinlto-cache cannot be updated, the config is not
reflected in the final vmlinux binary.

The issue is described in
https://github.com/ClangBuiltLinux/linux/issues/2021.

Signed-off-by: Yifan Hong <elsk@xxxxxxxxxx>
---
kernel/Makefile | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/kernel/Makefile b/kernel/Makefile
index 10ef068f598d..76d9acc49c5f 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -140,6 +140,10 @@ obj-$(CONFIG_SCF_TORTURE_TEST) += scftorture.o

$(obj)/configs.o: $(obj)/config_data.gz

+# Disable LTO on configs.o so changes in .config is reflected in vmlinux. See
+# https://github.com/ClangBuiltLinux/linux/issues/2021
+CFLAGS_REMOVE_configs.o += $(CC_FLAGS_LTO)
+
targets += config_data config_data.gz
$(obj)/config_data.gz: $(obj)/config_data FORCE
$(call if_changed,gzip)
--
2.45.0.rc1.225.g2a3ae87e7f-goog