diff mbox series

ARM: Make UNWINDER_ARM depend on ld.bfd or ld.lld 11.0.0+

Message ID 20210311005418.2207250-1-nathan@kernel.org (mailing list archive)
State New, archived
Headers show
Series ARM: Make UNWINDER_ARM depend on ld.bfd or ld.lld 11.0.0+ | expand

Commit Message

Nathan Chancellor March 11, 2021, 12:54 a.m. UTC
When linking aspeed_g5_defconfig with ld.lld 10.0.1, the following error
occurs:

ld.lld: error: .tmp_vmlinux.kallsyms1:(.ARM.exidx+0x34D98): relocation
R_ARM_PREL31 out of range: 2135538592 is not in [-1073741824,
1073741823]

This was resolved in ld.lld 11.0.0 but the minimum supported version of
ld.lld for the kernel is 10.0.1. Prevent CONFIG_UNWINDER_ARM from being
selected in this case so that the problematic sections cannot be
created.

Link: https://github.com/ClangBuiltLinux/linux/issues/732
Link: https://github.com/llvm/llvm-project/commit/48aebfc908ba7b9372aaa478a9c200789491096e
Suggested-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
---
 arch/arm/Kconfig.debug | 2 ++
 1 file changed, 2 insertions(+)


base-commit: a38fd8748464831584a19438cbb3082b5a2dab15

Comments

Nick Desaulniers March 11, 2021, 1:30 a.m. UTC | #1
On Wed, Mar 10, 2021 at 4:54 PM Nathan Chancellor <nathan@kernel.org> wrote:
>
> When linking aspeed_g5_defconfig with ld.lld 10.0.1, the following error
> occurs:
>
> ld.lld: error: .tmp_vmlinux.kallsyms1:(.ARM.exidx+0x34D98): relocation
> R_ARM_PREL31 out of range: 2135538592 is not in [-1073741824,
> 1073741823]
>
> This was resolved in ld.lld 11.0.0 but the minimum supported version of
> ld.lld for the kernel is 10.0.1. Prevent CONFIG_UNWINDER_ARM from being
> selected in this case so that the problematic sections cannot be
> created.
>
> Link: https://github.com/ClangBuiltLinux/linux/issues/732
> Link: https://github.com/llvm/llvm-project/commit/48aebfc908ba7b9372aaa478a9c200789491096e
> Suggested-by: Nick Desaulniers <ndesaulniers@google.com>
> Signed-off-by: Nathan Chancellor <nathan@kernel.org>

Thanks for the patch.  We discussed at the kernelCI meeting yesterday
and the clangbuiltlinux meeting today continuing coverage for kernel
builds with clang-10, so this is still worthwhile IMO at least for
randconfig testing not to select known broken configs when using older
tools. We can rip it out once we bump the minimum supported version of
clang.

Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>

> ---
>  arch/arm/Kconfig.debug | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
> index 9e0b5e7f12af..64c1f8a46ab5 100644
> --- a/arch/arm/Kconfig.debug
> +++ b/arch/arm/Kconfig.debug
> @@ -66,6 +66,8 @@ config UNWINDER_FRAME_POINTER
>  config UNWINDER_ARM
>         bool "ARM EABI stack unwinder"
>         depends on AEABI && !FUNCTION_GRAPH_TRACER
> +       # https://github.com/ClangBuiltLinux/linux/issues/732
> +       depends on !LD_IS_LLD || LLD_VERSION >= 110000
>         select ARM_UNWIND
>         help
>           This option enables stack unwinding support in the kernel
>
> base-commit: a38fd8748464831584a19438cbb3082b5a2dab15
> --
diff mbox series

Patch

diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index 9e0b5e7f12af..64c1f8a46ab5 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -66,6 +66,8 @@  config UNWINDER_FRAME_POINTER
 config UNWINDER_ARM
 	bool "ARM EABI stack unwinder"
 	depends on AEABI && !FUNCTION_GRAPH_TRACER
+	# https://github.com/ClangBuiltLinux/linux/issues/732
+	depends on !LD_IS_LLD || LLD_VERSION >= 110000
 	select ARM_UNWIND
 	help
 	  This option enables stack unwinding support in the kernel