[PATCH] riscv: Fix _dl_relocate_static_pie on some build configuration (BZ 33911)
Adhemerval Zanella
adhemerval.zanella@linaro.org
Mon Mar 9 13:57:35 GMT 2026
The compiler might issue memcpy libcalls for ELF_DYNAMIC_RELOCATE, and since
587a1290a1af7b (2.40), RISC-V provides memcpy ifunc support. Adjust
dl-symbol-redir-ifunc.h and use on dl-reloc-static-pie.c.
It fixes riscv static-pie build. Checked on riscv64-linux-gnu-rv64imafdc-lp64d
built with -Os and -O2 by running ldconfig.
---
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
--
2.43.0
More information about the Libc-alpha
mailing list