[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[glibc] 01/01: debian/patches/hppa/cvs-atomic-machine.diff: New patch from upstream to fix nptl/tst-stack4 on hppa. Closes: #838574.



This is an automated email from the git hooks/post-receive script.

aurel32 pushed a commit to branch sid
in repository glibc.

commit c13901659161bee6074aeea3fdddd3f1c2a049b9
Author: Aurelien Jarno <aurelien@aurel32.net>
Date:   Sat Oct 15 19:49:14 2016 +0200

    debian/patches/hppa/cvs-atomic-machine.diff: New patch from upstream to fix nptl/tst-stack4 on hppa.  Closes: #838574.
---
 debian/changelog                            |  4 ++
 debian/patches/hppa/cvs-atomic-machine.diff | 59 +++++++++++++++++++++++++++++
 debian/patches/series                       |  1 +
 3 files changed, 64 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 23e7969..d8e1d53 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -43,6 +43,10 @@ glibc (2.24-4) UNRELEASED; urgency=medium
   * debian/rules.d/tarball.mk: Avoid filterdiff bugs with git pathspec magic.
   * debian/patches/git-updates.diff: Update to 2.24 master to test the above.
 
+  [ John David Anglin ]
+  * debian/patches/hppa/cvs-atomic-machine.diff: New patch from upstream to
+    fix nptl/tst-stack4 on hppa.  Closes: #838574.
+
  -- Aurelien Jarno <aurel32@debian.org>  Sat, 17 Sep 2016 20:03:04 +0200
 
 glibc (2.24-3) unstable; urgency=medium
diff --git a/debian/patches/hppa/cvs-atomic-machine.diff b/debian/patches/hppa/cvs-atomic-machine.diff
new file mode 100644
index 0000000..648106a
--- /dev/null
+++ b/debian/patches/hppa/cvs-atomic-machine.diff
@@ -0,0 +1,59 @@
+2016-09-22  John David Anglin  <dave.anglin@bell.net>
+
+	* sysdeps/unix/sysv/linux/hppa/atomic-machine.h: Don't include
+	abort-instr.h.
+	(EFAULT): Remove conditional define.
+	(ENOSYS): Likewise.
+	(atomic_compare_and_exchange_val_acq): Use instruction nullification
+	instead of conditional branch instructions.
+
+--- a/sysdeps/unix/sysv/linux/hppa/atomic-machine.h
++++ b/sysdeps/unix/sysv/linux/hppa/atomic-machine.h
+@@ -17,13 +17,6 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #include <stdint.h> /*  Required for type definitions e.g. uint8_t.  */
+-#include <abort-instr.h> /*  Required for ABORT_INSTRUCTIUON.  */
+-
+-/* We need EFAULT, ENONSYS */
+-#if !defined EFAULT && !defined ENOSYS
+-#define EFAULT	14
+-#define ENOSYS	251
+-#endif
+ 
+ #ifndef _ATOMIC_MACHINE_H
+ #define _ATOMIC_MACHINE_H	1
+@@ -62,7 +55,7 @@ typedef uintmax_t uatomic_max_t;
+ #define _ASM_EDEADLOCK "-45"
+ 
+ /* The only basic operation needed is compare and exchange.  The mem
+-   pointer must be word aligned.  */
++   pointer must be word aligned.  We no longer loop on deadlock.  */
+ #define atomic_compare_and_exchange_val_acq(mem, newval, oldval)	\
+   ({									\
+      register long lws_errno asm("r21");				\
+@@ -74,20 +67,15 @@ typedef uintmax_t uatomic_max_t;
+ 	"0:					\n\t"			\
+ 	"ble	" _LWS "(%%sr2, %%r0)		\n\t"			\
+ 	"ldi	" _LWS_CAS ", %%r20		\n\t"			\
+-	"ldi	" _ASM_EAGAIN ", %%r20		\n\t"			\
+-	"cmpb,=,n %%r20, %%r21, 0b		\n\t"			\
+-	"nop					\n\t"			\
+-	"ldi	" _ASM_EDEADLOCK ", %%r20	\n\t"			\
+-	"cmpb,=,n %%r20, %%r21, 0b		\n\t"			\
+-	"nop					\n\t"			\
++	"cmpiclr,<> " _ASM_EAGAIN ", %%r21, %%r0\n\t"			\
++	"b,n 0b					\n\t"			\
++	"cmpclr,= %%r0, %%r21, %%r0		\n\t"			\
++	"iitlbp %%r0,(%%sr0, %%r0)		\n\t"			\
+ 	: "=r" (lws_ret), "=r" (lws_errno)				\
+ 	: "r" (lws_mem), "r" (lws_old), "r" (lws_new)			\
+ 	: _LWS_CLOBBER							\
+      );									\
+ 									\
+-     if (lws_errno == -EFAULT || lws_errno == -ENOSYS)			\
+-	ABORT_INSTRUCTION;						\
+-									\
+      (__typeof (oldval)) lws_ret;					\
+    })
+ 
diff --git a/debian/patches/series b/debian/patches/series
index 1f04c9d..5389cb9 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -57,6 +57,7 @@ hppa/submitted-dladdr.diff
 hppa/local-stack-grows-up.diff
 hppa/submitted-setcontext.diff
 hppa/submitted-sysdeps-cancel.diff
+hppa/cvs-atomic-machine.diff
 
 hurd-i386/local-enable-ldconfig.diff
 hurd-i386/tg-context_functions.diff

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-glibc/glibc.git


Reply to: