From d00cb14893065b017d09d07badae51b989825503 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Mon, 1 Dec 2025 10:12:27 +0100 Subject: [PATCH] symbols/riscv: don't use symbols-dummy In particular when linking with lld, which converts hidden symbols to local ones, the ELF symbol table can change in unhelpful ways between the first two linking passes, resulting in the .rodata contributions to change between the 2nd and 3rd pass. That, however, renders our embedded symbol table pretty much unusable; the recently introduced self-test may then also fail. (Another difference between compiling a C file and assembling the generated ones is that - with -fdata-sections in use - the .rodata contributions move between passes 1 and 2, when we'd prefer them not to.) Signed-off-by: Jan Beulich Reviewed-By: Oleksii Kurochko --- xen/arch/riscv/Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/xen/arch/riscv/Makefile b/xen/arch/riscv/Makefile index 598d1ded9b..d667234949 100644 --- a/xen/arch/riscv/Makefile +++ b/xen/arch/riscv/Makefile @@ -22,8 +22,10 @@ $(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 $< \ - $(objtree)/common/symbols-dummy.o -o $(dot-target).0 + $(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