This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH v2 01/21] powerpc: Create stackframe information on syscall
- From: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>
- To: libc-alpha at sourceware dot org
- Date: Mon, 26 Feb 2018 18:03:16 -0300
- Subject: [PATCH v2 01/21] powerpc: Create stackframe information on syscall
- Authentication-results: sourceware.org; auth=none
- References: <1519679016-12241-1-git-send-email-adhemerval.zanella@linaro.org>
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