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, otoh, is getting suppressed for now, until the
about a dozen warnings 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 <[email protected]>

--- a/xen/arch/riscv/Makefile
+++ b/xen/arch/riscv/Makefile
@@ -31,40 +31,12 @@ obj-y += vtimer.o
 $(TARGET): $(TARGET)-syms
        $(OBJCOPY) -O binary -S $< $@
 
-$(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 \
-               > [email protected]
-       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 :=
 
 $(obj)/xen.lds: $(src)/xen.lds.S FORCE
        $(call if_changed_dep,cpp_lds_S)


Reply via email to