Hi Bernhard, I have added the ClangBuiltLinux mailing list, kbuild mailing list, and Masahiro and Nick to CC. Maybe ld-version.sh and cc-version.sh should be added to a MAINTAINERS entry to make sure we get CC'd (I can send one along tomorrow). On Tue, Mar 02, 2021 at 11:12:11PM +0100, Bernhard Rosenkränzer wrote: > If LLD was built with -DLLD_VENDOR="xyz", ld.lld --version output > will prefix LLD_VENDOR. Since LLD_VENDOR can contain spaces, the > LLD identifier isn't guaranteed to be $2 either. TIL about LLD_VENDOR... > Adjust the version checker to handle such versions of lld. > > Signed-off-by: Bernhard Rosenkränzer <bero@xxxxxxxxx> > --- > scripts/ld-version.sh | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/scripts/ld-version.sh b/scripts/ld-version.sh > index a463273509b5..4c042a306e22 100755 > --- a/scripts/ld-version.sh > +++ b/scripts/ld-version.sh > @@ -49,6 +49,18 @@ elif [ "$1" = LLD ]; then > min_version=$lld_min_version > name=LLD > disp_name=LLD > +elif echo "$@" |grep -q ' LLD '; then > + # if LLD was built with -DLLD_VENDOR="xyz", it ld.lld --version > + # says "xyz LLD [...]". Since LLD_VENDOR may contain spaces, we > + # don't know the exact position of "LLD" and the version info > + # at this point > + while [ "$1" != "LLD" ]; do > + shift > + done > + version=$2 > + min_version=$lld_min_version > + name=LLD > + disp_name=LLD > else > echo "$orig_args: unknown linker" >&2 > exit 1 > -- > 2.30.1 > I am not sure what a better fix would be of the top of my head but wouldn't it be better to avoid the duplication? This diff below works for me with or without LLD_VENDOR defined. diff --git a/scripts/ld-version.sh b/scripts/ld-version.sh index a463273509b5..84f9fc741f09 100755 --- a/scripts/ld-version.sh +++ b/scripts/ld-version.sh @@ -44,7 +44,10 @@ if [ "$1" = GNU -a "$2" = ld ]; then elif [ "$1" = GNU -a "$2" = gold ]; then echo "gold linker is not supported as it is not capable of linking the kernel proper." >&2 exit 1 -elif [ "$1" = LLD ]; then +elif echo "$*" | grep -q LLD; then + while [ "$1" != "LLD" ]; do + shift + done version=$2 min_version=$lld_min_version name=LLD