"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)
36 lines
1.1 KiB
Diff
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
|
|
|