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

[xen staging] xen: fix build when $(obj-y) consists of just blanks

commit 8e0fe4fe5fd89d80a362d8a9a46726aded3b49c4
Author:     Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Fri Dec 11 11:53:24 2020 +0100
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Fri Dec 11 11:53:24 2020 +0100

    xen: fix build when $(obj-y) consists of just blanks
    This case can occur when combining empty lists
    obj-y :=
    obj-y += $(empty)
    obj-y := $(empty) $(empty)
    where (only) blanks would accumulate. This was only a latent issue until
    now, but would become an active issue for Arm once lib/ gets populated
    with all respective objects going into the to be introduced lib.a.
    Also address a related issue at this occasion: When an empty built_in.o
    gets created, .built_in.o.d will have its dependencies recorded. If, on
    a subsequent incremental build, an actual constituent of built_in.o
    appeared, the $(filter-out ) would leave these recorded dependencies in
    place. But of course the linker won't know what to do with C header
    files. (The apparent alternative of avoiding to pass $(c_flags) or
    $(a_flags) would not be reliable afaict, as among these flags there may
    be some affecting information conveyed via the object file to the
    linker. The linker, finding inconsistent flags across object files, may
    then error out.) Using just $(obj-y) won't work either: It breaks when
    the same object file is listed more than once.
    Reported-by: Julien Grall <julien@xxxxxxx>
    Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
    Acked-by: Wei Liu <wl@xxxxxxx>
    Reviewed-by: Bertrand Marquis <bertrand.marquis@xxxxxxx>
    Reviewed-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
 xen/Rules.mk | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/xen/Rules.mk b/xen/Rules.mk
index 333e19bec3..d5e5eb33de 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -130,13 +130,13 @@ c_flags += $(CFLAGS-y)
 a_flags += $(CFLAGS-y) $(AFLAGS-y)
 built_in.o: $(obj-y) $(extra-y)
-ifeq ($(obj-y),)
+ifeq ($(strip $(obj-y)),)
        $(CC) $(c_flags) -c -x c /dev/null -o $@
 ifeq ($(CONFIG_LTO),y)
-       $(LD_LTO) -r -o $@ $(filter-out $(extra-y),$^)
+       $(LD_LTO) -r -o $@ $(filter $(obj-y),$^)
-       $(LD) $(XEN_LDFLAGS) -r -o $@ $(filter-out $(extra-y),$^)
+       $(LD) $(XEN_LDFLAGS) -r -o $@ $(filter $(obj-y),$^)
@@ -145,10 +145,10 @@ targets += $(filter-out $(subdir-obj-y), $(obj-y)) 
 targets += $(MAKECMDGOALS)
 built_in_bin.o: $(obj-bin-y) $(extra-y)
-ifeq ($(obj-bin-y),)
+ifeq ($(strip $(obj-bin-y)),)
        $(CC) $(a_flags) -c -x assembler /dev/null -o $@
-       $(LD) $(XEN_LDFLAGS) -r -o $@ $(filter-out $(extra-y),$^)
+       $(LD) $(XEN_LDFLAGS) -r -o $@ $(filter $(obj-bin-y),$^)
 # Force execution of pattern rules (for which PHONY cannot be directly used).
generated by git-patchbot for /home/xen/git/xen.git#staging



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