about summary refs log tree commit diff
path: root/sysdeps/powerpc/powerpc64/setjmp-common.S
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2016-11-29 10:16:35 +0100
committerFlorian Weimer <fweimer@redhat.com>2016-11-29 10:16:35 +0100
commitb36528936449d2e800db8833869d108a20653c96 (patch)
treebf72453076bccca5b03f3197e1203788b3b74a80 /sysdeps/powerpc/powerpc64/setjmp-common.S
parent76388b236a7089f6ee5dc0a566caa518132f16bd (diff)
downloadglibc-b36528936449d2e800db8833869d108a20653c96.tar.gz
glibc-b36528936449d2e800db8833869d108a20653c96.tar.xz
glibc-b36528936449d2e800db8833869d108a20653c96.zip
powerpc: Add hidden definition for __sigsetjmp
There already is a hidden prototype for __sigsetjmp, but the
architecture-specific definition was missing.
Diffstat (limited to 'sysdeps/powerpc/powerpc64/setjmp-common.S')
-rw-r--r--sysdeps/powerpc/powerpc64/setjmp-common.S11
1 files changed, 11 insertions, 0 deletions
diff --git a/sysdeps/powerpc/powerpc64/setjmp-common.S b/sysdeps/powerpc/powerpc64/setjmp-common.S
index 83361f537c..b5de49ebaf 100644
--- a/sysdeps/powerpc/powerpc64/setjmp-common.S
+++ b/sysdeps/powerpc/powerpc64/setjmp-common.S
@@ -232,3 +232,14 @@ L(no_vmx):
 	blr
 #endif
 END (__sigsetjmp_symbol)
+
+#if defined SHARED && !IS_IN (rtld) && !defined __NO_VMX__
+/* When called from within libc we need a special version of __sigsetjmp
+   that saves r2 since the call won't go via a plt call stub.  See
+   bugz #269.  */
+ENTRY (__GI___sigsetjmp)
+	std r2,FRAME_TOC_SAVE(r1) /* Save the callers TOC in the save area.  */
+	CALL_MCOUNT 1
+	b JUMPTARGET (GLUE(__sigsetjmp_symbol,_ent))
+END (__GI___sigsetjmp)
+#endif