Control: tag -1 + patch

On Fri, 09 Nov 2012 14:10:37 +0400, Ivan Maidanski wrote:

> I've committed the workaround (avoiding __builtin_expect in 
> AO_stack_pop_explicit_aux_acquire for gcc-4/alpha): 
> https://github.com/ivmai/libatomic_ops/commit/00d7cb807015b109df11b9227fbc7f35babdee16
> (But, of course, it would be good if someone report/fix bug in gcc.)

Hi Ian,

this bug should also be closed in testing, and since the version in
unstable won't migrate due to it being a newer version, we need to go
through t-p-u.

I've prepared a debdiff where I tried to backport the 00d7cb8 commit
to the version in testing (attached).

Could you please take a look at it and if possible upload it after
checking back with the release team?

Cheers,
gregor

-- 
 .''`.  Homepage: http://info.comodo.priv.at/ - OpenPGP key 0xBB3A68018649AA06
 : :' : Debian GNU/Linux user, admin, and developer  -  http://www.debian.org/
 `. `'  Member of VIBE!AT & SPI, fellow of the Free Software Foundation Europe
   `-   NP: Beatles
diff -u libatomic-ops-7.2~alpha5+cvs20101124/debian/changelog libatomic-ops-7.2~alpha5+cvs20101124/debian/changelog
--- libatomic-ops-7.2~alpha5+cvs20101124/debian/changelog
+++ libatomic-ops-7.2~alpha5+cvs20101124/debian/changelog
@@ -1,3 +1,13 @@
+libatomic-ops (7.2~alpha5+cvs20101124-1+deb7u1) testing-proposed-updates; urgency=low
+
+  * Non-maintainer upload.
+  * Fix "libatomic-ops/powerpc: FTBFS: eats all disk space in the known
+    universe (almost, anyway)": nackport patch from upstream git repo:
+    https://github.com/ivmai/libatomic_ops/commit/00d7cb8#diff-0
+    (Closes: #680100)
+
+ -- gregor herrmann <gre...@debian.org>  Fri, 14 Dec 2012 15:00:16 +0100
+
 libatomic-ops (7.2~alpha5+cvs20101124-1+deb7u0) testing-proposed-updates; urgency=low
 
   * Non-maintainer upload with maintainer's permission.
only in patch2:
unchanged:
--- libatomic-ops-7.2~alpha5+cvs20101124.orig/src/atomic_ops_stack.c
+++ libatomic-ops-7.2~alpha5+cvs20101124/src/atomic_ops_stack.c
@@ -193,13 +193,25 @@
   /* We need to make sure that first is still the first entry on the    */
   /* list.  Otherwise it's possible that a reinsertion of it was        */
   /* already started before we added the black list entry.              */
-  if (first != AO_load(list)) {
+# if defined(__alpha__) && (__GNUC__ == 4)
+    if (first != AO_load(list))
+                        /* Workaround __builtin_expect bug found in     */
+                        /* gcc-4.6.3/alpha causing test_stack failure.  */
+# else
+    if (AO_EXPECT_FALSE(first != AO_load(list)))
+# endif
+  {
     AO_store_release(a->AO_stack_bl+i, 0);
     goto retry;
   }
   first_ptr = AO_REAL_NEXT_PTR(first);
   next = AO_load(first_ptr);
-  if (!AO_compare_and_swap_release(list, first, next)) {
+# if defined(__alpha__) && (__GNUC__ == 4)
+    if (!AO_compare_and_swap_release(list, first, next))
+# else
+    if (AO_EXPECT_FALSE(!AO_compare_and_swap_release(list, first, next)))
+# endif
+  {
     AO_store_release(a->AO_stack_bl+i, 0);
     goto retry;
   }
only in patch2:
unchanged:
--- libatomic-ops-7.2~alpha5+cvs20101124.orig/src/atomic_ops.h
+++ libatomic-ops-7.2~alpha5+cvs20101124/src/atomic_ops.h
@@ -156,6 +156,13 @@
 # define AO_INLINE static
 #endif
 
+#if __GNUC__ >= 3 && !defined(LINT2)
+# define AO_EXPECT_FALSE(expr) __builtin_expect(expr, 0)
+  /* Equivalent to (expr) but predict that usually (expr) == 0. */
+#else
+# define AO_EXPECT_FALSE(expr) (expr)
+#endif /* !__GNUC__ */
+
 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
 # define AO_compiler_barrier() __asm__ __volatile__("" : : : "memory")
 #elif defined(_MSC_VER) || defined(__DMC__) || defined(__BORLANDC__) \

Attachment: signature.asc
Description: Digital signature

Reply via email to