From: Jan Beulich Date: Wed, 15 May 2019 07:49:35 +0000 (+0200) Subject: x86: fix build race when generating temporary object files X-Git-Tag: archive/raspbian/4.11.3+24-g14b62ab3e5-1+rpi1~1^2~55^2~21 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=0ab95a98fea75535d11dc5f06290d923feb27dd1;p=xen.git x86: fix build race when generating temporary object files The rules to generate xen-syms and xen.efi may run in parallel, but both recursively invoke $(MAKE) to build symbol/relocation table temporary object files. These recursive builds would both re-generate the .*.d2 files (where needed). Both would in turn invoke the same rule, thus allowing for a race on the .*.d2.tmp intermediate files. The dependency files of the temporary .xen*.o files live in xen/ rather than xen/arch/x86/ anyway, so won't be included no matter what. Take the opportunity and delete them, as the just re-generated .xen*.S files will trigger a proper re-build of the .xen*.o ones anyway. Empty the DEPS variable in case the set of goals consists of just those temporary object files, thus eliminating the race. Signed-off-by: Jan Beulich Acked-by: Andrew Cooper master commit: 761bb575ce97255029d2d2249b2719e54bc76825 master date: 2019-04-11 10:25:05 +0200 --- diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile index 17e7d3fa34..da1e4827f4 100644 --- a/xen/arch/x86/Makefile +++ b/xen/arch/x86/Makefile @@ -147,7 +147,7 @@ $(TARGET)-syms: prelink.o xen.lds $(BASEDIR)/common/symbols-dummy.o $(NM) -pa --format=sysv $(@D)/$(@F) \ | $(BASEDIR)/tools/symbols --xensyms --sysv --sort \ >$(@D)/$(@F).map - rm -f $(@D)/.$(@F).[0-9]* + rm -f $(@D)/.$(@F).[0-9]* $(@D)/..$(@F).[0-9]* note.o: $(TARGET)-syms $(OBJCOPY) -O binary --only-section=.note.gnu.build-id $(BASEDIR)/xen-syms $@.bin @@ -210,7 +210,7 @@ $(TARGET).efi: prelink-efi.o $(note_file) efi.lds efi/relocs-dummy.o $(BASEDIR)/ if $(guard) false; then rm -f $@; echo 'EFI support disabled'; \ else $(NM) -pa --format=sysv $(@D)/$(@F) \ | $(BASEDIR)/tools/symbols --xensyms --sysv --sort >$(@D)/$(@F).map; fi - rm -f $(@D)/.$(@F).[0-9]* + rm -f $(@D)/.$(@F).[0-9]* $(@D)/..$(@F).[0-9]* efi/boot.init.o efi/runtime.o efi/compat.o efi/buildid.o: $(BASEDIR)/arch/x86/efi/built_in.o efi/boot.init.o efi/runtime.o efi/compat.o efi/buildid.o: ; @@ -241,3 +241,9 @@ clean:: rm -f $(BASEDIR)/.xen.efi.[0-9]* efi/*.efi efi/mkreloc rm -f boot/cmdline.S boot/reloc.S boot/*.lnk boot/*.bin rm -f note.o + +# Suppress loading of DEPS files for internal, temporary target files. This +# then also suppresses re-generation of the respective .*.d2 files. +ifeq ($(filter-out .xen%.o,$(notdir $(MAKECMDGOALS))),) +DEPS:= +endif