[PATCH] Fix ld-version.sh script if LLD was built with LLD_VENDOR

From: Bernhard Rosenkränzer
Date: Tue Mar 02 2021 - 18:41:22 EST


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 <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