[binutils-gdb] RISC-V: Fix libpath_suffix selection for ldscript

Nelson Chu nelsonc1225@sourceware.org
Tue Jul 8 10:37:04 GMT 2025


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=6589a725f0e4109e033976e15d1c3d61d96438df

commit 6589a725f0e4109e033976e15d1c3d61d96438df
Author: Mark Goncharov <mark.goncharov@syntacore.com>
Date:   Tue Jul 1 08:57:51 2025 +0300

    RISC-V: Fix libpath_suffix selection for ldscript
    
    When building a cross-compiler ld for RISC-V Linux systems, you can specify
    target=riscv64*-linux* to create a linker that supports both 32-bit
    (-march=rv32*) and 64-bit (-march=rv64*) architectures.  The specified -march
    value populates the EMULATION_NAME variable, which determines the default
    linker script selection.  For proper riscv64 target support, the build process
    must prepare both elf32lriscv* and elf64lriscv* linker scripts.  These should
    align with the standard RISC-V Linux sysroot directory structure.
    
    Signed-off-by: Mark Goncharov <mark.goncharov@syntacore.com>

Diff:
---
 ld/emulparams/elf32lriscv.sh        | 2 +-
 ld/emulparams/elf32lriscv_ilp32.sh  | 2 +-
 ld/emulparams/elf32lriscv_ilp32f.sh | 2 +-
 ld/emulparams/elf64lriscv.sh        | 2 +-
 ld/emulparams/elf64lriscv_lp64.sh   | 2 +-
 ld/emulparams/elf64lriscv_lp64f.sh  | 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/ld/emulparams/elf32lriscv.sh b/ld/emulparams/elf32lriscv.sh
index da0d7cf54f4..42460131e6e 100644
--- a/ld/emulparams/elf32lriscv.sh
+++ b/ld/emulparams/elf32lriscv.sh
@@ -6,7 +6,7 @@ OUTPUT_FORMAT="elf32-littleriscv"
 # On Linux, first look for 32 bit ILP32D target libraries in /lib/ilp32d as per
 # the glibc ABI.
 case "$target" in
-  riscv32*-linux*)
+  riscv*-linux*)
     case "$EMULATION_NAME" in
       *32*)
 	LIBPATH_SUFFIX="32/ilp32d 32" ;;
diff --git a/ld/emulparams/elf32lriscv_ilp32.sh b/ld/emulparams/elf32lriscv_ilp32.sh
index 4935937ef6a..c773985f093 100644
--- a/ld/emulparams/elf32lriscv_ilp32.sh
+++ b/ld/emulparams/elf32lriscv_ilp32.sh
@@ -5,7 +5,7 @@ OUTPUT_FORMAT="elf32-littleriscv"
 # On Linux, first look for 32 bit ILP32 target libraries in /lib/ilp32 as per
 # the glibc ABI.
 case "$target" in
-  riscv32*-linux*)
+  riscv*-linux*)
     case "$EMULATION_NAME" in
       *32*)
 	LIBPATH_SUFFIX="32/ilp32 32" ;;
diff --git a/ld/emulparams/elf32lriscv_ilp32f.sh b/ld/emulparams/elf32lriscv_ilp32f.sh
index c684bf85ee5..a2f0c2a6c38 100644
--- a/ld/emulparams/elf32lriscv_ilp32f.sh
+++ b/ld/emulparams/elf32lriscv_ilp32f.sh
@@ -5,7 +5,7 @@ OUTPUT_FORMAT="elf32-littleriscv"
 # On Linux, first look for 32 bit ILP32F target libraries in /lib/ilp32f as per
 # the glibc ABI.
 case "$target" in
-  riscv32*-linux*)
+  riscv*-linux*)
     case "$EMULATION_NAME" in
       *32*)
 	LIBPATH_SUFFIX="32/ilp32f 32" ;;
diff --git a/ld/emulparams/elf64lriscv.sh b/ld/emulparams/elf64lriscv.sh
index e07a0648735..7958052d3b7 100644
--- a/ld/emulparams/elf64lriscv.sh
+++ b/ld/emulparams/elf64lriscv.sh
@@ -6,7 +6,7 @@ OUTPUT_FORMAT="elf64-littleriscv"
 # On Linux, first look for 64 bit LP64D target libraries in /lib64/lp64d as per
 # the glibc ABI, and then /lib64 for backward compatility.
 case "$target" in
-  riscv64*-linux*)
+  riscv*-linux*)
     case "$EMULATION_NAME" in
       *64*)
 	LIBPATH_SUFFIX="64/lp64d 64";;
diff --git a/ld/emulparams/elf64lriscv_lp64.sh b/ld/emulparams/elf64lriscv_lp64.sh
index b1bb252c1ee..7c7feca2e3e 100644
--- a/ld/emulparams/elf64lriscv_lp64.sh
+++ b/ld/emulparams/elf64lriscv_lp64.sh
@@ -5,7 +5,7 @@ OUTPUT_FORMAT="elf64-littleriscv"
 # On Linux, first look for 64 bit LP64 target libraries in /lib64/lp64 as per
 # the glibc ABI, and then /lib64 for backward compatility.
 case "$target" in
-  riscv64*-linux*)
+  riscv*-linux*)
     case "$EMULATION_NAME" in
       *64*)
 	LIBPATH_SUFFIX="64/lp64 64";;
diff --git a/ld/emulparams/elf64lriscv_lp64f.sh b/ld/emulparams/elf64lriscv_lp64f.sh
index 005f191c5bf..e036c2f0f2c 100644
--- a/ld/emulparams/elf64lriscv_lp64f.sh
+++ b/ld/emulparams/elf64lriscv_lp64f.sh
@@ -5,7 +5,7 @@ OUTPUT_FORMAT="elf64-littleriscv"
 # On Linux, first look for 64 bit LP64F target libraries in /lib64/lp64f as per
 # the glibc ABI, and then /lib64 for backward compatility.
 case "$target" in
-  riscv64*-linux*)
+  riscv*-linux*)
     case "$EMULATION_NAME" in
       *64*)
 	LIBPATH_SUFFIX="64/lp64f 64";;


More information about the Binutils-cvs mailing list