Propagate the patch from base glibc that changes lll_lock_t into a plain int, without using a typedef, as glibc-2.7 now does. diff -durN glibc-2.6.1.orig/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h glibc-2.6.1/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h --- glibc-2.6.1.orig/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h 2006-08-04 20:56:15.000000000 +0200 +++ glibc-2.6.1/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h 2008-07-28 23:49:29.000000000 +0200 @@ -260,9 +260,6 @@ /* Our internal lock implementation is identical to the binary-compatible mutex implementation. */ -/* Type for lock object. */ -typedef int lll_lock_t; - /* Initializers for lock. */ #define LLL_LOCK_INITIALIZER (0) #define LLL_LOCK_INITIALIZER_LOCKED (1) diff -durN glibc-2.6.1.orig/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c glibc-2.6.1/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c --- glibc-2.6.1.orig/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c 2006-07-14 15:51:24.000000000 +0200 +++ glibc-2.6.1/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c 2008-07-28 23:49:56.000000000 +0200 @@ -25,7 +25,7 @@ void -__lll_lock_wait (lll_lock_t *futex) +__lll_lock_wait (int *futex) { do { @@ -38,7 +38,7 @@ int -__lll_timedlock_wait (lll_lock_t *futex, const struct timespec *abstime) +__lll_timedlock_wait (int *futex, const struct timespec *abstime) { /* Reject invalid timeouts. */ if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000) @@ -78,7 +78,7 @@ /* These don't get included in libc.so */ #ifdef IS_IN_libpthread int -lll_unlock_wake_cb (lll_lock_t *futex) +lll_unlock_wake_cb (int *futex) { int val = atomic_exchange_rel (futex, 0); diff -durN glibc-2.6.1.orig/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h glibc-2.6.1/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h --- glibc-2.6.1.orig/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h 2006-09-07 18:34:43.000000000 +0200 +++ glibc-2.6.1/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h 2008-07-28 23:50:54.000000000 +0200 @@ -43,11 +43,6 @@ /* Initialize locks to zero. */ #define LLL_MUTEX_LOCK_INITIALIZER (0) - -/* Type for lock object. */ -typedef int lll_lock_t; - - #define lll_futex_wait(futexp, val) \ ({ \ INTERNAL_SYSCALL_DECL (__err); \ @@ -108,7 +103,7 @@ }) static inline int __attribute__((always_inline)) -__lll_mutex_trylock(lll_lock_t *futex) +__lll_mutex_trylock(int *futex) { return atomic_compare_and_exchange_val_acq (futex, 1, 0) != 0; } @@ -124,17 +119,17 @@ static inline int __attribute__((always_inline)) -__lll_mutex_cond_trylock(lll_lock_t *futex) +__lll_mutex_cond_trylock(int *futex) { return atomic_compare_and_exchange_val_acq (futex, 2, 0) != 0; } #define lll_mutex_cond_trylock(lock) __lll_mutex_cond_trylock (&(lock)) -extern void __lll_lock_wait (lll_lock_t *futex) attribute_hidden; +extern void __lll_lock_wait (int *futex) attribute_hidden; static inline void __attribute__((always_inline)) -__lll_mutex_lock(lll_lock_t *futex) +__lll_mutex_lock(int *futex) { if (atomic_compare_and_exchange_bool_acq (futex, 1, 0) != 0) __lll_lock_wait (futex); @@ -155,7 +150,7 @@ __lll_robust_mutex_lock (&(futex), id) static inline void __attribute__ ((always_inline)) -__lll_mutex_cond_lock (lll_lock_t *futex) +__lll_mutex_cond_lock (int *futex) { if (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0) __lll_lock_wait (futex); @@ -167,13 +162,13 @@ __lll_robust_mutex_lock (&(futex), (id) | FUTEX_WAITERS) -extern int __lll_timedlock_wait (lll_lock_t *futex, const struct timespec *) +extern int __lll_timedlock_wait (int *futex, const struct timespec *) attribute_hidden; extern int __lll_robust_timedlock_wait (int *futex, const struct timespec *) attribute_hidden; static inline int __attribute__ ((always_inline)) -__lll_mutex_timedlock (lll_lock_t *futex, const struct timespec *abstime) +__lll_mutex_timedlock (int *futex, const struct timespec *abstime) { int result = 0; if (atomic_compare_and_exchange_bool_acq (futex, 1, 0) != 0) @@ -197,7 +192,7 @@ static inline void __attribute__ ((always_inline)) -__lll_mutex_unlock (lll_lock_t *futex) +__lll_mutex_unlock (int *futex) { int val = atomic_exchange_rel (futex, 0); if (__builtin_expect (val > 1, 0)) @@ -218,7 +213,7 @@ static inline void __attribute__ ((always_inline)) -__lll_mutex_unlock_force (lll_lock_t *futex) +__lll_mutex_unlock_force (int *futex) { (void) atomic_exchange_rel (futex, 0); lll_futex_wake (futex, 1); @@ -239,7 +234,7 @@ #define THREAD_INIT_LOCK(PD, LOCK) \ (PD)->LOCK = LLL_LOCK_INITIALIZER -extern int lll_unlock_wake_cb (lll_lock_t *__futex) attribute_hidden; +extern int lll_unlock_wake_cb (int *__futex) attribute_hidden; /* The states of a lock are: 0 - untaken diff -durN glibc-2.6.1.orig/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h glibc-2.6.1/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h --- glibc-2.6.1.orig/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h 2006-08-04 20:54:56.000000000 +0200 +++ glibc-2.6.1/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h 2008-07-28 23:51:14.000000000 +0200 @@ -227,9 +227,6 @@ /* Our internal lock implementation is identical to the binary-compatible mutex implementation. */ -/* Type for lock object. */ -typedef int lll_lock_t; - /* Initializers for lock. */ #define LLL_LOCK_INITIALIZER (0) #define LLL_LOCK_INITIALIZER_LOCKED (1)