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 <aurel...@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 <aure...@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.ang...@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 via email to