https://github.com/tclin914 updated 
https://github.com/llvm/llvm-project/pull/202513

>From cc14a6989d77943e6eec62d8f08db49b442931ce Mon Sep 17 00:00:00 2001
From: Chih-Mao Chen <[email protected]>
Date: Sat, 2 May 2026 18:45:27 +0800
Subject: [PATCH 1/2] [Driver][RISCV] Fix musl dynamic linker path for RISC-V
 sf/sp ABI

Musl adds -sf or -sp suffixes to the path of dynamic linker (e.g., 
ld-musl-riscv64-sf.so.1):

https://git.musl-libc.org/cgit/musl/tree/configure?h=v1.2.6&id=9fa28ece75d8a2191de7c5bb53bed224c5947417#n732
---
 clang/lib/Driver/ToolChains/Linux.cpp |  8 ++++++++
 clang/test/Driver/linux-ld.c          | 24 ++++++++++++++++++++++++
 2 files changed, 32 insertions(+)

diff --git a/clang/lib/Driver/ToolChains/Linux.cpp 
b/clang/lib/Driver/ToolChains/Linux.cpp
index d3c94c8addffa..48f8a4a3f4776 100644
--- a/clang/lib/Driver/ToolChains/Linux.cpp
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
@@ -607,6 +607,14 @@ std::string Linux::getDynamicLinker(const ArgList &Args) 
const {
     if (Arch == llvm::Triple::ppc &&
         Triple.getSubArch() == llvm::Triple::PPCSubArch_spe)
       ArchName = "powerpc-sf";
+    if (Triple.isRISCV()) {
+      StringRef ABIName = tools::riscv::getRISCVABI(Args, Triple);
+      if (ABIName == "ilp32" || ABIName == "lp64") {
+        ArchName += "-sf";
+      } else if (ABIName == "ilp32f" || ABIName == "lp64f") {
+        ArchName += "-sp";
+      }
+    }
 
     return "/lib/ld-musl-" + ArchName + ".so.1";
   }
diff --git a/clang/test/Driver/linux-ld.c b/clang/test/Driver/linux-ld.c
index 8de1988d606cf..b918457d916dc 100644
--- a/clang/test/Driver/linux-ld.c
+++ b/clang/test/Driver/linux-ld.c
@@ -1702,6 +1702,24 @@
 // RUN: %clang -### %s -no-pie 2>&1 \
 // RUN:     --target=aarch64_be-pc-linux-musl \
 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-AARCH64_BE %s
+// RUN: %clang -### %s -no-pie 2>&1 \
+// RUN:     --target=riscv32-pc-linux-musl -march=rv32im -mabi=ilp32 \
+// RUN:   | FileCheck --check-prefix=CHECK-MUSL-RISCV32-SF %s
+// RUN: %clang -### %s -no-pie 2>&1 \
+// RUN:     --target=riscv32-pc-linux-musl -march=rv32imf -mabi=ilp32f \
+// RUN:   | FileCheck --check-prefix=CHECK-MUSL-RISCV32-SP %s
+// RUN: %clang -### %s -no-pie 2>&1 \
+// RUN:     --target=riscv32-pc-linux-musl -march=rv32imfd -mabi=ilp32d \
+// RUN:   | FileCheck --check-prefix=CHECK-MUSL-RISCV32 %s
+// RUN: %clang -### %s -no-pie 2>&1 \
+// RUN:     --target=riscv64-pc-linux-musl -march=rv64im -mabi=lp64 \
+// RUN:   | FileCheck --check-prefix=CHECK-MUSL-RISCV64-SF %s
+// RUN: %clang -### %s -no-pie 2>&1 \
+// RUN:     --target=riscv64-pc-linux-musl -march=rv64imf -mabi=lp64f \
+// RUN:   | FileCheck --check-prefix=CHECK-MUSL-RISCV64-SP %s
+// RUN: %clang -### %s -no-pie 2>&1 \
+// RUN:     --target=riscv64-pc-linux-musl -march=rv64imfd -mabi=lp64d \
+// RUN:   | FileCheck --check-prefix=CHECK-MUSL-RISCV64 %s
 // CHECK-MUSL-X86:        "-dynamic-linker" "/lib/ld-musl-i386.so.1"
 // CHECK-MUSL-X86_64:     "-dynamic-linker" "/lib/ld-musl-x86_64.so.1"
 // CHECK-MUSL-MIPS:       "-dynamic-linker" "/lib/ld-musl-mips.so.1"
@@ -1717,6 +1735,12 @@
 // CHECK-MUSL-ARMEBHF:    "-dynamic-linker" "/lib/ld-musl-armebhf.so.1"
 // CHECK-MUSL-AARCH64:    "-dynamic-linker" "/lib/ld-musl-aarch64.so.1"
 // CHECK-MUSL-AARCH64_BE: "-dynamic-linker" "/lib/ld-musl-aarch64_be.so.1"
