From 8da92e722ca66e35003abf64a77ae529f9989e6a Mon Sep 17 00:00:00 2001 From: John David Anglin Date: Sun, 1 Oct 2017 11:58:04 -0400 Subject: Fix return pointer save and PIC register restore in __getcontext and __setcontext on hppa. * sysdeps/unix/sysv/linux/hppa/getcontext.S (__getcontext): Save return pointer in frame. * sysdeps/unix/sysv/linux/hppa/setcontext.S (__setcontext): Likewise. Correct offset used to restore PIC register. --- ChangeLog | 7 +++++++ sysdeps/unix/sysv/linux/hppa/getcontext.S | 2 ++ sysdeps/unix/sysv/linux/hppa/setcontext.S | 4 +++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index f639d0a..593ac83 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2017-10-01 John David Anglin + + * sysdeps/unix/sysv/linux/hppa/getcontext.S (__getcontext): Save return + pointer in frame. + * sysdeps/unix/sysv/linux/hppa/setcontext.S (__setcontext): Likewise. + Correct offset used to restore PIC register. + 2017-09-30 John David Anglin [BZ libc/22165] diff --git a/sysdeps/unix/sysv/linux/hppa/getcontext.S b/sysdeps/unix/sysv/linux/hppa/getcontext.S index b201d8f..79a59cd 100644 --- a/sysdeps/unix/sysv/linux/hppa/getcontext.S +++ b/sysdeps/unix/sysv/linux/hppa/getcontext.S @@ -129,6 +129,8 @@ ENTRY(__getcontext) fstds %fr31, 0(%r1) /* Prologue */ + stw %r2, -20(%sp) + .cfi_offset 2, -20 stwm %r4, 64(%sp) .cfi_def_cfa_offset -64 .cfi_offset 4, 0 diff --git a/sysdeps/unix/sysv/linux/hppa/setcontext.S b/sysdeps/unix/sysv/linux/hppa/setcontext.S index 92cb204..7835794 100644 --- a/sysdeps/unix/sysv/linux/hppa/setcontext.S +++ b/sysdeps/unix/sysv/linux/hppa/setcontext.S @@ -25,6 +25,8 @@ ENTRY(__setcontext) /* Prologue */ + stw %r2, -20(%sp) + .cfi_offset 2, -20 stwm %r3, 64(%sp) .cfi_def_cfa_offset -64 .cfi_offset 3, 0 @@ -151,7 +153,7 @@ ENTRY(__setcontext) /* Epilogue */ ldw -84(%r30), %r2 #ifdef PIC - ldw -96(%r30), %r19 + ldw -32(%r30), %r19 #endif bv %r0(%r2) ldwm -64(%r30), %r3 -- cgit v1.1