[glibc/release/2.43/master] riscv: Resolve calls to memcpy using memcpy-generic in early startup

Aurelien Jarno via Glibc-cvs <[email protected]>
Newsgroups gmane.comp.lib.glibc.cvs
Message-ID <[email protected]>
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=60cabd0464c6722d4e1f13bbbeef191ea40ef2ef

commit 60cabd0464c6722d4e1f13bbbeef191ea40ef2ef
Author: Adhemerval Zanella Netto <[email protected]>
Date:   Sat Mar 21 08:11:06 2026 -0600

    riscv: Resolve calls to memcpy using memcpy-generic in early startup
    
    This patch from Adhemerval sets up the ifunc redirections so that we
    resolve memcpy to memcpy_generic in early startup.  This avoids infinite
    recursion for memcpy calls before the loader is fully initialized.
    
    Tested-by: Jeff Law <[email protected]>
    (cherry picked from commit 0a9e54d40a4321ebf7d87cdbc0868c43d1e8a657)

Diff:
---
 elf/dl-reloc-static-pie.c                        | 1 +
 sysdeps/riscv/multiarch/dl-symbol-redir-ifunc.h  | 1 +
 sysdeps/unix/sysv/linux/riscv/multiarch/Makefile | 1 +
 3 files changed, 3 insertions(+)

diff --git a/elf/dl-reloc-static-pie.c b/elf/dl-reloc-static-pie.c
index bdff2b5ee2..63ce609024 100644
--- a/elf/dl-reloc-static-pie.c
+++ b/elf/dl-reloc-static-pie.c
@@ -25,6 +25,7 @@
 
 #include <dl-machine.h>
 #include <dl-debug.h>
+#include <dl-symbol-redir-ifunc.h>
 
 #define RESOLVE_MAP(map, scope, sym, version, flags) map
 #include "dynamic-link.h"
diff --git a/sysdeps/riscv/multiarch/dl-symbol-redir-ifunc.h b/sysdeps/riscv/multiarch/dl-symbol-redir-ifunc.h
index 24b78711e3..69a0790838 100644
--- a/sysdeps/riscv/multiarch/dl-symbol-redir-ifunc.h
+++ b/sysdeps/riscv/multiarch/dl-symbol-redir-ifunc.h
@@ -21,6 +21,7 @@
 
 #ifndef SHARED
 asm ("memset = __memset_generic");
+asm ("memcpy = __memcpy_generic");
 #endif
 
 #endif
diff --git a/sysdeps/unix/sysv/linux/riscv/multiarch/Makefile b/sysdeps/unix/sysv/linux/riscv/multiarch/Makefile
index a865090a53..a033ea9569 100644
--- a/sysdeps/unix/sysv/linux/riscv/multiarch/Makefile
+++ b/sysdeps/unix/sysv/linux/riscv/multiarch/Makefile
@@ -11,4 +11,5 @@ sysdep_routines += \
 CFLAGS-memcpy_noalignment.c += -mno-strict-align
 # Called during static initialization
 CFLAGS-memset-generic.c += $(no-stack-protector)
+CFLAGS-memcpy-generic.c += $(no-stack-protector)
 endif
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.