+// CHECK-MUSL-RISCV32-SF: "-dynamic-linker" "/lib/ld-musl-riscv32-sf.so.1"
+// CHECK-MUSL-RISCV32-SP: "-dynamic-linker" "/lib/ld-musl-riscv32-sp.so.1"
+// CHECK-MUSL-RISCV32:    "-dynamic-linker" "/lib/ld-musl-riscv32.so.1"
+// CHECK-MUSL-RISCV64-SF: "-dynamic-linker" "/lib/ld-musl-riscv64-sf.so.1"
+// CHECK-MUSL-RISCV64-SP: "-dynamic-linker" "/lib/ld-musl-riscv64-sp.so.1"
+// CHECK-MUSL-RISCV64:    "-dynamic-linker" "/lib/ld-musl-riscv64.so.1"
 
 // Check whether multilib gcc install works fine on Gentoo with gcc-config
 // RUN: %clang -### %s -Werror -no-pie 2>&1 \

>From 38a639e27cdf00bf1551448699da776b6df6222d Mon Sep 17 00:00:00 2001
From: Jim Lin <[email protected]>
Date: Tue, 9 Jun 2026 14:43:54 +0800
Subject: [PATCH 2/2] [Driver][test] Simplify RISC-V musl dynamic linker RUN
 lines

Drop the unnecessary -no-pie flag and fold each RUN invocation onto two
lines in the RISC-V musl checks of linux-ld.c.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
---
 clang/test/Driver/linux-ld.c | 30 ++++++++++++------------------
 1 file changed, 12 insertions(+), 18 deletions(-)

diff --git a/clang/test/Driver/linux-ld.c b/clang/test/Driver/linux-ld.c
index b918457d916dc..8380d93dfe974 100644
--- a/clang/test/Driver/linux-ld.c
+++ b/clang/test/Driver/linux-ld.c
@@ -1702,24 +1702,18 @@
 // RUN: %clang -### %s -no-pie 2>&1 \
 // RUN:     --target=aarch64_be-pc-linux-musl \
 // RUN:   | FileCheck --check-prefix=CHECK-MUSL-AARCH64_BE %s
-// RUN: %clang -### %s -no-pie 2>&1 \
-// RUN:     --target=riscv32-pc-linux-musl -march=rv32im -mabi=ilp32 \
-// RUN:   | FileCheck --check-prefix=CHECK-MUSL-RISCV32-SF %s
-// RUN: %clang -### %s -no-pie 2>&1 \
-// RUN:     --target=riscv32-pc-linux-musl -march=rv32imf -mabi=ilp32f \
-// RUN:   | FileCheck --check-prefix=CHECK-MUSL-RISCV32-SP %s
-// RUN: %clang -### %s -no-pie 2>&1 \
-// RUN:     --target=riscv32-pc-linux-musl -march=rv32imfd -mabi=ilp32d \
-// RUN:   | FileCheck --check-prefix=CHECK-MUSL-RISCV32 %s
-// RUN: %clang -### %s -no-pie 2>&1 \
-// RUN:     --target=riscv64-pc-linux-musl -march=rv64im -mabi=lp64 \
-// RUN:   | FileCheck --check-prefix=CHECK-MUSL-RISCV64-SF %s
-// RUN: %clang -### %s -no-pie 2>&1 \
-// RUN:     --target=riscv64-pc-linux-musl -march=rv64imf -mabi=lp64f \
-// RUN:   | FileCheck --check-prefix=CHECK-MUSL-RISCV64-SP %s
-// RUN: %clang -### %s -no-pie 2>&1 \
-// RUN:     --target=riscv64-pc-linux-musl -march=rv64imfd -mabi=lp64d \
-// RUN:   | FileCheck --check-prefix=CHECK-MUSL-RISCV64 %s
+// RUN: %clang -### %s --target=riscv32-pc-linux-musl -march=rv32im 
-mabi=ilp32 2>&1 | \
+// RUN:   FileCheck --check-prefix=CHECK-MUSL-RISCV32-SF %s
+// RUN: %clang -### %s --target=riscv32-pc-linux-musl -march=rv32imf 
-mabi=ilp32f 2>&1 | \
+// RUN:   FileCheck --check-prefix=CHECK-MUSL-RISCV32-SP %s
+// RUN: %clang -### %s --target=riscv32-pc-linux-musl -march=rv32imfd 
-mabi=ilp32d 2>&1 | \
+// RUN:   FileCheck --check-prefix=CHECK-MUSL-RISCV32 %s
+// RUN: %clang -### %s --target=riscv64-pc-linux-musl -march=rv64im -mabi=lp64 
2>&1 | \
+// RUN:   FileCheck --check-prefix=CHECK-MUSL-RISCV64-SF %s
+// RUN: %clang -### %s --target=riscv64-pc-linux-musl -march=rv64imf 
-mabi=lp64f 2>&1 | \
+// RUN:   FileCheck --check-prefix=CHECK-MUSL-RISCV64-SP %s
+// RUN: %clang -### %s --target=riscv64-pc-linux-musl -march=rv64imfd 
-mabi=lp64d 2>&1 | \
+// RUN:   FileCheck --check-prefix=CHECK-MUSL-RISCV64 %s
 // CHECK-MUSL-X86:        "-dynamic-linker" "/lib/ld-musl-i386.so.1"
 // CHECK-MUSL-X86_64:     "-dynamic-linker" "/lib/ld-musl-x86_64.so.1"
 // CHECK-MUSL-MIPS:       "-dynamic-linker" "/lib/ld-musl-mips.so.1"

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to