[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] common: make sure symbols-dummy.o gets rebuilt when needed



The per-arch top level make files don't record any dependencies for the
file, so its mere existence is enough for make to consider it up-to-
date. As of ab3e5f5ff9 ("xsplice, symbols: Implement fast symbol names
-> virtual addresses lookup") the file, however, depends on the
FAST_SYMBOL_LOOKUP config option, which may change between incremental
re-builds.

Use the $(extra-y) machinery to get the file built without an extra
recursion step into common/, but instead right when the other things in
that directory get built.

Take the opportunity and also make the gendep invocation cover both
$(obj-bin-y) and $(extra-y), even if this is not directly related here.
I should have included them right away in 8b6ef9c152 ("compat: enforce
distinguishable file names in symbol table").

Reported-by: Wei Liu <wei.liu2@xxxxxxxxxx>
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>

--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -110,7 +110,7 @@ define gendep
         DEPS += $(dir $(1)).$(notdir $(1)).d
     endif
 endef
-$(foreach o,$(filter-out %/,$(obj-y)),$(eval $(call gendep,$(o))))
+$(foreach o,$(filter-out %/,$(obj-y) $(obj-bin-y) $(extra-y)),$(eval $(call 
gendep,$(o))))
 
 # Ensure each subdirectory has exactly one trailing slash.
 subdir-n := $(patsubst %,%/,$(patsubst %/,%,$(subdir-n) $(subdir-)))
@@ -158,24 +158,27 @@ endif
 # Always build obj-bin files as binary even if they come from C source. 
 $(obj-bin-y): CFLAGS := $(filter-out -flto,$(CFLAGS))
 
-built_in.o: $(obj-y)
+built_in.o: $(obj-y) extra
 ifeq ($(obj-y),)
        $(CC) $(CFLAGS) -c -x c /dev/null -o $@
 else
 ifeq ($(CONFIG_LTO),y)
-       $(LD_LTO) -r -o $@ $^
+       $(LD_LTO) -r -o $@ $(filter-out extra,$^)
 else
-       $(LD) $(LDFLAGS) -r -o $@ $^
+       $(LD) $(LDFLAGS) -r -o $@ $(filter-out extra,$^)
 endif
 endif
 
-built_in_bin.o: $(obj-bin-y)
+built_in_bin.o: $(obj-bin-y) extra
 ifeq ($(obj-bin-y),)
        $(CC) $(AFLAGS) -c -x assembler /dev/null -o $@
 else
-       $(LD) $(LDFLAGS) -r -o $@ $^
+       $(LD) $(LDFLAGS) -r -o $@ $(filter-out extra,$^)
 endif
 
+.PHONY: extra
+extra: $(extra-y)
+
 # Force execution of pattern rules (for which PHONY cannot be directly used).
 .PHONY: FORCE
 FORCE:
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -100,9 +100,6 @@ prelink.o: $(ALL_OBJS)
        $(LD) $(LDFLAGS) -r -o $@ $^
 endif
 
-$(BASEDIR)/common/symbols-dummy.o:
-       $(MAKE) -f $(BASEDIR)/Rules.mk -C $(BASEDIR)/common symbols-dummy.o
-
 $(TARGET)-syms: prelink.o xen.lds $(BASEDIR)/common/symbols-dummy.o
        $(LD) $(LDFLAGS) -T xen.lds -N prelink.o \
            $(BASEDIR)/common/symbols-dummy.o -o $(@D)/.$(@F).0
--- a/xen/arch/x86/Makefile
+++ b/xen/arch/x86/Makefile
@@ -127,9 +127,6 @@ prelink-efi.o: $(ALL_OBJS) efi/boot.init
        $(guard) $(LD) $(LDFLAGS) -r -o $@ $(filter-out %/efi/built_in.o,$^)
 endif
 
-$(BASEDIR)/common/symbols-dummy.o:
-       $(MAKE) -f $(BASEDIR)/Rules.mk -C $(BASEDIR)/common symbols-dummy.o
-
 $(TARGET)-syms: prelink.o xen.lds $(BASEDIR)/common/symbols-dummy.o
        $(LD) $(LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
            $(BASEDIR)/common/symbols-dummy.o -o $(@D)/.$(@F).0
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -75,6 +75,8 @@ tmem-y := tmem.o tmem_xen.o tmem_control
 tmem-$(CONFIG_COMPAT) += compat/tmem_xen.o
 obj-$(CONFIG_TMEM) += $(tmem-y)
 
+extra-y := symbols-dummy.o
+
 subdir-$(CONFIG_COVERAGE) += coverage
 subdir-$(CONFIG_UBSAN) += ubsan
 





_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.