On 11/26/25 2:45 PM, Jan Beulich wrote:
> 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<jbeulich@suse.com>
>
> --- 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
LGTM: Reviewed-By: Oleksii Kurochko<oleksii.kurochko@gmail.com>
~ Oleksii