From e58d0759ec6df66b4bcfc6643e370b935539e914 Mon Sep 17 00:00:00 2001 From: Travis Geiselbrecht Date: Mon, 19 Oct 2015 19:43:31 -0700 Subject: [PATCH] [arch][multiple] finally solve the linker-script-not-updated problem If a make variable was modified in a way that would cause the linker script to need to be regenerated on arches that use generated linker scripts, make sure we get a fresh copy. Reuse the same generate-then-replace logic that goes into config.h files. --- arch/arm/rules.mk | 14 +++++++++----- arch/arm64/rules.mk | 8 ++++++-- arch/microblaze/rules.mk | 8 ++++++-- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/arch/arm/rules.mk b/arch/arm/rules.mk index e1bab0ef..836bc175 100644 --- a/arch/arm/rules.mk +++ b/arch/arm/rules.mk @@ -296,16 +296,20 @@ GENERATED += \ $(BUILDDIR)/system-twosegment.ld # rules for generating the linker scripts - -$(BUILDDIR)/system-onesegment.ld: $(LOCAL_DIR)/system-onesegment.ld $(wildcard arch/*.ld) +$(BUILDDIR)/system-onesegment.ld: $(LOCAL_DIR)/system-onesegment.ld $(wildcard arch/*.ld) linkerscript.phony @echo generating $@ @$(MKDIR) - $(NOECHO)sed "s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/;s/%KERNEL_BASE%/$(KERNEL_BASE)/;s/%KERNEL_LOAD_OFFSET%/$(KERNEL_LOAD_OFFSET)/" < $< > $@ + $(NOECHO)sed "s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/;s/%KERNEL_BASE%/$(KERNEL_BASE)/;s/%KERNEL_LOAD_OFFSET%/$(KERNEL_LOAD_OFFSET)/" < $< > $@.tmp + @$(call TESTANDREPLACEFILE,$@.tmp,$@) -$(BUILDDIR)/system-twosegment.ld: $(LOCAL_DIR)/system-twosegment.ld $(wildcard arch/*.ld) +$(BUILDDIR)/system-twosegment.ld: $(LOCAL_DIR)/system-twosegment.ld $(wildcard arch/*.ld) linkerscript.phony @echo generating $@ @$(MKDIR) - $(NOECHO)sed "s/%ROMBASE%/$(ROMBASE)/;s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/" < $< > $@ + $(NOECHO)sed "s/%ROMBASE%/$(ROMBASE)/;s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/" < $< > $@.tmp + @$(call TESTANDREPLACEFILE,$@.tmp,$@) + +linkerscript.phony: +.PHONY: linkerscript.phony # arm specific script to try to guess stack usage $(OUTELF).stack: LOCAL_DIR:=$(LOCAL_DIR) diff --git a/arch/arm64/rules.mk b/arch/arm64/rules.mk index ecf51eae..41a222d4 100644 --- a/arch/arm64/rules.mk +++ b/arch/arm64/rules.mk @@ -108,9 +108,13 @@ GENERATED += \ $(BUILDDIR)/system-onesegment.ld # rules for generating the linker script -$(BUILDDIR)/system-onesegment.ld: $(LOCAL_DIR)/system-onesegment.ld $(wildcard arch/*.ld) +$(BUILDDIR)/system-onesegment.ld: $(LOCAL_DIR)/system-onesegment.ld $(wildcard arch/*.ld) linkerscript.phony @echo generating $@ @$(MKDIR) - $(NOECHO)sed "s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/;s/%KERNEL_BASE%/$(KERNEL_BASE)/;s/%KERNEL_LOAD_OFFSET%/$(KERNEL_LOAD_OFFSET)/" < $< > $@ + $(NOECHO)sed "s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/;s/%KERNEL_BASE%/$(KERNEL_BASE)/;s/%KERNEL_LOAD_OFFSET%/$(KERNEL_LOAD_OFFSET)/" < $< > $@.tmp + @$(call TESTANDREPLACEFILE,$@.tmp,$@) + +linkerscript.phony: +.PHONY: linkerscript.phony include make/module.mk diff --git a/arch/microblaze/rules.mk b/arch/microblaze/rules.mk index 1af9d8f1..54ca30d4 100644 --- a/arch/microblaze/rules.mk +++ b/arch/microblaze/rules.mk @@ -53,10 +53,14 @@ GENERATED += \ $(BUILDDIR)/linker.ld # rules for generating the linker -$(BUILDDIR)/linker.ld: $(LOCAL_DIR)/linker.ld $(wildcard arch/*.ld) +$(BUILDDIR)/linker.ld: $(LOCAL_DIR)/linker.ld $(wildcard arch/*.ld) linkerscript.phony @echo generating $@ @$(MKDIR) - $(NOECHO)sed "s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/;s/%KERNEL_BASE%/$(KERNEL_BASE)/;s/%KERNEL_LOAD_OFFSET%/$(KERNEL_LOAD_OFFSET)/;s/%VECTOR_BASE_PHYS%/$(VECTOR_BASE_PHYS)/" < $< > $@ + $(NOECHO)sed "s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/;s/%KERNEL_BASE%/$(KERNEL_BASE)/;s/%KERNEL_LOAD_OFFSET%/$(KERNEL_LOAD_OFFSET)/;s/%VECTOR_BASE_PHYS%/$(VECTOR_BASE_PHYS)/" < $< > $@.tmp + @$(call TESTANDREPLACEFILE,$@.tmp,$@) + +linkerscript.phony: +.PHONY: linkerscript.phony LINKER_SCRIPT += $(BUILDDIR)/linker.ld