New patches to make glibc 2.6 and 2.6.1 build for Alpha.
author"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Mon Jul 28 21:59:40 2008 +0000 (2008-07-28)
changeset 74861cd4eb6034d
parent 747 d3e603e7c17c
child 749 dcb8700b9a68
New patches to make glibc 2.6 and 2.6.1 build for Alpha.
Forwarded by Ioannis E. VENETIS.

/trunk/patches/glibc/2.6.1/200-alpha-ptr_mangle.patch | 103 103 0 0 ++++++++
/trunk/patches/glibc/2.6.1/190-alpha-atfcts.patch | 11 11 0 0 +
/trunk/patches/glibc/2.6.1/180-gcc-4.3-sysinclude-path.patch | 50 50 0 0 ++++
/trunk/patches/glibc/2.6.1/210-lll_lock_t.patch | 237 237 0 0 ++++++++++++++++++
/trunk/patches/glibc/2.6/200-alpha-ptr_mangle.patch | 103 103 0 0 ++++++++
/trunk/patches/glibc/2.6/190-alpha-atfcts.patch | 11 11 0 0 +
/trunk/patches/glibc/2.6/180-gcc-4.3-sysinclude-path.patch | 50 50 0 0 ++++
/trunk/patches/glibc/2.6/210-lll_lock_t.patch | 237 237 0 0 ++++++++++++++++++
/trunk/patches/glibc/ports-2.6.1/120-lll_lock_t.patch | 156 156 0 0 ++++++++++++
9 files changed, 958 insertions(+)
patches/glibc/2.6.1/180-gcc-4.3-sysinclude-path.patch
patches/glibc/2.6.1/190-alpha-atfcts.patch
patches/glibc/2.6.1/200-alpha-ptr_mangle.patch
patches/glibc/2.6.1/210-lll_lock_t.patch
patches/glibc/2.6/180-gcc-4.3-sysinclude-path.patch
patches/glibc/2.6/190-alpha-atfcts.patch
patches/glibc/2.6/200-alpha-ptr_mangle.patch
patches/glibc/2.6/210-lll_lock_t.patch
patches/glibc/2.7/180-gcc-4.3-sysinclude-path.patch
patches/glibc/2.7/180-gcc-4.3_sysinclude_path.patch
patches/glibc/ports-2.6.1/120-lll_lock_t.patch
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/patches/glibc/2.6.1/180-gcc-4.3-sysinclude-path.patch	Mon Jul 28 21:59:40 2008 +0000
     1.3 @@ -0,0 +1,50 @@
     1.4 +Patch pointed to by Ryan ARNOLD on the libc-help ML.
     1.5 +See: http://sourceware.org/ml/libc-help/2008-06/msg00063.html
     1.6 +
     1.7 +Forwarded to crosstool-NG by Ioannis E. VENETIS:
     1.8 +See: http://sourceware.org/ml/libc-help/2008-06/msg00063.html
     1.9 +
    1.10 +GCC 4.3 changed the location of some of the header files.  I don't
    1.11 +understand why you'd be getting these errors while building GCC since
    1.12 +it provides them.
    1.13 +
    1.14 +With regard to GLIBC, Roland checked in some changes so that the GLIBC
    1.15 +build system could find the new locations of the GCC provided header
    1.16 +files.
    1.17 +
    1.18 +diff -durN glibc-2.6.1.orig/configure.in glibc-2.6.1/configure.in
    1.19 +--- glibc-2.6.1.orig/configure.in	2007-06-08 05:16:36.000000000 +0200
    1.20 ++++ glibc-2.6.1/configure.in	2008-06-24 18:38:46.000000000 +0200
    1.21 +@@ -911,8 +911,12 @@
    1.22 + # header directory and add that to the list.  NOTE: Only does the right
    1.23 + # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
    1.24 + if test -n "$sysheaders"; then
    1.25 +-  ccheaders=`$CC -print-file-name=include`
    1.26 +-  SYSINCLUDES="-nostdinc -isystem $ccheaders \
    1.27 ++  SYSINCLUDES=-nostdinc
    1.28 ++  for d in include include-fixed; do
    1.29 ++    i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
    1.30 ++    SYSINCLUDES="$SYSINCLUDES -isystem $i"
    1.31 ++  done
    1.32 ++  SYSINCLUDES="$SYSINCLUDES \
    1.33 + -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
    1.34 +   if test -n "$CXX"; then
    1.35 +     cxxversion=`$CXX -dumpversion 2>&AS_MESSAGE_LOG_FD` &&
    1.36 +diff -durN glibc-2.6.1.orig/configure glibc-2.6.1/configure
    1.37 +--- glibc-2.6.1.orig/configure	2008-06-24 18:35:34.000000000 +0200
    1.38 ++++ glibc-2.6.1/configure	2008-06-24 18:38:46.000000000 +0200
    1.39 +@@ -4562,8 +4562,12 @@
    1.40 + # header directory and add that to the list.  NOTE: Only does the right
    1.41 + # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
    1.42 + if test -n "$sysheaders"; then
    1.43 +-  ccheaders=`$CC -print-file-name=include`
    1.44 +-  SYSINCLUDES="-nostdinc -isystem $ccheaders \
    1.45 ++  SYSINCLUDES=-nostdinc
    1.46 ++  for d in include include-fixed; do
    1.47 ++    i=`$CC -print-file-name="$d"` && test "x$i" != "x$d" &&
    1.48 ++    SYSINCLUDES="$SYSINCLUDES -isystem $i"
    1.49 ++  done
    1.50 ++  SYSINCLUDES="$SYSINCLUDES \
    1.51 + -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
    1.52 +   if test -n "$CXX"; then
    1.53 +     cxxversion=`$CXX -dumpversion 2>&5` &&
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/patches/glibc/2.6.1/190-alpha-atfcts.patch	Mon Jul 28 21:59:40 2008 +0000
     2.3 @@ -0,0 +1,11 @@
     2.4 +--- glibc-2.6.1/sysdeps/unix/sysv/linux/kernel-features.h	2006-07-29 07:43:27.000000000 +0300
     2.5 ++++ glibc-2.6.1/sysdeps/unix/sysv/linux/kernel-features.h.new	2008-07-26 08:45:06.000000000 +0300
     2.6 +@@ -445,7 +445,7 @@
     2.7 + /* The *at syscalls were introduced just after 2.6.16-rc1.  Due to the way the
     2.8 +    kernel versions are advertised we can only rely on 2.6.17 to have
     2.9 +    the code.  */
    2.10 +-#if __LINUX_KERNEL_VERSION >= 0x020611
    2.11 ++#if __LINUX_KERNEL_VERSION >= 0x020611 && !defined __alpha__
    2.12 + # define __ASSUME_ATFCTS	1
    2.13 + #endif
    2.14 + 
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/patches/glibc/2.6.1/200-alpha-ptr_mangle.patch	Mon Jul 28 21:59:40 2008 +0000
     3.3 @@ -0,0 +1,103 @@
     3.4 +--- glibc-2.6.1.orig/sysdeps/unix/alpha/sysdep.h
     3.5 ++++ glibc-2.6.1/sysdeps/unix/alpha/sysdep.h
     3.6 +@@ -397,42 +397,4 @@
     3.7 + 	_sc_ret = _sc_0, _sc_err = _sc_19;			\
     3.8 + }
     3.9 + 
    3.10 +-/* Pointer mangling support.  Note that tls access is slow enough that
    3.11 +-   we don't deoptimize things by placing the pointer check value there.  */
    3.12 +-
    3.13 +-#include <stdint.h>
    3.14 +-
    3.15 +-#if defined NOT_IN_libc && defined IS_IN_rtld
    3.16 +-# ifdef __ASSEMBLER__
    3.17 +-#  define PTR_MANGLE(dst, src, tmp)				\
    3.18 +-	ldah	tmp, __pointer_chk_guard_local($29) !gprelhigh;	\
    3.19 +-	ldq	tmp, __pointer_chk_guard_local(tmp) !gprellow;	\
    3.20 +-	xor	src, tmp, dst
    3.21 +-#  define PTR_MANGLE2(dst, src, tmp)				\
    3.22 +-	xor	src, tmp, dst
    3.23 +-#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
    3.24 +-#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
    3.25 +-# else
    3.26 +-extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden;
    3.27 +-#  define PTR_MANGLE(var)	\
    3.28 +-  (var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard_local)
    3.29 +-#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
    3.30 +-# endif
    3.31 +-#elif defined PIC
    3.32 +-# ifdef __ASSEMBLER__
    3.33 +-#  define PTR_MANGLE(dst, src, tmp)		\
    3.34 +-	ldq	tmp, __pointer_chk_guard;	\
    3.35 +-	xor	src, tmp, dst
    3.36 +-#  define PTR_MANGLE2(dst, src, tmp)		\
    3.37 +-	xor	src, tmp, dst
    3.38 +-#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
    3.39 +-#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
    3.40 +-# else
    3.41 +-extern uintptr_t __pointer_chk_guard attribute_relro;
    3.42 +-#  define PTR_MANGLE(var)	\
    3.43 +-	(var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard)
    3.44 +-#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
    3.45 +-# endif
    3.46 +-#endif
    3.47 +-
    3.48 + #endif /* ASSEMBLER */
    3.49 +--- glibc-2.6.1.orig/sysdeps/unix/sysv/linux/alpha/sysdep.h
    3.50 ++++ glibc-2.6.1/sysdeps/unix/sysv/linux/alpha/sysdep.h
    3.51 +@@ -29,6 +29,8 @@
    3.52 + /* There is some commonality.  */
    3.53 + #include <sysdeps/unix/alpha/sysdep.h>
    3.54 + 
    3.55 ++#include <tls.h>
    3.56 ++
    3.57 + /* For Linux we can use the system call table in the header file
    3.58 + 	/usr/include/asm/unistd.h
    3.59 +    of the kernel.  But these symbols do not follow the SYS_* syntax
    3.60 +@@ -96,4 +96,46 @@
    3.61 + 	INTERNAL_SYSCALL1(name, err_out, nr, args);			\
    3.62 + })
    3.63 + 
    3.64 ++/* Pointer mangling support.  Note that tls access is slow enough that
    3.65 ++   we don't deoptimize things by placing the pointer check value there.  */
    3.66 ++
    3.67 ++#if defined NOT_IN_libc && defined IS_IN_rtld
    3.68 ++# ifdef __ASSEMBLER__
    3.69 ++#  define PTR_MANGLE(dst, src, tmp)				\
    3.70 ++	ldah	tmp, __pointer_chk_guard_local($29) !gprelhigh;	\
    3.71 ++	ldq	tmp, __pointer_chk_guard_local(tmp) !gprellow;	\
    3.72 ++	xor	src, tmp, dst
    3.73 ++#  define PTR_MANGLE2(dst, src, tmp)				\
    3.74 ++	xor	src, tmp, dst
    3.75 ++#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
    3.76 ++#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
    3.77 ++# else
    3.78 ++extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden;
    3.79 ++#  define PTR_MANGLE(var)	\
    3.80 ++  (var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard_local)
    3.81 ++#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
    3.82 ++# endif
    3.83 ++#elif defined PIC
    3.84 ++# ifdef __ASSEMBLER__
    3.85 ++#  define PTR_MANGLE(dst, src, tmp)		\
    3.86 ++	ldq	tmp, __pointer_chk_guard;	\
    3.87 ++	xor	src, tmp, dst
    3.88 ++#  define PTR_MANGLE2(dst, src, tmp)		\
    3.89 ++	xor	src, tmp, dst
    3.90 ++#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
    3.91 ++#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
    3.92 ++# else
    3.93 ++extern uintptr_t __pointer_chk_guard attribute_relro;
    3.94 ++#  define PTR_MANGLE(var)	\
    3.95 ++	(var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard)
    3.96 ++#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
    3.97 ++# endif
    3.98 ++#else
    3.99 ++/* Pointer mangling is not yet supported for static libc on alpha.  */
   3.100 ++# ifndef __ASSEMBLER__
   3.101 ++#  define PTR_MANGLE(var)   (void) (var)
   3.102 ++#  define PTR_DEMANGLE(var) (void) (var)
   3.103 ++# endif
   3.104 ++#endif
   3.105 ++
   3.106 + #endif /* _LINUX_ALPHA_SYSDEP_H */
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/patches/glibc/2.6.1/210-lll_lock_t.patch	Mon Jul 28 21:59:40 2008 +0000
     4.3 @@ -0,0 +1,237 @@
     4.4 +Patch provided bu Ioannis E. VENETIS
     4.5 +
     4.6 +Using:
     4.7 +
     4.8 +typedef int lll_lock_t;
     4.9 +
    4.10 +creates problems during compilation. Since glibc 2.7 got rid of the 'typedef' and
    4.11 +uses directly 'int', we do the same here.
    4.12 +
    4.13 +diff -Naur glibc-2.6.1/nptl/allocatestack.c glibc-2.6.1.new/nptl/allocatestack.c
    4.14 +--- glibc-2.6.1/nptl/allocatestack.c	2006-08-23 20:39:47.000000000 +0300
    4.15 ++++ glibc-2.6.1.new/nptl/allocatestack.c	2008-07-27 20:56:19.000000000 +0300
    4.16 +@@ -103,7 +103,7 @@
    4.17 + static size_t stack_cache_actsize;
    4.18 + 
    4.19 + /* Mutex protecting this variable.  */
    4.20 +-static lll_lock_t stack_cache_lock = LLL_LOCK_INITIALIZER;
    4.21 ++static int stack_cache_lock = LLL_LOCK_INITIALIZER;
    4.22 + 
    4.23 + /* List of queued stack frames.  */
    4.24 + static LIST_HEAD (stack_cache);
    4.25 +diff -Naur glibc-2.6.1/nptl/descr.h glibc-2.6.1.new/nptl/descr.h
    4.26 +--- glibc-2.6.1/nptl/descr.h	2006-09-24 20:10:55.000000000 +0300
    4.27 ++++ glibc-2.6.1.new/nptl/descr.h	2008-07-27 20:54:41.000000000 +0300
    4.28 +@@ -305,10 +305,10 @@
    4.29 +   int parent_cancelhandling;
    4.30 + 
    4.31 +   /* Lock to synchronize access to the descriptor.  */
    4.32 +-  lll_lock_t lock;
    4.33 ++  int lock;
    4.34 + 
    4.35 +   /* Lock for synchronizing setxid calls.  */
    4.36 +-  lll_lock_t setxid_futex;
    4.37 ++  int setxid_futex;
    4.38 + 
    4.39 + #if HP_TIMING_AVAIL
    4.40 +   /* Offset of the CPU clock at start thread start time.  */
    4.41 +diff -Naur glibc-2.6.1/nptl/pthread_attr_init.c glibc-2.6.1.new/nptl/pthread_attr_init.c
    4.42 +--- glibc-2.6.1/nptl/pthread_attr_init.c	2004-03-19 01:56:31.000000000 +0200
    4.43 ++++ glibc-2.6.1.new/nptl/pthread_attr_init.c	2008-07-27 20:55:03.000000000 +0300
    4.44 +@@ -27,7 +27,7 @@
    4.45 + 
    4.46 + 
    4.47 + struct pthread_attr *__attr_list;
    4.48 +-lll_lock_t __attr_list_lock = LLL_LOCK_INITIALIZER;
    4.49 ++int __attr_list_lock = LLL_LOCK_INITIALIZER;
    4.50 + 
    4.51 + 
    4.52 + int
    4.53 +diff -Naur glibc-2.6.1/nptl/pthreadP.h glibc-2.6.1.new/nptl/pthreadP.h
    4.54 +--- glibc-2.6.1/nptl/pthreadP.h	2006-08-23 20:42:52.000000000 +0300
    4.55 ++++ glibc-2.6.1.new/nptl/pthreadP.h	2008-07-27 20:56:40.000000000 +0300
    4.56 +@@ -143,7 +143,7 @@
    4.57 + 
    4.58 + /* Attribute handling.  */
    4.59 + extern struct pthread_attr *__attr_list attribute_hidden;
    4.60 +-extern lll_lock_t __attr_list_lock attribute_hidden;
    4.61 ++extern int __attr_list_lock attribute_hidden;
    4.62 + 
    4.63 + /* First available RT signal.  */
    4.64 + extern int __current_sigrtmin attribute_hidden;
    4.65 +diff -Naur glibc-2.6.1/nptl/semaphoreP.h glibc-2.6.1.new/nptl/semaphoreP.h
    4.66 +--- glibc-2.6.1/nptl/semaphoreP.h	2006-05-11 20:08:37.000000000 +0300
    4.67 ++++ glibc-2.6.1.new/nptl/semaphoreP.h	2008-07-27 20:55:42.000000000 +0300
    4.68 +@@ -48,7 +48,7 @@
    4.69 + extern void *__sem_mappings attribute_hidden;
    4.70 + 
    4.71 + /* Lock to protect the search tree.  */
    4.72 +-extern lll_lock_t __sem_mappings_lock attribute_hidden;
    4.73 ++extern int __sem_mappings_lock attribute_hidden;
    4.74 + 
    4.75 + 
    4.76 + /* Initializer for mountpoint.  */
    4.77 +diff -Naur glibc-2.6.1/nptl/sem_open.c glibc-2.6.1.new/nptl/sem_open.c
    4.78 +--- glibc-2.6.1/nptl/sem_open.c	2006-05-11 20:09:43.000000000 +0300
    4.79 ++++ glibc-2.6.1.new/nptl/sem_open.c	2008-07-27 20:55:22.000000000 +0300
    4.80 +@@ -147,7 +147,7 @@
    4.81 + void *__sem_mappings attribute_hidden;
    4.82 + 
    4.83 + /* Lock to protect the search tree.  */
    4.84 +-lll_lock_t __sem_mappings_lock attribute_hidden = LLL_LOCK_INITIALIZER;
    4.85 ++int __sem_mappings_lock attribute_hidden = LLL_LOCK_INITIALIZER;
    4.86 + 
    4.87 + 
    4.88 + /* Search for existing mapping and if possible add the one provided.  */
    4.89 +diff -Naur glibc-2.6.1/nptl/pthread_once.c glibc-2.6.1.new/nptl/pthread_once.c
    4.90 +--- glibc-2.6.1/nptl/pthread_once.c	2002-11-27 00:50:31.000000000 +0200
    4.91 ++++ glibc-2.6.1.new/nptl/pthread_once.c	2008-07-27 20:57:12.000000000 +0300
    4.92 +@@ -22,7 +22,7 @@
    4.93 + 
    4.94 + 
    4.95 + 
    4.96 +-static lll_lock_t once_lock = LLL_LOCK_INITIALIZER;
    4.97 ++static int once_lock = LLL_LOCK_INITIALIZER;
    4.98 + 
    4.99 + 
   4.100 + int
   4.101 +diff -Naur glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h
   4.102 +--- glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h	2006-07-29 08:06:07.000000000 +0300
   4.103 ++++ glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h	2008-07-27 20:59:15.000000000 +0300
   4.104 +@@ -230,9 +230,6 @@
   4.105 + /* Our internal lock implementation is identical to the binary-compatible
   4.106 +    mutex implementation. */
   4.107 + 
   4.108 +-/* Type for lock object.  */
   4.109 +-typedef int lll_lock_t;
   4.110 +-
   4.111 + /* Initializers for lock.  */
   4.112 + #define LLL_LOCK_INITIALIZER		(0)
   4.113 + #define LLL_LOCK_INITIALIZER_LOCKED	(1)
   4.114 +diff -Naur glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/fork.c glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/fork.c
   4.115 +--- glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/fork.c	2003-12-21 01:37:13.000000000 +0200
   4.116 ++++ glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/fork.c	2008-07-27 21:00:01.000000000 +0300
   4.117 +@@ -183,7 +183,7 @@
   4.118 + 	}
   4.119 + 
   4.120 +       /* Initialize the fork lock.  */
   4.121 +-      __fork_lock = (lll_lock_t) LLL_LOCK_INITIALIZER;
   4.122 ++      __fork_lock = (int) LLL_LOCK_INITIALIZER;
   4.123 +     }
   4.124 +   else
   4.125 +     {
   4.126 +diff -Naur glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/fork.h glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/fork.h
   4.127 +--- glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/fork.h	2006-05-15 23:19:43.000000000 +0300
   4.128 ++++ glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/fork.h	2008-07-27 20:58:49.000000000 +0300
   4.129 +@@ -26,7 +26,7 @@
   4.130 + extern unsigned long int *__fork_generation_pointer attribute_hidden;
   4.131 + 
   4.132 + /* Lock to protect allocation and deallocation of fork handlers.  */
   4.133 +-extern lll_lock_t __fork_lock attribute_hidden;
   4.134 ++extern int __fork_lock attribute_hidden;
   4.135 + 
   4.136 + /* Elements of the fork handler lists.  */
   4.137 + struct fork_handler
   4.138 +diff -Naur glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
   4.139 +--- glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h	2006-09-05 17:44:25.000000000 +0300
   4.140 ++++ glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h	2008-07-27 21:00:19.000000000 +0300
   4.141 +@@ -436,9 +436,6 @@
   4.142 + /* We have a separate internal lock implementation which is not tied
   4.143 +    to binary compatibility.  */
   4.144 + 
   4.145 +-/* Type for lock object.  */
   4.146 +-typedef int lll_lock_t;
   4.147 +-
   4.148 + /* Initializers for lock.  */
   4.149 + #define LLL_LOCK_INITIALIZER		(0)
   4.150 + #define LLL_LOCK_INITIALIZER_LOCKED	(1)
   4.151 +diff -Naur glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h
   4.152 +--- glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h	2006-07-29 08:06:07.000000000 +0300
   4.153 ++++ glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h	2008-07-27 20:58:16.000000000 +0300
   4.154 +@@ -223,9 +223,6 @@
   4.155 + /* We have a separate internal lock implementation which is not tied
   4.156 +    to binary compatibility.  We can use the lll_mutex_*.  */
   4.157 + 
   4.158 +-/* Type for lock object.  */
   4.159 +-typedef int lll_lock_t;
   4.160 +-
   4.161 + extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
   4.162 + 
   4.163 + /* Initializers for lock.  */
   4.164 +diff -Naur glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
   4.165 +--- glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h	2006-07-29 08:06:07.000000000 +0300
   4.166 ++++ glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h	2008-07-27 21:00:36.000000000 +0300
   4.167 +@@ -254,9 +254,6 @@
   4.168 + /* Our internal lock implementation is identical to the binary-compatible
   4.169 +    mutex implementation. */
   4.170 + 
   4.171 +-/* Type for lock object.  */
   4.172 +-typedef int lll_lock_t;
   4.173 +-
   4.174 + /* Initializers for lock.  */
   4.175 + #define LLL_LOCK_INITIALIZER		(0)
   4.176 + #define LLL_LOCK_INITIALIZER_LOCKED	(1)
   4.177 +diff -Naur glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/register-atfork.c glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/register-atfork.c
   4.178 +--- glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/register-atfork.c	2005-12-22 00:17:21.000000000 +0200
   4.179 ++++ glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/register-atfork.c	2008-07-27 21:00:55.000000000 +0300
   4.180 +@@ -24,7 +24,7 @@
   4.181 + 
   4.182 + 
   4.183 + /* Lock to protect allocation and deallocation of fork handlers.  */
   4.184 +-lll_lock_t __fork_lock = LLL_LOCK_INITIALIZER;
   4.185 ++int __fork_lock = LLL_LOCK_INITIALIZER;
   4.186 + 
   4.187 + 
   4.188 + /* Number of pre-allocated handler entries.  */
   4.189 +diff -Naur glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h
   4.190 +--- glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h	2006-07-29 08:06:07.000000000 +0300
   4.191 ++++ glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h	2008-07-27 21:01:14.000000000 +0300
   4.192 +@@ -309,9 +309,6 @@
   4.193 + /* We have a separate internal lock implementation which is not tied
   4.194 +    to binary compatibility.  We can use the lll_mutex_*.  */
   4.195 + 
   4.196 +-/* Type for lock object.  */
   4.197 +-typedef int lll_lock_t;
   4.198 +-
   4.199 + /* Initializers for lock.  */
   4.200 + #define LLL_LOCK_INITIALIZER		(0)
   4.201 + #define LLL_LOCK_INITIALIZER_LOCKED	(1)
   4.202 +diff -Naur glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h
   4.203 +--- glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h	2006-07-29 08:06:06.000000000 +0300
   4.204 ++++ glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h	2008-07-27 20:58:00.000000000 +0300
   4.205 +@@ -278,9 +278,6 @@
   4.206 + /* We have a separate internal lock implementation which is not tied
   4.207 +    to binary compatibility.  */
   4.208 + 
   4.209 +-/* Type for lock object.  */
   4.210 +-typedef int lll_lock_t;
   4.211 +-
   4.212 + /* Initializers for lock.  */
   4.213 + #define LLL_LOCK_INITIALIZER		(0)
   4.214 + #define LLL_LOCK_INITIALIZER_LOCKED	(1)
   4.215 +diff -Naur glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h
   4.216 +--- glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h	2006-07-29 08:06:06.000000000 +0300
   4.217 ++++ glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h	2008-07-27 20:59:39.000000000 +0300
   4.218 +@@ -237,9 +237,6 @@
   4.219 + /* We have a separate internal lock implementation which is not tied
   4.220 +    to binary compatibility.  We can use the lll_mutex_*.  */
   4.221 + 
   4.222 +-/* Type for lock object.  */
   4.223 +-typedef int lll_lock_t;
   4.224 +-
   4.225 + extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
   4.226 + 
   4.227 + /* Initializers for lock.  */
   4.228 +diff -Naur glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
   4.229 +--- glibc-2.6.1/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h	2006-09-05 17:45:34.000000000 +0300
   4.230 ++++ glibc-2.6.1.new/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h	2008-07-27 20:58:33.000000000 +0300
   4.231 +@@ -446,9 +446,6 @@
   4.232 + /* We have a separate internal lock implementation which is not tied
   4.233 +    to binary compatibility.  */
   4.234 + 
   4.235 +-/* Type for lock object.  */
   4.236 +-typedef int lll_lock_t;
   4.237 +-
   4.238 + /* Initializers for lock.  */
   4.239 + #define LLL_LOCK_INITIALIZER		(0)
   4.240 + #define LLL_LOCK_INITIALIZER_LOCKED	(1)
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/patches/glibc/2.6/180-gcc-4.3-sysinclude-path.patch	Mon Jul 28 21:59:40 2008 +0000
     5.3 @@ -0,0 +1,50 @@
     5.4 +Patch pointed to by Ryan ARNOLD on the libc-help ML.
     5.5 +See: http://sourceware.org/ml/libc-help/2008-06/msg00063.html
     5.6 +
     5.7 +Forwarded to crosstool-NG by Ioannis E. VENETIS:
     5.8 +See: http://sourceware.org/ml/libc-help/2008-06/msg00063.html
     5.9 +
    5.10 +GCC 4.3 changed the location of some of the header files.  I don't
    5.11 +understand why you'd be getting these errors while building GCC since
    5.12 +it provides them.
    5.13 +
    5.14 +With regard to GLIBC, Roland checked in some changes so that the GLIBC
    5.15 +build system could find the new locations of the GCC provided header
    5.16 +files.
    5.17 +
    5.18 +diff -durN glibc-2.6.orig/configure.in glibc-2.6/configure.in
    5.19 +--- glibc-2.6.orig/configure.in	2007-06-08 05:16:36.000000000 +0200
    5.20 ++++ glibc-2.6/configure.in	2008-06-24 18:38:46.000000000 +0200
    5.21 +@@ -911,8 +911,12 @@
    5.22 + # header directory and add that to the list.  NOTE: Only does the right
    5.23 + # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
    5.24 + if test -n "$sysheaders"; then
    5.25 +-  ccheaders=`$CC -print-file-name=include`
    5.26 +-  SYSINCLUDES="-nostdinc -isystem $ccheaders \
    5.27 ++  SYSINCLUDES=-nostdinc
    5.28 ++  for d in include include-fixed; do
    5.29 ++    i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
    5.30 ++    SYSINCLUDES="$SYSINCLUDES -isystem $i"
    5.31 ++  done
    5.32 ++  SYSINCLUDES="$SYSINCLUDES \
    5.33 + -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
    5.34 +   if test -n "$CXX"; then
    5.35 +     cxxversion=`$CXX -dumpversion 2>&AS_MESSAGE_LOG_FD` &&
    5.36 +diff -durN glibc-2.6.orig/configure glibc-2.6/configure
    5.37 +--- glibc-2.6.orig/configure	2008-06-24 18:35:34.000000000 +0200
    5.38 ++++ glibc-2.6/configure	2008-06-24 18:38:46.000000000 +0200
    5.39 +@@ -4562,8 +4562,12 @@
    5.40 + # header directory and add that to the list.  NOTE: Only does the right
    5.41 + # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
    5.42 + if test -n "$sysheaders"; then
    5.43 +-  ccheaders=`$CC -print-file-name=include`
    5.44 +-  SYSINCLUDES="-nostdinc -isystem $ccheaders \
    5.45 ++  SYSINCLUDES=-nostdinc
    5.46 ++  for d in include include-fixed; do
    5.47 ++    i=`$CC -print-file-name="$d"` && test "x$i" != "x$d" &&
    5.48 ++    SYSINCLUDES="$SYSINCLUDES -isystem $i"
    5.49 ++  done
    5.50 ++  SYSINCLUDES="$SYSINCLUDES \
    5.51 + -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
    5.52 +   if test -n "$CXX"; then
    5.53 +     cxxversion=`$CXX -dumpversion 2>&5` &&
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/patches/glibc/2.6/190-alpha-atfcts.patch	Mon Jul 28 21:59:40 2008 +0000
     6.3 @@ -0,0 +1,11 @@
     6.4 +--- glibc-2.6/sysdeps/unix/sysv/linux/kernel-features.h	2006-07-29 07:43:27.000000000 +0300
     6.5 ++++ glibc-2.6/sysdeps/unix/sysv/linux/kernel-features.h.new	2008-07-26 08:45:06.000000000 +0300
     6.6 +@@ -445,7 +445,7 @@
     6.7 + /* The *at syscalls were introduced just after 2.6.16-rc1.  Due to the way the
     6.8 +    kernel versions are advertised we can only rely on 2.6.17 to have
     6.9 +    the code.  */
    6.10 +-#if __LINUX_KERNEL_VERSION >= 0x020611
    6.11 ++#if __LINUX_KERNEL_VERSION >= 0x020611 && !defined __alpha__
    6.12 + # define __ASSUME_ATFCTS	1
    6.13 + #endif
    6.14 + 
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/patches/glibc/2.6/200-alpha-ptr_mangle.patch	Mon Jul 28 21:59:40 2008 +0000
     7.3 @@ -0,0 +1,103 @@
     7.4 +--- glibc-2.6.orig/sysdeps/unix/alpha/sysdep.h
     7.5 ++++ glibc-2.6/sysdeps/unix/alpha/sysdep.h
     7.6 +@@ -397,42 +397,4 @@
     7.7 + 	_sc_ret = _sc_0, _sc_err = _sc_19;			\
     7.8 + }
     7.9 + 
    7.10 +-/* Pointer mangling support.  Note that tls access is slow enough that
    7.11 +-   we don't deoptimize things by placing the pointer check value there.  */
    7.12 +-
    7.13 +-#include <stdint.h>
    7.14 +-
    7.15 +-#if defined NOT_IN_libc && defined IS_IN_rtld
    7.16 +-# ifdef __ASSEMBLER__
    7.17 +-#  define PTR_MANGLE(dst, src, tmp)				\
    7.18 +-	ldah	tmp, __pointer_chk_guard_local($29) !gprelhigh;	\
    7.19 +-	ldq	tmp, __pointer_chk_guard_local(tmp) !gprellow;	\
    7.20 +-	xor	src, tmp, dst
    7.21 +-#  define PTR_MANGLE2(dst, src, tmp)				\
    7.22 +-	xor	src, tmp, dst
    7.23 +-#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
    7.24 +-#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
    7.25 +-# else
    7.26 +-extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden;
    7.27 +-#  define PTR_MANGLE(var)	\
    7.28 +-  (var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard_local)
    7.29 +-#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
    7.30 +-# endif
    7.31 +-#elif defined PIC
    7.32 +-# ifdef __ASSEMBLER__
    7.33 +-#  define PTR_MANGLE(dst, src, tmp)		\
    7.34 +-	ldq	tmp, __pointer_chk_guard;	\
    7.35 +-	xor	src, tmp, dst
    7.36 +-#  define PTR_MANGLE2(dst, src, tmp)		\
    7.37 +-	xor	src, tmp, dst
    7.38 +-#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
    7.39 +-#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
    7.40 +-# else
    7.41 +-extern uintptr_t __pointer_chk_guard attribute_relro;
    7.42 +-#  define PTR_MANGLE(var)	\
    7.43 +-	(var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard)
    7.44 +-#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
    7.45 +-# endif
    7.46 +-#endif
    7.47 +-
    7.48 + #endif /* ASSEMBLER */
    7.49 +--- glibc-2.6.orig/sysdeps/unix/sysv/linux/alpha/sysdep.h
    7.50 ++++ glibc-2.6/sysdeps/unix/sysv/linux/alpha/sysdep.h
    7.51 +@@ -29,6 +29,8 @@
    7.52 + /* There is some commonality.  */
    7.53 + #include <sysdeps/unix/alpha/sysdep.h>
    7.54 + 
    7.55 ++#include <tls.h>
    7.56 ++
    7.57 + /* For Linux we can use the system call table in the header file
    7.58 + 	/usr/include/asm/unistd.h
    7.59 +    of the kernel.  But these symbols do not follow the SYS_* syntax
    7.60 +@@ -96,4 +96,46 @@
    7.61 + 	INTERNAL_SYSCALL1(name, err_out, nr, args);			\
    7.62 + })
    7.63 + 
    7.64 ++/* Pointer mangling support.  Note that tls access is slow enough that
    7.65 ++   we don't deoptimize things by placing the pointer check value there.  */
    7.66 ++
    7.67 ++#if defined NOT_IN_libc && defined IS_IN_rtld
    7.68 ++# ifdef __ASSEMBLER__
    7.69 ++#  define PTR_MANGLE(dst, src, tmp)				\
    7.70 ++	ldah	tmp, __pointer_chk_guard_local($29) !gprelhigh;	\
    7.71 ++	ldq	tmp, __pointer_chk_guard_local(tmp) !gprellow;	\
    7.72 ++	xor	src, tmp, dst
    7.73 ++#  define PTR_MANGLE2(dst, src, tmp)				\
    7.74 ++	xor	src, tmp, dst
    7.75 ++#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
    7.76 ++#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
    7.77 ++# else
    7.78 ++extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden;
    7.79 ++#  define PTR_MANGLE(var)	\
    7.80 ++  (var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard_local)
    7.81 ++#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
    7.82 ++# endif
    7.83 ++#elif defined PIC
    7.84 ++# ifdef __ASSEMBLER__
    7.85 ++#  define PTR_MANGLE(dst, src, tmp)		\
    7.86 ++	ldq	tmp, __pointer_chk_guard;	\
    7.87 ++	xor	src, tmp, dst
    7.88 ++#  define PTR_MANGLE2(dst, src, tmp)		\
    7.89 ++	xor	src, tmp, dst
    7.90 ++#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
    7.91 ++#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
    7.92 ++# else
    7.93 ++extern uintptr_t __pointer_chk_guard attribute_relro;
    7.94 ++#  define PTR_MANGLE(var)	\
    7.95 ++	(var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard)
    7.96 ++#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
    7.97 ++# endif
    7.98 ++#else
    7.99 ++/* Pointer mangling is not yet supported for static libc on alpha.  */
   7.100 ++# ifndef __ASSEMBLER__
   7.101 ++#  define PTR_MANGLE(var)   (void) (var)
   7.102 ++#  define PTR_DEMANGLE(var) (void) (var)
   7.103 ++# endif
   7.104 ++#endif
   7.105 ++
   7.106 + #endif /* _LINUX_ALPHA_SYSDEP_H */
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/patches/glibc/2.6/210-lll_lock_t.patch	Mon Jul 28 21:59:40 2008 +0000
     8.3 @@ -0,0 +1,237 @@
     8.4 +Patch provided bu Ioannis E. VENETIS
     8.5 +
     8.6 +Using:
     8.7 +
     8.8 +typedef int lll_lock_t;
     8.9 +
    8.10 +creates problems during compilation. Since glibc 2.7 got rid of the 'typedef' and
    8.11 +uses directly 'int', we do the same here.
    8.12 +
    8.13 +diff -Naur glibc-2.6/nptl/allocatestack.c glibc-2.6.new/nptl/allocatestack.c
    8.14 +--- glibc-2.6/nptl/allocatestack.c	2006-08-23 20:39:47.000000000 +0300
    8.15 ++++ glibc-2.6.new/nptl/allocatestack.c	2008-07-27 20:56:19.000000000 +0300
    8.16 +@@ -103,7 +103,7 @@
    8.17 + static size_t stack_cache_actsize;
    8.18 + 
    8.19 + /* Mutex protecting this variable.  */
    8.20 +-static lll_lock_t stack_cache_lock = LLL_LOCK_INITIALIZER;
    8.21 ++static int stack_cache_lock = LLL_LOCK_INITIALIZER;
    8.22 + 
    8.23 + /* List of queued stack frames.  */
    8.24 + static LIST_HEAD (stack_cache);
    8.25 +diff -Naur glibc-2.6/nptl/descr.h glibc-2.6.new/nptl/descr.h
    8.26 +--- glibc-2.6/nptl/descr.h	2006-09-24 20:10:55.000000000 +0300
    8.27 ++++ glibc-2.6.new/nptl/descr.h	2008-07-27 20:54:41.000000000 +0300
    8.28 +@@ -304,10 +304,10 @@
    8.29 +   int parent_cancelhandling;
    8.30 + 
    8.31 +   /* Lock to synchronize access to the descriptor.  */
    8.32 +-  lll_lock_t lock;
    8.33 ++  int lock;
    8.34 + 
    8.35 +   /* Lock for synchronizing setxid calls.  */
    8.36 +-  lll_lock_t setxid_futex;
    8.37 ++  int setxid_futex;
    8.38 + 
    8.39 + #if HP_TIMING_AVAIL
    8.40 +   /* Offset of the CPU clock at start thread start time.  */
    8.41 +diff -Naur glibc-2.6/nptl/pthread_attr_init.c glibc-2.6.new/nptl/pthread_attr_init.c
    8.42 +--- glibc-2.6/nptl/pthread_attr_init.c	2004-03-19 01:56:31.000000000 +0200
    8.43 ++++ glibc-2.6.new/nptl/pthread_attr_init.c	2008-07-27 20:55:03.000000000 +0300
    8.44 +@@ -27,7 +27,7 @@
    8.45 + 
    8.46 + 
    8.47 + struct pthread_attr *__attr_list;
    8.48 +-lll_lock_t __attr_list_lock = LLL_LOCK_INITIALIZER;
    8.49 ++int __attr_list_lock = LLL_LOCK_INITIALIZER;
    8.50 + 
    8.51 + 
    8.52 + int
    8.53 +diff -Naur glibc-2.6/nptl/pthreadP.h glibc-2.6.new/nptl/pthreadP.h
    8.54 +--- glibc-2.6/nptl/pthreadP.h	2006-08-23 20:42:52.000000000 +0300
    8.55 ++++ glibc-2.6.new/nptl/pthreadP.h	2008-07-27 20:56:40.000000000 +0300
    8.56 +@@ -143,7 +143,7 @@
    8.57 + 
    8.58 + /* Attribute handling.  */
    8.59 + extern struct pthread_attr *__attr_list attribute_hidden;
    8.60 +-extern lll_lock_t __attr_list_lock attribute_hidden;
    8.61 ++extern int __attr_list_lock attribute_hidden;
    8.62 + 
    8.63 + /* First available RT signal.  */
    8.64 + extern int __current_sigrtmin attribute_hidden;
    8.65 +diff -Naur glibc-2.6/nptl/semaphoreP.h glibc-2.6.new/nptl/semaphoreP.h
    8.66 +--- glibc-2.6/nptl/semaphoreP.h	2006-05-11 20:08:37.000000000 +0300
    8.67 ++++ glibc-2.6.new/nptl/semaphoreP.h	2008-07-27 20:55:42.000000000 +0300
    8.68 +@@ -48,7 +48,7 @@
    8.69 + extern void *__sem_mappings attribute_hidden;
    8.70 + 
    8.71 + /* Lock to protect the search tree.  */
    8.72 +-extern lll_lock_t __sem_mappings_lock attribute_hidden;
    8.73 ++extern int __sem_mappings_lock attribute_hidden;
    8.74 + 
    8.75 + 
    8.76 + /* Initializer for mountpoint.  */
    8.77 +diff -Naur glibc-2.6/nptl/sem_open.c glibc-2.6.new/nptl/sem_open.c
    8.78 +--- glibc-2.6/nptl/sem_open.c	2006-05-11 20:09:43.000000000 +0300
    8.79 ++++ glibc-2.6.new/nptl/sem_open.c	2008-07-27 20:55:22.000000000 +0300
    8.80 +@@ -147,7 +147,7 @@
    8.81 + void *__sem_mappings attribute_hidden;
    8.82 + 
    8.83 + /* Lock to protect the search tree.  */
    8.84 +-lll_lock_t __sem_mappings_lock attribute_hidden = LLL_LOCK_INITIALIZER;
    8.85 ++int __sem_mappings_lock attribute_hidden = LLL_LOCK_INITIALIZER;
    8.86 + 
    8.87 + 
    8.88 + /* Search for existing mapping and if possible add the one provided.  */
    8.89 +diff -Naur glibc-2.6/nptl/pthread_once.c glibc-2.6.new/nptl/pthread_once.c
    8.90 +--- glibc-2.6/nptl/pthread_once.c	2002-11-27 00:50:31.000000000 +0200
    8.91 ++++ glibc-2.6.new/nptl/pthread_once.c	2008-07-27 20:57:12.000000000 +0300
    8.92 +@@ -22,7 +22,7 @@
    8.93 + 
    8.94 + 
    8.95 + 
    8.96 +-static lll_lock_t once_lock = LLL_LOCK_INITIALIZER;
    8.97 ++static int once_lock = LLL_LOCK_INITIALIZER;
    8.98 + 
    8.99 + 
   8.100 + int
   8.101 +diff -Naur glibc-2.6/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h
   8.102 +--- glibc-2.6/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h	2006-07-29 08:06:07.000000000 +0300
   8.103 ++++ glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h	2008-07-27 20:59:15.000000000 +0300
   8.104 +@@ -230,9 +230,6 @@
   8.105 + /* Our internal lock implementation is identical to the binary-compatible
   8.106 +    mutex implementation. */
   8.107 + 
   8.108 +-/* Type for lock object.  */
   8.109 +-typedef int lll_lock_t;
   8.110 +-
   8.111 + /* Initializers for lock.  */
   8.112 + #define LLL_LOCK_INITIALIZER		(0)
   8.113 + #define LLL_LOCK_INITIALIZER_LOCKED	(1)
   8.114 +diff -Naur glibc-2.6/nptl/sysdeps/unix/sysv/linux/fork.c glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/fork.c
   8.115 +--- glibc-2.6/nptl/sysdeps/unix/sysv/linux/fork.c	2003-12-21 01:37:13.000000000 +0200
   8.116 ++++ glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/fork.c	2008-07-27 21:00:01.000000000 +0300
   8.117 +@@ -183,7 +183,7 @@
   8.118 + 	}
   8.119 + 
   8.120 +       /* Initialize the fork lock.  */
   8.121 +-      __fork_lock = (lll_lock_t) LLL_LOCK_INITIALIZER;
   8.122 ++      __fork_lock = (int) LLL_LOCK_INITIALIZER;
   8.123 +     }
   8.124 +   else
   8.125 +     {
   8.126 +diff -Naur glibc-2.6/nptl/sysdeps/unix/sysv/linux/fork.h glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/fork.h
   8.127 +--- glibc-2.6/nptl/sysdeps/unix/sysv/linux/fork.h	2006-05-15 23:19:43.000000000 +0300
   8.128 ++++ glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/fork.h	2008-07-27 20:58:49.000000000 +0300
   8.129 +@@ -26,7 +26,7 @@
   8.130 + extern unsigned long int *__fork_generation_pointer attribute_hidden;
   8.131 + 
   8.132 + /* Lock to protect allocation and deallocation of fork handlers.  */
   8.133 +-extern lll_lock_t __fork_lock attribute_hidden;
   8.134 ++extern int __fork_lock attribute_hidden;
   8.135 + 
   8.136 + /* Elements of the fork handler lists.  */
   8.137 + struct fork_handler
   8.138 +diff -Naur glibc-2.6/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
   8.139 +--- glibc-2.6/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h	2006-09-05 17:44:25.000000000 +0300
   8.140 ++++ glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h	2008-07-27 21:00:19.000000000 +0300
   8.141 +@@ -436,9 +436,6 @@
   8.142 + /* We have a separate internal lock implementation which is not tied
   8.143 +    to binary compatibility.  */
   8.144 + 
   8.145 +-/* Type for lock object.  */
   8.146 +-typedef int lll_lock_t;
   8.147 +-
   8.148 + /* Initializers for lock.  */
   8.149 + #define LLL_LOCK_INITIALIZER		(0)
   8.150 + #define LLL_LOCK_INITIALIZER_LOCKED	(1)
   8.151 +diff -Naur glibc-2.6/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h
   8.152 +--- glibc-2.6/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h	2006-07-29 08:06:07.000000000 +0300
   8.153 ++++ glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h	2008-07-27 20:58:16.000000000 +0300
   8.154 +@@ -223,9 +223,6 @@
   8.155 + /* We have a separate internal lock implementation which is not tied
   8.156 +    to binary compatibility.  We can use the lll_mutex_*.  */
   8.157 + 
   8.158 +-/* Type for lock object.  */
   8.159 +-typedef int lll_lock_t;
   8.160 +-
   8.161 + extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
   8.162 + 
   8.163 + /* Initializers for lock.  */
   8.164 +diff -Naur glibc-2.6/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
   8.165 +--- glibc-2.6/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h	2006-07-29 08:06:07.000000000 +0300
   8.166 ++++ glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h	2008-07-27 21:00:36.000000000 +0300
   8.167 +@@ -254,9 +254,6 @@
   8.168 + /* Our internal lock implementation is identical to the binary-compatible
   8.169 +    mutex implementation. */
   8.170 + 
   8.171 +-/* Type for lock object.  */
   8.172 +-typedef int lll_lock_t;
   8.173 +-
   8.174 + /* Initializers for lock.  */
   8.175 + #define LLL_LOCK_INITIALIZER		(0)
   8.176 + #define LLL_LOCK_INITIALIZER_LOCKED	(1)
   8.177 +diff -Naur glibc-2.6/nptl/sysdeps/unix/sysv/linux/register-atfork.c glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/register-atfork.c
   8.178 +--- glibc-2.6/nptl/sysdeps/unix/sysv/linux/register-atfork.c	2005-12-22 00:17:21.000000000 +0200
   8.179 ++++ glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/register-atfork.c	2008-07-27 21:00:55.000000000 +0300
   8.180 +@@ -24,7 +24,7 @@
   8.181 + 
   8.182 + 
   8.183 + /* Lock to protect allocation and deallocation of fork handlers.  */
   8.184 +-lll_lock_t __fork_lock = LLL_LOCK_INITIALIZER;
   8.185 ++int __fork_lock = LLL_LOCK_INITIALIZER;
   8.186 + 
   8.187 + 
   8.188 + /* Number of pre-allocated handler entries.  */
   8.189 +diff -Naur glibc-2.6/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h
   8.190 +--- glibc-2.6/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h	2006-07-29 08:06:07.000000000 +0300
   8.191 ++++ glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h	2008-07-27 21:01:14.000000000 +0300
   8.192 +@@ -309,9 +309,6 @@
   8.193 + /* We have a separate internal lock implementation which is not tied
   8.194 +    to binary compatibility.  We can use the lll_mutex_*.  */
   8.195 + 
   8.196 +-/* Type for lock object.  */
   8.197 +-typedef int lll_lock_t;
   8.198 +-
   8.199 + /* Initializers for lock.  */
   8.200 + #define LLL_LOCK_INITIALIZER		(0)
   8.201 + #define LLL_LOCK_INITIALIZER_LOCKED	(1)
   8.202 +diff -Naur glibc-2.6/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h
   8.203 +--- glibc-2.6/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h	2006-07-29 08:06:06.000000000 +0300
   8.204 ++++ glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h	2008-07-27 20:58:00.000000000 +0300
   8.205 +@@ -278,9 +278,6 @@
   8.206 + /* We have a separate internal lock implementation which is not tied
   8.207 +    to binary compatibility.  */
   8.208 + 
   8.209 +-/* Type for lock object.  */
   8.210 +-typedef int lll_lock_t;
   8.211 +-
   8.212 + /* Initializers for lock.  */
   8.213 + #define LLL_LOCK_INITIALIZER		(0)
   8.214 + #define LLL_LOCK_INITIALIZER_LOCKED	(1)
   8.215 +diff -Naur glibc-2.6/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h
   8.216 +--- glibc-2.6/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h	2006-07-29 08:06:06.000000000 +0300
   8.217 ++++ glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h	2008-07-27 20:59:39.000000000 +0300
   8.218 +@@ -237,9 +237,6 @@
   8.219 + /* We have a separate internal lock implementation which is not tied
   8.220 +    to binary compatibility.  We can use the lll_mutex_*.  */
   8.221 + 
   8.222 +-/* Type for lock object.  */
   8.223 +-typedef int lll_lock_t;
   8.224 +-
   8.225 + extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
   8.226 + 
   8.227 + /* Initializers for lock.  */
   8.228 +diff -Naur glibc-2.6/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
   8.229 +--- glibc-2.6/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h	2006-09-05 17:45:34.000000000 +0300
   8.230 ++++ glibc-2.6.new/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h	2008-07-27 20:58:33.000000000 +0300
   8.231 +@@ -446,9 +446,6 @@
   8.232 + /* We have a separate internal lock implementation which is not tied
   8.233 +    to binary compatibility.  */
   8.234 + 
   8.235 +-/* Type for lock object.  */
   8.236 +-typedef int lll_lock_t;
   8.237 +-
   8.238 + /* Initializers for lock.  */
   8.239 + #define LLL_LOCK_INITIALIZER		(0)
   8.240 + #define LLL_LOCK_INITIALIZER_LOCKED	(1)
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/patches/glibc/2.7/180-gcc-4.3-sysinclude-path.patch	Mon Jul 28 21:59:40 2008 +0000
     9.3 @@ -0,0 +1,50 @@
     9.4 +Patch pointed to by Ryan ARNOLD on the libc-help ML.
     9.5 +See: http://sourceware.org/ml/libc-help/2008-06/msg00063.html
     9.6 +
     9.7 +Forwarded to crosstool-NG by Ioannis E. VENETIS:
     9.8 +See: http://sourceware.org/ml/libc-help/2008-06/msg00063.html
     9.9 +
    9.10 +GCC 4.3 changed the location of some of the header files.  I don't
    9.11 +understand why you'd be getting these errors while building GCC since
    9.12 +it provides them.
    9.13 +
    9.14 +With regard to GLIBC, Roland checked in some changes so that the GLIBC
    9.15 +build system could find the new locations of the GCC provided header
    9.16 +files.
    9.17 +
    9.18 +diff -durN glibc-2.7.orig/configure.in glibc-2.7/configure.in
    9.19 +--- glibc-2.7.orig/configure.in	2007-06-08 05:16:36.000000000 +0200
    9.20 ++++ glibc-2.7/configure.in	2008-06-24 18:38:46.000000000 +0200
    9.21 +@@ -911,8 +911,12 @@
    9.22 + # header directory and add that to the list.  NOTE: Only does the right
    9.23 + # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
    9.24 + if test -n "$sysheaders"; then
    9.25 +-  ccheaders=`$CC -print-file-name=include`
    9.26 +-  SYSINCLUDES="-nostdinc -isystem $ccheaders \
    9.27 ++  SYSINCLUDES=-nostdinc
    9.28 ++  for d in include include-fixed; do
    9.29 ++    i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
    9.30 ++    SYSINCLUDES="$SYSINCLUDES -isystem $i"
    9.31 ++  done
    9.32 ++  SYSINCLUDES="$SYSINCLUDES \
    9.33 + -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
    9.34 +   if test -n "$CXX"; then
    9.35 +     cxxversion=`$CXX -dumpversion 2>&AS_MESSAGE_LOG_FD` &&
    9.36 +diff -durN glibc-2.7.orig/configure glibc-2.7/configure
    9.37 +--- glibc-2.7.orig/configure	2008-06-24 18:35:34.000000000 +0200
    9.38 ++++ glibc-2.7/configure	2008-06-24 18:38:46.000000000 +0200
    9.39 +@@ -5062,8 +5062,12 @@
    9.40 + # header directory and add that to the list.  NOTE: Only does the right
    9.41 + # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
    9.42 + if test -n "$sysheaders"; then
    9.43 +-  ccheaders=`$CC -print-file-name=include`
    9.44 +-  SYSINCLUDES="-nostdinc -isystem $ccheaders \
    9.45 ++  SYSINCLUDES=-nostdinc
    9.46 ++  for d in include include-fixed; do
    9.47 ++    i=`$CC -print-file-name="$d"` && test "x$i" != "x$d" &&
    9.48 ++    SYSINCLUDES="$SYSINCLUDES -isystem $i"
    9.49 ++  done
    9.50 ++  SYSINCLUDES="$SYSINCLUDES \
    9.51 + -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
    9.52 +   if test -n "$CXX"; then
    9.53 +     cxxversion=`$CXX -dumpversion 2>&5` &&
    10.1 --- a/patches/glibc/2.7/180-gcc-4.3_sysinclude_path.patch	Mon Jul 28 21:32:33 2008 +0000
    10.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.3 @@ -1,50 +0,0 @@
    10.4 -Patch pointed to by Ryan ARNOLD on the libc-help ML.
    10.5 -See: http://sourceware.org/ml/libc-help/2008-06/msg00063.html
    10.6 -
    10.7 -Forwarded to crosstool-NG by Ioannis E. VENETIS:
    10.8 -See: http://sourceware.org/ml/libc-help/2008-06/msg00063.html
    10.9 -
   10.10 -GCC 4.3 changed the location of some of the header files.  I don't
   10.11 -understand why you'd be getting these errors while building GCC since
   10.12 -it provides them.
   10.13 -
   10.14 -With regard to GLIBC, Roland checked in some changes so that the GLIBC
   10.15 -build system could find the new locations of the GCC provided header
   10.16 -files.
   10.17 -
   10.18 -diff -durN glibc-2.7.orig/configure.in glibc-2.7/configure.in
   10.19 ---- glibc-2.7.orig/configure.in	2007-06-08 05:16:36.000000000 +0200
   10.20 -+++ glibc-2.7/configure.in	2008-06-24 18:38:46.000000000 +0200
   10.21 -@@ -911,8 +911,12 @@
   10.22 - # header directory and add that to the list.  NOTE: Only does the right
   10.23 - # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
   10.24 - if test -n "$sysheaders"; then
   10.25 --  ccheaders=`$CC -print-file-name=include`
   10.26 --  SYSINCLUDES="-nostdinc -isystem $ccheaders \
   10.27 -+  SYSINCLUDES=-nostdinc
   10.28 -+  for d in include include-fixed; do
   10.29 -+    i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
   10.30 -+    SYSINCLUDES="$SYSINCLUDES -isystem $i"
   10.31 -+  done
   10.32 -+  SYSINCLUDES="$SYSINCLUDES \
   10.33 - -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
   10.34 -   if test -n "$CXX"; then
   10.35 -     cxxversion=`$CXX -dumpversion 2>&AS_MESSAGE_LOG_FD` &&
   10.36 -diff -durN glibc-2.7.orig/configure glibc-2.7/configure
   10.37 ---- glibc-2.7.orig/configure	2008-06-24 18:35:34.000000000 +0200
   10.38 -+++ glibc-2.7/configure	2008-06-24 18:38:46.000000000 +0200
   10.39 -@@ -5062,8 +5062,12 @@
   10.40 - # header directory and add that to the list.  NOTE: Only does the right
   10.41 - # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
   10.42 - if test -n "$sysheaders"; then
   10.43 --  ccheaders=`$CC -print-file-name=include`
   10.44 --  SYSINCLUDES="-nostdinc -isystem $ccheaders \
   10.45 -+  SYSINCLUDES=-nostdinc
   10.46 -+  for d in include include-fixed; do
   10.47 -+    i=`$CC -print-file-name="$d"` && test "x$i" != "x$d" &&
   10.48 -+    SYSINCLUDES="$SYSINCLUDES -isystem $i"
   10.49 -+  done
   10.50 -+  SYSINCLUDES="$SYSINCLUDES \
   10.51 - -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
   10.52 -   if test -n "$CXX"; then
   10.53 -     cxxversion=`$CXX -dumpversion 2>&5` &&
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/patches/glibc/ports-2.6.1/120-lll_lock_t.patch	Mon Jul 28 21:59:40 2008 +0000
    11.3 @@ -0,0 +1,156 @@
    11.4 +Propagate the patch from base glibc that changes lll_lock_t into a plain int,
    11.5 +without using a typedef, as glibc-2.7 now does.
    11.6 +
    11.7 +diff -durN glibc-ports-2.6.1.orig/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h glibc-ports-2.6.1/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
    11.8 +--- glibc-ports-2.6.1.orig/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h	2006-08-04 20:56:15.000000000 +0200
    11.9 ++++ glibc-ports-2.6.1/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h	2008-07-28 23:49:29.000000000 +0200
   11.10 +@@ -260,9 +260,6 @@
   11.11 + /* Our internal lock implementation is identical to the binary-compatible
   11.12 +    mutex implementation. */
   11.13 + 
   11.14 +-/* Type for lock object.  */
   11.15 +-typedef int lll_lock_t;
   11.16 +-
   11.17 + /* Initializers for lock.  */
   11.18 + #define LLL_LOCK_INITIALIZER		(0)
   11.19 + #define LLL_LOCK_INITIALIZER_LOCKED	(1)
   11.20 +diff -durN glibc-ports-2.6.1.orig/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c
   11.21 +--- glibc-ports-2.6.1.orig/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c	2006-07-14 15:51:24.000000000 +0200
   11.22 ++++ glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c	2008-07-28 23:49:56.000000000 +0200
   11.23 +@@ -25,7 +25,7 @@
   11.24 + 
   11.25 + 
   11.26 + void
   11.27 +-__lll_lock_wait (lll_lock_t *futex)
   11.28 ++__lll_lock_wait (int *futex)
   11.29 + {
   11.30 +   do
   11.31 +     {
   11.32 +@@ -38,7 +38,7 @@
   11.33 + 
   11.34 + 
   11.35 + int
   11.36 +-__lll_timedlock_wait (lll_lock_t *futex, const struct timespec *abstime)
   11.37 ++__lll_timedlock_wait (int *futex, const struct timespec *abstime)
   11.38 + {
   11.39 +   /* Reject invalid timeouts.  */
   11.40 +   if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)
   11.41 +@@ -78,7 +78,7 @@
   11.42 + /* These don't get included in libc.so  */
   11.43 + #ifdef IS_IN_libpthread
   11.44 + int
   11.45 +-lll_unlock_wake_cb (lll_lock_t *futex)
   11.46 ++lll_unlock_wake_cb (int *futex)
   11.47 + {
   11.48 +   int val = atomic_exchange_rel (futex, 0);
   11.49 + 
   11.50 +diff -durN glibc-ports-2.6.1.orig/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h
   11.51 +--- glibc-ports-2.6.1.orig/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h	2006-09-07 18:34:43.000000000 +0200
   11.52 ++++ glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h	2008-07-28 23:50:54.000000000 +0200
   11.53 +@@ -43,11 +43,6 @@
   11.54 + /* Initialize locks to zero.  */
   11.55 + #define LLL_MUTEX_LOCK_INITIALIZER (0)
   11.56 + 
   11.57 +-
   11.58 +-/* Type for lock object.  */
   11.59 +-typedef int lll_lock_t;
   11.60 +-
   11.61 +-
   11.62 + #define lll_futex_wait(futexp, val) \
   11.63 +   ({									      \
   11.64 +     INTERNAL_SYSCALL_DECL (__err);					      \
   11.65 +@@ -108,7 +103,7 @@
   11.66 +   })
   11.67 + 
   11.68 + static inline int __attribute__((always_inline))
   11.69 +-__lll_mutex_trylock(lll_lock_t *futex)
   11.70 ++__lll_mutex_trylock(int *futex)
   11.71 + {
   11.72 +   return atomic_compare_and_exchange_val_acq (futex, 1, 0) != 0;
   11.73 + }
   11.74 +@@ -124,17 +119,17 @@
   11.75 + 
   11.76 + 
   11.77 + static inline int __attribute__((always_inline))
   11.78 +-__lll_mutex_cond_trylock(lll_lock_t *futex)
   11.79 ++__lll_mutex_cond_trylock(int *futex)
   11.80 + {
   11.81 +   return atomic_compare_and_exchange_val_acq (futex, 2, 0) != 0;
   11.82 + }
   11.83 + #define lll_mutex_cond_trylock(lock)	__lll_mutex_cond_trylock (&(lock))
   11.84 + 
   11.85 + 
   11.86 +-extern void __lll_lock_wait (lll_lock_t *futex) attribute_hidden;
   11.87 ++extern void __lll_lock_wait (int *futex) attribute_hidden;
   11.88 + 
   11.89 + static inline void __attribute__((always_inline))
   11.90 +-__lll_mutex_lock(lll_lock_t *futex)
   11.91 ++__lll_mutex_lock(int *futex)
   11.92 + {
   11.93 +   if (atomic_compare_and_exchange_bool_acq (futex, 1, 0) != 0)
   11.94 +     __lll_lock_wait (futex);
   11.95 +@@ -155,7 +150,7 @@
   11.96 +   __lll_robust_mutex_lock (&(futex), id)
   11.97 + 
   11.98 + static inline void __attribute__ ((always_inline))
   11.99 +-__lll_mutex_cond_lock (lll_lock_t *futex)
  11.100 ++__lll_mutex_cond_lock (int *futex)
  11.101 + {
  11.102 +   if (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0)
  11.103 +     __lll_lock_wait (futex);
  11.104 +@@ -167,13 +162,13 @@
  11.105 +   __lll_robust_mutex_lock (&(futex), (id) | FUTEX_WAITERS)
  11.106 + 
  11.107 + 
  11.108 +-extern int __lll_timedlock_wait (lll_lock_t *futex, const struct timespec *)
  11.109 ++extern int __lll_timedlock_wait (int *futex, const struct timespec *)
  11.110 + 	attribute_hidden;
  11.111 + extern int __lll_robust_timedlock_wait (int *futex, const struct timespec *)
  11.112 + 	attribute_hidden;
  11.113 + 
  11.114 + static inline int __attribute__ ((always_inline))
  11.115 +-__lll_mutex_timedlock (lll_lock_t *futex, const struct timespec *abstime)
  11.116 ++__lll_mutex_timedlock (int *futex, const struct timespec *abstime)
  11.117 + {
  11.118 +   int result = 0;
  11.119 +   if (atomic_compare_and_exchange_bool_acq (futex, 1, 0) != 0)
  11.120 +@@ -197,7 +192,7 @@
  11.121 + 
  11.122 + 
  11.123 + static inline void __attribute__ ((always_inline))
  11.124 +-__lll_mutex_unlock (lll_lock_t *futex)
  11.125 ++__lll_mutex_unlock (int *futex)
  11.126 + {
  11.127 +   int val = atomic_exchange_rel (futex, 0);
  11.128 +   if (__builtin_expect (val > 1, 0))
  11.129 +@@ -218,7 +213,7 @@
  11.130 + 
  11.131 + 
  11.132 + static inline void __attribute__ ((always_inline))
  11.133 +-__lll_mutex_unlock_force (lll_lock_t *futex)
  11.134 ++__lll_mutex_unlock_force (int *futex)
  11.135 + {
  11.136 +   (void) atomic_exchange_rel (futex, 0);
  11.137 +   lll_futex_wake (futex, 1);
  11.138 +@@ -239,7 +234,7 @@
  11.139 + #define THREAD_INIT_LOCK(PD, LOCK) \
  11.140 +   (PD)->LOCK = LLL_LOCK_INITIALIZER
  11.141 + 
  11.142 +-extern int lll_unlock_wake_cb (lll_lock_t *__futex) attribute_hidden;
  11.143 ++extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
  11.144 + 
  11.145 + /* The states of a lock are:
  11.146 +     0  -  untaken
  11.147 +diff -durN glibc-ports-2.6.1.orig/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h glibc-ports-2.6.1/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h
  11.148 +--- glibc-ports-2.6.1.orig/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h	2006-08-04 20:54:56.000000000 +0200
  11.149 ++++ glibc-ports-2.6.1/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h	2008-07-28 23:51:14.000000000 +0200
  11.150 +@@ -227,9 +227,6 @@
  11.151 + /* Our internal lock implementation is identical to the binary-compatible
  11.152 +    mutex implementation. */
  11.153 + 
  11.154 +-/* Type for lock object.  */
  11.155 +-typedef int lll_lock_t;
  11.156 +-
  11.157 + /* Initializers for lock.  */
  11.158 + #define LLL_LOCK_INITIALIZER		(0)
  11.159 + #define LLL_LOCK_INITIALIZER_LOCKED	(1)