[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