From: Jan Beulich Date: Fri, 15 Oct 2021 09:18:51 +0000 (+0200) Subject: x86/build: suppress EFI-related tool chain checks upon local $(MAKE) recursion X-Git-Tag: archive/raspbian/4.14.3+32-g9de3671772-1_deb11u1+rpi1^2^2~48^2~19 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=b1ac7bb7f77b63838564e0c151f8aca80ab6a6b6;p=xen.git x86/build: suppress EFI-related tool chain checks upon local $(MAKE) recursion The xen-syms and xen.efi linking steps are serialized only when the intermediate note.o file is necessary. Otherwise both may run in parallel. This in turn means that the compiler / linker invocations to create efi/check.o / efi/check.efi may also happen twice in parallel. Obviously it's a bad idea to have multiple producers of the same output race with one another - every once in a while one may e.g. observe objdump: efi/check.efi: file format not recognized We don't need this EFI related checking to occur when producing the intermediate symbol and relocation table objects, and we have an easy way of suppressing it: Simply pass in "efi-y=", overriding the assignments done in the Makefile and thus forcing the tool chain checks to be bypassed. Signed-off-by: Jan Beulich Reviewed-by: Anthony PERARD master commit: 24b0ce9a5da2e648cde818055a085bcbcf24ecb0 master date: 2021-10-11 10:58:17 +0200 --- diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile index bbd11a4726..fd0acd566a 100644 --- a/xen/arch/x86/Makefile +++ b/xen/arch/x86/Makefile @@ -145,13 +145,13 @@ $(TARGET)-syms: prelink.o xen.lds $(NM) -pa --format=sysv $(@D)/.$(@F).0 \ | $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort \ >$(@D)/.$(@F).0.S - $(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).0.o + $(MAKE) -f $(BASEDIR)/Rules.mk efi-y= $(@D)/.$(@F).0.o $(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \ $(@D)/.$(@F).0.o -o $(@D)/.$(@F).1 $(NM) -pa --format=sysv $(@D)/.$(@F).1 \ | $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort $(syms-warn-dup-y) \ >$(@D)/.$(@F).1.S - $(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).1.o + $(MAKE) -f $(BASEDIR)/Rules.mk efi-y= $(@D)/.$(@F).1.o $(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \ $(@D)/.$(@F).1.o -o $@ $(NM) -pa --format=sysv $(@D)/$(@F) \ @@ -211,14 +211,14 @@ $(TARGET).efi: prelink-efi.o $(note_file) efi.lds efi/relocs-dummy.o efi/mkreloc efi/mkreloc $(foreach base,$(VIRT_BASE) $(ALT_BASE),$(@D)/.$(@F).$(base).0) >$(@D)/.$(@F).0r.S $(NM) -pa --format=sysv $(@D)/.$(@F).$(VIRT_BASE).0 \ | $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort >$(@D)/.$(@F).0s.S - $(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).0r.o $(@D)/.$(@F).0s.o + $(MAKE) -f $(BASEDIR)/Rules.mk efi-y= $(@D)/.$(@F).0r.o $(@D)/.$(@F).0s.o $(foreach base, $(VIRT_BASE) $(ALT_BASE), \ $(LD) $(call EFI_LDFLAGS,$(base)) -T efi.lds -N $< \ $(@D)/.$(@F).0r.o $(@D)/.$(@F).0s.o $(note_file_option) -o $(@D)/.$(@F).$(base).1 &&) : efi/mkreloc $(foreach base,$(VIRT_BASE) $(ALT_BASE),$(@D)/.$(@F).$(base).1) >$(@D)/.$(@F).1r.S $(NM) -pa --format=sysv $(@D)/.$(@F).$(VIRT_BASE).1 \ | $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort >$(@D)/.$(@F).1s.S - $(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).1r.o $(@D)/.$(@F).1s.o + $(MAKE) -f $(BASEDIR)/Rules.mk efi-y= $(@D)/.$(@F).1r.o $(@D)/.$(@F).1s.o $(LD) $(call EFI_LDFLAGS,$(VIRT_BASE)) -T efi.lds -N $< \ $(@D)/.$(@F).1r.o $(@D)/.$(@F).1s.o $(note_file_option) -o $@ $(NM) -pa --format=sysv $(@D)/$(@F) \