]> xenbits.xensource.com Git - people/royger/xen.git/commitdiff
common: make sure symbols-dummy.o gets rebuilt when needed
authorJan Beulich <jbeulich@suse.com>
Mon, 26 Nov 2018 14:44:05 +0000 (15:44 +0100)
committerJan Beulich <jbeulich@suse.com>
Mon, 26 Nov 2018 14:44:05 +0000 (15:44 +0100)
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. Some makefile adjustments are necessary to
actually make this machinery work beyond the restricted set of place it
was used in before. Note however that an important restriction remains:
$(extra-y) may not overlap $(obj-y) or $(obj-bin-y).

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@citrix.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Wei Liu <wei.liu2@citrix.com>
xen/Rules.mk
xen/arch/arm/Makefile
xen/arch/x86/Makefile
xen/common/Makefile

index 9c697dc57b8c8257781f71d13be2d3d2bb6d7a18..a151b3f625bc5500c8c2b5fd40e87e70ff1a1c30 100644 (file)
@@ -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,22 +158,22 @@ 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-y)
 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-y),$^)
 else
-       $(LD) $(LDFLAGS) -r -o $@ $^
+       $(LD) $(LDFLAGS) -r -o $@ $(filter-out $(extra-y),$^)
 endif
 endif
 
-built_in_bin.o: $(obj-bin-y)
+built_in_bin.o: $(obj-bin-y) $(extra-y)
 ifeq ($(obj-bin-y),)
        $(CC) $(AFLAGS) -c -x assembler /dev/null -o $@
 else
-       $(LD) $(LDFLAGS) -r -o $@ $^
+       $(LD) $(LDFLAGS) -r -o $@ $(filter-out $(extra-y),$^)
 endif
 
 # Force execution of pattern rules (for which PHONY cannot be directly used).
index 281042f1e086e6877a730c3da1834a07735be221..cb902cb6feddc17ff6be46b5a74a06e719c36cfe 100644 (file)
@@ -100,10 +100,7 @@ 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
+$(TARGET)-syms: prelink.o xen.lds
        $(LD) $(LDFLAGS) -T xen.lds -N prelink.o \
            $(BASEDIR)/common/symbols-dummy.o -o $(@D)/.$(@F).0
        $(NM) -pa --format=sysv $(@D)/.$(@F).0 \
index 484dcb7ce791bf3d569d1a7725ba9fd8e12e3c59..ef099398bff222e79239358b05c42b762e365172 100644 (file)
@@ -127,10 +127,7 @@ prelink-efi.o: $(ALL_OBJS) efi/boot.init.o efi/runtime.o efi/compat.o
        $(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
+$(TARGET)-syms: prelink.o xen.lds
        $(LD) $(LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
            $(BASEDIR)/common/symbols-dummy.o -o $(@D)/.$(@F).0
        $(NM) -pa --format=sysv $(@D)/.$(@F).0 \
@@ -191,7 +188,7 @@ note_file :=
 endif
 note_file_option ?= $(note_file)
 
-$(TARGET).efi: prelink-efi.o $(note_file) efi.lds efi/relocs-dummy.o $(BASEDIR)/common/symbols-dummy.o efi/mkreloc
+$(TARGET).efi: prelink-efi.o $(note_file) efi.lds efi/relocs-dummy.o efi/mkreloc
        $(foreach base, $(VIRT_BASE) $(ALT_BASE), \
                  $(guard) $(LD) $(call EFI_LDFLAGS,$(base)) -T efi.lds -N $< efi/relocs-dummy.o \
                        $(BASEDIR)/common/symbols-dummy.o $(note_file_option) -o $(@D)/.$(@F).$(base).0 &&) :
index 6a05fffc7a91a56d9f340f295ab01997cd73ca49..ffdfb7448d9cdbb9de3794a22c1bdb4521ef7c99 100644 (file)
@@ -75,6 +75,8 @@ tmem-y := tmem.o tmem_xen.o tmem_control.o
 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