]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
kbuild: rebuild modules when module linker scripts are updated
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Wed, 14 Aug 2019 16:06:22 +0000 (01:06 +0900)
committerMasahiro Yamada <yamada.masahiro@socionext.com>
Wed, 21 Aug 2019 12:05:21 +0000 (21:05 +0900)
Currently, the timestamp of module linker scripts are not checked.
Add them to the dependency of modules so they are correctly rebuilt.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Documentation/kbuild/makefiles.rst
Makefile
arch/arm/Makefile
arch/arm64/Makefile
arch/ia64/Makefile
arch/m68k/Makefile
arch/parisc/Makefile
arch/powerpc/Makefile
arch/riscv/Makefile
scripts/Makefile.modpost

index 88c384da592ee143d202d3b7f409414336b7d6e6..68ed20ef37dd28095119ea9882c14d4c948d66e4 100644 (file)
@@ -993,6 +993,11 @@ When kbuild executes, the following steps are followed (roughly):
 
        The linker script with full path. Assigned by the top-level Makefile.
 
+    KBUILD_LDS_MODULE
+
+       The module linker script with full path. Assigned by the top-level
+       Makefile and additionally by the arch Makefile.
+
     KBUILD_VMLINUX_OBJS
 
        All object files for vmlinux. They are linked to vmlinux in the same
index 68e7ac654f4c297c4557a5394e673f9a96ff29cb..9c524950f4b38ba19549dc7503b12a480a1291c5 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -482,7 +482,8 @@ KBUILD_AFLAGS_KERNEL :=
 KBUILD_CFLAGS_KERNEL :=
 KBUILD_AFLAGS_MODULE  := -DMODULE
 KBUILD_CFLAGS_MODULE  := -DMODULE
-KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds
+KBUILD_LDFLAGS_MODULE :=
+export KBUILD_LDS_MODULE := $(srctree)/scripts/module-common.lds
 KBUILD_LDFLAGS :=
 GCC_PLUGINS_CFLAGS :=
 CLANG_FLAGS :=
index c3624ca6c0bca7c036c6f7e386a9a6fc1ae72b3c..fbe50eec8f34826bab4c697801c397978503e137 100644 (file)
@@ -17,7 +17,7 @@ KBUILD_LDFLAGS_MODULE += --be8
 endif
 
 ifeq ($(CONFIG_ARM_MODULE_PLTS),y)
-KBUILD_LDFLAGS_MODULE  += -T $(srctree)/arch/arm/kernel/module.lds
+KBUILD_LDS_MODULE      += $(srctree)/arch/arm/kernel/module.lds
 endif
 
 GZFLAGS                :=-9
index 61de992bbea3fad61895e4f1e796cea460fd9deb..d4ed1869e536473b868a58e5d0345779b1387021 100644 (file)
@@ -101,7 +101,7 @@ endif
 CHECKFLAGS     += -D__aarch64__
 
 ifeq ($(CONFIG_ARM64_MODULE_PLTS),y)
-KBUILD_LDFLAGS_MODULE  += -T $(srctree)/arch/arm64/kernel/module.lds
+KBUILD_LDS_MODULE      += $(srctree)/arch/arm64/kernel/module.lds
 endif
 
 # Default value
index 171290f9f1de48a5d0a8eb627c9468d1fafa1b0a..5c3bcaee59807520a1e97b884ee161cb67100d67 100644 (file)
@@ -20,7 +20,7 @@ CHECKFLAGS    += -D__ia64=1 -D__ia64__=1 -D_LP64 -D__LP64__
 
 OBJCOPYFLAGS   := --strip-all
 LDFLAGS_vmlinux        := -static
-KBUILD_LDFLAGS_MODULE += -T $(srctree)/arch/ia64/module.lds
+KBUILD_LDS_MODULE += $(srctree)/arch/ia64/module.lds
 KBUILD_AFLAGS_KERNEL := -mconstant-gp
 EXTRA          :=
 
