glibc/riscv-align-stack-in-clone-BZ-28702.patch
laokz eed9a9d927 backport RISC-V patches
"align stack in clone" fix misaligned stack (from v2.35)

"stdlib strfrom Add copysign to fix NAN issue on riscv" fix
incomformity of strform with C99. (from v2.37)

"Assume only FLAG_ELF_LIBC6 support" deprecated all other
FLAG_ELFs which actually deprecated long ago for all arches.
(from v2.37)

"Restore ldconfig libc6 implicit soname logic" fix mistaken
of the above patch. (from v2.38)
2023-05-08 10:23:49 +08:00

36 lines
1.1 KiB
Diff

From d2e594d71509faf36cf851a69370db34a4f5fa65 Mon Sep 17 00:00:00 2001
From: Aurelien Jarno <aurelien@aurel32.net>
Date: Tue, 14 Dec 2021 22:44:35 +0100
Subject: [PATCH] riscv: align stack in clone [BZ #28702]
The RISC-V ABI [1] mandates that "the stack pointer shall be aligned to
a 128-bit boundary upon procedure entry". This as not the case in clone.
This fixes the misc/tst-misalign-clone-internal and
misc/tst-misalign-clone tests.
Fixes bug 28702.
[1] https://github.com/riscv-non-isa/riscv-elf-psabi-doc
---
sysdeps/unix/sysv/linux/riscv/clone.S | 3 +++
1 file changed, 3 insertions(+)
diff --git a/sysdeps/unix/sysv/linux/riscv/clone.S b/sysdeps/unix/sysv/linux/riscv/clone.S
index 12f91a20d3..161e83c7e3 100644
--- a/sysdeps/unix/sysv/linux/riscv/clone.S
+++ b/sysdeps/unix/sysv/linux/riscv/clone.S
@@ -32,6 +32,9 @@
.text
LEAF (__clone)
+ /* Align stack to a 128-bit boundary as per RISC-V ABI. */
+ andi a1,a1,ALMASK
+
/* Sanity check arguments. */
beqz a0,L (invalid) /* No NULL function pointers. */
beqz a1,L (invalid) /* No NULL stack pointers. */
--
2.39.2