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

[xen staging] Arm: split xen-syms linking rule



commit 223ac5068a61eb98b9e1a859a711c45d81326204
Author:     Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Tue Sep 22 09:17:48 2026 +0200
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Tue Sep 22 09:59:00 2026 +0200

    Arm: split xen-syms linking rule
    
    Doing so, besides (hopefully) adding clarity (not the least by way of
    [re-]using pattern rules where possible), also avoids explicit recursive
    $(MAKE) invocations.
    
    By re-using the generic rules introduced when the respective x86 rule was
    split,
    - the .map file now isn't created after the final binary anymore,
    - --strip-debug is passed to $(LD) during early linking passes (for
      consistency the option is also explicitly added to the optional linking
      pass rule),
    - CONFIG_{SUPPRESS_DUPLICATE_SYMBOL_WARNINGS,ENFORCE_UNIQUE_SYMBOLS} are
      now properly respected.
    Orphan section checking and erroring on duplicate symbols, otoh, are
    getting suppressed for now, until the about a dozen orphan section
    warnings and the one duplicate symbol error which would result have been
    taken care of.
    
    While the 4th linking step continues to be avoided when possible, a
    redundant invocation of $(NM) and tools/symbols (plus the assembling of
    the resulting .S file) is hopefully deemed acceptable.
    
    Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
    Reviewed-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
    Acked-by: Michal Orzel <michal.orzel@xxxxxxx>
---
 xen/arch/arm/Makefile     | 43 +++++++++----------------------------------
 xen/scripts/Makefile.link | 13 +++++++++++++
 2 files changed, 22 insertions(+), 34 deletions(-)

diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index b7afd3e58c..e9b003610b 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -84,40 +84,15 @@ ifeq ($(CONFIG_ARM_64),y)
        ln -sf $(@F) $@.efi
 endif
 
-$(TARGET)-syms: $(objtree)/prelink.o $(obj)/xen.lds
-       $(objtree)/tools/symbols $(all_symbols) --empty > $(dot-target).0.S
-       $(MAKE) $(build)=$(@D) $(dot-target).0.o
-       $(LD) $(XEN_LDFLAGS) -T $(obj)/xen.lds $< $(build_id_linker) \
-             $(dot-target).0.o -o $(dot-target).0
-       $(NM) -pa --format=sysv $(dot-target).0 \
-               | $(objtree)/tools/symbols $(all_symbols) --sysv --sort \
-               > $(dot-target).1.S
-       $(MAKE) $(build)=$(@D) $(dot-target).1.o
-       $(LD) $(XEN_LDFLAGS) -T $(obj)/xen.lds $< $(build_id_linker) \
-           $(dot-target).1.o -o $(dot-target).1
-       $(NM) -pa --format=sysv $(dot-target).1 \
-               | $(objtree)/tools/symbols $(all_symbols) --sysv --sort \
-               > $(dot-target).2.S
-       $(MAKE) $(build)=$(@D) $(dot-target).2.o
-       if ! { $(call compare-symbol-tables, $(dot-target).1.o, 
$(dot-target).2.o) >/dev/null; }; \
-       then \
-               set -e; \
-               $(LD) $(XEN_LDFLAGS) -T $(obj)/xen.lds $< $(build_id_linker) \
-                   $(dot-target).2.o -o $(dot-target).2; \
-               $(NM) -pa --format=sysv $(dot-target).2 \
-                       | $(objtree)/tools/symbols $(all_symbols) --sysv --sort 
\
-                       > $(dot-target).3.S; \
-               $(MAKE) $(build)=$(@D) $(dot-target).3.o; \
-               $(call compare-symbol-tables, $(dot-target).2.o, 
$(dot-target).3.o); \
-       else \
-               ln -sf $(dot-target).2.o $(dot-target).3.o; \
-       fi
-       $(LD) $(XEN_LDFLAGS) -T $(obj)/xen.lds $< $(build_id_linker) \
-           $(dot-target).3.o -o $@
-       $(NM) -pa --format=sysv $@ \
-               | $(objtree)/tools/symbols --all-symbols --xensyms --sysv 
--sort \
-               > $@.map
-       rm -f $(dot-target).[0-9]* $(@D)/..$(@F).[0-9]*
+LAST_LINKING_PASS := 3
+
+include scripts/Makefile.link
+
+# Suppress orphan section checking for the time being.
+orphan-handling-y :=
+
+# Downgrade duplicate symbol errors to warnings for the time being.
+syms-warn-dup-$(CONFIG_ENFORCE_UNIQUE_SYMBOLS) := --warn-dup
 
 .PHONY: include
 include:
diff --git a/xen/scripts/Makefile.link b/xen/scripts/Makefile.link
index 6d463a8514..4b8ae90eee 100644
--- a/xen/scripts/Makefile.link
+++ b/xen/scripts/Makefile.link
@@ -33,6 +33,19 @@ final-image-check-y ?= true
        $(LD) $(XEN_LDFLAGS) -T $(obj)/xen.lds $(filter %.o,$^) \
              $(build_id_linker) --strip-debug -o $@
 
+ifneq ($(LAST_LINKING_PASS),2)
+
+.$(TARGET)-syms.2: $(objtree)/prelink.o .$(TARGET)-syms.2.o $(obj)/xen.lds
+       if ! { $(call compare-symbol-tables, .$(TARGET)-syms.1.o, 
.$(TARGET)-syms.2.o) >/dev/null; }; \
+       then \
+               $(LD) $(XEN_LDFLAGS) -T $(obj)/xen.lds $(filter %.o,$^) \
+                     $(build_id_linker) --strip-debug -o $@; \
+       else \
+               ln -sf .$(TARGET)-syms.1 $@; \
+       fi
+
+endif
+
 .$(TARGET)-syms.$(LAST_LINKING_PASS): $(objtree)/prelink.o \
                                       .$(TARGET)-syms.$(LAST_LINKING_PASS).o \
                                       $(obj)/xen.lds
--
generated by git-patchbot for /home/xen/git/xen.git#staging



 


Rackspace

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