[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: