Re: nptl 0.33
Simon Derr <[email protected]>
| Newsgroups | gmane.comp.lib.phil |
|---|---|
| Message-ID | <[email protected]> |
Hi, nptl-0.33 did not compile out of the box on my ia64 machine. I tried to fix what seems to be a bunch of typos in nptl/sysdeps/ia64/bits/atomic.h (see attached patch), and copied some parts of libc/include/atomic.h to nptl/atomic.h (not in the patch, this is probably wrong), and thus got rid of all the undefined references to 'atomic_compare_and_exchange_val_acq'. But later the libc build hangs when running rpcgen (It works correctly when building WITHOUT nptl). I'm using a glibc cvs snapshot taken this morning. Did anyone get nptl-0.33 to compile on ia64 ? Regards, Simon.
corrig033
(text/plain, 1.7 KB)
diff -ur orig3glibc/libc/nptl/sysdeps/ia64/bits/atomic.h 3glibc/libc/nptl/sysdeps/ia64/bits/atomic.h
--- orig3glibc/libc/nptl/sysdeps/ia64/bits/atomic.h Wed Apr 2 14:05:47 2003
+++ 3glibc/libc/nptl/sysdeps/ia64/bits/atomic.h Wed Apr 2 13:36:29 2003
@@ -59,11 +59,18 @@
(!__sync_bool_compare_and_swap_di ((long *) (mem), (long) (oldval), \
(long) (newval)))
-#define __arch_compare_and_exchange_32_val_acq(mem, newval, oldval) \
+
+#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
+ (abort (), 0)
+
+#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
+ (abort (), 0)
+
+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
__sync_val_compare_and_swap_si ((int *) (mem), (int) (long) (oldval), \
(int) (long) (newval))
-# define __arch_compare_and_exchange_64_val_acq(mem, newval, oldval) \
+#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
__sync_val_compare_and_swap_di ((long *) (mem), (long) (oldval), \
(long) (newval))
@@ -78,7 +85,7 @@
do \
{ \
__oldval = __val; \
- __val = __arch_compare_and_exchange_32_val_acq (__memp, \
+ __val = __arch_compare_and_exchange_val_32_acq (__memp, \
__oldval + __value, \
__oldval); \
} \
@@ -87,7 +94,7 @@
do \
{ \
__oldval = __val; \
- __val = __arch_compare_and_exchange_64_val_acq (__memp, \
+ __val = __arch_compare_and_exchange_val_64_acq (__memp, \
__oldval + __value, \
__oldval); \
} \