Re: [PATCH] sparc: Avoid unsupported LLD branch relocations

From: John Paul Adrian Glaubitz

Date: Thu May 14 2026 - 01:03:51 EST


Hi Rosen,

On Wed, 2026-05-13 at 21:19 -0700, Rosen Penev wrote:
> LLD does not support several SPARC branch relocation types, including
> R_SPARC_WDISP16, R_SPARC_WDISP19, and R_SPARC_WDISP22. A sparc64
> allmodconfig LLVM build can therefore fail when trap table code and
> low-level assembly leave branches to global symbols for the linker.
>
> Use local labels for branches that stay within the same assembled
> object so the assembler can resolve them directly. Convert the
> remaining cross-object branches and tail calls to absolute set/jmpl
> sequences, which LLD handles through the usual HI22/LO10 relocations.
>
> Disable the unused sparc32 syscall trace entry points when compat
> support is not built, and request sys_llseek for the native syscall
> table so the LLD allmodconfig build remains self-contained.

I would rather fix LLD than making such intrusive changes to the SPARC
code in the kernel. In particular, since this touches the CPU-optimized
memory routines which had been haunted by subtle bugs for years and were
only fixed recently.

Is improving LLD in this case not possible?

Adrian

--
.''`. John Paul Adrian Glaubitz
: :' : Debian Developer
`. `' Physicist
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913