Re: [PATCH] Fix the atomic compare and swap function on hppa
Aurelien Jarno <[email protected]>
| Newsgroups | gmane.linux.ports.hppa |
|---|---|
| Message-ID | <[email protected]> |
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 <[email protected]> * 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 `. `' [email protected] | [email protected] `- people.debian.org/~aurel32 | www.aurel32.net