]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
powerpc: Add hidden definition for __sigsetjmp
authorFlorian Weimer <fweimer@redhat.com>
Tue, 29 Nov 2016 09:16:35 +0000 (10:16 +0100)
committerFlorian Weimer <fweimer@redhat.com>
Tue, 29 Nov 2016 09:16:35 +0000 (10:16 +0100)
There already is a hidden prototype for __sigsetjmp, but the
architecture-specific definition was missing.

ChangeLog
sysdeps/powerpc/powerpc32/fpu/setjmp.S
sysdeps/powerpc/powerpc32/setjmp.S
sysdeps/powerpc/powerpc64/setjmp-common.S

index a35e3f9b7116730cc58900903ca00fe09fc6b0d4..7a70c496462ff45ed9f859b9b5134c0614090f66 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2016-11-29  Florian Weimer  <fweimer@redhat.com>
+
+       * sysdeps/powerpc/powerpc64/setjmp-common.S (__GI___sigsetjmp):
+       Define.
+       * sysdeps/powerpc/powerpc32/setjmp.S (__sigsetjmp): Add hidden
+       definition.
+
 2016-11-29  Florian Weimer  <fweimer@redhat.com>
 
        * sysdeps/powerpc/powerpc32/fpu/__longjmp.S (__longjmp): Remove
index 6a4016c2292ac1b72ab7fe3f4c2d13188f3d424c..de6cdcf95943c0e381024ddec6bcb92439ec61b3 100644 (file)
@@ -32,6 +32,7 @@ versioned_symbol (libc, __vmx__sigsetjmp, __sigsetjmp, GLIBC_2_3_4)
 # define __sigsetjmp_symbol __vmx__sigsetjmp
 # define __sigjmp_save_symbol __vmx__sigjmp_save
 # include "setjmp-common.S"
+libc_hidden_ver (__vmx__sigsetjmp, __sigsetjmp)
 
 # if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
 #  define __NO_VMX__
index 88f7f828cedd3bdac68551098c54f2fd43814be2..285d40cab8bf84c43c90a3b0cda2b9313e062f5f 100644 (file)
@@ -31,6 +31,7 @@ versioned_symbol (libc, __vmx__sigsetjmp, __sigsetjmp, GLIBC_2_3_4)
 # define __sigsetjmp_symbol __vmx__sigsetjmp
 # define __sigjmp_save_symbol __vmx__sigjmp_save
 # include "setjmp-common.S"
+libc_hidden_ver (__vmx__sigsetjmp, __sigsetjmp)
 
 # if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
 #  define __NO_VMX__
index 83361f537c8da506e94999d079c6bdd2eb9ba079..b5de49ebaf76db8cd21125cb665ceecf851ad0b2 100644 (file)
@@ -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