From da5afcd79d262c83d19f1bab6be70a31c90b64cb Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Thu, 10 Dec 2020 17:31:39 +0100 Subject: [PATCH] kbuild: Look for module.lds under arch directory too Forwarded: not-needed Bug-Debian: https://bugs.debian.org/975571 The module.lds linker script is now built under the scripts directory, where previously it was under arch/$(SRCARCH). However, we package the scripts directory as linux-kbuild, which is meant to be able to do support native and cross-builds. That means it shouldn't contain files for a specific target architecture without a wrapper to select between them, and it doesn't appear that linker scripts are powerful enough to implement such a wrapper. Building module.lds in a different location would require relatively large changes. Moving it in the package build rules can work, but we need to support custom kernel builds from the same source so we can't assume it's moved. Therefore, we move module.lds under the arch build directory in rules.real and change Makefile.modfinal to look for it in both places. Gbp-Pq: Topic debian Gbp-Pq: Name kbuild-look-for-module.lds-under-arch-directory-too.patch --- scripts/Makefile.modfinal | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/Makefile.modfinal b/scripts/Makefile.modfinal index 0faee3a4770..1eea38be11c 100644 --- a/scripts/Makefile.modfinal +++ b/scripts/Makefile.modfinal @@ -29,12 +29,13 @@ quiet_cmd_cc_o_c = CC [M] $@ $(call if_changed_dep,cc_o_c) ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink) +ARCH_MODULE_LDS := $(word 1,$(wildcard scripts/module.lds arch/$(SRCARCH)/module.lds)) quiet_cmd_ld_ko_o = LD [M] $@ cmd_ld_ko_o += \ $(LD) -r $(KBUILD_LDFLAGS) \ $(KBUILD_LDFLAGS_MODULE) $(LDFLAGS_MODULE) \ - -T scripts/module.lds -o $@ $(filter %.o, $^); \ + -T $(ARCH_MODULE_LDS) -o $@ $(filter %.o, $^); \ $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true) quiet_cmd_btf_ko = BTF [M] $@ @@ -55,7 +56,7 @@ if_changed_except = $(if $(call newer_prereqs_except,$(2))$(cmd-check), \ printf '%s\n' 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd, @:) # Re-generate module BTFs if either module's .ko or vmlinux changed -$(modules): %.ko: %.o %.mod.o scripts/module.lds $(and $(CONFIG_DEBUG_INFO_BTF_MODULES),$(KBUILD_BUILTIN),vmlinux) FORCE +$(modules): %.ko: %.o %.mod.o $(ARCH_MODULE_LDS) $(and $(CONFIG_DEBUG_INFO_BTF_MODULES),$(KBUILD_BUILTIN),vmlinux) FORCE +$(call if_changed_except,ld_ko_o,vmlinux) ifdef CONFIG_DEBUG_INFO_BTF_MODULES +$(if $(newer-prereqs),$(call cmd,btf_ko)) -- 2.30.2