• Masahiro Yamada's avatar
    kbuild: check the minimum linker version in Kconfig · 02aff859
    Masahiro Yamada authored
    Unify the two scripts/ld-version.sh and scripts/lld-version.sh, and
    check the minimum linker version like scripts/cc-version.sh did.
    
    I tested this script for some corner cases reported in the past:
    
     - GNU ld version 2.25-15.fc23
       as reported by commit 8083013f ("ld-version: Fix it on Fedora")
    
     - GNU ld (GNU Binutils) 2.20.1.20100303
       as reported by commit 0d61ed17 ("ld-version: Drop the 4th and
       5th version components")
    
    This script show an error message if the linker is too old:
    
      $ make LD=ld.lld-9
        SYNC    include/config/auto.conf
      ***
      *** Linker is too old.
      ***   Your LLD version:    9.0.1
      ***   Minimum LLD version: 10.0.1
      ***
      scripts/Kconfig.include:50: Sorry, this linker is not supported.
      make[2]: *** [scripts/kconfig/Makefile:71: syncconfig] Error 1
      make[1]: *** [Makefile:600: syncconfig] Error 2
      make: *** [Makefile:708: include/config/auto.conf] Error 2
    
    I also moved the check for gold to this script, so gold is still rejected:
    
      $ make LD=gold
        SYNC    include/config/auto.conf
      gold linker is not supported as it is not capable of linking the kernel proper.
      scripts/Kconfig.include:50: Sorry, this linker is not supported.
      make[2]: *** [scripts/kconfig/Makefile:71: syncconfig] Error 1
      make[1]: *** [Makefile:600: syncconfig] Error 2
      make: *** [Makefile:708: include/config/auto.conf] Error 2
    
    Thanks to David Laight for suggesting shell script improvements.
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    Acked-by: default avatarNick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: default avatarNathan Chancellor <nathan@kernel.org>
    Tested-by: default avatarNathan Chancellor <nathan@kernel.org>
    02aff859
ld-version.sh 1.67 KB