[PATCH v2 01/21] powerpc: Create stackframe information on syscall
Adhemerval Zanella
adhemerval.zanella@linaro.org
Mon Feb 26 21:04:00 GMT 2018
This patch adds a minimal stackframe creation on powerpc syscall
implementation so backtrace works correctly on a signal handler.
Checked on powerpc64le-linux-gnu.
* sysdeps/unix/sysv/linux/powerpc/syscall.S (syscall): Create stack
frame.
---
ChangeLog | 3 +++
sysdeps/unix/sysv/linux/powerpc/syscall.S | 14 ++++++++++++++
2 files changed, 17 insertions(+)
diff --git a/sysdeps/unix/sysv/linux/powerpc/syscall.S b/sysdeps/unix/sysv/linux/powerpc/syscall.S
index 2da9172..fae0fe8 100644
--- a/sysdeps/unix/sysv/linux/powerpc/syscall.S
+++ b/sysdeps/unix/sysv/linux/powerpc/syscall.S
@@ -19,6 +19,14 @@
ENTRY (syscall)
ABORT_TRANSACTION
+ /* Creates a minimum stack frame so backtrace works. */
+#ifdef __powerpc64__
+ stdu r1, -FRAME_MIN_SIZE (r1)
+ cfi_adjust_cfa_offset (FRAME_MIN_SIZE)
+#else
+ stwu r1,-16(1)
+ cfi_def_cfa_offset (16)
+#endif
mr r0,r3
mr r3,r4
mr r4,r5
@@ -26,6 +34,12 @@ ENTRY (syscall)
mr r6,r7
mr r7,r8
mr r8,r9
+#ifdef __powerpc64__
+ addi r1, r1, FRAME_MIN_SIZE
+#else
+ addi r1,r1,16
+#endif
+ cfi_def_cfa_offset (0)
sc
PSEUDO_RET
PSEUDO_END (syscall)
--
2.7.4
More information about the Libc-alpha
mailing list