From 21510698817fbe7254112b5967854cad28a612bf Mon Sep 17 00:00:00 2001
From: Sergey Vinokurov <serg.foo@gmail.com>
Date: Wed, 5 Jan 2022 01:33:06 +0000
Subject: [PATCH] Improve detection of lld linker
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Newer lld versions may include vendor info in --version output and
thus the version string may not start with ‘LLD’.

Fixes #20907
---
 compiler/GHC/SysTools/Info.hs | 2 +-
 m4/find_ld.m4                 | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/compiler/GHC/SysTools/Info.hs b/compiler/GHC/SysTools/Info.hs
index 12be61ea0b3a..83a76b9efba4 100644
--- a/compiler/GHC/SysTools/Info.hs
+++ b/compiler/GHC/SysTools/Info.hs
@@ -142,7 +142,7 @@ getLinkerInfo' logger dflags = do
           -- ELF specific flag, see Note [ELF needed shared libs]
           return (GnuGold [Option "-Wl,--no-as-needed"])
 
-        | any ("LLD" `isPrefixOf`) stdo =
+        | any (\line -> "LLD" `isPrefixOf` line || "LLD" `elem` words line) stdo =
           return (LlvmLLD $ map Option [ --see Note [ELF needed shared libs]
                                         "-Wl,--no-as-needed"])
 
diff --git a/m4/find_ld.m4 b/m4/find_ld.m4
index a6b5c9c598ef..3d4443be54d9 100644
--- a/m4/find_ld.m4
+++ b/m4/find_ld.m4
@@ -41,6 +41,8 @@ AC_DEFUN([FIND_LD],[
                    ;;
               "LLD"*)
                    FP_CC_LINKER_FLAG_TRY(lld, $2) ;;
+              *" LLD "*)
+                   FP_CC_LINKER_FLAG_TRY(lld, $2) ;;
               *) AC_MSG_NOTICE([unknown linker version $out]) ;;
             esac
             if test "z$$2" = "z"; then
-- 
GitLab