Package: libatomic-ops
Followup-For: Bug #632604

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

I'm attaching the final debdiff that I just uploaded to t-p-u.

Cheers,
gregor

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iQIcBAEBCAAGBQJQbF2TAAoJELs6aAGGSaoGKRkP/1gTab/b4+PFZHfMNiEB6P9N
G8XgmEMNHYYKzcDJNRh6uQaV0fD7f2nR2JqYkM5DYDfgjV20W8R8i8MAO/9qkZcY
SgSzJpZhPzAELpsUXohv0jqRj/88p93Qyp+OOEkz64KeSqaLgaWYDieEX1Q6RA1p
Mk9vwm76eP376Y1Qui7t9ul1d+rTqrYYPUIRVG/cynZGOXhmndPNDd3dbwGBmIsc
OGmk0RDs40CHcQxDXgqgvfwLFBuMMxwcTGwHOQVOMQx7HmVImwv4GRYWwjeHDdiG
CGcyfzRB9VZ99VwagrtY4yuDujL79j65aKxcCDxvp5CdWjsQJ1NWJl/qmUulPZ9H
Ym0d7B0HGXnq72C86tZItoNr+HiRYZLfFZx69nCjSLUnNhqn9UW44PU4aPnjbtMe
1h2dUW40lY5wVyfMbz93jPbjaQoN9gZCXFboMU1nbnvvatC6CQd3yilrNRwnt8x/
M/h/sgIsV1QIhywYlBtvC1XqhBYumGyHdcA+yutkLgIyml8V+tM+VlxNl1VxjMUD
LXedqgg4RjnjJHFT8tNAUg1vC/wuYgzLVeuxCe7ZRPOTrCYBYro10tDYIX7kWovN
hb2BtqC4YFKa8xCZoxGobBBe3SBWOrBLPaEZSu9t8zFqPsaBIAY5LntcIyvsBfR8
4opHZCw+bhmKEJziQeuP
=HNvu
-----END PGP SIGNATURE-----
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+deb7u0) testing-proposed-updates; urgency=low
+
+  * Non-maintainer upload with maintainer's permission.
+  * Fix "FTBFS on i386": apply patch from upstream git repo:
+    https://github.com/ivmai/libatomic_ops/commit/30cea1b#diff-0
+    Thanks to Emanuele Aina for the pointer.
+    (Closes: #632604)
+
+ -- gregor herrmann <[email protected]>  Wed, 03 Oct 2012 17:35:27 +0200
+
 libatomic-ops (7.2~alpha5+cvs20101124-1) unstable; urgency=low
 
   * Closes: 604753 -- Update from upstream CVS, fixes ARM Thumb-2 mode
only in patch2:
unchanged:
--- libatomic-ops-7.2~alpha5+cvs20101124.orig/src/atomic_ops/sysdeps/gcc/x86.h
+++ libatomic-ops-7.2~alpha5+cvs20101124/src/atomic_ops/sysdeps/gcc/x86.h
@@ -148,13 +148,16 @@
   /* If PIC is turned on, we can't use %ebx as it is reserved for the
      GOT pointer.  We can save and restore %ebx because GCC won't be
      using it for anything else (such as any of the m operands) */
-  __asm__ __volatile__("pushl %%ebx;"   /* save ebx used for PIC GOT ptr */
-                       "movl %6,%%ebx;" /* move new_val2 to %ebx */
+  /* We use %edi (for new_val1) instead of a memory operand and swap    */
+  /* instruction instead of push/pop because some GCC releases have     */
+  /* a bug in processing memory operands (if address base is %esp) in   */
+  /* the inline assembly after push.                                    */
+  __asm__ __volatile__("xchg %%ebx,%6;" /* swap GOT ptr and new_val1 */
                        "lock; cmpxchg8b %0; setz %1;"
-                       "pop %%ebx;"     /* restore %ebx */
+                       "xchg %%ebx,%6;" /* restore ebx and edi */
                        : "=m"(*addr), "=a"(result)
                        : "m"(*addr), "d" (old_val2), "a" (old_val1),
-                         "c" (new_val2), "m" (new_val1) : "memory");
+                         "c" (new_val2), "D" (new_val1) : "memory");
 #else
   /* We can't just do the same thing in non-PIC mode, because GCC
    * might be using %ebx as the memory operand.  We could have ifdef'd

Reply via email to