[PATCH] sparc: Disable compat support with LLD

Rosen Penev posted 1 patch 1 month ago
arch/sparc/Kconfig | 1 +
1 file changed, 1 insertion(+)
[PATCH] sparc: Disable compat support with LLD
Posted by Rosen Penev 1 month ago
An LLVM=1 sparc64 allmodconfig enables COMPAT and then tries to
build the 32-bit vDSO. That path cannot be linked with ld.lld:

  ld.lld: error: unknown emulation: elf32_sparc

ld.lld does not support the 32-bit SPARC ELF emulation used for
the compat vDSO, so keep COMPAT disabled when LLD is the linker.
This avoids selecting an unsupported build path while leaving the
existing GNU ld configuration unchanged.

Assisted-by: Codex:GPT-5.5
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 arch/sparc/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index a6b787efc2c4..681ab2fd3d8a 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -474,6 +474,7 @@ endmenu
 config COMPAT
 	bool
 	depends on SPARC64
+	depends on !LD_IS_LLD
 	default y
 	select HAVE_UID16
 	select ARCH_WANT_OLD_COMPAT_IPC
-- 
2.54.0
Re: [PATCH] sparc: Disable compat support with LLD
Posted by Nathan Chancellor 4 weeks, 1 day ago
On Thu, May 07, 2026 at 05:08:34PM -0700, Rosen Penev wrote:
> An LLVM=1 sparc64 allmodconfig enables COMPAT and then tries to
> build the 32-bit vDSO. That path cannot be linked with ld.lld:
> 
>   ld.lld: error: unknown emulation: elf32_sparc
> 
> ld.lld does not support the 32-bit SPARC ELF emulation used for
> the compat vDSO, so keep COMPAT disabled when LLD is the linker.
> This avoids selecting an unsupported build path while leaving the
> existing GNU ld configuration unchanged.
> 
> Assisted-by: Codex:GPT-5.5
> Signed-off-by: Rosen Penev <rosenp@gmail.com>

It does not sound like sparc32 will be supported in ld.lld without
someone contributing the work:

  https://github.com/llvm/llvm-project/issues/100320#issuecomment-2254229711

So this seems reasonable, even if we don't support ld.lld for sparc64
in the kernel right now.

Acked-by: Nathan Chancellor <nathan@kernel.org>

> ---
>  arch/sparc/Kconfig | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
> index a6b787efc2c4..681ab2fd3d8a 100644
> --- a/arch/sparc/Kconfig
> +++ b/arch/sparc/Kconfig
> @@ -474,6 +474,7 @@ endmenu
>  config COMPAT
>  	bool
>  	depends on SPARC64
> +	depends on !LD_IS_LLD
>  	default y
>  	select HAVE_UID16
>  	select ARCH_WANT_OLD_COMPAT_IPC
> -- 
> 2.54.0
> 

-- 
Cheers,
Nathan