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.

Adjust the version checker to handle such versions of lld.

Signed-off-by: Bernhard Rosenkränzer <b...@lindev.ch>
---
 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

Reply via email to