index 482513b9af2c5dde54d28e19df519886b56b4fca..5d92883840969b4fc08928dba0004c532755e8d7 100644 (file)
@@ -73,7 +73,7 @@ KBUILD_AFLAGS += -D__uClinux__
 endif
 
 KBUILD_LDFLAGS := -m m68kelf
-KBUILD_LDFLAGS_MODULE += -T $(srctree)/arch/m68k/kernel/module.lds
+KBUILD_LDS_MODULE += $(srctree)/arch/m68k/kernel/module.lds
 
 ifdef CONFIG_SUN3
 LDFLAGS_vmlinux = -N
index 3b77d729057f94740f4df7bfc6d44c76e84b1319..36b834f1c933031921843a2f50bb6df29d3c0889 100644 (file)
@@ -60,7 +60,7 @@ KBUILD_CFLAGS += -DCC_USING_PATCHABLE_FUNCTION_ENTRY=1 \
                 -DFTRACE_PATCHABLE_FUNCTION_SIZE=$(NOP_COUNT)
 
 CC_FLAGS_FTRACE := -fpatchable-function-entry=$(NOP_COUNT),$(shell echo $$(($(NOP_COUNT)-1)))
-KBUILD_LDFLAGS_MODULE += -T $(srctree)/arch/parisc/kernel/module.lds
+KBUILD_LDS_MODULE += $(srctree)/arch/parisc/kernel/module.lds
 endif
 
 OBJCOPY_FLAGS =-O binary -R .note -R .comment -S
index c345b79414a96f07b9abae13eae09735cfa2dcdc..b2227855de205defa3758650858fef3b0f0815de 100644 (file)
@@ -67,7 +67,7 @@ UTS_MACHINE := $(subst $(space),,$(machine-y))
 ifdef CONFIG_PPC32
 KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
 else
-KBUILD_LDFLAGS_MODULE += -T $(srctree)/arch/powerpc/kernel/module.lds
+KBUILD_LDS_MODULE += $(srctree)/arch/powerpc/kernel/module.lds
 ifeq ($(call ld-ifversion, -ge, 225000000, y),y)
 # Have the linker provide sfpr if possible.
 # There is a corresponding test in arch/powerpc/lib/Makefile
index 7a117be8297c89253fbe0ce07397a10a25181238..426d989125a894cbea11a5052e07221a52368adc 100644 (file)
@@ -52,7 +52,7 @@ ifeq ($(CONFIG_CMODEL_MEDANY),y)
        KBUILD_CFLAGS += -mcmodel=medany
 endif
 ifeq ($(CONFIG_MODULE_SECTIONS),y)
-       KBUILD_LDFLAGS_MODULE += -T $(srctree)/arch/riscv/kernel/module.lds
+       KBUILD_LDS_MODULE += $(srctree)/arch/riscv/kernel/module.lds
 endif
 
 KBUILD_CFLAGS_MODULE += $(call cc-option,-mno-relax)
index bf15818f6947fbecc71ba75b2c96aa90f1f47ed3..905db30d6622d753723d70c8130147e901fbd45c 100644 (file)
@@ -126,10 +126,11 @@ quiet_cmd_ld_ko_o = LD [M]  $@
       cmd_ld_ko_o =                                                     \
        $(LD) -r $(KBUILD_LDFLAGS)                                      \
                  $(KBUILD_LDFLAGS_MODULE) $(LDFLAGS_MODULE)             \
-                 -o $@ $(real-prereqs) ;                                \
+                 $(addprefix -T , $(KBUILD_LDS_MODULE))                 \
+                 -o $@ $(filter %.o, $^);                               \
        $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true)
 
-$(modules): %.ko :%.o %.mod.o FORCE
+$(modules): %.ko :%.o %.mod.o $(KBUILD_LDS_MODULE) FORCE
        +$(call if_changed,ld_ko_o)
 
 targets += $(modules)