Re: [PATCH] sparc: Avoid unsupported LLD branch relocations
John Paul Adrian Glaubitz <[email protected]> Thu, 14 May 2026 07:03:28 +0200
| Newsgroups | org.kernel.vger.sparclinux,dev.linux.lists.llvm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <f8a58a8d567149f514f2f5f47af25905f254f72f.camel@physik.fu-berlin.de> |
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