2021-07-02 03:33:29

by Lecopzer Chen

[permalink] [raw]
Subject: [PATCH v3 2/2] Kbuild: lto: add make version checking

LTO with MODVERSIONS will fail in generating correct CRC because
the makefile rule doesn't work for make with version 3.8X.[1]

Thus we need to check make version during selecting on LTO Kconfig.
and the suitable version should be 4.2(40200) which released in 2016[2].

[1] https://lore.kernel.org/lkml/[email protected]/
[2] https://ftp.gnu.org/gnu/make/
Signed-off-by: Lecopzer Chen <[email protected]>
---
arch/Kconfig | 1 +
1 file changed, 1 insertion(+)

diff --git a/arch/Kconfig b/arch/Kconfig
index 129df498a8e1..beee68149da8 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -639,6 +639,7 @@ config HAS_LTO_CLANG
def_bool y
# Clang >= 11: https://github.com/ClangBuiltLinux/linux/issues/510
depends on CC_IS_CLANG && CLANG_VERSION >= 110000 && LD_IS_LLD && AS_IS_LLVM
+ depends on !MODVERSIONS || MAKE_VERSION >= 40200
depends on $(success,$(NM) --help | head -n 1 | grep -qi llvm)
depends on $(success,$(AR) --help | head -n 1 | grep -qi llvm)
depends on ARCH_SUPPORTS_LTO_CLANG
--
2.18.0


2021-07-04 00:18:34

by Nathan Chancellor

[permalink] [raw]
Subject: Re: [PATCH v3 2/2] Kbuild: lto: add make version checking

On Fri, Jul 02, 2021 at 11:29:43AM +0800, Lecopzer Chen wrote:
> LTO with MODVERSIONS will fail in generating correct CRC because
> the makefile rule doesn't work for make with version 3.8X.[1]
>
> Thus we need to check make version during selecting on LTO Kconfig.
> and the suitable version should be 4.2(40200) which released in 2016[2].
>
> [1] https://lore.kernel.org/lkml/[email protected]/
> [2] https://ftp.gnu.org/gnu/make/
> Signed-off-by: Lecopzer Chen <[email protected]>

Reviewed-by: Nathan Chancellor <[email protected]>

> ---
> arch/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/Kconfig b/arch/Kconfig
> index 129df498a8e1..beee68149da8 100644
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -639,6 +639,7 @@ config HAS_LTO_CLANG
> def_bool y
> # Clang >= 11: https://github.com/ClangBuiltLinux/linux/issues/510
> depends on CC_IS_CLANG && CLANG_VERSION >= 110000 && LD_IS_LLD && AS_IS_LLVM
> + depends on !MODVERSIONS || MAKE_VERSION >= 40200
> depends on $(success,$(NM) --help | head -n 1 | grep -qi llvm)
> depends on $(success,$(AR) --help | head -n 1 | grep -qi llvm)
> depends on ARCH_SUPPORTS_LTO_CLANG
> --
> 2.18.0

2021-07-05 02:06:42

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH v3 2/2] Kbuild: lto: add make version checking

On Fri, Jul 2, 2021 at 12:29 PM Lecopzer Chen
<[email protected]> wrote:
>
> LTO with MODVERSIONS will fail in generating correct CRC because
> the makefile rule doesn't work for make with version 3.8X.[1]
>
> Thus we need to check make version during selecting on LTO Kconfig.
> and the suitable version should be 4.2(40200) which released in 2016[2].
>
> [1] https://lore.kernel.org/lkml/[email protected]/
> [2] https://ftp.gnu.org/gnu/make/
> Signed-off-by: Lecopzer Chen <[email protected]>
> ---

NACK for the same reason as 1/2.

We need to write correct code.
If we cannot, we need to add 'depends on BROKEN'.




> arch/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/Kconfig b/arch/Kconfig
> index 129df498a8e1..beee68149da8 100644
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -639,6 +639,7 @@ config HAS_LTO_CLANG
> def_bool y
> # Clang >= 11: https://github.com/ClangBuiltLinux/linux/issues/510
> depends on CC_IS_CLANG && CLANG_VERSION >= 110000 && LD_IS_LLD && AS_IS_LLVM
> + depends on !MODVERSIONS || MAKE_VERSION >= 40200
> depends on $(success,$(NM) --help | head -n 1 | grep -qi llvm)
> depends on $(success,$(AR) --help | head -n 1 | grep -qi llvm)
> depends on ARCH_SUPPORTS_LTO_CLANG
> --
> 2.18.0
>


--
Best Regards
Masahiro Yamada