[parisc-linux] Re: [PATCH] Fix the atomic compare and swap function on hppa
Aurelien Jarno
aurelien at aurel32.net
Sat May 19 19:56:53 MDT 2007
On Sun, May 20, 2007 at 03:52:15AM +0200, Aurelien Jarno wrote:
> Hi,
>
> I have finally tracked down the "error while loading shared libraries:
> internal error: symidx out of range of fptr table" problem.
>
> It comes from a bug in atomic.h, the errno number is compared with the
> wrong value. The kernel returns -EAGAIN (ie -11), but the value in the
> cmpib instruction is EAGAIN (11).
>
> The patch below fixes the problem.
>
Oops this patch is reversed.
Please find a new version below.
2007-05-20 Aurelien Jarno <aurelien at aurel32.net>
* sysdeps/unix/sysv/linux/hppa/bits/atomic.h: check for
-EAGAIN instead of EAGAIN.
--- ports/sysdeps/unix/sysv/linux/hppa/bits/atomic.h.orig 2007-05-20 03:28:39.000000000 +0200
+++ ports/sysdeps/unix/sysv/linux/hppa/bits/atomic.h 2007-05-20 03:24:41.000000000 +0200
@@ -56,7 +56,7 @@
#define LWS_CAS "0"
/* Note r31 is the link register */
#define LWS_CLOBBER "r1", "r26", "r25", "r24", "r23", "r22", "r21", "r20", "r28", "r31", "memory"
-#define ASM_EAGAIN "11"
+#define ASM_EAGAIN "-11"
#if __ASSUME_LWS_CAS
/* The only basic operation needed is compare and exchange. */
--
.''`. Aurelien Jarno | GPG: 1024D/F1BCDB73
: :' : Debian developer | Electrical Engineer
`. `' aurel32 at debian.org | aurelien at aurel32.net
`- people.debian.org/~aurel32 | www.aurel32.net
More information about the parisc-linux
mailing list