aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/glibc/glibc-2.2.5
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /recipes/glibc/glibc-2.2.5
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
downloadopenembedded-709c4d66e0b107ca606941b988bad717c0b45d9b.tar.gz
openembedded-709c4d66e0b107ca606941b988bad717c0b45d9b.tar.bz2
openembedded-709c4d66e0b107ca606941b988bad717c0b45d9b.zip
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'recipes/glibc/glibc-2.2.5')
-rw-r--r--recipes/glibc/glibc-2.2.5/alpha-build-failure.patch30
-rw-r--r--recipes/glibc/glibc-2.2.5/arm-asm-clobber.patch16
-rw-r--r--recipes/glibc/glibc-2.2.5/arm-ctl_bus_isa.patch40
-rw-r--r--recipes/glibc/glibc-2.2.5/arm-longlong.patch59
-rw-r--r--recipes/glibc/glibc-2.2.5/arm-machine-gmon.patch11
-rw-r--r--recipes/glibc/glibc-2.2.5/arm-memcpy.patch761
-rw-r--r--recipes/glibc/glibc-2.2.5/arm-no-hwcap.patch11
-rw-r--r--recipes/glibc/glibc-2.2.5/cris-libc-symbols.patch43
-rw-r--r--recipes/glibc/glibc-2.2.5/cris-stack-direction.patch36
-rw-r--r--recipes/glibc/glibc-2.2.5/dl-machine-alpha.patch420
-rw-r--r--recipes/glibc/glibc-2.2.5/dl-machine-arm.patch383
-rw-r--r--recipes/glibc/glibc-2.2.5/dl-machine-m68k.patch171
-rw-r--r--recipes/glibc/glibc-2.2.5/dl-machine-mips.patch16
-rw-r--r--recipes/glibc/glibc-2.2.5/dl-machine-sh.patch30
-rw-r--r--recipes/glibc/glibc-2.2.5/dl-machine-sparc.patch235
-rw-r--r--recipes/glibc/glibc-2.2.5/errlist-1.9.patch25
-rw-r--r--recipes/glibc/glibc-2.2.5/errlist-arm.patch25
-rw-r--r--recipes/glibc/glibc-2.2.5/etc/ld.so.conf2
-rw-r--r--recipes/glibc/glibc-2.2.5/fhs-linux-paths.patch16
-rw-r--r--recipes/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-fixup.patch55
-rw-r--r--recipes/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-grp.patch36
-rw-r--r--recipes/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-td.patch881
-rw-r--r--recipes/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-4.x-configure.patch21
-rw-r--r--recipes/glibc/glibc-2.2.5/glibc-2.2.5-alpha-pwrite64.patch35
-rw-r--r--recipes/glibc/glibc-2.2.5/glibc-2.2.5-alpha-self-clobber.patch25
-rw-r--r--recipes/glibc/glibc-2.2.5/glibc-2.2.5-arm-pwrite64.patch23
-rw-r--r--recipes/glibc/glibc-2.2.5/glibc-2.2.5-crosstest.patch28
-rw-r--r--recipes/glibc/glibc-2.2.5/glibc-2.2.5-crossyes.patch16
-rw-r--r--recipes/glibc/glibc-2.2.5/glibc-2.2.5-cygwin.patch79
-rw-r--r--recipes/glibc/glibc-2.2.5/glibc-2.2.5-hhl-powerpc-fpu.patch1108
-rw-r--r--recipes/glibc/glibc-2.2.5/glibc-2.2.5-mips-build-gmon.patch88
-rw-r--r--recipes/glibc/glibc-2.2.5/glibc-2.2.5-mips-clone-local-label.patch24
-rw-r--r--recipes/glibc/glibc-2.2.5/glibc-2.2.5-ppc405erratum77.patch65
-rw-r--r--recipes/glibc/glibc-2.2.5/glibc-2.3.2-allow-solaris.patch41
-rw-r--r--recipes/glibc/glibc-2.2.5/glibc-2.3.2-initfini.patch12
-rw-r--r--recipes/glibc/glibc-2.2.5/glibc-drow-sh.patch30
-rw-r--r--recipes/glibc/glibc-2.2.5/glibc-linuxthreads-2.3.2-initfini.patch12
-rw-r--r--recipes/glibc/glibc-2.2.5/glibc-test-lowram.patch19
-rw-r--r--recipes/glibc/glibc-2.2.5/initfini-alpha.patch128
-rw-r--r--recipes/glibc/glibc-2.2.5/initfini-flags.patch16
-rw-r--r--recipes/glibc/glibc-2.2.5/initfini-sh.patch248
-rw-r--r--recipes/glibc/glibc-2.2.5/ldd.patch38
-rw-r--r--recipes/glibc/glibc-2.2.5/linuxthreads-2.2.5-ppc405erratum77.patch34
-rw-r--r--recipes/glibc/glibc-2.2.5/longjmp-sparc.patch16
-rw-r--r--recipes/glibc/glibc-2.2.5/pt-initfini-alpha.patch119
-rw-r--r--recipes/glibc/glibc-2.2.5/pt-initfini-flags.patch16
-rw-r--r--recipes/glibc/glibc-2.2.5/pt-initfini-sh.patch267
-rw-r--r--recipes/glibc/glibc-2.2.5/sh-setjmp-fix.patch17
-rw-r--r--recipes/glibc/glibc-2.2.5/sprintf-prototype.patch18
-rw-r--r--recipes/glibc/glibc-2.2.5/sscanf.patch64
-rw-r--r--recipes/glibc/glibc-2.2.5/threadparam.patch69
-rw-r--r--recipes/glibc/glibc-2.2.5/unwind-arm.patch18
52 files changed, 5996 insertions, 0 deletions
diff --git a/recipes/glibc/glibc-2.2.5/alpha-build-failure.patch b/recipes/glibc/glibc-2.2.5/alpha-build-failure.patch
new file mode 100644
index 0000000000..280a0a556d
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/alpha-build-failure.patch
@@ -0,0 +1,30 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/alpha/divrem.h~alpha-build-failure.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/alpha/divrem.h 2004-09-03 19:00:37.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1996,97,2002 Free Software Foundation, Inc.
+ Contributed by David Mosberger (davidm@cs.arizona.edu).
+ This file is part of the GNU C Library.
+
+@@ -86,6 +86,7 @@
+
+ .align 3
+ UFUNC_NAME:
++$udiv_entry:
+ lda sp, -STACK(sp)
+ .frame sp, STACK, retaddr, 0
+ #ifdef PROF
+@@ -206,7 +207,7 @@
+ cmovge AT, AT, arg2
+
+ /* Do the unsigned division. */
+- bsr retaddr, UFUNC_NAME
++ bsr retaddr, $udiv_entry
+
+ /* Restore originals and adjust the sign of the result. */
+ ldq arg1, 0(sp)
diff --git a/recipes/glibc/glibc-2.2.5/arm-asm-clobber.patch b/recipes/glibc/glibc-2.2.5/arm-asm-clobber.patch
new file mode 100644
index 0000000000..eff21dc702
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/arm-asm-clobber.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/unix/sysv/linux/arm/sysdep.h~arm-asm-clobber.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/unix/sysv/linux/arm/sysdep.h 2004-09-03 19:01:07.000000000 -0500
+@@ -131,7 +131,7 @@
+ asm volatile ("swi %1 @ syscall " #name \
+ : "=r" (_a1) \
+ : "i" (SYS_ify(name)) ASM_ARGS_##nr \
+- : "a1", "memory"); \
++ : "memory"); \
+ _sys_result = _a1; \
+ } \
+ if (_sys_result >= (unsigned int) -4095) \
diff --git a/recipes/glibc/glibc-2.2.5/arm-ctl_bus_isa.patch b/recipes/glibc/glibc-2.2.5/arm-ctl_bus_isa.patch
new file mode 100644
index 0000000000..b487d69239
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/arm-ctl_bus_isa.patch
@@ -0,0 +1,40 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/unix/sysv/linux/arm/ioperm.c~arm-ctl_bus_isa.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/unix/sysv/linux/arm/ioperm.c 2004-09-03 19:00:37.000000000 -0500
+@@ -47,6 +47,12 @@
+ #include <asm/page.h>
+ #include <sys/sysctl.h>
+
++/* see http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html */
++#include <linux/version.h>
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,23))
++#define CTL_BUS_ISA BUS_ISA /* and hope it's not the one from linux/input.h */
++#endif
++
+ #define PATH_ARM_SYSTYPE "/etc/arm_systype"
+ #define PATH_CPUINFO "/proc/cpuinfo"
+
+@@ -80,7 +86,7 @@
+ * Initialize I/O system. There are several ways to get the information
+ * we need. Each is tried in turn until one succeeds.
+ *
+- * 1. Sysctl (CTL_BUS, BUS_ISA, ISA_*). This is the preferred method
++ * 1. Sysctl (CTL_BUS, CTL_BUS_ISA, ISA_*). This is the preferred method
+ * but not all kernels support it.
+ *
+ * 2. Read the value (not the contents) of symlink PATH_ARM_SYSTYPE.
+@@ -100,8 +106,8 @@
+ {
+ char systype[256];
+ int i, n;
+- static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE };
+- static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT };
++ static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE };
++ static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT };
+ size_t len = sizeof(io.base);
+
+ if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0)
diff --git a/recipes/glibc/glibc-2.2.5/arm-longlong.patch b/recipes/glibc/glibc-2.2.5/arm-longlong.patch
new file mode 100644
index 0000000000..dfb9309b7b
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/arm-longlong.patch
@@ -0,0 +1,59 @@
+--- stdlib/longlong.h~ 2002-09-29 18:45:58.000000000 +0100
++++ stdlib/longlong.h 2004-03-20 19:16:44.000000000 +0000
+@@ -210,6 +210,14 @@
+ "rI" ((USItype) (bh)), \
+ "r" ((USItype) (al)), \
+ "rI" ((USItype) (bl)))
++/* v3m and all higher arches have long multiply support. */
++#if !defined(__ARM_ARCH_2__) && !defined(__ARM_ARCH_3__)
++#define umul_ppmm(xh, xl, a, b) \
++ __asm__ ("umull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b))
++#define UMUL_TIME 5
++#define smul_ppmm(xh, xl, a, b) \
++ __asm__ ("smull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b))
++#else
+ #define umul_ppmm(xh, xl, a, b) \
+ {register USItype __t0, __t1, __t2; \
+ __asm__ ("%@ Inlined umul_ppmm\n" \
+@@ -231,7 +239,14 @@
+ : "r" ((USItype) (a)), \
+ "r" ((USItype) (b)));}
+ #define UMUL_TIME 20
++#endif
+ #define UDIV_TIME 100
++
++#if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__)
++#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X))
++#define COUNT_LEADING_ZEROS_0 32
++#endif
++
+ #endif /* __arm__ */
+
+ #if defined (__hppa) && W_TYPE_SIZE == 32
+--- /dev/null 2004-02-02 20:32:13.000000000 +0000
++++ sysdeps/arm/mp_clz_tab.c 2004-03-20 19:24:26.000000000 +0000
+@@ -0,0 +1,24 @@
++/* __clz_tab -- support for longlong.h
++ Copyright (C) 2004 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__)
++/* Nothing required. */
++#else
++#include <sysdeps/generic/mp_clz_tab.c>
++#endif
diff --git a/recipes/glibc/glibc-2.2.5/arm-machine-gmon.patch b/recipes/glibc/glibc-2.2.5/arm-machine-gmon.patch
new file mode 100644
index 0000000000..0fa789d86b
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/arm-machine-gmon.patch
@@ -0,0 +1,11 @@
+--- sysdeps/arm/machine-gmon.h~ 2001-07-06 00:55:48.000000000 -0400
++++ sysdeps/arm/machine-gmon.h 2004-04-25 03:56:20.000000000 -0400
+@@ -35,7 +35,7 @@
+ static void mcount_internal (u_long frompc, u_long selfpc);
+
+ #define _MCOUNT_DECL(frompc, selfpc) \
+-static void mcount_internal (u_long frompc, u_long selfpc)
++static __attribute__((used)) void mcount_internal (u_long frompc, u_long selfpc)
+
+ /* This macro/func MUST save r0, r1 because the compiler inserts
+ blind calls to _mount(), ignoring the fact that _mcount may
diff --git a/recipes/glibc/glibc-2.2.5/arm-memcpy.patch b/recipes/glibc/glibc-2.2.5/arm-memcpy.patch
new file mode 100644
index 0000000000..0f7009e549
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/arm-memcpy.patch
@@ -0,0 +1,761 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- /dev/null 2004-06-02 16:28:12.000000000 -0500
++++ glibc-2.2.5/sysdeps/arm/memcpy.S 2004-09-03 19:00:39.000000000 -0500
+@@ -0,0 +1,241 @@
++/*
++ * Optimized memcpy implementation for ARM processors
++ *
++ * Author: Nicolas Pitre
++ * Created: Dec 23, 2003
++ * Copyright: (C) MontaVista Software, Inc.
++ *
++ * This file is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2.1 of the License, or (at your option) any later version.
++ *
++ * This file is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ */
++
++#include <sysdep.h>
++
++
++/*
++ * Endian independent macros for shifting bytes within registers.
++ */
++#ifndef __ARMEB__
++#define pull lsr
++#define push lsl
++#else
++#define pull lsl
++#define push lsr
++#endif
++
++/*
++ * Enable data preload for architectures that support it (ARMv5 and above)
++ */
++#if defined(__ARM_ARCH_5__) || \
++ defined(__ARM_ARCH_5T__) || \
++ defined(__ARM_ARCH_5TE__)
++#define PLD(code...) code
++#else
++#define PLD(code...)
++#endif
++
++
++/* char * memcpy (char *dst, const char *src) */
++
++ENTRY(memcpy)
++ subs r2, r2, #4
++ stmfd sp!, {r0, r4, lr}
++ blt 7f
++ ands ip, r0, #3
++ PLD( pld [r1, #0] )
++ bne 8f
++ ands ip, r1, #3
++ bne 9f
++
++1: subs r2, r2, #4
++ blt 6f
++ subs r2, r2, #8
++ blt 5f
++ subs r2, r2, #16
++ blt 4f
++
++ PLD( subs r2, r2, #65 )
++ stmfd sp!, {r5 - r8}
++ PLD( blt 3f )
++ PLD( pld [r1, #32] )
++
++ PLD( @ cache alignment )
++ PLD( ands ip, r1, #31 )
++ PLD( pld [r1, #64] )
++ PLD( beq 2f )
++ PLD( rsb ip, ip, #32 )
++ PLD( cmp r2, ip )
++ PLD( pld [r1, #96] )
++ PLD( blt 2f )
++ PLD( cmp ip, #16 )
++ PLD( sub r2, r2, ip )
++ PLD( ldmgeia r1!, {r3 - r6} )
++ PLD( stmgeia r0!, {r3 - r6} )
++ PLD( beq 2f )
++ PLD( and ip, ip, #15 )
++ PLD( cmp ip, #8 )
++ PLD( ldr r3, [r1], #4 )
++ PLD( ldrge r4, [r1], #4 )
++ PLD( ldrgt r5, [r1], #4 )
++ PLD( str r3, [r0], #4 )
++ PLD( strge r4, [r0], #4 )
++ PLD( strgt r5, [r0], #4 )
++
++2: PLD( pld [r1, #96] )
++3: ldmia r1!, {r3 - r8, ip, lr}
++ subs r2, r2, #32
++ stmia r0!, {r3 - r8, ip, lr}
++ bge 2b
++ PLD( cmn r2, #65 )
++ PLD( bge 3b )
++ PLD( add r2, r2, #65 )
++ tst r2, #31
++ ldmfd sp!, {r5 - r8}
++ ldmeqfd sp!, {r0, r4, pc}
++
++ tst r2, #16
++4: ldmneia r1!, {r3, r4, ip, lr}
++ stmneia r0!, {r3, r4, ip, lr}
++
++ tst r2, #8
++5: ldmneia r1!, {r3, r4}
++ stmneia r0!, {r3, r4}
++
++ tst r2, #4
++6: ldrne r3, [r1], #4
++ strne r3, [r0], #4
++
++7: ands r2, r2, #3
++ ldmeqfd sp!, {r0, r4, pc}
++
++ cmp r2, #2
++ ldrb r3, [r1], #1
++ ldrgeb r4, [r1], #1
++ ldrgtb ip, [r1]
++ strb r3, [r0], #1
++ strgeb r4, [r0], #1
++ strgtb ip, [r0]
++ ldmfd sp!, {r0, r4, pc}
++
++8: rsb ip, ip, #4
++ cmp ip, #2
++ ldrb r3, [r1], #1
++ ldrgeb r4, [r1], #1
++ ldrgtb lr, [r1], #1
++ strb r3, [r0], #1
++ strgeb r4, [r0], #1
++ strgtb lr, [r0], #1
++ subs r2, r2, ip
++ blt 7b
++ ands ip, r1, #3
++ beq 1b
++
++9: bic r1, r1, #3
++ cmp ip, #2
++ ldr lr, [r1], #4
++ beq 17f
++ bgt 18f
++
++
++ .macro forward_copy_shift pull push
++
++ cmp r2, #12
++ PLD( pld [r1, #0] )
++ blt 15f
++ subs r2, r2, #28
++ stmfd sp!, {r5 - r9}
++ blt 13f
++
++ PLD( subs r2, r2, #97 )
++ PLD( blt 12f )
++ PLD( pld [r1, #32] )
++
++ PLD( @ cache alignment )
++ PLD( rsb ip, r1, #36 )
++ PLD( pld [r1, #64] )
++ PLD( ands ip, ip, #31 )
++ PLD( pld [r1, #96] )
++ PLD( beq 11f )
++ PLD( cmp r2, ip )
++ PLD( pld [r1, #128] )
++ PLD( blt 11f )
++ PLD( sub r2, r2, ip )
++10: PLD( mov r3, lr, pull #\pull )
++ PLD( ldr lr, [r1], #4 )
++ PLD( subs ip, ip, #4 )
++ PLD( orr r3, r3, lr, push #\push )
++ PLD( str r3, [r0], #4 )
++ PLD( bgt 10b )
++
++11: PLD( pld [r1, #128] )
++12: mov r3, lr, pull #\pull
++ ldmia r1!, {r4 - r9, ip, lr}
++ subs r2, r2, #32
++ orr r3, r3, r4, push #\push
++ mov r4, r4, pull #\pull
++ orr r4, r4, r5, push #\push
++ mov r5, r5, pull #\pull
++ orr r5, r5, r6, push #\push
++ mov r6, r6, pull #\pull
++ orr r6, r6, r7, push #\push
++ mov r7, r7, pull #\pull
++ orr r7, r7, r8, push #\push
++ mov r8, r8, pull #\pull
++ orr r8, r8, r9, push #\push
++ mov r9, r9, pull #\pull
++ orr r9, r9, ip, push #\push
++ mov ip, ip, pull #\pull
++ orr ip, ip, lr, push #\push
++ stmia r0!, {r3 - r9, ip}
++ bge 11b
++ PLD( cmn r2, #97 )
++ PLD( bge 12b )
++ PLD( add r2, r2, #97 )
++ cmn r2, #16
++ blt 14f
++13: mov r3, lr, pull #\pull
++ ldmia r1!, {r4 - r6, lr}
++ sub r2, r2, #16
++ orr r3, r3, r4, push #\push
++ mov r4, r4, pull #\pull
++ orr r4, r4, r5, push #\push
++ mov r5, r5, pull #\pull
++ orr r5, r5, r6, push #\push
++ mov r6, r6, pull #\pull
++ orr r6, r6, lr, push #\push
++ stmia r0!, {r3 - r6}
++14: adds r2, r2, #28
++ ldmfd sp!, {r5 - r9}
++ blt 16f
++15: mov r3, lr, pull #\pull
++ ldr lr, [r1], #4
++ subs r2, r2, #4
++ orr r3, r3, lr, push #\push
++ str r3, [r0], #4
++ bge 15b
++16:
++ .endm
++
++
++ forward_copy_shift pull=8 push=24
++ sub r1, r1, #3
++ b 7b
++
++17: forward_copy_shift pull=16 push=16
++ sub r1, r1, #2
++ b 7b
++
++18: forward_copy_shift pull=24 push=8
++ sub r1, r1, #1
++ b 7b
++
++ .size memcpy, . - memcpy
++END(memcpy)
++libc_hidden_builtin_def (memcpy)
+--- /dev/null 2004-06-02 16:28:12.000000000 -0500
++++ glibc-2.2.5/sysdeps/arm/memmove.S 2004-09-03 19:00:39.000000000 -0500
+@@ -0,0 +1,251 @@
++/*
++ * Optimized memmove implementation for ARM processors
++ *
++ * Author: Nicolas Pitre
++ * Created: Dec 23, 2003
++ * Copyright: (C) MontaVista Software, Inc.
++ *
++ * This file is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2.1 of the License, or (at your option) any later version.
++ *
++ * This file is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ */
++
++#include <sysdep.h>
++
++
++/*
++ * Endian independent macros for shifting bytes within registers.
++ */
++#ifndef __ARMEB__
++#define pull lsr
++#define push lsl
++#else
++#define pull lsl
++#define push lsr
++#endif
++
++/*
++ * Enable data preload for architectures that support it (ARMv5 and above)
++ */
++#if defined(__ARM_ARCH_5__) || \
++ defined(__ARM_ARCH_5T__) || \
++ defined(__ARM_ARCH_5TE__)
++#define PLD(code...) code
++#else
++#define PLD(code...)
++#endif
++
++
++/* char * memmove (char *dst, const char *src) */
++ENTRY(memmove)
++ subs ip, r0, r1
++ cmphi r2, ip
++ bls memcpy(PLT)
++
++ stmfd sp!, {r0, r4, lr}
++ add r1, r1, r2
++ add r0, r0, r2
++ subs r2, r2, #4
++ blt 25f
++ ands ip, r0, #3
++ PLD( pld [r1, #-4] )
++ bne 26f
++ ands ip, r1, #3
++ bne 27f
++
++19: subs r2, r2, #4
++ blt 24f
++ subs r2, r2, #8
++ blt 23f
++ subs r2, r2, #16
++ blt 22f
++
++ PLD( pld [r1, #-32] )
++ PLD( subs r2, r2, #96 )
++ stmfd sp!, {r5 - r8}
++ PLD( blt 21f )
++
++ PLD( @ cache alignment )
++ PLD( ands ip, r1, #31 )
++ PLD( pld [r1, #-64] )
++ PLD( beq 20f )
++ PLD( cmp r2, ip )
++ PLD( pld [r1, #-96] )
++ PLD( blt 20f )
++ PLD( cmp ip, #16 )
++ PLD( sub r2, r2, ip )
++ PLD( ldmgedb r1!, {r3 - r6} )
++ PLD( stmgedb r0!, {r3 - r6} )
++ PLD( beq 20f )
++ PLD( and ip, ip, #15 )
++ PLD( cmp ip, #8 )
++ PLD( ldr r3, [r1, #-4]! )
++ PLD( ldrge r4, [r1, #-4]! )
++ PLD( ldrgt r5, [r1, #-4]! )
++ PLD( str r3, [r0, #-4]! )
++ PLD( strge r4, [r0, #-4]! )
++ PLD( strgt r5, [r0, #-4]! )
++
++20: PLD( pld [r1, #-96] )
++ PLD( pld [r1, #-128] )
++21: ldmdb r1!, {r3, r4, ip, lr}
++ subs r2, r2, #32
++ stmdb r0!, {r3, r4, ip, lr}
++ ldmdb r1!, {r3, r4, ip, lr}
++ stmgedb r0!, {r3, r4, ip, lr}
++ ldmgedb r1!, {r3, r4, ip, lr}
++ stmgedb r0!, {r3, r4, ip, lr}
++ ldmgedb r1!, {r3, r4, ip, lr}
++ subges r2, r2, #32
++ stmdb r0!, {r3, r4, ip, lr}
++ bge 20b
++ PLD( cmn r2, #96 )
++ PLD( bge 21b )
++ PLD( add r2, r2, #96 )
++ tst r2, #31
++ ldmfd sp!, {r5 - r8}
++ ldmeqfd sp!, {r0, r4, pc}
++
++ tst r2, #16
++22: ldmnedb r1!, {r3, r4, ip, lr}
++ stmnedb r0!, {r3, r4, ip, lr}
++
++ tst r2, #8
++23: ldmnedb r1!, {r3, r4}
++ stmnedb r0!, {r3, r4}
++
++ tst r2, #4
++24: ldrne r3, [r1, #-4]!
++ strne r3, [r0, #-4]!
++
++25: ands r2, r2, #3
++ ldmeqfd sp!, {r0, r4, pc}
++
++ cmp r2, #2
++ ldrb r3, [r1, #-1]
++ ldrgeb r4, [r1, #-2]
++ ldrgtb ip, [r1, #-3]
++ strb r3, [r0, #-1]
++ strgeb r4, [r0, #-2]
++ strgtb ip, [r0, #-3]
++ ldmfd sp!, {r0, r4, pc}
++
++26: cmp ip, #2
++ ldrb r3, [r1, #-1]!
++ ldrgeb r4, [r1, #-1]!
++ ldrgtb lr, [r1, #-1]!
++ strb r3, [r0, #-1]!
++ strgeb r4, [r0, #-1]!
++ strgtb lr, [r0, #-1]!
++ subs r2, r2, ip
++ blt 25b
++ ands ip, r1, #3
++ beq 19b
++
++27: bic r1, r1, #3
++ cmp ip, #2
++ ldr r3, [r1]
++ beq 35f
++ blt 36f
++
++
++ .macro backward_copy_shift push pull
++
++ cmp r2, #12
++ PLD( pld [r1, #-4] )
++ blt 33f
++ subs r2, r2, #28
++ stmfd sp!, {r5 - r9}
++ blt 31f
++
++ PLD( subs r2, r2, #96 )
++ PLD( pld [r1, #-32] )
++ PLD( blt 30f )
++ PLD( pld [r1, #-64] )
++
++ PLD( @ cache alignment )
++ PLD( ands ip, r1, #31 )
++ PLD( pld [r1, #-96] )
++ PLD( beq 29f )
++ PLD( cmp r2, ip )
++ PLD( pld [r1, #-128] )
++ PLD( blt 29f )
++ PLD( sub r2, r2, ip )
++28: PLD( mov r4, r3, push #\push )
++ PLD( ldr r3, [r1, #-4]! )
++ PLD( subs ip, ip, #4 )
++ PLD( orr r4, r4, r3, pull #\pull )
++ PLD( str r4, [r0, #-4]! )
++ PLD( bgt 28b )
++
++29: PLD( pld [r1, #-128] )
++30: mov lr, r3, push #\push
++ ldmdb r1!, {r3 - r9, ip}
++ subs r2, r2, #32
++ orr lr, lr, ip, pull #\pull
++ mov ip, ip, push #\push
++ orr ip, ip, r9, pull #\pull
++ mov r9, r9, push #\push
++ orr r9, r9, r8, pull #\pull
++ mov r8, r8, push #\push
++ orr r8, r8, r7, pull #\pull
++ mov r7, r7, push #\push
++ orr r7, r7, r6, pull #\pull
++ mov r6, r6, push #\push
++ orr r6, r6, r5, pull #\pull
++ mov r5, r5, push #\push
++ orr r5, r5, r4, pull #\pull
++ mov r4, r4, push #\push
++ orr r4, r4, r3, pull #\pull
++ stmdb r0!, {r4 - r9, ip, lr}
++ bge 29b
++ PLD( cmn r2, #96 )
++ PLD( bge 30b )
++ PLD( add r2, r2, #96 )
++ cmn r2, #16
++ blt 32f
++31: mov r7, r3, push #\push
++ ldmdb r1!, {r3 - r6}
++ sub r2, r2, #16
++ orr r7, r7, r6, pull #\pull
++ mov r6, r6, push #\push
++ orr r6, r6, r5, pull #\pull
++ mov r5, r5, push #\push
++ orr r5, r5, r4, pull #\pull
++ mov r4, r4, push #\push
++ orr r4, r4, r3, pull #\pull
++ stmdb r0!, {r4 - r7}
++32: adds r2, r2, #28
++ ldmfd sp!, {r5 - r9}
++ blt 34f
++33: mov r4, r3, push #\push
++ ldr r3, [r1, #-4]!
++ subs r2, r2, #4
++ orr r4, r4, r3, pull #\pull
++ str r4, [r0, #-4]!
++ bge 33b
++34:
++ .endm
++
++
++ backward_copy_shift push=8 pull=24
++ add r1, r1, #3
++ b 25b
++
++35: backward_copy_shift push=16 pull=16
++ add r1, r1, #2
++ b 25b
++
++36: backward_copy_shift push=24 pull=8
++ add r1, r1, #1
++ b 25b
++
++ .size memmove, . - memmove
++END(memmove)
++libc_hidden_builtin_def (memmove)
+--- /dev/null 2004-06-02 16:28:12.000000000 -0500
++++ glibc-2.2.5/sysdeps/arm/bcopy.S 2004-09-03 19:00:39.000000000 -0500
+@@ -0,0 +1,255 @@
++/*
++ * Optimized memmove implementation for ARM processors
++ *
++ * Author: Nicolas Pitre
++ * Created: Dec 23, 2003
++ * Copyright: (C) MontaVista Software, Inc.
++ *
++ * This file is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2.1 of the License, or (at your option) any later version.
++ *
++ * This file is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ */
++
++#include <sysdep.h>
++
++
++/*
++ * Endian independent macros for shifting bytes within registers.
++ */
++#ifndef __ARMEB__
++#define pull lsr
++#define push lsl
++#else
++#define pull lsl
++#define push lsr
++#endif
++
++/*
++ * Enable data preload for architectures that support it (ARMv5 and above)
++ */
++#if defined(__ARM_ARCH_5__) || \
++ defined(__ARM_ARCH_5T__) || \
++ defined(__ARM_ARCH_5TE__)
++#define PLD(code...) code
++#else
++#define PLD(code...)
++#endif
++
++dst .req r1
++src .req r0
++
++/* void *bcopy (const char *src, char *dst, size_t size) */
++ENTRY(bcopy)
++ subs ip, dst, src
++ cmphi r2, ip
++ movls r3, r0
++ movls r0, r1
++ movls r1, r3
++ bls memcpy(PLT)
++
++ stmfd sp!, {r4, lr}
++ add src, src, r2
++ add dst, dst, r2
++ subs r2, r2, #4
++ blt 25f
++ ands ip, dst, #3
++ PLD( pld [src, #-4] )
++ bne 26f
++ ands ip, src, #3
++ bne 27f
++
++19: subs r2, r2, #4
++ blt 24f
++ subs r2, r2, #8
++ blt 23f
++ subs r2, r2, #16
++ blt 22f
++
++ PLD( pld [src, #-32] )
++ PLD( subs r2, r2, #96 )
++ stmfd sp!, {r5 - r8}
++ PLD( blt 21f )
++
++ PLD( @ cache alignment )
++ PLD( ands ip, src, #31 )
++ PLD( pld [src, #-64] )
++ PLD( beq 20f )
++ PLD( cmp r2, ip )
++ PLD( pld [src, #-96] )
++ PLD( blt 20f )
++ PLD( cmp ip, #16 )
++ PLD( sub r2, r2, ip )
++ PLD( ldmgedb src!, {r3 - r6} )
++ PLD( stmgedb dst!, {r3 - r6} )
++ PLD( beq 20f )
++ PLD( and ip, ip, #15 )
++ PLD( cmp ip, #8 )
++ PLD( ldr r3, [src, #-4]! )
++ PLD( ldrge r4, [src, #-4]! )
++ PLD( ldrgt r5, [src, #-4]! )
++ PLD( str r3, [dst, #-4]! )
++ PLD( strge r4, [dst, #-4]! )
++ PLD( strgt r5, [dst, #-4]! )
++
++20: PLD( pld [src, #-96] )
++ PLD( pld [src, #-128] )
++21: ldmdb src!, {r3, r4, ip, lr}
++ subs r2, r2, #32
++ stmdb dst!, {r3, r4, ip, lr}
++ ldmdb src!, {r3, r4, ip, lr}
++ stmgedb dst!, {r3, r4, ip, lr}
++ ldmgedb src!, {r3, r4, ip, lr}
++ stmgedb dst!, {r3, r4, ip, lr}
++ ldmgedb src!, {r3, r4, ip, lr}
++ subges r2, r2, #32
++ stmdb dst!, {r3, r4, ip, lr}
++ bge 20b
++ PLD( cmn r2, #96 )
++ PLD( bge 21b )
++ PLD( add r2, r2, #96 )
++ tst r2, #31
++ ldmfd sp!, {r5 - r8}
++ ldmeqfd sp!, {r4, pc}
++
++ tst r2, #16
++22: ldmnedb src!, {r3, r4, ip, lr}
++ stmnedb dst!, {r3, r4, ip, lr}
++
++ tst r2, #8
++23: ldmnedb src!, {r3, r4}
++ stmnedb dst!, {r3, r4}
++
++ tst r2, #4
++24: ldrne r3, [src, #-4]!
++ strne r3, [dst, #-4]!
++
++25: ands r2, r2, #3
++ ldmeqfd sp!, {dst, r4, pc}
++
++ cmp r2, #2
++ ldrb r3, [src, #-1]
++ ldrgeb r4, [src, #-2]
++ ldrgtb ip, [src, #-3]
++ strb r3, [dst, #-1]
++ strgeb r4, [dst, #-2]
++ strgtb ip, [dst, #-3]
++ ldmfd sp!, {dst, r4, pc}
++
++26: cmp ip, #2
++ ldrb r3, [src, #-1]!
++ ldrgeb r4, [src, #-1]!
++ ldrgtb lr, [src, #-1]!
++ strb r3, [dst, #-1]!
++ strgeb r4, [dst, #-1]!
++ strgtb lr, [dst, #-1]!
++ subs r2, r2, ip
++ blt 25b
++ ands ip, src, #3
++ beq 19b
++
++27: bic src, src, #3
++ cmp ip, #2
++ ldr r3, [src]
++ beq 35f
++ blt 36f
++
++
++ .macro backward_copy_shift push pull
++
++ cmp r2, #12
++ PLD( pld [src, #-4] )
++ blt 33f
++ subs r2, r2, #28
++ stmfd sp!, {r5 - r9}
++ blt 31f
++
++ PLD( subs r2, r2, #96 )
++ PLD( pld [src, #-32] )
++ PLD( blt 30f )
++ PLD( pld [src, #-64] )
++
++ PLD( @ cache alignment )
++ PLD( ands ip, src, #31 )
++ PLD( pld [src, #-96] )
++ PLD( beq 29f )
++ PLD( cmp r2, ip )
++ PLD( pld [src, #-128] )
++ PLD( blt 29f )
++ PLD( sub r2, r2, ip )
++28: PLD( mov r4, r3, push #\push )
++ PLD( ldr r3, [src, #-4]! )
++ PLD( subs ip, ip, #4 )
++ PLD( orr r4, r4, r3, pull #\pull )
++ PLD( str r4, [dst, #-4]! )
++ PLD( bgt 28b )
++
++29: PLD( pld [src, #-128] )
++30: mov lr, r3, push #\push
++ ldmdb src!, {r3 - r9, ip}
++ subs r2, r2, #32
++ orr lr, lr, ip, pull #\pull
++ mov ip, ip, push #\push
++ orr ip, ip, r9, pull #\pull
++ mov r9, r9, push #\push
++ orr r9, r9, r8, pull #\pull
++ mov r8, r8, push #\push
++ orr r8, r8, r7, pull #\pull
++ mov r7, r7, push #\push
++ orr r7, r7, r6, pull #\pull
++ mov r6, r6, push #\push
++ orr r6, r6, r5, pull #\pull
++ mov r5, r5, push #\push
++ orr r5, r5, r4, pull #\pull
++ mov r4, r4, push #\push
++ orr r4, r4, r3, pull #\pull
++ stmdb dst!, {r4 - r9, ip, lr}
++ bge 29b
++ PLD( cmn r2, #96 )
++ PLD( bge 30b )
++ PLD( add r2, r2, #96 )
++ cmn r2, #16
++ blt 32f
++31: mov r7, r3, push #\push
++ ldmdb src!, {r3 - r6}
++ sub r2, r2, #16
++ orr r7, r7, r6, pull #\pull
++ mov r6, r6, push #\push
++ orr r6, r6, r5, pull #\pull
++ mov r5, r5, push #\push
++ orr r5, r5, r4, pull #\pull
++ mov r4, r4, push #\push
++ orr r4, r4, r3, pull #\pull
++ stmdb dst!, {r4 - r7}
++32: adds r2, r2, #28
++ ldmfd sp!, {r5 - r9}
++ blt 34f
++33: mov r4, r3, push #\push
++ ldr r3, [src, #-4]!
++ subs r2, r2, #4
++ orr r4, r4, r3, pull #\pull
++ str r4, [dst, #-4]!
++ bge 33b
++34:
++ .endm
++
++
++ backward_copy_shift push=8 pull=24
++ add src, src, #3
++ b 25b
++
++35: backward_copy_shift push=16 pull=16
++ add src, src, #2
++ b 25b
++
++36: backward_copy_shift push=24 pull=8
++ add src, src, #1
++ b 25b
++
++ .size bcopy, . - bcopy
++END(bcopy)
diff --git a/recipes/glibc/glibc-2.2.5/arm-no-hwcap.patch b/recipes/glibc/glibc-2.2.5/arm-no-hwcap.patch
new file mode 100644
index 0000000000..17bfdcd125
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/arm-no-hwcap.patch
@@ -0,0 +1,11 @@
+--- sysdeps/unix/sysv/linux/arm/dl-procinfo.h Mon Jul 23 12:57:23 2001
++++ sysdeps/unix/sysv/linux/arm/dl-procinfo.h Sun Feb 10 06:37:00 2002
+@@ -67,7 +67,7 @@
+ HWCAP_ARM_VFP = 1 << 6,
+ HWCAP_ARM_EDSP = 1 << 7,
+
+- HWCAP_IMPORTANT = (HWCAP_ARM_HALF | HWCAP_ARM_FAST_MULT)
++ HWCAP_IMPORTANT = HWCAP_ARM_FAST_MULT
+ };
+
+ static inline int
diff --git a/recipes/glibc/glibc-2.2.5/cris-libc-symbols.patch b/recipes/glibc/glibc-2.2.5/cris-libc-symbols.patch
new file mode 100644
index 0000000000..93fc2c141f
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/cris-libc-symbols.patch
@@ -0,0 +1,43 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/include/libc-symbols.h~cris-libc-symbols.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/include/libc-symbols.h 2004-09-03 19:00:37.000000000 -0500
+@@ -207,18 +207,29 @@
+ # define __make_section_unallocated(section_string)
+ # endif
+
+-/* Tacking on "\n\t#" to the section name makes gcc put it's bogus
+- section attributes on what looks like a comment to the assembler. */
++/* Tacking on "\n\t#" to the section name makes gcc put its bogus
++ section attributes on what looks like a comment to the assembler.
++ Furthermore, with gas, we need to add a "#APP" line so the comment
++ is recognized as such. */
++# ifdef HAVE_GNU_AS
++# define __as_app_line "#APP\n"
++# else
++# define __as_app_line ""
++# endif
+ # ifdef HAVE_SECTION_QUOTES
+ # define link_warning(symbol, msg) \
+ __make_section_unallocated (".gnu.warning." #symbol) \
+- static const char __evoke_link_warning_##symbol[] \
+- __attribute__ ((section (".gnu.warning." #symbol "\"\n\t#\""))) = msg;
++ static const char __evoke_link_warning_##symbol[] \
++ __attribute__ \
++ ((section (".gnu.warning." #symbol "\"\n" __as_app_line "\t#\""))) \
++ = msg;
+ # else
+ # define link_warning(symbol, msg) \
+ __make_section_unallocated (".gnu.warning." #symbol) \
+- static const char __evoke_link_warning_##symbol[] \
+- __attribute__ ((section (".gnu.warning." #symbol "\n\t#"))) = msg;
++ static const char __evoke_link_warning_##symbol[] \
++ __attribute__ \
++ ((section (".gnu.warning." #symbol "\n" __as_app_line "\t#"))) \
++ = msg;
+ # endif
+ # else /* Not ELF: a.out */
+ # ifdef HAVE_XCOFF
diff --git a/recipes/glibc/glibc-2.2.5/cris-stack-direction.patch b/recipes/glibc/glibc-2.2.5/cris-stack-direction.patch
new file mode 100644
index 0000000000..785d3a2427
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/cris-stack-direction.patch
@@ -0,0 +1,36 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- /dev/null 2004-06-02 16:28:12.000000000 -0500
++++ glibc-2.2.5/sysdeps/cris/stackinfo.h 2004-09-03 19:00:37.000000000 -0500
+@@ -0,0 +1,28 @@
++/* Copyright (C) 2002 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++/* This file contains a bit of information about the stack allocation
++ of the processor. */
++
++#ifndef _STACKINFO_H
++#define _STACKINFO_H 1
++
++/* On cris the stack grows down. */
++#define _STACK_GROWS_DOWN 1
++
++#endif /* stackinfo.h */
diff --git a/recipes/glibc/glibc-2.2.5/dl-machine-alpha.patch b/recipes/glibc/glibc-2.2.5/dl-machine-alpha.patch
new file mode 100644
index 0000000000..1d34dba706
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/dl-machine-alpha.patch
@@ -0,0 +1,420 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/alpha/dl-machine.h~dl-machine-alpha.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/alpha/dl-machine.h 2004-09-03 19:00:37.000000000 -0500
+@@ -134,125 +134,126 @@
+ #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name, IMB) \
+ extern void tramp_name (void); \
+ asm ( "\
+- .globl " #tramp_name "
+- .ent " #tramp_name "
+-" #tramp_name ":
+- lda $sp, -44*8($sp)
+- .frame $sp, 44*8, $26
+- /* Preserve all integer registers that C normally doesn't. */
+- stq $26, 0*8($sp)
+- stq $0, 1*8($sp)
+- stq $1, 2*8($sp)
+- stq $2, 3*8($sp)
+- stq $3, 4*8($sp)
+- stq $4, 5*8($sp)
+- stq $5, 6*8($sp)
+- stq $6, 7*8($sp)
+- stq $7, 8*8($sp)
+- stq $8, 9*8($sp)
+- stq $16, 10*8($sp)
+- stq $17, 11*8($sp)
+- stq $18, 12*8($sp)
+- stq $19, 13*8($sp)
+- stq $20, 14*8($sp)
+- stq $21, 15*8($sp)
+- stq $22, 16*8($sp)
+- stq $23, 17*8($sp)
+- stq $24, 18*8($sp)
+- stq $25, 19*8($sp)
+- stq $29, 20*8($sp)
+- stt $f0, 21*8($sp)
+- stt $f1, 22*8($sp)
+- stt $f10, 23*8($sp)
+- stt $f11, 24*8($sp)
+- stt $f12, 25*8($sp)
+- stt $f13, 26*8($sp)
+- stt $f14, 27*8($sp)
+- stt $f15, 28*8($sp)
+- stt $f16, 29*8($sp)
+- stt $f17, 30*8($sp)
+- stt $f18, 31*8($sp)
+- stt $f19, 32*8($sp)
+- stt $f20, 33*8($sp)
+- stt $f21, 34*8($sp)
+- stt $f22, 35*8($sp)
+- stt $f23, 36*8($sp)
+- stt $f24, 37*8($sp)
+- stt $f25, 38*8($sp)
+- stt $f26, 39*8($sp)
+- stt $f27, 40*8($sp)
+- stt $f28, 41*8($sp)
+- stt $f29, 42*8($sp)
+- stt $f30, 43*8($sp)
+- .mask 0x27ff01ff, -44*8
+- .fmask 0xfffffc03, -(44-21)*8
+- /* Set up our $gp */
+- br $gp, .+4
+- ldgp $gp, 0($gp)
+- .prologue 0
+- /* Set up the arguments for fixup: */
+- /* $16 = link_map out of plt0 */
+- /* $17 = offset of reloc entry = ($28 - $27 - 20) /12 * 24 */
+- /* $18 = return address */
+- subq $28, $27, $17
+- ldq $16, 8($27)
+- subq $17, 20, $17
+- mov $26, $18
+- addq $17, $17, $17
+- /* Do the fixup */
+- bsr $26, " ASM_ALPHA_NG_SYMBOL_PREFIX #fixup_name "..ng
+- /* Move the destination address into position. */
+- mov $0, $27
+- /* Restore program registers. */
+- ldq $26, 0*8($sp)
+- ldq $0, 1*8($sp)
+- ldq $1, 2*8($sp)
+- ldq $2, 3*8($sp)
+- ldq $3, 4*8($sp)
+- ldq $4, 5*8($sp)
+- ldq $5, 6*8($sp)
+- ldq $6, 7*8($sp)
+- ldq $7, 8*8($sp)
+- ldq $8, 9*8($sp)
+- ldq $16, 10*8($sp)
+- ldq $17, 11*8($sp)
+- ldq $18, 12*8($sp)
+- ldq $19, 13*8($sp)
+- ldq $20, 14*8($sp)
+- ldq $21, 15*8($sp)
+- ldq $22, 16*8($sp)
+- ldq $23, 17*8($sp)
+- ldq $24, 18*8($sp)
+- ldq $25, 19*8($sp)
+- ldq $29, 20*8($sp)
+- ldt $f0, 21*8($sp)
+- ldt $f1, 22*8($sp)
+- ldt $f10, 23*8($sp)
+- ldt $f11, 24*8($sp)
+- ldt $f12, 25*8($sp)
+- ldt $f13, 26*8($sp)
+- ldt $f14, 27*8($sp)
+- ldt $f15, 28*8($sp)
+- ldt $f16, 29*8($sp)
+- ldt $f17, 30*8($sp)
+- ldt $f18, 31*8($sp)
+- ldt $f19, 32*8($sp)
+- ldt $f20, 33*8($sp)
+- ldt $f21, 34*8($sp)
+- ldt $f22, 35*8($sp)
+- ldt $f23, 36*8($sp)
+- ldt $f24, 37*8($sp)
+- ldt $f25, 38*8($sp)
+- ldt $f26, 39*8($sp)
+- ldt $f27, 40*8($sp)
+- ldt $f28, 41*8($sp)
+- ldt $f29, 42*8($sp)
+- ldt $f30, 43*8($sp)
+- /* Flush the Icache after having modified the .plt code. */
+- " #IMB "
+- /* Clean up and turn control to the destination */
+- lda $sp, 44*8($sp)
+- jmp $31, ($27)
++ .globl " #tramp_name " \n\
++ .ent " #tramp_name " \n\
++" #tramp_name ": \n\
++ lda $sp, -44*8($sp) \n\
++ .frame $sp, 44*8, $26 \n\
++ /* Preserve all integer registers that C normally \n\
++ doesn't. */ \n\
++ stq $26, 0*8($sp) \n\
++ stq $0, 1*8($sp) \n\
++ stq $1, 2*8($sp) \n\
++ stq $2, 3*8($sp) \n\
++ stq $3, 4*8($sp) \n\
++ stq $4, 5*8($sp) \n\
++ stq $5, 6*8($sp) \n\
++ stq $6, 7*8($sp) \n\
++ stq $7, 8*8($sp) \n\
++ stq $8, 9*8($sp) \n\
++ stq $16, 10*8($sp) \n\
++ stq $17, 11*8($sp) \n\
++ stq $18, 12*8($sp) \n\
++ stq $19, 13*8($sp) \n\
++ stq $20, 14*8($sp) \n\
++ stq $21, 15*8($sp) \n\
++ stq $22, 16*8($sp) \n\
++ stq $23, 17*8($sp) \n\
++ stq $24, 18*8($sp) \n\
++ stq $25, 19*8($sp) \n\
++ stq $29, 20*8($sp) \n\
++ stt $f0, 21*8($sp) \n\
++ stt $f1, 22*8($sp) \n\
++ stt $f10, 23*8($sp) \n\
++ stt $f11, 24*8($sp) \n\
++ stt $f12, 25*8($sp) \n\
++ stt $f13, 26*8($sp) \n\
++ stt $f14, 27*8($sp) \n\
++ stt $f15, 28*8($sp) \n\
++ stt $f16, 29*8($sp) \n\
++ stt $f17, 30*8($sp) \n\
++ stt $f18, 31*8($sp) \n\
++ stt $f19, 32*8($sp) \n\
++ stt $f20, 33*8($sp) \n\
++ stt $f21, 34*8($sp) \n\
++ stt $f22, 35*8($sp) \n\
++ stt $f23, 36*8($sp) \n\
++ stt $f24, 37*8($sp) \n\
++ stt $f25, 38*8($sp) \n\
++ stt $f26, 39*8($sp) \n\
++ stt $f27, 40*8($sp) \n\
++ stt $f28, 41*8($sp) \n\
++ stt $f29, 42*8($sp) \n\
++ stt $f30, 43*8($sp) \n\
++ .mask 0x27ff01ff, -44*8 \n\
++ .fmask 0xfffffc03, -(44-21)*8 \n\
++ /* Set up our $gp */ \n\
++ br $gp, .+4 \n\
++ ldgp $gp, 0($gp) \n\
++ .prologue 0 \n\
++ /* Set up the arguments for fixup: */ \n\
++ /* $16 = link_map out of plt0 */ \n\
++ /* $17 = offset of reloc entry = ($28 - $27 - 20) /12 * 24 */\n\
++ /* $18 = return address */ \n\
++ subq $28, $27, $17 \n\
++ ldq $16, 8($27) \n\
++ subq $17, 20, $17 \n\
++ mov $26, $18 \n\
++ addq $17, $17, $17 \n\
++ /* Do the fixup */ \n\
++ bsr $26, " ASM_ALPHA_NG_SYMBOL_PREFIX #fixup_name "..ng\n\
++ /* Move the destination address into position. */ \n\
++ mov $0, $27 \n\
++ /* Restore program registers. */ \n\
++ ldq $26, 0*8($sp) \n\
++ ldq $0, 1*8($sp) \n\
++ ldq $1, 2*8($sp) \n\
++ ldq $2, 3*8($sp) \n\
++ ldq $3, 4*8($sp) \n\
++ ldq $4, 5*8($sp) \n\
++ ldq $5, 6*8($sp) \n\
++ ldq $6, 7*8($sp) \n\
++ ldq $7, 8*8($sp) \n\
++ ldq $8, 9*8($sp) \n\
++ ldq $16, 10*8($sp) \n\
++ ldq $17, 11*8($sp) \n\
++ ldq $18, 12*8($sp) \n\
++ ldq $19, 13*8($sp) \n\
++ ldq $20, 14*8($sp) \n\
++ ldq $21, 15*8($sp) \n\
++ ldq $22, 16*8($sp) \n\
++ ldq $23, 17*8($sp) \n\
++ ldq $24, 18*8($sp) \n\
++ ldq $25, 19*8($sp) \n\
++ ldq $29, 20*8($sp) \n\
++ ldt $f0, 21*8($sp) \n\
++ ldt $f1, 22*8($sp) \n\
++ ldt $f10, 23*8($sp) \n\
++ ldt $f11, 24*8($sp) \n\
++ ldt $f12, 25*8($sp) \n\
++ ldt $f13, 26*8($sp) \n\
++ ldt $f14, 27*8($sp) \n\
++ ldt $f15, 28*8($sp) \n\
++ ldt $f16, 29*8($sp) \n\
++ ldt $f17, 30*8($sp) \n\
++ ldt $f18, 31*8($sp) \n\
++ ldt $f19, 32*8($sp) \n\
++ ldt $f20, 33*8($sp) \n\
++ ldt $f21, 34*8($sp) \n\
++ ldt $f22, 35*8($sp) \n\
++ ldt $f23, 36*8($sp) \n\
++ ldt $f24, 37*8($sp) \n\
++ ldt $f25, 38*8($sp) \n\
++ ldt $f26, 39*8($sp) \n\
++ ldt $f27, 40*8($sp) \n\
++ ldt $f28, 41*8($sp) \n\
++ ldt $f29, 42*8($sp) \n\
++ ldt $f30, 43*8($sp) \n\
++ /* Flush the Icache after having modified the .plt code. */\n\
++ " #IMB " \n\
++ /* Clean up and turn control to the destination */ \n\
++ lda $sp, 44*8($sp) \n\
++ jmp $31, ($27) \n\
+ .end " #tramp_name)
+
+ #ifndef PROF
+@@ -270,85 +271,87 @@
+ its return value is the user program's entry point. */
+
+ #define RTLD_START asm ("\
+-.text
+- .set at
+- .globl _start
+- .ent _start
+-_start:
+- br $gp, 0f
+-0: ldgp $gp, 0($gp)
+- .prologue 0
+- /* Pass pointer to argument block to _dl_start. */
+- mov $sp, $16
+- bsr $26, "ASM_ALPHA_NG_SYMBOL_PREFIX"_dl_start..ng
+- .end _start
+- /* FALLTHRU */
+- .globl _dl_start_user
+- .ent _dl_start_user
+-_dl_start_user:
+- .frame $30,0,$31,0
+- .prologue 0
+- /* Save the user entry point address in s0. */
+- mov $0, $9
+- /* Store the highest stack address. */
+- stq $30, __libc_stack_end
+- /* See if we were run as a command with the executable file
+- name as an extra leading argument. */
+- ldl $1, _dl_skip_args
+- bne $1, $fixup_stack
+-$fixup_stack_ret:
+- /* The special initializer gets called with the stack just
+- as the application's entry point will see it; it can
+- switch stacks if it moves these contents over. */
+-" RTLD_START_SPECIAL_INIT "
+- /* Call _dl_init(_dl_loaded, argc, argv, envp) to run initializers. */
+- ldq $16, _dl_loaded
+- ldq $17, 0($sp)
+- lda $18, 8($sp)
+- s8addq $17, 8, $19
+- addq $19, $18, $19
+- jsr $26, _dl_init
+- /* Pass our finalizer function to the user in $0. */
+- lda $0, _dl_fini
+- /* Jump to the user's entry point. */
+- mov $9, $27
+- jmp ($9)
+-$fixup_stack:
+- /* Adjust the stack pointer to skip _dl_skip_args words. This
+- involves copying everything down, since the stack pointer must
+- always be 16-byte aligned. */
+- ldq $2, 0($sp)
+- ldq $5, _dl_argv
+- subq $31, $1, $6
+- subq $2, $1, $2
+- s8addq $6, $5, $5
+- mov $sp, $4
+- s8addq $1, $sp, $3
+- stq $2, 0($sp)
+- stq $5, _dl_argv
+- /* Copy down argv. */
+-0: ldq $5, 8($3)
+- addq $4, 8, $4
+- addq $3, 8, $3
+- stq $5, 0($4)
+- bne $5, 0b
+- /* Copy down envp. */
+-1: ldq $5, 8($3)
+- addq $4, 8, $4
+- addq $3, 8, $3
+- stq $5, 0($4)
+- bne $5, 1b
+- /* Copy down auxiliary table. */
+-2: ldq $5, 8($3)
+- ldq $6, 16($3)
+- addq $4, 16, $4
+- addq $3, 16, $3
+- stq $5, -8($4)
+- stq $6, 0($4)
+- bne $5, 2b
+- br $fixup_stack_ret
+- .end _dl_start_user
+- .set noat
++.text \n\
++ .set at \n\
++ .globl _start \n\
++ .ent _start \n\
++_start: \n\
++ br $gp, 0f \n\
++0: ldgp $gp, 0($gp) \n\
++ .prologue 0 \n\
++ /* Pass pointer to argument block to _dl_start. */ \n\
++ mov $sp, $16 \n\
++ bsr $26, "ASM_ALPHA_NG_SYMBOL_PREFIX"_dl_start..ng \n\
++ .end _start \n\
++ /* FALLTHRU */ \n\
++ .globl _dl_start_user \n\
++ .ent _dl_start_user \n\
++_dl_start_user: \n\
++ .frame $30,0,$31,0 \n\
++ .prologue 0 \n\
++ /* Save the user entry point address in s0. */ \n\
++ mov $0, $9 \n\
++ /* Store the highest stack address. */ \n\
++ stq $30, __libc_stack_end \n\
++ /* See if we were run as a command with the executable \n\
++ file name as an extra leading argument. */ \n\
++ ldl $1, _dl_skip_args \n\
++ bne $1, $fixup_stack \n\
++$fixup_stack_ret: \n\
++ /* The special initializer gets called with the stack \n\
++ just as the application's entry point will see it; \n\
++ it can switch stacks if it moves these contents \n\
++ over. */ \n\
++" RTLD_START_SPECIAL_INIT " \n\
++ /* Call _dl_init(_dl_loaded, argc, argv, envp) to run \n\
++ initializers. */ \n\
++ ldq $16, _dl_loaded \n\
++ ldq $17, 0($sp) \n\
++ lda $18, 8($sp) \n\
++ s8addq $17, 8, $19 \n\
++ addq $19, $18, $19 \n\
++ jsr $26, _dl_init \n\
++ /* Pass our finalizer function to the user in $0. */ \n\
++ lda $0, _dl_fini \n\
++ /* Jump to the user's entry point. */ \n\
++ mov $9, $27 \n\
++ jmp ($9) \n\
++$fixup_stack: \n\
++ /* Adjust the stack pointer to skip _dl_skip_args words.\n\
++ This involves copying everything down, since the \n\
++ stack pointer must always be 16-byte aligned. */ \n\
++ ldq $2, 0($sp) \n\
++ ldq $5, _dl_argv \n\
++ subq $31, $1, $6 \n\
++ subq $2, $1, $2 \n\
++ s8addq $6, $5, $5 \n\
++ mov $sp, $4 \n\
++ s8addq $1, $sp, $3 \n\
++ stq $2, 0($sp) \n\
++ stq $5, _dl_argv \n\
++ /* Copy down argv. */ \n\
++0: ldq $5, 8($3) \n\
++ addq $4, 8, $4 \n\
++ addq $3, 8, $3 \n\
++ stq $5, 0($4) \n\
++ bne $5, 0b \n\
++ /* Copy down envp. */ \n\
++1: ldq $5, 8($3) \n\
++ addq $4, 8, $4 \n\
++ addq $3, 8, $3 \n\
++ stq $5, 0($4) \n\
++ bne $5, 1b \n\
++ /* Copy down auxiliary table. */ \n\
++2: ldq $5, 8($3) \n\
++ ldq $6, 16($3) \n\
++ addq $4, 16, $4 \n\
++ addq $3, 16, $3 \n\
++ stq $5, -8($4) \n\
++ stq $6, 0($4) \n\
++ bne $5, 2b \n\
++ br $fixup_stack_ret \n\
++ .end _dl_start_user \n\
++ .set noat \n\
+ .previous");
+
+ #ifndef RTLD_START_SPECIAL_INIT
diff --git a/recipes/glibc/glibc-2.2.5/dl-machine-arm.patch b/recipes/glibc/glibc-2.2.5/dl-machine-arm.patch
new file mode 100644
index 0000000000..7684b43b39
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/dl-machine-arm.patch
@@ -0,0 +1,383 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/arm/dl-machine.h~dl-machine-arm.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/arm/dl-machine.h 2004-09-03 19:00:37.000000000 -0500
+@@ -121,14 +121,15 @@
+ and then redirect to the address it returns. */
+ // macro for handling PIC situation....
+ #ifdef PIC
+-#define CALL_ROUTINE(x) " ldr sl,0f
+- add sl, pc, sl
+-1: ldr r2, 2f
+- mov lr, pc
+- add pc, sl, r2
+- b 3f
+-0: .word _GLOBAL_OFFSET_TABLE_ - 1b - 4
+-2: .word " #x "(GOTOFF)
++#define CALL_ROUTINE(x) "\
++ ldr sl,0f\n\
++ add sl, pc, sl\n\
++1: ldr r2, 2f\n\
++ mov lr, pc\n\
++ add pc, sl, r2\n\
++ b 3f\n\
++0: .word _GLOBAL_OFFSET_TABLE_ - 1b - 4\n\
++2: .word " #x "(GOTOFF)\n\
+ 3: "
+ #else
+ #define CALL_ROUTINE(x) " bl " #x
+@@ -136,114 +137,114 @@
+
+ #ifndef PROF
+ # define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\
+- .text
+- .globl _dl_runtime_resolve
+- .type _dl_runtime_resolve, #function
+- .align 2
+-_dl_runtime_resolve:
+- @ we get called with
+- @ stack[0] contains the return address from this call
+- @ ip contains &GOT[n+3] (pointer to function)
+- @ lr points to &GOT[2]
+-
+- @ save almost everything; lr is already on the stack
+- stmdb sp!,{r0-r3,sl,fp}
+-
+- @ prepare to call fixup()
+- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each
+- sub r1, ip, lr
+- sub r1, r1, #4
+- add r1, r1, r1
+-
+- @ get pointer to linker struct
+- ldr r0, [lr, #-4]
+-
+- @ call fixup routine
+- " CALL_ROUTINE(fixup) "
+-
+- @ save the return
+- mov ip, r0
+-
+- @ restore the stack
+- ldmia sp!,{r0-r3,sl,fp,lr}
+-
+- @ jump to the newly found address
+- mov pc, ip
+-
+- .size _dl_runtime_resolve, .-_dl_runtime_resolve
+-
+- .globl _dl_runtime_profile
+- .type _dl_runtime_profile, #function
+- .align 2
+-_dl_runtime_profile:
+- @ save almost everything; lr is already on the stack
+- stmdb sp!,{r0-r3,sl,fp}
+-
+- @ prepare to call fixup()
+- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each
+- sub r1, ip, lr
+- sub r1, r1, #4
+- add r1, r1, r1
+-
+- @ get pointer to linker struct
+- ldr r0, [lr, #-4]
+-
+- @ call profiling fixup routine
+- " CALL_ROUTINE(profile_fixup) "
+-
+- @ save the return
+- mov ip, r0
+-
+- @ restore the stack
+- ldmia sp!,{r0-r3,sl,fp,lr}
+-
+- @ jump to the newly found address
+- mov pc, ip
+-
+- .size _dl_runtime_resolve, .-_dl_runtime_resolve
+- .previous
++ .text\n\
++ .globl _dl_runtime_resolve\n\
++ .type _dl_runtime_resolve, #function\n\
++ .align 2\n\
++_dl_runtime_resolve:\n\
++ @ we get called with\n\
++ @ stack[0] contains the return address from this call\n\
++ @ ip contains &GOT[n+3] (pointer to function)\n\
++ @ lr points to &GOT[2]\n\
++\n\
++ @ save almost everything; lr is already on the stack\n\
++ stmdb sp!,{r0-r3,sl,fp}\n\
++\n\
++ @ prepare to call fixup()\n\
++ @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\
++ sub r1, ip, lr\n\
++ sub r1, r1, #4\n\
++ add r1, r1, r1\n\
++\n\
++ @ get pointer to linker struct\n\
++ ldr r0, [lr, #-4]\n\
++\n\
++ @ call fixup routine\n\
++ " CALL_ROUTINE(fixup) "\n\
++\n\
++ @ save the return\n\
++ mov ip, r0\n\
++\n\
++ @ restore the stack\n\
++ ldmia sp!,{r0-r3,sl,fp,lr}\n\
++\n\
++ @ jump to the newly found address\n\
++ mov pc, ip\n\
++\n\
++ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
++\n\
++ .globl _dl_runtime_profile\n\
++ .type _dl_runtime_profile, #function\n\
++ .align 2\n\
++_dl_runtime_profile:\n\
++ @ save almost everything; lr is already on the stack\n\
++ stmdb sp!,{r0-r3,sl,fp}\n\
++\n\
++ @ prepare to call fixup()\n\
++ @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\
++ sub r1, ip, lr\n\
++ sub r1, r1, #4\n\
++ add r1, r1, r1\n\
++\n\
++ @ get pointer to linker struct\n\
++ ldr r0, [lr, #-4]\n\
++\n\
++ @ call profiling fixup routine\n\
++ " CALL_ROUTINE(profile_fixup) "\n\
++\n\
++ @ save the return\n\
++ mov ip, r0\n\
++\n\
++ @ restore the stack\n\
++ ldmia sp!,{r0-r3,sl,fp,lr}\n\
++\n\
++ @ jump to the newly found address\n\
++ mov pc, ip\n\
++\n\
++ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
++ .previous\n\
+ ");
+ #else // PROF
+ # define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\
+- .text
+- .globl _dl_runtime_resolve
+- .globl _dl_runtime_profile
+- .type _dl_runtime_resolve, #function
+- .type _dl_runtime_profile, #function
+- .align 2
+-_dl_runtime_resolve:
+-_dl_runtime_profile:
+- @ we get called with
+- @ stack[0] contains the return address from this call
+- @ ip contains &GOT[n+3] (pointer to function)
+- @ lr points to &GOT[2]
+-
+- @ save almost everything; return add is already on the stack
+- stmdb sp!,{r0-r3,sl,fp}
+-
+- @ prepare to call fixup()
+- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each
+- sub r1, ip, lr
+- sub r1, r1, #4
+- add r1, r1, r1
+-
+- @ get pointer to linker struct
+- ldr r0, [lr, #-4]
+-
+- @ call profiling fixup routine
+- " CALL_ROUTINE(fixup) "
+-
+- @ save the return
+- mov ip, r0
+-
+- @ restore the stack
+- ldmia sp!,{r0-r3,sl,fp,lr}
+-
+- @ jump to the newly found address
+- mov pc, ip
+-
+- .size _dl_runtime_profile, .-_dl_runtime_profile
+- .previous
++ .text\n\
++ .globl _dl_runtime_resolve\n\
++ .globl _dl_runtime_profile\n\
++ .type _dl_runtime_resolve, #function\n\
++ .type _dl_runtime_profile, #function\n\
++ .align 2\n\
++_dl_runtime_resolve:\n\
++_dl_runtime_profile:\n\
++ @ we get called with\n\
++ @ stack[0] contains the return address from this call\n\
++ @ ip contains &GOT[n+3] (pointer to function)\n\
++ @ lr points to &GOT[2]\n\
++\n\
++ @ save almost everything; return add is already on the stack\n\
++ stmdb sp!,{r0-r3,sl,fp}\n\
++\n\
++ @ prepare to call fixup()\n\
++ @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\
++ sub r1, ip, lr\n\
++ sub r1, r1, #4\n\
++ add r1, r1, r1\n\
++\n\
++ @ get pointer to linker struct\n\
++ ldr r0, [lr, #-4]\n\
++\n\
++ @ call profiling fixup routine\n\
++ " CALL_ROUTINE(fixup) "\n\
++\n\
++ @ save the return\n\
++ mov ip, r0\n\
++\n\
++ @ restore the stack\n\
++ ldmia sp!,{r0-r3,sl,fp,lr}\n\
++\n\
++ @ jump to the newly found address\n\
++ mov pc, ip\n\
++\n\
++ .size _dl_runtime_profile, .-_dl_runtime_profile\n\
++ .previous\n\
+ ");
+ #endif //PROF
+
+@@ -256,70 +257,70 @@
+ its return value is the user program's entry point. */
+
+ #define RTLD_START asm ("\
+-.text
+-.globl _start
+-.globl _dl_start_user
+-_start:
+- @ at start time, all the args are on the stack
+- mov r0, sp
+- bl _dl_start
+- @ returns user entry point in r0
+-_dl_start_user:
+- mov r6, r0
+- @ we are PIC code, so get global offset table
+- ldr sl, .L_GET_GOT
+- add sl, pc, sl
+-.L_GOT_GOT:
+- @ Store the highest stack address
+- ldr r1, .L_STACK_END
+- ldr r1, [sl, r1]
+- str sp, [r1]
+- @ See if we were run as a command with the executable file
+- @ name as an extra leading argument.
+- ldr r4, .L_SKIP_ARGS
+- ldr r4, [sl, r4]
+- @ get the original arg count
+- ldr r1, [sp]
+- @ subtract _dl_skip_args from it
+- sub r1, r1, r4
+- @ adjust the stack pointer to skip them
+- add sp, sp, r4, lsl #2
+- @ get the argv address
+- add r2, sp, #4
+- @ store the new argc in the new stack location
+- str r1, [sp]
+- @ compute envp
+- add r3, r2, r1, lsl #2
+- add r3, r3, #4
+-
+- @ now we call _dl_init
+- ldr r0, .L_LOADED
+- ldr r0, [sl, r0]
+- ldr r0, [r0]
+- @ call _dl_init
+- bl _dl_init(PLT)
+- @ clear the startup flag
+- ldr r2, .L_STARTUP_FLAG
+- ldr r1, [sl, r2]
+- mov r0, #0
+- str r0, [r1]
+- @ load the finalizer function
+- ldr r0, .L_FINI_PROC
+- ldr r0, [sl, r0]
+- @ jump to the user_s entry point
+- mov pc, r6
+-.L_GET_GOT:
++.text\n\
++.globl _start\n\
++.globl _dl_start_user\n\
++_start:\n\
++ @ at start time, all the args are on the stack\n\
++ mov r0, sp\n\
++ bl _dl_start\n\
++ @ returns user entry point in r0\n\
++_dl_start_user:\n\
++ mov r6, r0\n\
++ @ we are PIC code, so get global offset table\n\
++ ldr sl, .L_GET_GOT\n\
++ add sl, pc, sl\n\
++.L_GOT_GOT:\n\
++ @ Store the highest stack address\n\
++ ldr r1, .L_STACK_END\n\
++ ldr r1, [sl, r1]\n\
++ str sp, [r1]\n\
++ @ See if we were run as a command with the executable file\n\
++ @ name as an extra leading argument.\n\
++ ldr r4, .L_SKIP_ARGS\n\
++ ldr r4, [sl, r4]\n\
++ @ get the original arg count\n\
++ ldr r1, [sp]\n\
++ @ subtract _dl_skip_args from it\n\
++ sub r1, r1, r4\n\
++ @ adjust the stack pointer to skip them\n\
++ add sp, sp, r4, lsl #2\n\
++ @ get the argv address\n\
++ add r2, sp, #4\n\
++ @ store the new argc in the new stack location\n\
++ str r1, [sp]\n\
++ @ compute envp\n\
++ add r3, r2, r1, lsl #2\n\
++ add r3, r3, #4\n\
++\n\
++ @ now we call _dl_init\n\
++ ldr r0, .L_LOADED\n\
++ ldr r0, [sl, r0]\n\
++ ldr r0, [r0]\n\
++ @ call _dl_init\n\
++ bl _dl_init(PLT)\n\
++ @ clear the startup flag\n\
++ ldr r2, .L_STARTUP_FLAG\n\
++ ldr r1, [sl, r2]\n\
++ mov r0, #0\n\
++ str r0, [r1]\n\
++ @ load the finalizer function\n\
++ ldr r0, .L_FINI_PROC\n\
++ ldr r0, [sl, r0]\n\
++ @ jump to the user_s entry point\n\
++ mov pc, r6\n\
++.L_GET_GOT:\n\
+ .word _GLOBAL_OFFSET_TABLE_ - .L_GOT_GOT - 4 \n\
+ .L_SKIP_ARGS: \n\
+ .word _dl_skip_args(GOTOFF) \n\
+-.L_STARTUP_FLAG:
+- .word _dl_starting_up(GOT)
+-.L_FINI_PROC:
+- .word _dl_fini(GOT)
+-.L_STACK_END:
+- .word __libc_stack_end(GOT)
+-.L_LOADED:
+- .word _dl_loaded(GOT)
++.L_STARTUP_FLAG:\n\
++ .word _dl_starting_up(GOT)\n\
++.L_FINI_PROC:\n\
++ .word _dl_fini(GOT)\n\
++.L_STACK_END:\n\
++ .word __libc_stack_end(GOT)\n\
++.L_LOADED:\n\
++ .word _dl_loaded(GOT)\n\
+ .previous\n\
+ ");
+
diff --git a/recipes/glibc/glibc-2.2.5/dl-machine-m68k.patch b/recipes/glibc/glibc-2.2.5/dl-machine-m68k.patch
new file mode 100644
index 0000000000..41a6f3a573
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/dl-machine-m68k.patch
@@ -0,0 +1,171 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/m68k/dl-machine.h~dl-machine-m68k.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/m68k/dl-machine.h 2004-09-03 19:00:37.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Machine-dependent ELF dynamic relocation inline functions. m68k version.
+- Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
++ Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -85,11 +85,11 @@
+ {
+ got[2] = (Elf32_Addr) &_dl_runtime_profile;
+
+- if (_dl_name_match_p (_dl_profile, l))
++ if (_dl_name_match_p (GL(dl_profile), l))
+ {
+ /* This is the object we are looking for. Say that we really
+ want profiling and the timers are started. */
+- _dl_profile_map = l;
++ GL(dl_profile_map) = l;
+ }
+ }
+ else
+@@ -104,22 +104,22 @@
+ /* This code is used in dl-runtime.c to call the `fixup' function
+ and then redirect to the address it returns. */
+ #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name) \
+-"| Trampoline for " #fixup_name "
+- .globl " #tramp_name "
+- .type " #tramp_name ", @function
+-" #tramp_name ":
+- | Save %a0 (struct return address) and %a1.
+- move.l %a0, -(%sp)
+- move.l %a1, -(%sp)
+- | Call the real address resolver.
+- jbsr " #fixup_name "
+- | Restore register %a0 and %a1.
+- move.l (%sp)+, %a1
+- move.l (%sp)+, %a0
+- | Pop parameters
+- addq.l #8, %sp
+- | Call real function.
+- jmp (%d0)
++"| Trampoline for " #fixup_name "\n\
++ .globl " #tramp_name "\n\
++ .type " #tramp_name ", @function\n\
++" #tramp_name ":\n\
++ | Save %a0 (struct return address) and %a1.\n\
++ move.l %a0, -(%sp)\n\
++ move.l %a1, -(%sp)\n\
++ | Call the real address resolver.\n\
++ jbsr " #fixup_name "\n\
++ | Restore register %a0 and %a1.\n\
++ move.l (%sp)+, %a1\n\
++ move.l (%sp)+, %a0\n\
++ | Pop parameters\n\
++ addq.l #8, %sp\n\
++ | Call real function.\n\
++ jmp (%d0)\n\
+ .size " #tramp_name ", . - " #tramp_name "\n"
+ #ifndef PROF
+ #define ELF_MACHINE_RUNTIME_TRAMPOLINE \
+@@ -143,50 +143,50 @@
+ its return value is the user program's entry point. */
+
+ #define RTLD_START asm ("\
+- .text
+- .globl _start
+- .type _start,@function
+-_start:
+- move.l %sp, -(%sp)
+- jbsr _dl_start
+- addq.l #4, %sp
+- /* FALLTHRU */
+-
+- .globl _dl_start_user
+- .type _dl_start_user,@function
+-_dl_start_user:
+- | Save the user entry point address in %a4.
+- move.l %d0, %a4
+- | Point %a5 at the GOT.
+- lea _GLOBAL_OFFSET_TABLE_@GOTPC(%pc), %a5
+- | Remember the highest stack address.
+- move.l %sp, ([__libc_stack_end@GOT.w, %a5])
+- | See if we were run as a command with the executable file
+- | name as an extra leading argument.
+- move.l ([_dl_skip_args@GOT.w, %a5]), %d0
+- | Pop the original argument count
+- move.l (%sp)+, %d1
+- | Subtract _dl_skip_args from it.
+- sub.l %d0, %d1
+- | Adjust the stack pointer to skip _dl_skip_args words.
+- lea (%sp, %d0*4), %sp
+- | Push back the modified argument count.
+- move.l %d1, -(%sp)
+- # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env)
+- pea 8(%sp, %d1*4)
+- pea 8(%sp)
+- move.l %d1, -(%sp)
+- move.l ([_dl_loaded@GOT.w, %a5]), -(%sp)
+- jbsr _dl_init@PLTPC
+- addq.l #8, %sp
+- addq.l #8, %sp
+- | Pass our finalizer function to the user in %a1.
+- move.l _dl_fini@GOT.w(%a5), %a1
+- | Initialize %fp with the stack pointer.
+- move.l %sp, %fp
+- | Jump to the user's entry point.
+- jmp (%a4)
+- .size _dl_start_user, . - _dl_start_user
++ .text\n\
++ .globl _start\n\
++ .type _start,@function\n\
++_start:\n\
++ move.l %sp, -(%sp)\n\
++ jbsr _dl_start\n\
++ addq.l #4, %sp\n\
++ /* FALLTHRU */\n\
++\n\
++ .globl _dl_start_user\n\
++ .type _dl_start_user,@function\n\
++_dl_start_user:\n\
++ | Save the user entry point address in %a4.\n\
++ move.l %d0, %a4\n\
++ | Point %a5 at the GOT.\n\
++ lea _GLOBAL_OFFSET_TABLE_@GOTPC(%pc), %a5\n\
++ | Remember the highest stack address.\n\
++ move.l %sp, ([__libc_stack_end@GOT.w, %a5])\n\
++ | See if we were run as a command with the executable file\n\
++ | name as an extra leading argument.\n\
++ move.l ([_dl_skip_args@GOT.w, %a5]), %d0\n\
++ | Pop the original argument count\n\
++ move.l (%sp)+, %d1\n\
++ | Subtract _dl_skip_args from it.\n\
++ sub.l %d0, %d1\n\
++ | Adjust the stack pointer to skip _dl_skip_args words.\n\
++ lea (%sp, %d0*4), %sp\n\
++ | Push back the modified argument count.\n\
++ move.l %d1, -(%sp)\n\
++ # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env)\n\
++ pea 8(%sp, %d1*4)\n\
++ pea 8(%sp)\n\
++ move.l %d1, -(%sp)\n\
++ move.l ([_rtld_global@GOT.w, %a5]), -(%sp)\n\
++ jbsr _dl_init@PLTPC\n\
++ addq.l #8, %sp\n\
++ addq.l #8, %sp\n\
++ | Pass our finalizer function to the user in %a1.\n\
++ move.l _dl_fini@GOT.w(%a5), %a1\n\
++ | Initialize %fp with the stack pointer.\n\
++ move.l %sp, %fp\n\
++ | Jump to the user's entry point.\n\
++ jmp (%a4)\n\
++ .size _dl_start_user, . - _dl_start_user\n\
+ .previous");
+
+ /* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so
+@@ -251,7 +251,7 @@
+ found. */
+ break;
+ if (sym->st_size > refsym->st_size
+- || (sym->st_size < refsym->st_size && _dl_verbose))
++ || (sym->st_size < refsym->st_size && GL(dl_verbose)))
+ {
+ extern char **_dl_argv;
+ const char *strtab;
diff --git a/recipes/glibc/glibc-2.2.5/dl-machine-mips.patch b/recipes/glibc/glibc-2.2.5/dl-machine-mips.patch
new file mode 100644
index 0000000000..b9c7ad8f1e
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/dl-machine-mips.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/mips/dl-machine.h~dl-machine-mips.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/mips/dl-machine.h 2004-09-03 19:00:37.000000000 -0500
+@@ -450,7 +450,7 @@
+ addu $7, $7, 4\n\
+ subu $29, 16\n\
+ # Call the function to run the initializers.\n\
+- jal _dl_init
++ jal _dl_init_internal\n\
+ addiu $29, 16\n\
+ # Pass our finalizer function to the user in $2 as per ELF ABI.\n\
+ la $2, _dl_fini\n\
diff --git a/recipes/glibc/glibc-2.2.5/dl-machine-sh.patch b/recipes/glibc/glibc-2.2.5/dl-machine-sh.patch
new file mode 100644
index 0000000000..c5f84b42a4
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/dl-machine-sh.patch
@@ -0,0 +1,30 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/sh/dl-machine.h~dl-machine-sh.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/sh/dl-machine.h 2004-09-03 19:00:37.000000000 -0500
+@@ -53,16 +53,16 @@
+ elf_machine_load_address (void)
+ {
+ Elf32_Addr addr;
+- asm ("mov.l .L1,r0\n\
+- mov.l .L3,r2\n\
++ asm ("mov.l 1f,r0\n\
++ mov.l 3f,r2\n\
+ add r12,r2\n\
+ mov.l @(r0,r12),r0\n\
+- bra .L2\n\
++ bra 2f\n\
+ sub r0,r2\n\
+ .align 2\n\
+- .L1: .long _dl_start@GOT\n\
+- .L3: .long _dl_start@GOTOFF\n\
+- .L2: mov r2,%0"
++ 1: .long _dl_start@GOT\n\
++ 3: .long _dl_start@GOTOFF\n\
++ 2: mov r2,%0"
+ : "=r" (addr) : : "r0", "r1", "r2");
+ return addr;
+ }
diff --git a/recipes/glibc/glibc-2.2.5/dl-machine-sparc.patch b/recipes/glibc/glibc-2.2.5/dl-machine-sparc.patch
new file mode 100644
index 0000000000..910e18035d
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/dl-machine-sparc.patch
@@ -0,0 +1,235 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/sparc/sparc32/dl-machine.h~dl-machine-sparc.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/sparc/sparc32/dl-machine.h 2004-09-03 19:00:37.000000000 -0500
+@@ -148,23 +148,23 @@
+ and then redirect to the address it returns. */
+ #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name) \
+ asm ( "\
+- .text
+- .globl " #tramp_name "
+- .type " #tramp_name ", @function
+- .align 32
+-" #tramp_name ":
+- /* Set up the arguments to fixup --
+- %o0 = link_map out of plt0
+- %o1 = offset of reloc entry
+- %o2 = return address */
+- ld [%o7 + 8], %o0
+- srl %g1, 10, %o1
+- mov %i7, %o2
+- call " #fixup_name "
+- sub %o1, 4*12, %o1
+- jmp %o0
+- restore
+- .size " #tramp_name ", . - " #tramp_name "
++ .text\n\
++ .globl " #tramp_name "\n\
++ .type " #tramp_name ", @function\n\
++ .align 32\n\
++" #tramp_name ":\n\
++ /* Set up the arguments to fixup --\n\
++ %o0 = link_map out of plt0\n\
++ %o1 = offset of reloc entry\n\
++ %o2 = return address */\n\
++ ld [%o7 + 8], %o0\n\
++ srl %g1, 10, %o1\n\
++ mov %i7, %o2\n\
++ call " #fixup_name "\n\
++ sub %o1, 4*12, %o1\n\
++ jmp %o0\n\
++ restore\n\
++ .size " #tramp_name ", . - " #tramp_name "\n\
+ .previous")
+
+ #ifndef PROF
+@@ -199,96 +199,96 @@
+ its return value is the user program's entry point. */
+
+ #define RTLD_START __asm__ ("\
+- .text
+- .globl _start
+- .type _start, @function
+- .align 32
+-_start:
+- /* Allocate space for functions to drop their arguments. */
+- sub %sp, 6*4, %sp
+- /* Pass pointer to argument block to _dl_start. */
+- call _dl_start
+- add %sp, 22*4, %o0
+- /* FALTHRU */
+- .globl _dl_start_user
+- .type _dl_start_user, @function
+-_dl_start_user:
+- /* Load the PIC register. */
+-1: call 2f
+- sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
+-2: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
+- add %l7, %o7, %l7
+- /* Save the user entry point address in %l0 */
+- mov %o0, %l0
+- /* Store the highest stack address. */
+- sethi %hi(__libc_stack_end), %g2
+- or %g2, %lo(__libc_stack_end), %g2
+- ld [%l7 + %g2], %l1
+- sethi %hi(_dl_skip_args), %g2
+- add %sp, 6*4, %l2
+- or %g2, %lo(_dl_skip_args), %g2
+- st %l2, [%l1]
+- /* See if we were run as a command with the executable file name as an
+- extra leading argument. If so, adjust the contents of the stack. */
+- ld [%l7+%g2], %i0
+- ld [%i0], %i0
+- tst %i0
+- beq 3f
+- ld [%sp+22*4], %i5 /* load argc */
+- /* Find out how far to shift. */
+- sethi %hi(_dl_argv), %l3
+- or %l3, %lo(_dl_argv), %l3
+- ld [%l7+%l3], %l3
+- sub %i5, %i0, %i5
+- ld [%l3], %l4
+- sll %i0, 2, %i2
+- st %i5, [%sp+22*4]
+- sub %l4, %i2, %l4
+- add %sp, 23*4, %i1
+- add %i1, %i2, %i2
+- st %l4, [%l3]
+- /* Copy down argv */
+-21: ld [%i2], %i3
+- add %i2, 4, %i2
+- tst %i3
+- st %i3, [%i1]
+- bne 21b
+- add %i1, 4, %i1
+- /* Copy down env */
+-22: ld [%i2], %i3
+- add %i2, 4, %i2
+- tst %i3
+- st %i3, [%i1]
+- bne 22b
+- add %i1, 4, %i1
+- /* Copy down auxiliary table. */
+-23: ld [%i2], %i3
+- ld [%i2+4], %i4
+- add %i2, 8, %i2
+- tst %i3
+- st %i3, [%i1]
+- st %i4, [%i1+4]
+- bne 23b
+- add %i1, 8, %i1
+- /* %o0 = _dl_loaded, %o1 = argc, %o2 = argv, %o3 = envp. */
+-3: sethi %hi(_dl_loaded), %o0
+- add %sp, 23*4, %o2
+- orcc %o0, %lo(_dl_loaded), %o0
+- sll %i5, 2, %o3
+- ld [%l7+%o0], %o0
+- add %o3, 4, %o3
+- mov %i5, %o1
+- add %o2, %o3, %o3
+- call _dl_init
+- ld [%o0], %o0
+- /* Pass our finalizer function to the user in %g1. */
+- sethi %hi(_dl_fini), %g1
+- or %g1, %lo(_dl_fini), %g1
+- ld [%l7+%g1], %g1
+- /* Jump to the user's entry point and deallocate the extra stack we got. */
+- jmp %l0
+- add %sp, 6*4, %sp
+- .size _dl_start_user, . - _dl_start_user
++ .text\n\
++ .globl _start\n\
++ .type _start, @function\n\
++ .align 32\n\
++_start:\n\
++ /* Allocate space for functions to drop their arguments. */\n\
++ sub %sp, 6*4, %sp\n\
++ /* Pass pointer to argument block to _dl_start. */\n\
++ call _dl_start\n\
++ add %sp, 22*4, %o0\n\
++ /* FALTHRU */\n\
++ .globl _dl_start_user\n\
++ .type _dl_start_user, @function\n\
++_dl_start_user:\n\
++ /* Load the PIC register. */\n\
++1: call 2f\n\
++ sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7\n\
++2: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7\n\
++ add %l7, %o7, %l7\n\
++ /* Save the user entry point address in %l0 */\n\
++ mov %o0, %l0\n\
++ /* Store the highest stack address. */\n\
++ sethi %hi(__libc_stack_end), %g2\n\
++ or %g2, %lo(__libc_stack_end), %g2\n\
++ ld [%l7 + %g2], %l1\n\
++ sethi %hi(_dl_skip_args), %g2\n\
++ add %sp, 6*4, %l2\n\
++ or %g2, %lo(_dl_skip_args), %g2\n\
++ st %l2, [%l1]\n\
++ /* See if we were run as a command with the executable file name as an\n\
++ extra leading argument. If so, adjust the contents of the stack. */\n\
++ ld [%l7+%g2], %i0\n\
++ ld [%i0], %i0\n\
++ tst %i0\n\
++ beq 3f\n\
++ ld [%sp+22*4], %i5 /* load argc */\n\
++ /* Find out how far to shift. */\n\
++ sethi %hi(_dl_argv), %l3\n\
++ or %l3, %lo(_dl_argv), %l3\n\
++ ld [%l7+%l3], %l3\n\
++ sub %i5, %i0, %i5\n\
++ ld [%l3], %l4\n\
++ sll %i0, 2, %i2\n\
++ st %i5, [%sp+22*4]\n\
++ sub %l4, %i2, %l4\n\
++ add %sp, 23*4, %i1\n\
++ add %i1, %i2, %i2\n\
++ st %l4, [%l3]\n\
++ /* Copy down argv */\n\
++21: ld [%i2], %i3\n\
++ add %i2, 4, %i2\n\
++ tst %i3\n\
++ st %i3, [%i1]\n\
++ bne 21b\n\
++ add %i1, 4, %i1\n\
++ /* Copy down env */\n\
++22: ld [%i2], %i3\n\
++ add %i2, 4, %i2\n\
++ tst %i3\n\
++ st %i3, [%i1]\n\
++ bne 22b\n\
++ add %i1, 4, %i1\n\
++ /* Copy down auxiliary table. */\n\
++23: ld [%i2], %i3\n\
++ ld [%i2+4], %i4\n\
++ add %i2, 8, %i2\n\
++ tst %i3\n\
++ st %i3, [%i1]\n\
++ st %i4, [%i1+4]\n\
++ bne 23b\n\
++ add %i1, 8, %i1\n\
++ /* %o0 = _dl_loaded, %o1 = argc, %o2 = argv, %o3 = envp. */\n\
++3: sethi %hi(_dl_loaded), %o0\n\
++ add %sp, 23*4, %o2\n\
++ orcc %o0, %lo(_dl_loaded), %o0\n\
++ sll %i5, 2, %o3\n\
++ ld [%l7+%o0], %o0\n\
++ add %o3, 4, %o3\n\
++ mov %i5, %o1\n\
++ add %o2, %o3, %o3\n\
++ call _dl_init\n\
++ ld [%o0], %o0\n\
++ /* Pass our finalizer function to the user in %g1. */\n\
++ sethi %hi(_dl_fini), %g1\n\
++ or %g1, %lo(_dl_fini), %g1\n\
++ ld [%l7+%g1], %g1\n\
++ /* Jump to the user's entry point and deallocate the extra stack we got. */\n\
++ jmp %l0\n\
++ add %sp, 6*4, %sp\n\
++ .size _dl_start_user, . - _dl_start_user\n\
+ .previous");
+
+ static inline Elf32_Addr
diff --git a/recipes/glibc/glibc-2.2.5/errlist-1.9.patch b/recipes/glibc/glibc-2.2.5/errlist-1.9.patch
new file mode 100644
index 0000000000..ced22eecf9
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/errlist-1.9.patch
@@ -0,0 +1,25 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/unix/sysv/linux/errlist.c~errlist-1.9.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/unix/sysv/linux/errlist.c 2004-09-03 19:00:37.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -38,10 +38,9 @@
+ const int __old_sys_nerr = OLD_ERRLIST_SIZE;
+
+ strong_alias (__old_sys_nerr, _old_sys_nerr);
+-weak_alias (__old_sys_nerr, _old_sys_nerr)
+ compat_symbol (libc, __old_sys_nerr, _sys_nerr, GLIBC_2_0);
+ compat_symbol (libc, _old_sys_nerr, sys_nerr, GLIBC_2_0);
+-weak_alias (__old_sys_errlist, _old_sys_errlist);
++strong_alias (__old_sys_errlist, _old_sys_errlist);
+ compat_symbol (libc, __old_sys_errlist, _sys_errlist, GLIBC_2_0);
+ compat_symbol (libc, _old_sys_errlist, sys_errlist, GLIBC_2_0);
+ #endif
diff --git a/recipes/glibc/glibc-2.2.5/errlist-arm.patch b/recipes/glibc/glibc-2.2.5/errlist-arm.patch
new file mode 100644
index 0000000000..a2afbd036e
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/errlist-arm.patch
@@ -0,0 +1,25 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/unix/sysv/linux/arm/errlist.c~errlist-arm.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/unix/sysv/linux/arm/errlist.c 2004-09-03 19:00:37.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -38,10 +38,9 @@
+ const int __old_sys_nerr = OLD_ERRLIST_SIZE;
+
+ strong_alias (__old_sys_nerr, _old_sys_nerr);
+-weak_alias (__old_sys_nerr, _old_sys_nerr)
+ compat_symbol (libc, __old_sys_nerr, _sys_nerr, GLIBC_2_0);
+ compat_symbol (libc, _old_sys_nerr, sys_nerr, GLIBC_2_0);
+-weak_alias (__old_sys_errlist, _old_sys_errlist);
++strong_alias (__old_sys_errlist, _old_sys_errlist);
+ compat_symbol (libc, __old_sys_errlist, _sys_errlist, GLIBC_2_0);
+ compat_symbol (libc, _old_sys_errlist, sys_errlist, GLIBC_2_0);
+ #endif
diff --git a/recipes/glibc/glibc-2.2.5/etc/ld.so.conf b/recipes/glibc/glibc-2.2.5/etc/ld.so.conf
new file mode 100644
index 0000000000..46e06d3f0a
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/etc/ld.so.conf
@@ -0,0 +1,2 @@
+/usr/local/lib
+
diff --git a/recipes/glibc/glibc-2.2.5/fhs-linux-paths.patch b/recipes/glibc/glibc-2.2.5/fhs-linux-paths.patch
new file mode 100644
index 0000000000..9ba033fd8d
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/fhs-linux-paths.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/unix/sysv/linux/paths.h~fhs-linux-paths.patch 2000-11-15 17:06:47.000000000 -0600
++++ glibc-2.2.5/sysdeps/unix/sysv/linux/paths.h 2004-09-03 19:00:39.000000000 -0500
+@@ -67,7 +67,7 @@
+ /* Provide trailing slash, since mostly used for building pathnames. */
+ #define _PATH_DEV "/dev/"
+ #define _PATH_TMP "/tmp/"
+-#define _PATH_VARDB "/var/db/"
++#define _PATH_VARDB "/var/lib/misc/"
+ #define _PATH_VARRUN "/var/run/"
+ #define _PATH_VARTMP "/var/tmp/"
+
diff --git a/recipes/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-fixup.patch b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-fixup.patch
new file mode 100644
index 0000000000..e4abfe3f49
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-fixup.patch
@@ -0,0 +1,55 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/i386/dl-machine.h~glibc-2.2.5-allow-gcc-3.4-fixup.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/i386/dl-machine.h 2004-09-03 19:00:37.000000000 -0500
+@@ -63,11 +63,12 @@
+ destroys the passed register information. */
+ /* GKM FIXME: Fix trampoline to pass bounds so we can do
+ without the `__unbounded' qualifier. */
++#define ARCH_FIXUP_ATTRIBUTE __attribute__ ((regparm (3), unused))
+ static ElfW(Addr) fixup (struct link_map *__unbounded l, ElfW(Word) reloc_offset)
+- __attribute__ ((regparm (2), unused));
++ ARCH_FIXUP_ATTRIBUTE;
+ static ElfW(Addr) profile_fixup (struct link_map *l, ElfW(Word) reloc_offset,
+ ElfW(Addr) retaddr)
+- __attribute__ ((regparm (3), unused));
++ ARCH_FIXUP_ATTRIBUTE;
+ #endif
+
+ /* Set up the loaded object described by L so its unrelocated PLT
+--- glibc-2.2.5/elf/dl-runtime.c~glibc-2.2.5-allow-gcc-3.4-fixup.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/elf/dl-runtime.c 2004-09-03 19:00:37.000000000 -0500
+@@ -33,6 +33,12 @@
+ # define VERSYMIDX(sym) (DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGIDX (sym))
+ #endif
+
++/* The fixup functions might have need special attributes. If none
++ are provided define the macro as empty. */
++#ifndef ARCH_FIXUP_ATTRIBUTE
++# define ARCH_FIXUP_ATTRIBUTE
++#endif
++
+
+ /* This function is called through a special trampoline from the PLT the
+ first time each PLT entry is called. We must perform the relocation
+@@ -42,7 +48,7 @@
+ function. */
+
+ #ifndef ELF_MACHINE_NO_PLT
+-static ElfW(Addr) __attribute_used__
++static ElfW(Addr) __attribute_used__ ARCH_FIXUP_ATTRIBUTE
+ fixup (
+ # ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS
+ ELF_MACHINE_RUNTIME_FIXUP_ARGS,
+@@ -126,7 +132,7 @@
+
+ #if !defined PROF && !defined ELF_MACHINE_NO_PLT && !__BOUNDED_POINTERS__
+
+-static ElfW(Addr) __attribute_used__
++static ElfW(Addr) __attribute_used__ ARCH_FIXUP_ATTRIBUTE
+ profile_fixup (
+ #ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS
+ ELF_MACHINE_RUNTIME_FIXUP_ARGS,
diff --git a/recipes/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-grp.patch b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-grp.patch
new file mode 100644
index 0000000000..5a9b3057dd
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-grp.patch
@@ -0,0 +1,36 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/grp/initgroups.c~glibc-2.2.5-allow-gcc-3.4-grp.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/grp/initgroups.c 2004-09-03 19:00:38.000000000 -0500
+@@ -176,7 +176,7 @@
+
+ /* This is really only for debugging. */
+ if (NSS_STATUS_TRYAGAIN > status || status > NSS_STATUS_RETURN)
+- __libc_fatal ("illegal status in " __FUNCTION__);
++ __libc_fatal ("illegal status in internal_getgrouplist");
+
+ if (status != NSS_STATUS_SUCCESS
+ && nss_next_action (nip, status) == NSS_ACTION_RETURN)
+@@ -214,7 +214,7 @@
+ }
+ else
+ *ngroups = result;
+-
++
+ memcpy (groups, newgroups, *ngroups * sizeof (gid_t));
+
+ free (newgroups);
+--- glibc-2.2.5/nss/nsswitch.c~glibc-2.2.5-allow-gcc-3.4-grp.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/nss/nsswitch.c 2004-09-03 19:00:38.000000000 -0500
+@@ -178,7 +178,7 @@
+ {
+ /* This is really only for debugging. */
+ if (NSS_STATUS_TRYAGAIN > status || status > NSS_STATUS_RETURN)
+- __libc_fatal ("illegal status in " __FUNCTION__);
++ __libc_fatal ("illegal status in __nss_next");
+
+ if (nss_next_action (*ni, status) == NSS_ACTION_RETURN)
+ return 1;
diff --git a/recipes/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-td.patch b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-td.patch
new file mode 100644
index 0000000000..0a6cee11fe
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-td.patch
@@ -0,0 +1,881 @@
+Fixes following error building glibc-2.2.5 with gcc-3.4:
+td_init.c: In function `td_init':
+td_init.c:30: error: parse error before string constant
+td_init.c:30: error: parse error before string constant
+make[2]: *** [/home/dank/wk/crosstool-0.28-rc4h/build/i686-unknown-linux-gnu/gcc-3.4.0-20040406-glibc-2.2.5/build-glibc/linuxthreads_db/td_init.os] Error 1
+
+# Retrieved by diffing a +-1 day rng around the time mentioned
+# in http://sources.redhat.com/ml/glibc-cvs/2001-q4/msg00654.html
+# cvs -z 9 -d :pserver:anoncvs@sources.redhat.com:/cvs/glibc diff -u -D"2001-12-27 08:41:30" -D"2001-12-29 08:41:32"
+# then fixing paths.
+
+Index: ChangeLog
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/ChangeLog,v
+retrieving revision 1.41
+retrieving revision 1.42
+diff -u -r1.41 -r1.42
+--- libc/linuxthreads_db/ChangeLog 13 Apr 2001 00:09:54 -0000 1.41
++++ libc/linuxthreads_db/ChangeLog 29 Dec 2001 00:59:58 -0000 1.42
+@@ -1,3 +1,43 @@
++2001-12-28 Andreas Jaeger <aj@suse.de>
++
++ * td_init.c (td_init): Don't use __FUNCTION__ as literal.
++ * td_log.c (td_log): Likewise.
++ * td_ta_delete.c (td_ta_delete): Likewise.
++ * td_ta_get_nthreads.c (td_ta_get_nthreads): Likewise.
++ * td_ta_get_ph.c (td_ta_get_ph): Likewise.
++ * td_ta_map_id2thr.c (td_ta_map_id2thr): Likewise.
++ * td_ta_map_lwp2thr.c (td_ta_map_lwp2thr): Likewise.
++ * td_ta_new.c (td_ta_new): Likewise.
++ * td_ta_clear_event.c (td_ta_clear_event): Likewise.
++ * td_ta_enable_stats.c (td_ta_enable_stats): Likewise.
++ * td_ta_event_addr.c (td_ta_event_addr): Likewise.
++ * td_ta_event_getmsg.c (td_ta_event_getmsg): Likewise.
++ * td_ta_get_stats.c (td_ta_get_stats): Likewise.
++ * td_ta_reset_stats.c (td_ta_reset_stats): Likewise.
++ * td_ta_set_event.c (td_ta_set_event): Likewise.
++ * td_ta_setconcurrency.c (td_ta_setconcurrency): Likewise.
++ * td_ta_thr_iter.c (td_ta_thr_iter): Likewise.
++ * td_ta_tsd_iter.c (td_ta_tsd_iter): Likewise.
++ * td_thr_clear_event.c (td_thr_clear_event): Likewise.
++ * td_thr_dbresume.c (td_thr_dbresume): Likewise.
++ * td_thr_dbsuspend.c (td_thr_dbsuspend): Likewise.
++ * td_thr_event_enable.c (td_thr_event_enable): Likewise.
++ * td_thr_event_getmsg.c (td_thr_event_getmsg): Likewise.
++ * td_thr_get_info.c (td_thr_get_info): Likewise.
++ * td_thr_getfpregs.c (td_thr_getfpregs): Likewise.
++ * td_thr_getgregs.c (td_thr_getgregs): Likewise.
++ * td_thr_getxregs.c (td_thr_getxregs): Likewise.
++ * td_thr_getxregsize.c (td_thr_getxregsize): Likewise.
++ * td_thr_set_event.c (td_thr_set_event): Likewise.
++ * td_thr_setfpregs.c (td_thr_setfpregs): Likewise.
++ * td_thr_setgregs.c (td_thr_setgregs): Likewise.
++ * td_thr_setprio.c (td_thr_setprio): Likewise.
++ * td_thr_setsigpending.c (td_thr_setsigpending): Likewise.
++ * td_thr_setxregs.c (td_thr_setxregs): Likewise.
++ * td_thr_sigsetmask.c (td_thr_sigsetmask): Likewise.
++ * td_thr_tsd.c (td_thr_tsd): Likewise.
++ * td_thr_validate.c (td_thr_validate): Likewise.
++
+ 2001-04-12 Ulrich Drepper <drepper@redhat.com>
+
+ * td_ta_map_id2thr.c: If thread terminated return TD_NOTHR.
+Index: td_init.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_init.c,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -r1.3 -r1.4
+--- libc/linuxthreads_db/td_init.c 6 Jul 2001 05:27:23 -0000 1.3
++++ libc/linuxthreads_db/td_init.c 28 Dec 2001 16:41:29 -0000 1.4
+@@ -1,5 +1,5 @@
+ /* Initialization function of thread debugger support library.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -27,6 +27,6 @@
+ td_init (void)
+ {
+ /* XXX We have to figure out what has to be done. */
+- LOG (__FUNCTION__);
++ LOG ("td_init");
+ return TD_OK;
+ }
+Index: td_log.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_log.c,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -r1.2 -r1.3
+--- libc/linuxthreads_db/td_log.c 6 Jul 2001 05:27:23 -0000 1.2
++++ libc/linuxthreads_db/td_log.c 28 Dec 2001 16:41:29 -0000 1.3
+@@ -1,5 +1,5 @@
+ /* Noop, left for historical reasons.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -25,8 +25,8 @@
+ td_log (void)
+ {
+ /* This interface is deprecated in the Sun interface. We provide it
+- for compatibility but don't do anyhting ourself. We might in
++ for compatibility but don't do anything ourself. We might in
+ future do some logging if this seems reasonable. */
+- LOG (__FUNCTION__);
++ LOG ("td_log");
+ return TD_OK;
+ }
+Index: td_ta_clear_event.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_clear_event.c,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -r1.3 -r1.4
+--- libc/linuxthreads_db/td_ta_clear_event.c 6 Jul 2001 05:27:23 -0000 1.3
++++ libc/linuxthreads_db/td_ta_clear_event.c 28 Dec 2001 16:41:29 -0000 1.4
+@@ -1,5 +1,5 @@
+ /* Globally disable events.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -29,7 +29,7 @@
+ td_thr_events_t old_event;
+ int i;
+
+- LOG (__FUNCTION__);
++ LOG ("td_ta_clear_event");
+
+ /* Test whether the TA parameter is ok. */
+ if (! ta_ok (ta))
+Index: td_ta_delete.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_delete.c,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -r1.3 -r1.4
+--- libc/linuxthreads_db/td_ta_delete.c 6 Jul 2001 05:27:23 -0000 1.3
++++ libc/linuxthreads_db/td_ta_delete.c 28 Dec 2001 16:41:29 -0000 1.4
+@@ -1,5 +1,5 @@
+ /* Detach to target process.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -26,7 +26,7 @@
+ td_err_e
+ td_ta_delete (td_thragent_t *ta)
+ {
+- LOG (__FUNCTION__);
++ LOG ("td_ta_delete");
+
+ /* Safety check. */
+ if (ta == NULL || __td_agent_list == NULL)
+Index: td_ta_enable_stats.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_enable_stats.c,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -r1.3 -r1.4
+--- libc/linuxthreads_db/td_ta_enable_stats.c 6 Jul 2001 05:27:23 -0000 1.3
++++ libc/linuxthreads_db/td_ta_enable_stats.c 28 Dec 2001 16:41:29 -0000 1.4
+@@ -1,5 +1,5 @@
+ /* Enable collection of statistics for process.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -25,7 +25,7 @@
+ td_ta_enable_stats (const td_thragent_t *ta, int enable)
+ {
+ /* XXX We have to figure out what has to be done. */
+- LOG (__FUNCTION__);
++ LOG ("td_ta_enable_stats");
+
+ /* Test whether the TA parameter is ok. */
+ if (! ta_ok (ta))
+Index: td_ta_event_addr.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_event_addr.c,v
+retrieving revision 1.5
+retrieving revision 1.6
+diff -u -r1.5 -r1.6
+--- libc/linuxthreads_db/td_ta_event_addr.c 6 Jul 2001 05:27:23 -0000 1.5
++++ libc/linuxthreads_db/td_ta_event_addr.c 28 Dec 2001 16:41:29 -0000 1.6
+@@ -27,7 +27,7 @@
+ td_err_e res = TD_NOEVENT;
+ int idx = -1;
+
+- LOG (__FUNCTION__);
++ LOG ("td_ta_event_addr");
+
+ /* Test whether the TA parameter is ok. */
+ if (! ta_ok (ta))
+Index: td_ta_event_getmsg.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_event_getmsg.c,v
+retrieving revision 1.5
+retrieving revision 1.6
+diff -u -r1.5 -r1.6
+--- libc/linuxthreads_db/td_ta_event_getmsg.c 6 Jul 2001 05:27:23 -0000 1.5
++++ libc/linuxthreads_db/td_ta_event_getmsg.c 28 Dec 2001 16:41:29 -0000 1.6
+@@ -1,5 +1,5 @@
+ /* Retrieve event.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -32,7 +32,7 @@
+ td_eventbuf_t event;
+ psaddr_t addr;
+
+- LOG (__FUNCTION__);
++ LOG ("td_ta_event_getmsg");
+
+ /* Test whether the TA parameter is ok. */
+ if (! ta_ok (ta))
+Index: td_ta_get_nthreads.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_get_nthreads.c,v
+retrieving revision 1.5
+retrieving revision 1.6
+diff -u -r1.5 -r1.6
+--- libc/linuxthreads_db/td_ta_get_nthreads.c 6 Jul 2001 05:27:23 -0000 1.5
++++ libc/linuxthreads_db/td_ta_get_nthreads.c 28 Dec 2001 16:41:29 -0000 1.6
+@@ -25,7 +25,7 @@
+ {
+ psaddr_t addr;
+
+- LOG (__FUNCTION__);
++ LOG ("td_ta_get_nthreads");
+
+ /* Test whether the TA parameter is ok. */
+ if (! ta_ok (ta))
+Index: td_ta_get_ph.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_get_ph.c,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -r1.3 -r1.4
+--- libc/linuxthreads_db/td_ta_get_ph.c 6 Jul 2001 05:27:23 -0000 1.3
++++ libc/linuxthreads_db/td_ta_get_ph.c 28 Dec 2001 16:41:29 -0000 1.4
+@@ -1,5 +1,5 @@
+ /* Get external process handle.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -24,7 +24,7 @@
+ td_err_e
+ td_ta_get_ph (const td_thragent_t *ta, struct ps_prochandle **ph)
+ {
+- LOG (__FUNCTION__);
++ LOG ("td_ta_get_ph");
+
+ /* Test whether the TA parameter is ok. */
+ if (! ta_ok (ta))
+Index: td_ta_get_stats.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_get_stats.c,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -r1.3 -r1.4
+--- libc/linuxthreads_db/td_ta_get_stats.c 6 Jul 2001 05:27:23 -0000 1.3
++++ libc/linuxthreads_db/td_ta_get_stats.c 28 Dec 2001 16:41:29 -0000 1.4
+@@ -1,5 +1,5 @@
+ /* Retrieve statistics for process.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -25,7 +25,7 @@
+ td_ta_get_stats (const td_thragent_t *ta, td_ta_stats_t *statsp)
+ {
+ /* XXX We have to figure out what has to be done. */
+- LOG (__FUNCTION__);
++ LOG ("td_ta_get_stats");
+
+ /* Test whether the TA parameter is ok. */
+ if (! ta_ok (ta))
+Index: td_ta_map_id2thr.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_map_id2thr.c,v
+retrieving revision 1.4
+retrieving revision 1.5
+diff -u -r1.4 -r1.5
+--- libc/linuxthreads_db/td_ta_map_id2thr.c 6 Jul 2001 05:27:23 -0000 1.4
++++ libc/linuxthreads_db/td_ta_map_id2thr.c 28 Dec 2001 16:41:29 -0000 1.5
+@@ -28,7 +28,7 @@
+ struct _pthread_descr_struct pds;
+ int pthread_threads_max;
+
+- LOG (__FUNCTION__);
++ LOG ("td_ta_map_id2thr");
+
+ /* Test whether the TA parameter is ok. */
+ if (! ta_ok (ta))
+Index: td_ta_map_lwp2thr.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_map_lwp2thr.c,v
+retrieving revision 1.5
+retrieving revision 1.6
+diff -u -r1.5 -r1.6
+--- libc/linuxthreads_db/td_ta_map_lwp2thr.c 6 Jul 2001 05:27:23 -0000 1.5
++++ libc/linuxthreads_db/td_ta_map_lwp2thr.c 28 Dec 2001 16:41:29 -0000 1.6
+@@ -1,5 +1,5 @@
+ /* Which thread is running on an lwp?
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -34,7 +34,7 @@
+ # define num 1
+ #endif
+
+- LOG (__FUNCTION__);
++ LOG ("td_ta_map_lwp2thr");
+
+ /* Test whether the TA parameter is ok. */
+ if (! ta_ok (ta))
+Index: td_ta_new.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_new.c,v
+retrieving revision 1.10
+retrieving revision 1.11
+diff -u -r1.10 -r1.11
+--- libc/linuxthreads_db/td_ta_new.c 6 Jul 2001 05:27:23 -0000 1.10
++++ libc/linuxthreads_db/td_ta_new.c 28 Dec 2001 16:41:29 -0000 1.11
+@@ -35,7 +35,7 @@
+ psaddr_t addr;
+ struct agent_list *elemp;
+
+- LOG (__FUNCTION__);
++ LOG ("td_ta_new");
+
+ /* Get the global event mask. This is one of the variables which
+ are new in the thread library to enable debugging. If it is
+Index: td_ta_reset_stats.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_reset_stats.c,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -r1.3 -r1.4
+--- libc/linuxthreads_db/td_ta_reset_stats.c 6 Jul 2001 05:27:23 -0000 1.3
++++ libc/linuxthreads_db/td_ta_reset_stats.c 28 Dec 2001 16:41:29 -0000 1.4
+@@ -1,5 +1,5 @@
+ /* Reset statistics.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -25,7 +25,7 @@
+ td_ta_reset_stats (const td_thragent_t *ta)
+ {
+ /* XXX We have to figure out what has to be done. */
+- LOG (__FUNCTION__);
++ LOG ("td_ta_reset_stats");
+
+ /* Test whether the TA parameter is ok. */
+ if (! ta_ok (ta))
+Index: td_ta_set_event.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_set_event.c,v
+retrieving revision 1.4
+retrieving revision 1.5
+diff -u -r1.4 -r1.5
+--- libc/linuxthreads_db/td_ta_set_event.c 6 Jul 2001 05:27:23 -0000 1.4
++++ libc/linuxthreads_db/td_ta_set_event.c 28 Dec 2001 16:41:29 -0000 1.5
+@@ -1,5 +1,5 @@
+ /* Globally enable events.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -29,7 +29,7 @@
+ td_thr_events_t old_event;
+ int i;
+
+- LOG (__FUNCTION__);
++ LOG ("td_ta_set_event");
+
+ /* Test whether the TA parameter is ok. */
+ if (! ta_ok (ta))
+Index: td_ta_setconcurrency.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_setconcurrency.c,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -r1.3 -r1.4
+--- libc/linuxthreads_db/td_ta_setconcurrency.c 6 Jul 2001 05:27:23 -0000 1.3
++++ libc/linuxthreads_db/td_ta_setconcurrency.c 28 Dec 2001 16:41:29 -0000 1.4
+@@ -1,5 +1,5 @@
+ /* Set suggested concurrency level for process.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -25,7 +25,7 @@
+ td_ta_setconcurrency (const td_thragent_t *ta, int level)
+ {
+ /* This is something LinuxThreads does not support. */
+- LOG (__FUNCTION__);
++ LOG ("td_ta_setconcurrency");
+
+ /* Test whether the TA parameter is ok. */
+ if (! ta_ok (ta))
+Index: td_ta_thr_iter.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_thr_iter.c,v
+retrieving revision 1.11
+retrieving revision 1.12
+diff -u -r1.11 -r1.12
+--- libc/linuxthreads_db/td_ta_thr_iter.c 6 Jul 2001 05:27:23 -0000 1.11
++++ libc/linuxthreads_db/td_ta_thr_iter.c 28 Dec 2001 16:41:29 -0000 1.12
+@@ -1,5 +1,5 @@
+ /* Iterate over a process's threads.
+- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -86,7 +86,7 @@
+ # define num 1
+ #endif
+
+- LOG (__FUNCTION__);
++ LOG ("td_ta_thr_iter");
+
+ /* Test whether the TA parameter is ok. */
+ if (! ta_ok (ta))
+Index: td_ta_tsd_iter.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_tsd_iter.c,v
+retrieving revision 1.4
+retrieving revision 1.5
+diff -u -r1.4 -r1.5
+--- libc/linuxthreads_db/td_ta_tsd_iter.c 6 Jul 2001 05:27:23 -0000 1.4
++++ libc/linuxthreads_db/td_ta_tsd_iter.c 28 Dec 2001 16:41:29 -0000 1.5
+@@ -1,5 +1,5 @@
+ /* Iterate over a process's thread-specific data.
+- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -29,7 +29,7 @@
+ int pthread_keys_max;
+ int cnt;
+
+- LOG (__FUNCTION__);
++ LOG ("td_ta_tsd_iter");
+
+ /* Test whether the TA parameter is ok. */
+ if (! ta_ok (ta))
+Index: td_thr_clear_event.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_clear_event.c,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -r1.3 -r1.4
+--- libc/linuxthreads_db/td_thr_clear_event.c 6 Jul 2001 05:27:23 -0000 1.3
++++ libc/linuxthreads_db/td_thr_clear_event.c 28 Dec 2001 16:41:29 -0000 1.4
+@@ -1,5 +1,5 @@
+ /* Disable specific event for thread.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -31,7 +31,7 @@
+ td_thr_events_t old_event;
+ int i;
+
+- LOG (__FUNCTION__);
++ LOG ("td_thr_clear_event");
+
+ /* Write the new value into the thread data structure. */
+ if (ps_pdread (th->th_ta_p->ph,
+Index: td_thr_dbresume.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_dbresume.c,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -r1.2 -r1.3
+--- libc/linuxthreads_db/td_thr_dbresume.c 6 Jul 2001 05:27:23 -0000 1.2
++++ libc/linuxthreads_db/td_thr_dbresume.c 28 Dec 2001 16:41:29 -0000 1.3
+@@ -1,5 +1,5 @@
+ /* Resume execution of given thread.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -25,6 +25,6 @@
+ td_thr_dbresume (const td_thrhandle_t *th)
+ {
+ /* XXX We have to figure out what has to be done. */
+- LOG (__FUNCTION__);
++ LOG ("td_thr_dbresume");
+ return TD_NOCAPAB;
+ }
+Index: td_thr_dbsuspend.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_dbsuspend.c,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -r1.2 -r1.3
+--- libc/linuxthreads_db/td_thr_dbsuspend.c 6 Jul 2001 05:27:23 -0000 1.2
++++ libc/linuxthreads_db/td_thr_dbsuspend.c 28 Dec 2001 16:41:29 -0000 1.3
+@@ -1,5 +1,5 @@
+ /* Suspend execution of given thread.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -25,6 +25,6 @@
+ td_thr_dbsuspend (const td_thrhandle_t *th)
+ {
+ /* XXX We have to figure out what has to be done. */
+- LOG (__FUNCTION__);
++ LOG ("td_thr_dbsuspend");
+ return TD_NOCAPAB;
+ }
+Index: td_thr_event_enable.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_event_enable.c,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -r1.3 -r1.4
+--- libc/linuxthreads_db/td_thr_event_enable.c 6 Jul 2001 05:27:23 -0000 1.3
++++ libc/linuxthreads_db/td_thr_event_enable.c 28 Dec 2001 16:41:29 -0000 1.4
+@@ -1,5 +1,5 @@
+ /* Enable event process-wide.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -28,7 +28,7 @@
+ const td_thrhandle_t *th;
+ int onoff;
+ {
+- LOG (__FUNCTION__);
++ LOG ("td_thr_event_enable");
+
+ /* Write the new value into the thread data structure. */
+ if (ps_pdwrite (th->th_ta_p->ph,
+Index: td_thr_event_getmsg.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_event_getmsg.c,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -r1.3 -r1.4
+--- libc/linuxthreads_db/td_thr_event_getmsg.c 6 Jul 2001 05:27:23 -0000 1.3
++++ libc/linuxthreads_db/td_thr_event_getmsg.c 28 Dec 2001 16:41:29 -0000 1.4
+@@ -1,5 +1,5 @@
+ /* Retrieve event.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -29,7 +29,7 @@
+ {
+ td_eventbuf_t event;
+
+- LOG (__FUNCTION__);
++ LOG ("td_thr_event_getmsg");
+
+ /* Read the even structure from the target. */
+ if (ps_pdread (th->th_ta_p->ph,
+Index: td_thr_get_info.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_get_info.c,v
+retrieving revision 1.9
+retrieving revision 1.10
+diff -u -r1.9 -r1.10
+--- libc/linuxthreads_db/td_thr_get_info.c 6 Jul 2001 05:27:23 -0000 1.9
++++ libc/linuxthreads_db/td_thr_get_info.c 28 Dec 2001 16:41:29 -0000 1.10
+@@ -1,5 +1,5 @@
+ /* Get thread information.
+- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -29,7 +29,7 @@
+ {
+ struct _pthread_descr_struct pds;
+
+- LOG (__FUNCTION__);
++ LOG ("td_thr_get_info");
+
+ /* Get the thread descriptor. */
+ if (ps_pdread (th->th_ta_p->ph, th->th_unique, &pds,
+Index: td_thr_getfpregs.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_getfpregs.c,v
+retrieving revision 1.4
+retrieving revision 1.5
+diff -u -r1.4 -r1.5
+--- libc/linuxthreads_db/td_thr_getfpregs.c 6 Jul 2001 05:27:23 -0000 1.4
++++ libc/linuxthreads_db/td_thr_getfpregs.c 28 Dec 2001 16:41:29 -0000 1.5
+@@ -26,7 +26,7 @@
+ {
+ struct _pthread_descr_struct pds;
+
+- LOG (__FUNCTION__);
++ LOG ("td_thr_getfpregs");
+
+ /* We have to get the state and the PID for this thread. */
+ if (ps_pdread (th->th_ta_p->ph, th->th_unique, &pds,
+Index: td_thr_getgregs.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_getgregs.c,v
+retrieving revision 1.8
+retrieving revision 1.9
+diff -u -r1.8 -r1.9
+--- libc/linuxthreads_db/td_thr_getgregs.c 6 Jul 2001 05:27:23 -0000 1.8
++++ libc/linuxthreads_db/td_thr_getgregs.c 28 Dec 2001 16:41:29 -0000 1.9
+@@ -26,7 +26,7 @@
+ {
+ struct _pthread_descr_struct pds;
+
+- LOG (__FUNCTION__);
++ LOG ("td_thr_getgregs");
+
+ /* We have to get the state and the PID for this thread. */
+ if (ps_pdread (th->th_ta_p->ph, th->th_unique, &pds,
+Index: td_thr_getxregs.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_getxregs.c,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -r1.2 -r1.3
+--- libc/linuxthreads_db/td_thr_getxregs.c 6 Jul 2001 05:27:23 -0000 1.2
++++ libc/linuxthreads_db/td_thr_getxregs.c 28 Dec 2001 16:41:29 -0000 1.3
+@@ -1,5 +1,5 @@
+ /* Get a thread's extra state register set.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -25,6 +25,6 @@
+ td_thr_getxregs (const td_thrhandle_t *th, void *xregs)
+ {
+ /* XXX This might be platform specific. */
+- LOG (__FUNCTION__);
++ LOG ("td_thr_getxregs");
+ return TD_NOXREGS;
+ }
+Index: td_thr_getxregsize.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_getxregsize.c,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -r1.2 -r1.3
+--- libc/linuxthreads_db/td_thr_getxregsize.c 6 Jul 2001 05:27:23 -0000 1.2
++++ libc/linuxthreads_db/td_thr_getxregsize.c 28 Dec 2001 16:41:29 -0000 1.3
+@@ -1,5 +1,5 @@
+ /* Get the size of the extra state register set for this architecture.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -25,6 +25,6 @@
+ td_thr_getxregsize (const td_thrhandle_t *th, int *sizep)
+ {
+ /* XXX This might be platform specific. */
+- LOG (__FUNCTION__);
++ LOG ("td_thr_getxregsize");
+ return TD_NOXREGS;
+ }
+Index: td_thr_set_event.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_set_event.c,v
+retrieving revision 1.4
+retrieving revision 1.5
+diff -u -r1.4 -r1.5
+--- libc/linuxthreads_db/td_thr_set_event.c 6 Jul 2001 05:27:23 -0000 1.4
++++ libc/linuxthreads_db/td_thr_set_event.c 28 Dec 2001 16:41:29 -0000 1.5
+@@ -1,5 +1,5 @@
+ /* Enable specific event for thread.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -31,7 +31,7 @@
+ td_thr_events_t old_event;
+ int i;
+
+- LOG (__FUNCTION__);
++ LOG ("td_thr_set_event");
+
+ /* Write the new value into the thread data structure. */
+ if (ps_pdread (th->th_ta_p->ph,
+Index: td_thr_setfpregs.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_setfpregs.c,v
+retrieving revision 1.4
+retrieving revision 1.5
+diff -u -r1.4 -r1.5
+--- libc/linuxthreads_db/td_thr_setfpregs.c 6 Jul 2001 05:27:23 -0000 1.4
++++ libc/linuxthreads_db/td_thr_setfpregs.c 28 Dec 2001 16:41:29 -0000 1.5
+@@ -26,7 +26,7 @@
+ {
+ struct _pthread_descr_struct pds;
+
+- LOG (__FUNCTION__);
++ LOG ("td_thr_setfpregs");
+
+ /* We have to get the state and the PID for this thread. */
+ if (ps_pdread (th->th_ta_p->ph, th->th_unique, &pds,
+Index: td_thr_setgregs.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_setgregs.c,v
+retrieving revision 1.6
+retrieving revision 1.7
+diff -u -r1.6 -r1.7
+--- libc/linuxthreads_db/td_thr_setgregs.c 6 Jul 2001 05:27:23 -0000 1.6
++++ libc/linuxthreads_db/td_thr_setgregs.c 28 Dec 2001 16:41:29 -0000 1.7
+@@ -26,7 +26,7 @@
+ {
+ struct _pthread_descr_struct pds;
+
+- LOG (__FUNCTION__);
++ LOG ("td_thr_setgregs");
+
+ /* We have to get the state and the PID for this thread. */
+ if (ps_pdread (th->th_ta_p->ph, th->th_unique, &pds,
+Index: td_thr_setprio.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_setprio.c,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -r1.2 -r1.3
+--- libc/linuxthreads_db/td_thr_setprio.c 6 Jul 2001 05:27:23 -0000 1.2
++++ libc/linuxthreads_db/td_thr_setprio.c 28 Dec 2001 16:41:29 -0000 1.3
+@@ -1,5 +1,5 @@
+ /* Set a thread's priority.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -25,6 +25,6 @@
+ td_thr_setprio (const td_thrhandle_t *th, int prio)
+ {
+ /* XXX We have to figure out what has to be done. */
+- LOG (__FUNCTION__);
++ LOG ("td_thr_setprio");
+ return TD_OK;
+ }
+Index: td_thr_setsigpending.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_setsigpending.c,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -r1.2 -r1.3
+--- libc/linuxthreads_db/td_thr_setsigpending.c 6 Jul 2001 05:27:23 -0000 1.2
++++ libc/linuxthreads_db/td_thr_setsigpending.c 28 Dec 2001 16:41:29 -0000 1.3
+@@ -1,5 +1,5 @@
+ /* Raise a signal for a thread.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -26,6 +26,6 @@
+ const sigset_t *ss)
+ {
+ /* XXX We have to figure out what has to be done. */
+- LOG (__FUNCTION__);
++ LOG ("td_thr_setsigpending");
+ return TD_OK;
+ }
+Index: td_thr_setxregs.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_setxregs.c,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -r1.2 -r1.3
+--- libc/linuxthreads_db/td_thr_setxregs.c 6 Jul 2001 05:27:23 -0000 1.2
++++ libc/linuxthreads_db/td_thr_setxregs.c 28 Dec 2001 16:41:29 -0000 1.3
+@@ -1,5 +1,5 @@
+ /* Set a thread's extra state register set.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -25,6 +25,6 @@
+ td_thr_setxregs (const td_thrhandle_t *ta, const void *addr)
+ {
+ /* XXX This might have to be platform specific. */
+- LOG (__FUNCTION__);
++ LOG ("td_thr_setxregs");
+ return TD_NOXREGS;
+ }
+Index: td_thr_sigsetmask.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_sigsetmask.c,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -r1.2 -r1.3
+--- libc/linuxthreads_db/td_thr_sigsetmask.c 6 Jul 2001 05:27:23 -0000 1.2
++++ libc/linuxthreads_db/td_thr_sigsetmask.c 28 Dec 2001 16:41:29 -0000 1.3
+@@ -1,5 +1,5 @@
+ /* Set a thread's signal mask.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -25,6 +25,6 @@
+ td_thr_sigsetmask (const td_thrhandle_t *th, const sigset_t *ss)
+ {
+ /* XXX We have to figure out what has to be done. */
+- LOG (__FUNCTION__);
++ LOG ("td_thr_sigsetmask");
+ return TD_OK;
+ }
+Index: td_thr_tsd.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_tsd.c,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -r1.2 -r1.3
+--- libc/linuxthreads_db/td_thr_tsd.c 6 Jul 2001 05:27:23 -0000 1.2
++++ libc/linuxthreads_db/td_thr_tsd.c 28 Dec 2001 16:41:29 -0000 1.3
+@@ -1,5 +1,5 @@
+ /* Get a thread-specific data pointer for a thread.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -33,7 +33,7 @@
+ unsigned int idx2nd;
+ void *p;
+
+- LOG (__FUNCTION__);
++ LOG ("td_thr_tsd");
+
+ /* Get the thread descriptor. */
+ if (ps_pdread (th->th_ta_p->ph, th->th_unique, &pds,
+Index: td_thr_validate.c
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_validate.c,v
+retrieving revision 1.4
+retrieving revision 1.5
+diff -u -r1.4 -r1.5
+--- libc/linuxthreads_db/td_thr_validate.c 6 Jul 2001 05:27:23 -0000 1.4
++++ libc/linuxthreads_db/td_thr_validate.c 28 Dec 2001 16:41:29 -0000 1.5
+@@ -28,7 +28,7 @@
+ int pthread_threads_max = th->th_ta_p->pthread_threads_max;
+ int cnt;
+
+- LOG (__FUNCTION__);
++ LOG ("td_thr_validate");
+
+ /* Now get all descriptors, one after the other. */
+ for (cnt = 0; cnt < pthread_threads_max; ++cnt, ++handles)
diff --git a/recipes/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-4.x-configure.patch b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-4.x-configure.patch
new file mode 100644
index 0000000000..138c5414cb
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-4.x-configure.patch
@@ -0,0 +1,21 @@
+Fixes
+checking version of powerpc-405-linux-gnu-gcc ... 4.0.0, bad
+checking for gnumake... no
+checking for gmake... no
+checking for make... make
+checking version of make... 3.80, ok
+configure: error:
+*** These critical programs are missing or too old:gcc
+
+
+--- glibc-2.2.5/configure.old 2005-03-10 00:23:46.374213600 -0800
++++ glibc-2.2.5/configure 2005-03-10 00:25:13.313996744 -0800
+@@ -1476,7 +1476,7 @@
+ ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+- *gcc-2.9[5-9].*|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|3.[0-9]*|cygnus-2.9[1-9]*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]|sgicc-*)
++ *gcc-2.9[5-9].*|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|3.[0-9]*|4.[0-9]*|cygnus-2.9[1-9]*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]|sgicc-*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
diff --git a/recipes/glibc/glibc-2.2.5/glibc-2.2.5-alpha-pwrite64.patch b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-alpha-pwrite64.patch
new file mode 100644
index 0000000000..8466731834
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-alpha-pwrite64.patch
@@ -0,0 +1,35 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/unix/sysv/linux/alpha/sysdep.h~glibc-2.2.5-alpha-pwrite64.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/unix/sysv/linux/alpha/sysdep.h 2004-09-03 19:00:38.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1992, 1993, 1995, 1996, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1992, 1993, 1995, 1996, 1997, 2004 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>, August 1995.
+
+@@ -56,6 +56,21 @@
+ #define __NR_osf_getsysinfo 256
+ #define __NR_osf_setsysinfo 257
+
++/* Help old kernel headers where particular syscalls are not available. */
++#ifndef __NR_semtimedop
++# define __NR_semtimedop 423
++#endif
++
++/* This is a kludge to make syscalls.list find these under the names
++ pread and pwrite, since some kernel headers define those names
++ and some define the *64 names for the same system calls. */
++#if !defined __NR_pread && defined __NR_pread64
++# define __NR_pread __NR_pread64
++#endif
++#if !defined __NR_pwrite && defined __NR_pwrite64
++# define __NR_pwrite __NR_pwrite64
++#endif
++
+ /*
+ * In order to get the hidden arguments for rt_sigaction set up
+ * properly, we need to call the assembly version. Detect this in the
diff --git a/recipes/glibc/glibc-2.2.5/glibc-2.2.5-alpha-self-clobber.patch b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-alpha-self-clobber.patch
new file mode 100644
index 0000000000..fd3403405a
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-alpha-self-clobber.patch
@@ -0,0 +1,25 @@
+wget http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/linuxthreads/sysdeps/alpha/pt-machine.h.diff?r1=1.9&r2=1.10&cvsroot=glibc
+
+Should fix error
+
+internals.h: In function `pthread_setcancelstate':
+internals.h:381: error: asm-specifier for variable `__self' conflicts with asm clobber list
+make[2]: *** [/home/dank/crosstool-0.28/build/alpha-unknown-linux-gnu/gcc-3.4.1-glibc-2.2.5/build-glibc/linuxthreads/cancel.o] Error 1
+make[2]: Leaving directory `/home/dank/crosstool-0.28/build/alpha-unknown-linux-gnu/gcc-3.4.1-glibc-2.2.5/glibc-2.2.5/linuxthreads'
+
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/alpha/pt-machine.h,v
+retrieving revision 1.9
+retrieving revision 1.10
+diff -u -r1.9 -r1.10
+--- libc/linuxthreads/sysdeps/alpha/pt-machine.h 2002/04/06 04:05:13 1.9
++++ libc/linuxthreads/sysdeps/alpha/pt-machine.h 2002/05/20 20:09:34 1.10
+@@ -76,7 +76,7 @@
+ #define THREAD_SELF \
+ ({ \
+ register pthread_descr __self __asm__("$0"); \
+- __asm__ ("call_pal %1" : "=r"(__self) : "i"(PAL_rduniq) : "$0"); \
++ __asm__ ("call_pal %1" : "=r"(__self) : "i"(PAL_rduniq)); \
+ __self; \
+ })
+
diff --git a/recipes/glibc/glibc-2.2.5/glibc-2.2.5-arm-pwrite64.patch b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-arm-pwrite64.patch
new file mode 100644
index 0000000000..eb7fa996fa
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-arm-pwrite64.patch
@@ -0,0 +1,23 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/unix/sysv/linux/arm/sysdep.h~glibc-2.2.5-arm-pwrite64.patch 2004-09-03 19:00:37.000000000 -0500
++++ glibc-2.2.5/sysdeps/unix/sysv/linux/arm/sysdep.h 2004-09-03 19:00:38.000000000 -0500
+@@ -32,6 +32,15 @@
+ #define SWI_BASE (0x900000)
+ #define SYS_ify(syscall_name) (__NR_##syscall_name)
+
++/* This is a kludge to make syscalls.list find these under the names
++ pread and pwrite, since some kernel headers define those names
++ and some define the *64 names for the same system calls. */
++#if !defined __NR_pread && defined __NR_pread64
++# define __NR_pread __NR_pread64
++#endif
++#if !defined __NR_pwrite && defined __NR_pwrite64
++# define __NR_pwrite __NR_pwrite64
++#endif
+
+ #ifdef __ASSEMBLER__
+
diff --git a/recipes/glibc/glibc-2.2.5/glibc-2.2.5-crosstest.patch b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-crosstest.patch
new file mode 100644
index 0000000000..4029bf4f2a
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-crosstest.patch
@@ -0,0 +1,28 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/dlfcn/Makefile~glibc-2.2.5-crosstest.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/dlfcn/Makefile 2004-09-03 19:00:38.000000000 -0500
+@@ -60,6 +60,8 @@
+ test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(modules-names)))
+ $(test-modules): $(objpfx)%.so: $(objpfx)%.os
+ $(build-module)
++# without following rule, test-modules don't get built when cross-compiling
++tests: $(test-modules)
+
+ $(objpfx)glrefmain: $(libdl)
+ $(objpfx)glrefmain.out: $(objpfx)glrefmain \
+--- glibc-2.2.5/elf/Makefile~glibc-2.2.5-crosstest.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/elf/Makefile 2004-09-03 19:00:38.000000000 -0500
+@@ -263,6 +263,9 @@
+ test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names))))
+ generated += $(addsuffix .so,$(strip $(modules-names)))
+
++# without following rule, test-modules don't get built when cross-compiling
++tests: $(test-modules)
++
+ ifeq (yes,$(build-shared))
+ ifeq ($(cross-compiling),no)
+ tests: $(objpfx)tst-pathopt.out
diff --git a/recipes/glibc/glibc-2.2.5/glibc-2.2.5-crossyes.patch b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-crossyes.patch
new file mode 100644
index 0000000000..a27be24275
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-crossyes.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/configure~glibc-2.2.5-crossyes.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/configure 2004-09-03 19:00:38.000000000 -0500
+@@ -1738,7 +1738,7 @@
+ ac_cv_prog_cc_works=yes
+ # If we can't run a trivial program, we are probably using a cross compiler.
+ if (./conftest; exit) 2>/dev/null; then
+- ac_cv_prog_cc_cross=no
++ ac_cv_prog_cc_cross=yes
+ else
+ ac_cv_prog_cc_cross=yes
+ fi
diff --git a/recipes/glibc/glibc-2.2.5/glibc-2.2.5-cygwin.patch b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-cygwin.patch
new file mode 100644
index 0000000000..9b732188ca
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-cygwin.patch
@@ -0,0 +1,79 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/Makeconfig~glibc-2.2.5-cygwin.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/Makeconfig 2004-09-03 19:00:38.000000000 -0500
+@@ -439,13 +439,13 @@
+ # run the linked programs.
+ link-libc = -Wl,-rpath-link=$(rpath-link) \
+ $(common-objpfx)libc.so$(libc.so-version) \
+- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib)
++ $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib)
+ # This is how to find at build-time things that will be installed there.
+ rpath-dirs = math elf dlfcn nss nis rt resolv crypt
+ else
+ ifneq (,$(findstring aix,$(config-os)))
+ link-libc = $(common-objpfx)libc.a \
+- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib)
++ $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib)
+ rpath-dirs = math dlfcn nss nis rt resolv crypt
+ endif
+ endif
+@@ -649,7 +649,7 @@
+ # The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX})
+ # to pass different flags for each flavor.
+ libtypes = $(foreach o,$(object-suffixes-for-libc),$(libtype$o))
+-all-object-suffixes := .o .os .op .og .ob .oS
++all-object-suffixes := .o .os .op .og .ob .oST
+ object-suffixes :=
+ CPPFLAGS-.o = $(pic-default)
+ CFLAGS-.o = $(filter %frame-pointer,$(+cflags))
+@@ -703,14 +703,14 @@
+
+ ifeq (yes,$(build-shared))
+ # Build special library that contains the static-only routines for libc.
+-object-suffixes-for-libc += .oS
++object-suffixes-for-libc += .oST
+
+ # Must build the routines as PIC, though, because they can end up in (users')
+ # shared objects. We don't want to use CFLAGS-os because users may, for
+ # example, make that processor-specific.
+-CFLAGS-.oS = $(CFLAGS-.o) $(pic-ccflag)
+-CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC
+-libtype.oS = lib%_nonshared.a
++CFLAGS-.oST = $(CFLAGS-.o) $(pic-ccflag)
++CPPFLAGS-.oST = $(CPPFLAGS-.o) -DPIC
++libtype.oST = lib%_nonshared.a
+ endif
+
+
+--- glibc-2.2.5/Makerules~glibc-2.2.5-cygwin.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/Makerules 2004-09-03 19:00:38.000000000 -0500
+@@ -361,7 +361,7 @@
+ # Bounded pointer thunks are only built for *.ob
+ elide-bp-thunks = $(addprefix $(bppfx),$(bp-thunks))
+
+-elide-routines.oS += $(filter-out $(static-only-routines),\
++elide-routines.oST += $(filter-out $(static-only-routines),\
+ $(routines) $(aux) $(sysdep_routines)) \
+ $(elide-bp-thunks)
+ elide-routines.os += $(static-only-routines) $(elide-bp-thunks)
+@@ -842,14 +842,14 @@
+ # of the files are taken by the linker.
+ install: $(inst_libdir)/libc.so
+ $(inst_libdir)/libc.so: $(common-objpfx)libc.so$(libc.so-version) \
+- $(inst_libdir)/$(patsubst %,$(libtype.oS),\
++ $(inst_libdir)/$(patsubst %,$(libtype.oST),\
+ $(libprefix)$(libc-name)) \
+ $(+force)
+ (echo '/* GNU ld script';\
+ echo ' Use the shared library, but some functions are only in';\
+ echo ' the static library, so try that secondarily. */';\
+ echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \
+- '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\
++ '$(libdir)/$(patsubst %,$(libtype.oST),$(libprefix)$(libc-name))'\
+ ')' \
+ ) > $@.new
+ mv -f $@.new $@
diff --git a/recipes/glibc/glibc-2.2.5/glibc-2.2.5-hhl-powerpc-fpu.patch b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-hhl-powerpc-fpu.patch
new file mode 100644
index 0000000000..73cfd1a832
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-hhl-powerpc-fpu.patch
@@ -0,0 +1,1108 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/powerpc/Dist~glibc-2.2.5-hhl-powerpc-fpu.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/powerpc/Dist 2004-09-03 19:00:38.000000000 -0500
+@@ -1,9 +1,6 @@
+ dl-machine.c
+ dl-start.S
+ ppc-mcount.S
+-fe_nomask.c
+-fprrest.S
+-fprsave.S
+ gprsave1.S
+ gprsave0.S
+ gprrest1.S
+--- glibc-2.2.5/sysdeps/powerpc/Makefile~glibc-2.2.5-hhl-powerpc-fpu.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/powerpc/Makefile 2004-09-03 19:00:38.000000000 -0500
+@@ -3,16 +3,12 @@
+ +cflags += -mnew-mnemonics -Wa,-mppc -mpowerpc
+ asm-CPPFLAGS += -Wa,-mppc
+
+-ifeq ($(subdir),math)
+-libm-support += fenv_const fe_nomask
+-endif
+-
+ ifeq ($(subdir),gmon)
+ sysdep_routines += ppc-mcount
+ endif
+
+ ifeq ($(subdir),misc)
+-sysdep_routines += gprsave0 gprrest0 gprsave1 gprrest1 fprsave fprrest
++sysdep_routines += gprsave0 gprrest0 gprsave1 gprrest1
+ endif
+
+ # On PPC, -fpic works until the GOT contains 2^15 bytes, and possibly
+--- glibc-2.2.5/sysdeps/powerpc/Versions~glibc-2.2.5-hhl-powerpc-fpu.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/powerpc/Versions 2004-09-03 19:00:38.000000000 -0500
+@@ -1,8 +1,4 @@
+ libm {
+- GLIBC_2.1 {
+- # symbols used in macros from sysdeps/powerpc/bits/fenv.h
+- __fe_dfl_env; __fe_enabled_env; __fe_nonieee_env; __fe_nomask_env;
+- }
+ GLIBC_2.2 {
+ # Special functions to save and restore registers used by the
+ # runtime libraries.
+--- glibc-2.2.5/sysdeps/powerpc/__longjmp.S~glibc-2.2.5-hhl-powerpc-fpu.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/powerpc/__longjmp.S 2004-09-03 19:00:38.000000000 -0500
+@@ -24,6 +24,8 @@
+ #include <bp-sym.h>
+ #include <bp-asm.h>
+
++/* The FPU loads have been removed from this file - see fpu/__longjmp.S */
++
+ ENTRY (BP_SYM (__longjmp))
+ CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
+
+@@ -31,44 +33,26 @@
+ lwz r2,(JB_GPR2*4)(r3)
+ lwz r0,(JB_LR*4)(r3)
+ lwz r14,((JB_GPRS+0)*4)(r3)
+- lfd fp14,((JB_FPRS+0*2)*4)(r3)
+ lwz r15,((JB_GPRS+1)*4)(r3)
+- lfd fp15,((JB_FPRS+1*2)*4)(r3)
+ lwz r16,((JB_GPRS+2)*4)(r3)
+- lfd fp16,((JB_FPRS+2*2)*4)(r3)
+ lwz r17,((JB_GPRS+3)*4)(r3)
+- lfd fp17,((JB_FPRS+3*2)*4)(r3)
+ lwz r18,((JB_GPRS+4)*4)(r3)
+- lfd fp18,((JB_FPRS+4*2)*4)(r3)
+ lwz r19,((JB_GPRS+5)*4)(r3)
+- lfd fp19,((JB_FPRS+5*2)*4)(r3)
+ lwz r20,((JB_GPRS+6)*4)(r3)
+- lfd fp20,((JB_FPRS+6*2)*4)(r3)
+ mtlr r0
+ lwz r21,((JB_GPRS+7)*4)(r3)
+- lfd fp21,((JB_FPRS+7*2)*4)(r3)
+ lwz r22,((JB_GPRS+8)*4)(r3)
+- lfd fp22,((JB_FPRS+8*2)*4)(r3)
+ lwz r0,(JB_CR*4)(r3)
+ lwz r23,((JB_GPRS+9)*4)(r3)
+- lfd fp23,((JB_FPRS+9*2)*4)(r3)
+ lwz r24,((JB_GPRS+10)*4)(r3)
+- lfd fp24,((JB_FPRS+10*2)*4)(r3)
+ lwz r25,((JB_GPRS+11)*4)(r3)
+- lfd fp25,((JB_FPRS+11*2)*4)(r3)
+ mtcrf 0xFF,r0
+ lwz r26,((JB_GPRS+12)*4)(r3)
+- lfd fp26,((JB_FPRS+12*2)*4)(r3)
+ lwz r27,((JB_GPRS+13)*4)(r3)
+- lfd fp27,((JB_FPRS+13*2)*4)(r3)
+ lwz r28,((JB_GPRS+14)*4)(r3)
+- lfd fp28,((JB_FPRS+14*2)*4)(r3)
+ lwz r29,((JB_GPRS+15)*4)(r3)
+- lfd fp29,((JB_FPRS+15*2)*4)(r3)
+ lwz r30,((JB_GPRS+16)*4)(r3)
+- lfd fp30,((JB_FPRS+16*2)*4)(r3)
+ lwz r31,((JB_GPRS+17)*4)(r3)
+- lfd fp31,((JB_FPRS+17*2)*4)(r3)
+ mr r3,r4
+ blr
+ END (BP_SYM (__longjmp))
+--- glibc-2.2.5/sysdeps/powerpc/bits/setjmp.h~glibc-2.2.5-hhl-powerpc-fpu.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/powerpc/bits/setjmp.h 2004-09-03 19:00:38.000000000 -0500
+@@ -17,6 +17,7 @@
+ 02111-1307 USA. */
+
+ /* Define the machine-dependent type `jmp_buf'. PowerPC version. */
++/* For processors without floating point. */
+
+ #ifndef _SETJMP_H
+ # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
+@@ -33,12 +34,11 @@
+ # define JB_LR 2 /* The address we will return to */
+ # define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total */
+ # define JB_CR 21 /* Condition code registers. */
+-# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total */
+-# define JB_SIZE (58*4)
++# define JB_SIZE (22*4)
+ #endif
+
+ #ifndef _ASM
+-typedef long int __jmp_buf[58];
++typedef long int __jmp_buf[22];
+ #endif
+
+ /* Test if longjmp to JMPBUF would unwind the frame
+--- glibc-2.2.5/sysdeps/powerpc/fclrexcpt.c~glibc-2.2.5-hhl-powerpc-fpu.patch
++++ glibc-2.2.5/sysdeps/powerpc/fclrexcpt.c
+-/* Clear given exceptions in current floating-point environment.
+- Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#include <fenv_libc.h>
+-
+-#undef feclearexcept
+-int
+-__feclearexcept (int excepts)
+-{
+- fenv_union_t u;
+-
+- /* Get the current state. */
+- u.fenv = fegetenv_register ();
+-
+- /* Clear the relevant bits. */
+- u.l[1] = u.l[1] & ~((-(excepts >> (31 - FPSCR_VX) & 1) & FE_ALL_INVALID)
+- | (excepts & FPSCR_STICKY_BITS));
+-
+- /* Put the new state in effect. */
+- fesetenv_register (u.fenv);
+-
+- /* Success. */
+- return 0;
+-}
+-
+-#include <shlib-compat.h>
+-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
+-strong_alias (__feclearexcept, __old_feclearexcept)
+-compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
+-#endif
+-
+-versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);
+--- glibc-2.2.5/sysdeps/powerpc/fe_nomask.c~glibc-2.2.5-hhl-powerpc-fpu.patch
++++ glibc-2.2.5/sysdeps/powerpc/fe_nomask.c
+-/* Procedure definition for FE_NOMASK_ENV.
+- Copyright (C) 1997 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#include <fenv.h>
+-#include <errno.h>
+-
+-/* This is presently a stub, until it's decided how the kernels should
+- support this. */
+-
+-const fenv_t *
+-__fe_nomask_env(void)
+-{
+- __set_errno (ENOSYS);
+- return FE_ENABLED_ENV;
+-}
+-stub_warning (__fe_nomask_env)
+--- glibc-2.2.5/sysdeps/powerpc/fprrest.S~glibc-2.2.5-hhl-powerpc-fpu.patch
++++ glibc-2.2.5/sysdeps/powerpc/fprrest.S
+-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-/*
+- Floating Point Registers (FPRs) restore routine
+-*/
+-
+-#include <sysdep.h>
+-
+-ENTRY(_restfpr_all)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf14)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_14)
+-C_TEXT(_restf14):
+-C_TEXT(_restfpr_14): lfd fp14,-144(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf15)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_15)
+-C_TEXT(_restf15):
+-C_TEXT(_restfpr_15): lfd fp15,-136(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf16)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_16)
+-C_TEXT(_restf16):
+-C_TEXT(_restfpr_16): lfd fp16,-128(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf17)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_17)
+-C_TEXT(_restf17):
+-C_TEXT(_restfpr_17): lfd fp17,-120(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf18)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_18)
+-C_TEXT(_restf18):
+-C_TEXT(_restfpr_18): lfd fp18,-112(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf19)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_19)
+-C_TEXT(_restf19):
+-C_TEXT(_restfpr_19): lfd fp19,-104(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf20)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_20)
+-C_TEXT(_restf20):
+-C_TEXT(_restfpr_20): lfd fp20,-96(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf21)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_21)
+-C_TEXT(_restf21):
+-C_TEXT(_restfpr_21): lfd fp21,-88(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf22)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_22)
+-C_TEXT(_restf22):
+-C_TEXT(_restfpr_22): lfd fp22,-80(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf23)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_23)
+-C_TEXT(_restf23):
+-C_TEXT(_restfpr_23): lfd fp23,-72(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf24)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_24)
+-C_TEXT(_restf24):
+-C_TEXT(_restfpr_24): lfd fp24,-64(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf25)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_25)
+-C_TEXT(_restf25):
+-C_TEXT(_restfpr_25): lfd fp25,-56(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf26)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_26)
+-C_TEXT(_restf26):
+-C_TEXT(_restfpr_26): lfd fp26,-48(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf27)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_27)
+-C_TEXT(_restf27):
+-C_TEXT(_restfpr_27): lfd fp27,-40(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf28)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_28)
+-C_TEXT(_restf28):
+-C_TEXT(_restfpr_28): lfd fp28,-32(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf29)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_29)
+-C_TEXT(_restf29):
+-C_TEXT(_restfpr_29): lwz r0,8(r1) #get return address from frame
+- lfd fp29,-24(r1) #restore f29
+- mtlr r0 #move return address to LR
+- lfd fp30,-16(r1) #restore f30
+- lfd fp31,-8(r1) #restore f31
+- blr #return
+--- glibc-2.2.5/sysdeps/powerpc/fprsave.S~glibc-2.2.5-hhl-powerpc-fpu.patch
++++ glibc-2.2.5/sysdeps/powerpc/fprsave.S
+-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-/*
+- Floating Point Registers (FPRs) save routine
+-*/
+-
+-#include <sysdep.h>
+-
+-ENTRY(_savefpr_all)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef14)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_14)
+-C_TEXT(_savef14):
+-C_TEXT(_savefpr_14): stfd fp14,-144(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef15)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_15)
+-C_TEXT(_savef15):
+-C_TEXT(_savefpr_15): stfd fp15,-136(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef16)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_16)
+-C_TEXT(_savef16):
+-C_TEXT(_savefpr_16): stfd fp16,-128(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef17)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_17)
+-C_TEXT(_savef17):
+-C_TEXT(_savefpr_17): stfd fp17,-120(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef18)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_18)
+-C_TEXT(_savef18):
+-C_TEXT(_savefpr_18): stfd fp18,-112(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef19)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_19)
+-C_TEXT(_savef19):
+-C_TEXT(_savefpr_19): stfd fp19,-104(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef20)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_20)
+-C_TEXT(_savef20):
+-C_TEXT(_savefpr_20): stfd fp20,-96(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef21)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_21)
+-C_TEXT(_savef21):
+-C_TEXT(_savefpr_21): stfd fp21,-88(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef22)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_22)
+-C_TEXT(_savef22):
+-C_TEXT(_savefpr_22): stfd fp22,-80(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef23)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_23)
+-C_TEXT(_savef23):
+-C_TEXT(_savefpr_23): stfd fp23,-72(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef24)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_24)
+-C_TEXT(_savef24):
+-C_TEXT(_savefpr_24): stfd fp24,-64(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef25)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_25)
+-C_TEXT(_savef25):
+-C_TEXT(_savefpr_25): stfd fp25,-56(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef26)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_26)
+-C_TEXT(_savef26):
+-C_TEXT(_savefpr_26): stfd fp26,-48(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef27)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_27)
+-C_TEXT(_savef27):
+-C_TEXT(_savefpr_27): stfd fp27,-40(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef28)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_28)
+-C_TEXT(_savef28):
+-C_TEXT(_savefpr_28): stfd fp28,-32(r1)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef29)
+- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_29)
+-C_TEXT(_savef29):
+-C_TEXT(_savefpr_29): stfd fp29,-24(r1) #save f29
+- stfd fp30,-16(r1) #save f30
+- stfd fp31,-8(r1) #save f31
+- stw r0,8(r1) #save LR in callers frame
+- blr #return
+--- glibc-2.2.5/sysdeps/powerpc/fpu/Dist~glibc-2.2.5-hhl-powerpc-fpu.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/powerpc/fpu/Dist 2004-09-03 19:00:38.000000000 -0500
+@@ -1,3 +1,6 @@
++fe_nomask.c
++fprrest.S
++fprsave.S
+ fenv_const.c
+ fenv_libc.h
+ t_sqrt.c
+--- glibc-2.2.5/sysdeps/powerpc/fpu/Makefile~glibc-2.2.5-hhl-powerpc-fpu.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/powerpc/fpu/Makefile 2004-09-03 19:00:38.000000000 -0500
+@@ -1,3 +1,7 @@
+ ifeq ($(subdir),math)
+ libm-support += fenv_const fe_nomask t_sqrt
+ endif
++
++ifeq ($(subdir),misc)
++sysdep_routines += fprsave fprrest
++endif
+--- /dev/null 2004-06-02 16:28:12.000000000 -0500
++++ glibc-2.2.5/sysdeps/powerpc/fpu/Versions 2004-09-03 19:00:38.000000000 -0500
+@@ -0,0 +1,6 @@
++libm {
++ GLIBC_2.1 {
++ # symbols used in macros from sysdeps/powerpc/bits/fenv.h
++ __fe_dfl_env; __fe_enabled_env; __fe_nonieee_env; __fe_nomask_env;
++ }
++}
+--- /dev/null 2004-06-02 16:28:12.000000000 -0500
++++ glibc-2.2.5/sysdeps/powerpc/fpu/__longjmp.S 2004-09-03 19:00:38.000000000 -0500
+@@ -0,0 +1,74 @@
++/* longjmp for PowerPC.
++ Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Library General Public License as
++ published by the Free Software Foundation; either version 2 of the
++ License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Library General Public License for more details.
++
++ You should have received a copy of the GNU Library General Public
++ License along with the GNU C Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA. */
++
++#include <sysdep.h>
++#define _ASM
++#define _SETJMP_H
++#include <bits/setjmp.h>
++#include <bp-sym.h>
++#include <bp-asm.h>
++
++ENTRY (BP_SYM (__longjmp))
++ CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
++
++ lwz r1,(JB_GPR1*4)(r3)
++ lwz r2,(JB_GPR2*4)(r3)
++ lwz r0,(JB_LR*4)(r3)
++ lwz r14,((JB_GPRS+0)*4)(r3)
++ lfd fp14,((JB_FPRS+0*2)*4)(r3)
++ lwz r15,((JB_GPRS+1)*4)(r3)
++ lfd fp15,((JB_FPRS+1*2)*4)(r3)
++ lwz r16,((JB_GPRS+2)*4)(r3)
++ lfd fp16,((JB_FPRS+2*2)*4)(r3)
++ lwz r17,((JB_GPRS+3)*4)(r3)
++ lfd fp17,((JB_FPRS+3*2)*4)(r3)
++ lwz r18,((JB_GPRS+4)*4)(r3)
++ lfd fp18,((JB_FPRS+4*2)*4)(r3)
++ lwz r19,((JB_GPRS+5)*4)(r3)
++ lfd fp19,((JB_FPRS+5*2)*4)(r3)
++ lwz r20,((JB_GPRS+6)*4)(r3)
++ lfd fp20,((JB_FPRS+6*2)*4)(r3)
++ mtlr r0
++ lwz r21,((JB_GPRS+7)*4)(r3)
++ lfd fp21,((JB_FPRS+7*2)*4)(r3)
++ lwz r22,((JB_GPRS+8)*4)(r3)
++ lfd fp22,((JB_FPRS+8*2)*4)(r3)
++ lwz r0,(JB_CR*4)(r3)
++ lwz r23,((JB_GPRS+9)*4)(r3)
++ lfd fp23,((JB_FPRS+9*2)*4)(r3)
++ lwz r24,((JB_GPRS+10)*4)(r3)
++ lfd fp24,((JB_FPRS+10*2)*4)(r3)
++ lwz r25,((JB_GPRS+11)*4)(r3)
++ lfd fp25,((JB_FPRS+11*2)*4)(r3)
++ mtcrf 0xFF,r0
++ lwz r26,((JB_GPRS+12)*4)(r3)
++ lfd fp26,((JB_FPRS+12*2)*4)(r3)
++ lwz r27,((JB_GPRS+13)*4)(r3)
++ lfd fp27,((JB_FPRS+13*2)*4)(r3)
++ lwz r28,((JB_GPRS+14)*4)(r3)
++ lfd fp28,((JB_FPRS+14*2)*4)(r3)
++ lwz r29,((JB_GPRS+15)*4)(r3)
++ lfd fp29,((JB_FPRS+15*2)*4)(r3)
++ lwz r30,((JB_GPRS+16)*4)(r3)
++ lfd fp30,((JB_FPRS+16*2)*4)(r3)
++ lwz r31,((JB_GPRS+17)*4)(r3)
++ lfd fp31,((JB_FPRS+17*2)*4)(r3)
++ mr r3,r4
++ blr
++END (BP_SYM (__longjmp))
+--- /dev/null 2004-06-02 16:28:12.000000000 -0500
++++ glibc-2.2.5/sysdeps/powerpc/fpu/bits/setjmp.h 2004-09-03 19:00:38.000000000 -0500
+@@ -0,0 +1,47 @@
++/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Library General Public License as
++ published by the Free Software Foundation; either version 2 of the
++ License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Library General Public License for more details.
++
++ You should have received a copy of the GNU Library General Public
++ License along with the GNU C Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA. */
++
++/* Define the machine-dependent type `jmp_buf'. PowerPC version. */
++
++#ifndef _SETJMP_H
++# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
++#endif
++
++/* The previous bits/setjmp.h had __jmp_buf defined as a structure.
++ We use an array of 'long int' instead, to make writing the
++ assembler easier. Naturally, user code should not depend on
++ either representation. */
++
++#if defined __USE_MISC || defined _ASM
++# define JB_GPR1 0 /* Also known as the stack pointer */
++# define JB_GPR2 1
++# define JB_LR 2 /* The address we will return to */
++# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total */
++# define JB_CR 21 /* Condition code registers. */
++# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total */
++# define JB_SIZE (58*4)
++#endif
++
++#ifndef _ASM
++typedef long int __jmp_buf[58];
++#endif
++
++/* Test if longjmp to JMPBUF would unwind the frame
++ containing a local variable at ADDRESS. */
++#define _JMPBUF_UNWINDS(jmpbuf, address) \
++ ((void *) (address) < (void *) (jmpbuf)[JB_GPR1])
+--- /dev/null 2004-06-02 16:28:12.000000000 -0500
++++ glibc-2.2.5/sysdeps/powerpc/fpu/fclrexcpt.c 2004-09-03 19:00:38.000000000 -0500
+@@ -0,0 +1,48 @@
++/* Clear given exceptions in current floating-point environment.
++ Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <fenv_libc.h>
++
++#undef feclearexcept
++int
++__feclearexcept (int excepts)
++{
++ fenv_union_t u;
++
++ /* Get the current state. */
++ u.fenv = fegetenv_register ();
++
++ /* Clear the relevant bits. */
++ u.l[1] = u.l[1] & ~((-(excepts >> (31 - FPSCR_VX) & 1) & FE_ALL_INVALID)
++ | (excepts & FPSCR_STICKY_BITS));
++
++ /* Put the new state in effect. */
++ fesetenv_register (u.fenv);
++
++ /* Success. */
++ return 0;
++}
++
++#include <shlib-compat.h>
++#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
++strong_alias (__feclearexcept, __old_feclearexcept)
++compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
++#endif
++
++versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);
+--- /dev/null 2004-06-02 16:28:12.000000000 -0500
++++ glibc-2.2.5/sysdeps/powerpc/fpu/fe_nomask.c 2004-09-03 19:00:38.000000000 -0500
+@@ -0,0 +1,32 @@
++/* Procedure definition for FE_NOMASK_ENV.
++ Copyright (C) 1997 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <fenv.h>
++#include <errno.h>
++
++/* This is presently a stub, until it's decided how the kernels should
++ support this. */
++
++const fenv_t *
++__fe_nomask_env(void)
++{
++ __set_errno (ENOSYS);
++ return FE_ENABLED_ENV;
++}
++stub_warning (__fe_nomask_env)
+--- /dev/null 2004-06-02 16:28:12.000000000 -0500
++++ glibc-2.2.5/sysdeps/powerpc/fpu/fprrest.S 2004-09-03 19:00:38.000000000 -0500
+@@ -0,0 +1,94 @@
++/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++/*
++ Floating Point Registers (FPRs) restore routine
++*/
++
++#include <sysdep.h>
++
++ENTRY(_restfpr_all)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf14)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_14)
++C_TEXT(_restf14):
++C_TEXT(_restfpr_14): lfd fp14,-144(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf15)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_15)
++C_TEXT(_restf15):
++C_TEXT(_restfpr_15): lfd fp15,-136(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf16)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_16)
++C_TEXT(_restf16):
++C_TEXT(_restfpr_16): lfd fp16,-128(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf17)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_17)
++C_TEXT(_restf17):
++C_TEXT(_restfpr_17): lfd fp17,-120(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf18)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_18)
++C_TEXT(_restf18):
++C_TEXT(_restfpr_18): lfd fp18,-112(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf19)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_19)
++C_TEXT(_restf19):
++C_TEXT(_restfpr_19): lfd fp19,-104(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf20)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_20)
++C_TEXT(_restf20):
++C_TEXT(_restfpr_20): lfd fp20,-96(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf21)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_21)
++C_TEXT(_restf21):
++C_TEXT(_restfpr_21): lfd fp21,-88(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf22)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_22)
++C_TEXT(_restf22):
++C_TEXT(_restfpr_22): lfd fp22,-80(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf23)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_23)
++C_TEXT(_restf23):
++C_TEXT(_restfpr_23): lfd fp23,-72(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf24)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_24)
++C_TEXT(_restf24):
++C_TEXT(_restfpr_24): lfd fp24,-64(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf25)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_25)
++C_TEXT(_restf25):
++C_TEXT(_restfpr_25): lfd fp25,-56(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf26)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_26)
++C_TEXT(_restf26):
++C_TEXT(_restfpr_26): lfd fp26,-48(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf27)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_27)
++C_TEXT(_restf27):
++C_TEXT(_restfpr_27): lfd fp27,-40(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf28)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_28)
++C_TEXT(_restf28):
++C_TEXT(_restfpr_28): lfd fp28,-32(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf29)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_29)
++C_TEXT(_restf29):
++C_TEXT(_restfpr_29): lwz r0,8(r1) #get return address from frame
++ lfd fp29,-24(r1) #restore f29
++ mtlr r0 #move return address to LR
++ lfd fp30,-16(r1) #restore f30
++ lfd fp31,-8(r1) #restore f31
++ blr #return
+--- /dev/null 2004-06-02 16:28:12.000000000 -0500
++++ glibc-2.2.5/sysdeps/powerpc/fpu/fprsave.S 2004-09-03 19:00:38.000000000 -0500
+@@ -0,0 +1,93 @@
++/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++/*
++ Floating Point Registers (FPRs) save routine
++*/
++
++#include <sysdep.h>
++
++ENTRY(_savefpr_all)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef14)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_14)
++C_TEXT(_savef14):
++C_TEXT(_savefpr_14): stfd fp14,-144(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef15)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_15)
++C_TEXT(_savef15):
++C_TEXT(_savefpr_15): stfd fp15,-136(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef16)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_16)
++C_TEXT(_savef16):
++C_TEXT(_savefpr_16): stfd fp16,-128(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef17)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_17)
++C_TEXT(_savef17):
++C_TEXT(_savefpr_17): stfd fp17,-120(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef18)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_18)
++C_TEXT(_savef18):
++C_TEXT(_savefpr_18): stfd fp18,-112(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef19)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_19)
++C_TEXT(_savef19):
++C_TEXT(_savefpr_19): stfd fp19,-104(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef20)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_20)
++C_TEXT(_savef20):
++C_TEXT(_savefpr_20): stfd fp20,-96(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef21)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_21)
++C_TEXT(_savef21):
++C_TEXT(_savefpr_21): stfd fp21,-88(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef22)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_22)
++C_TEXT(_savef22):
++C_TEXT(_savefpr_22): stfd fp22,-80(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef23)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_23)
++C_TEXT(_savef23):
++C_TEXT(_savefpr_23): stfd fp23,-72(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef24)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_24)
++C_TEXT(_savef24):
++C_TEXT(_savefpr_24): stfd fp24,-64(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef25)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_25)
++C_TEXT(_savef25):
++C_TEXT(_savefpr_25): stfd fp25,-56(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef26)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_26)
++C_TEXT(_savef26):
++C_TEXT(_savefpr_26): stfd fp26,-48(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef27)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_27)
++C_TEXT(_savef27):
++C_TEXT(_savefpr_27): stfd fp27,-40(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef28)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_28)
++C_TEXT(_savef28):
++C_TEXT(_savefpr_28): stfd fp28,-32(r1)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef29)
++ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_29)
++C_TEXT(_savef29):
++C_TEXT(_savefpr_29): stfd fp29,-24(r1) #save f29
++ stfd fp30,-16(r1) #save f30
++ stfd fp31,-8(r1) #save f31
++ stw r0,8(r1) #save LR in callers frame
++ blr #return
+--- /dev/null 2004-06-02 16:28:12.000000000 -0500
++++ glibc-2.2.5/sysdeps/powerpc/fpu/fpu_control.h 2004-09-03 19:00:38.000000000 -0500
+@@ -0,0 +1,67 @@
++/* FPU control word definitions. PowerPC version.
++ Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _FPU_CONTROL_H
++#define _FPU_CONTROL_H
++
++/* rounding control */
++#define _FPU_RC_NEAREST 0x00 /* RECOMMENDED */
++#define _FPU_RC_DOWN 0x03
++#define _FPU_RC_UP 0x02
++#define _FPU_RC_ZERO 0x01
++
++#define _FPU_MASK_NI 0x04 /* non-ieee mode */
++
++/* masking of interrupts */
++#define _FPU_MASK_ZM 0x10 /* zero divide */
++#define _FPU_MASK_OM 0x40 /* overflow */
++#define _FPU_MASK_UM 0x20 /* underflow */
++#define _FPU_MASK_XM 0x08 /* inexact */
++#define _FPU_MASK_IM 0x80 /* invalid operation */
++
++#define _FPU_RESERVED 0xffffff00 /* These bits are reserved are not changed. */
++
++/* The fdlibm code requires no interrupts for exceptions. */
++#define _FPU_DEFAULT 0x00000000 /* Default value. */
++
++/* IEEE: same as above, but (some) exceptions;
++ we leave the 'inexact' exception off.
++ */
++#define _FPU_IEEE 0x000000f0
++
++/* Type of the control word. */
++typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__)));
++
++/* Macros for accessing the hardware control word. */
++#define _FPU_GETCW(cw) ( { \
++ union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \
++ __asm__ ("mffs 0; stfd%U0 0,%0" : "=m" (tmp.d) : : "fr0"); \
++ (cw)=tmp.cw[1]; \
++ tmp.cw[1]; } )
++#define _FPU_SETCW(cw) { \
++ union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \
++ tmp.cw[0] = 0xFFF80000; /* More-or-less arbitrary; this is a QNaN. */ \
++ tmp.cw[1] = cw; \
++ __asm__ ("lfd%U0 0,%0; mtfsf 255,0" : : "m" (tmp.d) : "fr0"); \
++}
++
++/* Default control word set at startup. */
++extern fpu_control_t __fpu_control;
++
++#endif /* _FPU_CONTROL_H */
+--- /dev/null 2004-06-02 16:28:12.000000000 -0500
++++ glibc-2.2.5/sysdeps/powerpc/fpu/setjmp.S 2004-09-03 19:00:38.000000000 -0500
+@@ -0,0 +1,73 @@
++/* setjmp for PowerPC.
++ Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Library General Public License as
++ published by the Free Software Foundation; either version 2 of the
++ License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Library General Public License for more details.
++
++ You should have received a copy of the GNU Library General Public
++ License along with the GNU C Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA. */
++
++#include <sysdep.h>
++#define _ASM
++#define _SETJMP_H
++#include <bits/setjmp.h>
++#include <bp-sym.h>
++#include <bp-asm.h>
++
++ENTRY (BP_SYM (__sigsetjmp))
++ CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
++
++ stw r1,(JB_GPR1*4)(3)
++ mflr r0
++ stw r2,(JB_GPR2*4)(3)
++ stw r14,((JB_GPRS+0)*4)(3)
++ stfd fp14,((JB_FPRS+0*2)*4)(3)
++ stw r0,(JB_LR*4)(3)
++ stw r15,((JB_GPRS+1)*4)(3)
++ stfd fp15,((JB_FPRS+1*2)*4)(3)
++ mfcr r0
++ stw r16,((JB_GPRS+2)*4)(3)
++ stfd fp16,((JB_FPRS+2*2)*4)(3)
++ stw r0,(JB_CR*4)(3)
++ stw r17,((JB_GPRS+3)*4)(3)
++ stfd fp17,((JB_FPRS+3*2)*4)(3)
++ stw r18,((JB_GPRS+4)*4)(3)
++ stfd fp18,((JB_FPRS+4*2)*4)(3)
++ stw r19,((JB_GPRS+5)*4)(3)
++ stfd fp19,((JB_FPRS+5*2)*4)(3)
++ stw r20,((JB_GPRS+6)*4)(3)
++ stfd fp20,((JB_FPRS+6*2)*4)(3)
++ stw r21,((JB_GPRS+7)*4)(3)
++ stfd fp21,((JB_FPRS+7*2)*4)(3)
++ stw r22,((JB_GPRS+8)*4)(3)
++ stfd fp22,((JB_FPRS+8*2)*4)(3)
++ stw r23,((JB_GPRS+9)*4)(3)
++ stfd fp23,((JB_FPRS+9*2)*4)(3)
++ stw r24,((JB_GPRS+10)*4)(3)
++ stfd fp24,((JB_FPRS+10*2)*4)(3)
++ stw r25,((JB_GPRS+11)*4)(3)
++ stfd fp25,((JB_FPRS+11*2)*4)(3)
++ stw r26,((JB_GPRS+12)*4)(3)
++ stfd fp26,((JB_FPRS+12*2)*4)(3)
++ stw r27,((JB_GPRS+13)*4)(3)
++ stfd fp27,((JB_FPRS+13*2)*4)(3)
++ stw r28,((JB_GPRS+14)*4)(3)
++ stfd fp28,((JB_FPRS+14*2)*4)(3)
++ stw r29,((JB_GPRS+15)*4)(3)
++ stfd fp29,((JB_FPRS+15*2)*4)(3)
++ stw r30,((JB_GPRS+16)*4)(3)
++ stfd fp30,((JB_FPRS+16*2)*4)(3)
++ stw r31,((JB_GPRS+17)*4)(3)
++ stfd fp31,((JB_FPRS+17*2)*4)(3)
++ b JUMPTARGET (BP_SYM (__sigjmp_save))
++END (BP_SYM (__sigsetjmp))
+--- glibc-2.2.5/sysdeps/powerpc/fpu_control.h~glibc-2.2.5-hhl-powerpc-fpu.patch
++++ glibc-2.2.5/sysdeps/powerpc/fpu_control.h
+-/* FPU control word definitions. PowerPC version.
+- Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#ifndef _FPU_CONTROL_H
+-#define _FPU_CONTROL_H
+-
+-/* rounding control */
+-#define _FPU_RC_NEAREST 0x00 /* RECOMMENDED */
+-#define _FPU_RC_DOWN 0x03
+-#define _FPU_RC_UP 0x02
+-#define _FPU_RC_ZERO 0x01
+-
+-#define _FPU_MASK_NI 0x04 /* non-ieee mode */
+-
+-/* masking of interrupts */
+-#define _FPU_MASK_ZM 0x10 /* zero divide */
+-#define _FPU_MASK_OM 0x40 /* overflow */
+-#define _FPU_MASK_UM 0x20 /* underflow */
+-#define _FPU_MASK_XM 0x08 /* inexact */
+-#define _FPU_MASK_IM 0x80 /* invalid operation */
+-
+-#define _FPU_RESERVED 0xffffff00 /* These bits are reserved are not changed. */
+-
+-/* The fdlibm code requires no interrupts for exceptions. */
+-#define _FPU_DEFAULT 0x00000000 /* Default value. */
+-
+-/* IEEE: same as above, but (some) exceptions;
+- we leave the 'inexact' exception off.
+- */
+-#define _FPU_IEEE 0x000000f0
+-
+-/* Type of the control word. */
+-typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__)));
+-
+-/* Macros for accessing the hardware control word. */
+-#define _FPU_GETCW(cw) ( { \
+- union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \
+- __asm__ ("mffs 0; stfd%U0 0,%0" : "=m" (tmp.d) : : "fr0"); \
+- (cw)=tmp.cw[1]; \
+- tmp.cw[1]; } )
+-#define _FPU_SETCW(cw) { \
+- union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \
+- tmp.cw[0] = 0xFFF80000; /* More-or-less arbitrary; this is a QNaN. */ \
+- tmp.cw[1] = cw; \
+- __asm__ ("lfd%U0 0,%0; mtfsf 255,0" : : "m" (tmp.d) : "fr0"); \
+-}
+-
+-/* Default control word set at startup. */
+-extern fpu_control_t __fpu_control;
+-
+-#endif /* _FPU_CONTROL_H */
+--- glibc-2.2.5/sysdeps/powerpc/setjmp.S~glibc-2.2.5-hhl-powerpc-fpu.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/powerpc/setjmp.S 2004-09-03 19:00:38.000000000 -0500
+@@ -24,6 +24,8 @@
+ #include <bp-sym.h>
+ #include <bp-asm.h>
+
++/* The FPU stores have been removed from this file - see fpu/setjmp.S */
++
+ ENTRY (BP_SYM (__sigsetjmp))
+ CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
+
+@@ -31,43 +33,25 @@
+ mflr r0
+ stw r2,(JB_GPR2*4)(3)
+ stw r14,((JB_GPRS+0)*4)(3)
+- stfd fp14,((JB_FPRS+0*2)*4)(3)
+ stw r0,(JB_LR*4)(3)
+ stw r15,((JB_GPRS+1)*4)(3)
+- stfd fp15,((JB_FPRS+1*2)*4)(3)
+ mfcr r0
+ stw r16,((JB_GPRS+2)*4)(3)
+- stfd fp16,((JB_FPRS+2*2)*4)(3)
+ stw r0,(JB_CR*4)(3)
+ stw r17,((JB_GPRS+3)*4)(3)
+- stfd fp17,((JB_FPRS+3*2)*4)(3)
+ stw r18,((JB_GPRS+4)*4)(3)
+- stfd fp18,((JB_FPRS+4*2)*4)(3)
+ stw r19,((JB_GPRS+5)*4)(3)
+- stfd fp19,((JB_FPRS+5*2)*4)(3)
+ stw r20,((JB_GPRS+6)*4)(3)
+- stfd fp20,((JB_FPRS+6*2)*4)(3)
+ stw r21,((JB_GPRS+7)*4)(3)
+- stfd fp21,((JB_FPRS+7*2)*4)(3)
+ stw r22,((JB_GPRS+8)*4)(3)
+- stfd fp22,((JB_FPRS+8*2)*4)(3)
+ stw r23,((JB_GPRS+9)*4)(3)
+- stfd fp23,((JB_FPRS+9*2)*4)(3)
+ stw r24,((JB_GPRS+10)*4)(3)
+- stfd fp24,((JB_FPRS+10*2)*4)(3)
+ stw r25,((JB_GPRS+11)*4)(3)
+- stfd fp25,((JB_FPRS+11*2)*4)(3)
+ stw r26,((JB_GPRS+12)*4)(3)
+- stfd fp26,((JB_FPRS+12*2)*4)(3)
+ stw r27,((JB_GPRS+13)*4)(3)
+- stfd fp27,((JB_FPRS+13*2)*4)(3)
+ stw r28,((JB_GPRS+14)*4)(3)
+- stfd fp28,((JB_FPRS+14*2)*4)(3)
+ stw r29,((JB_GPRS+15)*4)(3)
+- stfd fp29,((JB_FPRS+15*2)*4)(3)
+ stw r30,((JB_GPRS+16)*4)(3)
+- stfd fp30,((JB_FPRS+16*2)*4)(3)
+ stw r31,((JB_GPRS+17)*4)(3)
+- stfd fp31,((JB_FPRS+17*2)*4)(3)
+ b JUMPTARGET (BP_SYM (__sigjmp_save))
+ END (BP_SYM (__sigsetjmp))
diff --git a/recipes/glibc/glibc-2.2.5/glibc-2.2.5-mips-build-gmon.patch b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-mips-build-gmon.patch
new file mode 100644
index 0000000000..9a9eb37c7d
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-mips-build-gmon.patch
@@ -0,0 +1,88 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/mips/machine-gmon.h~glibc-2.2.5-mips-build-gmon.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/mips/machine-gmon.h 2004-09-03 19:00:38.000000000 -0500
+@@ -17,42 +17,52 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+-#define _MCOUNT_DECL static void __mcount
++#define _MCOUNT_DECL(frompc,selfpc) \
++static void __attribute_used__ __mcount (u_long frompc, u_long selfpc)
+
+ /* Call __mcount with our the return PC for our caller,
+ and the return PC our caller will return to. */
+ #ifdef __PIC__
+ #define CPLOAD ".cpload $25;"
++#define CPRESTORE ".cprestore 44\n\t"
+ #else
+ #define CPLOAD
++#define CPRESTORE
+ #endif
+
+ #define MCOUNT asm(\
+- ".globl _mcount;" \
+- ".align 2;" \
+- ".type _mcount,@function;" \
+- "_mcount:;" \
+- ".set noreorder;" \
+- ".set noat;" \
++ ".globl _mcount;\n\t" \
++ ".align 2;\n\t" \
++ ".type _mcount,@function;\n\t" \
++ ".ent _mcount\n\t" \
++ "_mcount:\n\t" \
++ ".frame $sp,44,$31\n\t" \
++ ".set noreorder;\n\t" \
++ ".set noat;\n\t" \
+ CPLOAD \
+- "sw $4,8($29);" \
+- "sw $5,12($29);" \
+- "sw $6,16($29);" \
+- "sw $7,20($29);" \
+- "sw $1,0($29);" \
+- "sw $31,4($29);" \
+- "move $5,$31;" \
+- "move $4,$1;" \
+- "jal __mcount;" \
+- "nop;" \
+- "lw $4,8($29);" \
+- "lw $5,12($29);" \
+- "lw $6,16($29);" \
+- "lw $7,20($29);" \
+- "lw $31,4($29);" \
+- "lw $1,0($29);" \
+- "addu $29,$29,8;" \
+- "j $31;" \
+- "move $31,$1;" \
+- ".set reorder;" \
+- ".set at");
++ "subu $29,$29,48;\n\t" \
++ CPRESTORE \
++ "sw $4,24($29);\n\t" \
++ "sw $5,28($29);\n\t" \
++ "sw $6,32($29);\n\t" \
++ "sw $7,36($29);\n\t" \
++ "sw $2,40($29);\n\t" \
++ "sw $1,16($29);\n\t" \
++ "sw $31,20($29);\n\t" \
++ "move $5,$31;\n\t" \
++ "move $4,$1;\n\t" \
++ "jal __mcount;\n\t" \
++ "nop;\n\t" \
++ "lw $4,24($29);\n\t" \
++ "lw $5,28($29);\n\t" \
++ "lw $6,32($29);\n\t" \
++ "lw $7,36($29);\n\t" \
++ "lw $2,40($29);\n\t" \
++ "lw $31,20($29);\n\t" \
++ "lw $1,16($29);\n\t" \
++ "addu $29,$29,56;\n\t" \
++ "j $31;\n\t" \
++ "move $31,$1;\n\t" \
++ ".set reorder;\n\t" \
++ ".set at\n\t" \
++ ".end _mcount");
diff --git a/recipes/glibc/glibc-2.2.5/glibc-2.2.5-mips-clone-local-label.patch b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-mips-clone-local-label.patch
new file mode 100644
index 0000000000..18d64201fa
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-mips-clone-local-label.patch
@@ -0,0 +1,24 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/unix/sysv/linux/mips/clone.S~glibc-2.2.5-mips-clone-local-label.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/unix/sysv/linux/mips/clone.S 2004-09-03 19:00:38.000000000 -0500
+@@ -63,7 +63,7 @@
+ syscall
+
+ bnez a3,error
+- beqz v0,__thread_start
++ beqz v0,.Lthread_start
+
+ /* Successful return from the parent */
+ addiu sp,32
+@@ -85,6 +85,7 @@
+ debug info. */
+
+ ENTRY(__thread_start)
++.Lthread_start:
+ /* cp is already loaded. */
+ .cprestore 16
+ /* The stackframe has been created on entry of clone(). */
diff --git a/recipes/glibc/glibc-2.2.5/glibc-2.2.5-ppc405erratum77.patch b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-ppc405erratum77.patch
new file mode 100644
index 0000000000..7a27bacea1
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/glibc-2.2.5-ppc405erratum77.patch
@@ -0,0 +1,65 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/powerpc/atomicity.h~glibc-2.2.5-ppc405erratum77.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/powerpc/atomicity.h 2004-09-03 19:00:38.000000000 -0500
+@@ -28,6 +28,17 @@
+ # define __ATOMICITY_INLINE inline
+ #endif
+
++#ifdef __PPC405__
++/* workaround for PPC405 erratum #77 - Mark Hatle, dank. References:
++ http://www-3.ibm.com/chips/techlib/techlib.nsf/techdocs/89DED00DEBFF54BF87256A8000491BA2/$file/405CR_C_errata_1_2.pdf
++ http://ppc.bkbits.net:8080/linuxppc_2_4_devel/cset@1.489
++ http://www.kegel.com/xgcc3/ppc405erratum77.html
++ FIXME: using dbct instead of sync would be faster */
++#define __LIBC_PPC405_ERR77_SYNC "sync \n\t"
++#else
++#define __LIBC_PPC405_ERR77_SYNC
++#endif
++
+ static __ATOMICITY_INLINE int
+ __attribute__ ((unused))
+ exchange_and_add (volatile uint32_t *mem, int val)
+@@ -36,6 +47,7 @@
+ __asm__ ("\n\
+ 0: lwarx %0,0,%2 \n\
+ add%I3 %1,%0,%3 \n\
++ " __LIBC_PPC405_ERR77_SYNC "\n\
+ stwcx. %1,0,%2 \n\
+ bne- 0b \n\
+ " : "=&b"(result), "=&r"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
+@@ -50,6 +62,7 @@
+ __asm__ ("\n\
+ 0: lwarx %0,0,%1 \n\
+ add%I2 %0,%0,%2 \n\
++ " __LIBC_PPC405_ERR77_SYNC "\n\
+ stwcx. %0,0,%1 \n\
+ bne- 0b \n\
+ " : "=&b"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
+@@ -65,6 +78,7 @@
+ sub%I2c. %0,%0,%2 \n\
+ cntlzw %0,%0 \n\
+ bne- 1f \n\
++ " __LIBC_PPC405_ERR77_SYNC "\n\
+ stwcx. %3,0,%1 \n\
+ bne- 0b \n\
+ 1: \n\
+@@ -79,6 +93,7 @@
+ long int result;
+ __asm__ ("\n\
+ 0: lwarx %0,0,%1 \n\
++ " __LIBC_PPC405_ERR77_SYNC "\n\
+ stwcx. %2,0,%1 \n\
+ bne- 0b \n\
+ " : "=&r"(result) : "r"(p), "r"(newval) : "cr0", "memory");
+@@ -94,6 +109,7 @@
+ 0: lwarx %0,0,%1 \n\
+ cmpwi %0,0 \n\
+ bne- 1f \n\
++ " __LIBC_PPC405_ERR77_SYNC "\n\
+ stwcx. %2,0,%1 \n\
+ bne- 0b \n\
+ 1: \n\
diff --git a/recipes/glibc/glibc-2.2.5/glibc-2.3.2-allow-solaris.patch b/recipes/glibc/glibc-2.2.5/glibc-2.3.2-allow-solaris.patch
new file mode 100644
index 0000000000..bda01b4267
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/glibc-2.3.2-allow-solaris.patch
@@ -0,0 +1,41 @@
+See http://sources.redhat.com/ml/crossgcc/2003-11/msg00111.html
+Might fix error
+... gcc-3.2.3-glibc-2.3.2/build-glibc/csu/version-info.h:8: too many decimal points in floating constant
+make[2]: ***
+when building on Solaris. I haven't seen this be needed yet, but what the heck,
+here it is in case someone needs it.
+
+Retrieved with http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/csu/Makefile.diff?r1=1.70&r2=1.71&cvsroot=glibc
+
+Revision 1.71, Thu Sep 25 20:29:39 2003 UTC (8 months, 2 weeks ago) by drepper
+Branch: MAIN
+CVS Tags: glibc-2_3_3
+
+($(objpfx)version-info.h): Fix sed script to handle banners.
+
+===================================================================
+RCS file: /cvs/glibc/libc/csu/Makefile,v
+retrieving revision 1.70
+retrieving revision 1.71
+diff -u -r1.70 -r1.71
+--- libc/csu/Makefile 2003/06/26 07:27:39 1.70
++++ libc/csu/Makefile 2003/09/25 20:29:39 1.71
+@@ -222,14 +222,14 @@
+ if [ -z "$$os" ]; then \
+ os=Linux; \
+ fi; \
+- echo "\"Compiled on a $$os $$version system" \
+- "on `date +%Y-%m-%d`.\\n\"" ;; \
++ printf '"Compiled on a %s %s system on %s.\\n"\n' \
++ "$os" "$version" "`date +%Y-%m-%d`" ;; \
+ *) ;; \
+ esac; \
+ files="$(all-Banner-files)"; \
+ if test -n "$$files"; then \
+- echo "\"Available extensions:\\n\""; \
++ printf '"Available extensions:\\n"\n'; \
+ sed -e '/^#/d' -e 's/^[[:space:]]*/ /' \
+- -e 's/\(^.*$$\)/\"\1\\n\"/' $$files; \
++ -e 's/^\(.*\)$$/\"\1\\n\"/' $$files; \
+ fi) > $@T
+ mv -f $@T $@
diff --git a/recipes/glibc/glibc-2.2.5/glibc-2.3.2-initfini.patch b/recipes/glibc/glibc-2.2.5/glibc-2.3.2-initfini.patch
new file mode 100644
index 0000000000..8bfbcb173a
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/glibc-2.3.2-initfini.patch
@@ -0,0 +1,12 @@
+diff -urNd glibc-2.3.2-ct25/csu/Makefile glibc-2.3.2/csu/Makefile
+--- glibc-2.3.2-ct25/csu/Makefile 2004-06-25 13:47:54.000000000 +0200
++++ glibc-2.3.2/csu/Makefile 2004-06-25 13:54:33.000000000 +0200
+@@ -99,7 +99,7 @@
+ $(objpfx)crt%.o: $(objpfx)crt%.S $(objpfx)defs.h
+ $(compile.S) -g0 $(ASFLAGS-.os) -o $@
+
+-CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time)
++CFLAGS-initfini.s = -O1 -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time)
+
+ vpath initfini.c $(full_config_sysdirs)
+
diff --git a/recipes/glibc/glibc-2.2.5/glibc-drow-sh.patch b/recipes/glibc/glibc-2.2.5/glibc-drow-sh.patch
new file mode 100644
index 0000000000..c0e4bbd58c
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/glibc-drow-sh.patch
@@ -0,0 +1,30 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/unix/sysv/linux/kernel-features.h~glibc-drow-sh.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/unix/sysv/linux/kernel-features.h 2004-09-03 19:00:38.000000000 -0500
+@@ -134,11 +134,20 @@
+
+ /* The changed st_ino field appeared in 2.4.0-test6. But we cannot
+ distinguish this version from other 2.4.0 releases. Therefore play
+- save and assume it available is for 2.4.1 and up. */
+-#if __LINUX_KERNEL_VERSION >= 132097
++ save and assume it available is for 2.4.1 and up. However, SH is lame,
++ and still does not have a 64-bit inode field. */
++#if __LINUX_KERNEL_VERSION >= 132097 \
++ && !defined __sh__
+ # define __ASSUME_ST_INO_64_BIT 1
+ #endif
+
++/* SH kernels got stat64, mmap2, and truncate64 during 2.4.0-test. */
++#if __LINUX_KERNEL_VERSION >= 132096 && defined __sh__
++# define __ASSUME_TRUNCATE64_SYSCALL 1
++# define __ASSUME_MMAP2_SYSCALL 1
++# define __ASSUME_STAT64_SYSCALL 1
++#endif
++
+ /* To support locking of large files a new fcntl() syscall was introduced
+ in 2.4.0-test7. We test for 2.4.1 for the earliest version we know
+ the syscall is available. */
diff --git a/recipes/glibc/glibc-2.2.5/glibc-linuxthreads-2.3.2-initfini.patch b/recipes/glibc/glibc-2.2.5/glibc-linuxthreads-2.3.2-initfini.patch
new file mode 100644
index 0000000000..4556e858d2
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/glibc-linuxthreads-2.3.2-initfini.patch
@@ -0,0 +1,12 @@
+diff -urNd glibc-2.3.2-ct25/linuxthreads/Makefile glibc-2.3.2/linuxthreads/Makefile
+--- glibc-2.3.2-ct25/linuxthreads/Makefile 2004-06-25 13:48:03.000000000 +0200
++++ glibc-2.3.2/linuxthreads/Makefile 2004-06-25 13:53:02.000000000 +0200
+@@ -81,7 +81,7 @@
+ extra-objs += crti.o crtn.o
+ omit-deps += crti crtn
+
+-CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time)
++CFLAGS-pt-initfini.s = -O1 -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time)
+ endif
+
+ librt-tests = ex10 ex11
diff --git a/recipes/glibc/glibc-2.2.5/glibc-test-lowram.patch b/recipes/glibc/glibc-2.2.5/glibc-test-lowram.patch
new file mode 100644
index 0000000000..658d14bac6
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/glibc-test-lowram.patch
@@ -0,0 +1,19 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/malloc/tst-calloc.c~glibc-test-lowram.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/malloc/tst-calloc.c 2004-09-03 19:00:38.000000000 -0500
+@@ -24,9 +24,8 @@
+ #include <stdio.h>
+
+
+-/* Number of samples per size. */
+-#define N 50000
+-
++/* Number of samples per size. This is also the maximum memory consumption in kilobytes. */
++#define N 8000
+
+ static void
+ fixed_test (int size)
diff --git a/recipes/glibc/glibc-2.2.5/initfini-alpha.patch b/recipes/glibc/glibc-2.2.5/initfini-alpha.patch
new file mode 100644
index 0000000000..94dc2aba25
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/initfini-alpha.patch
@@ -0,0 +1,128 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/alpha/elf/initfini.c~initfini-alpha.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/alpha/elf/initfini.c 2004-09-03 19:00:38.000000000 -0500
+@@ -37,62 +37,62 @@
+ files, all of which may have different GP values. So we must reload
+ the GP value from crti.o in crtn.o. */
+
+-__asm__ ("
+-
+-#include \"defs.h\"
+-
+-/*@HEADER_ENDS*/
+-
+-/*@_init_PROLOG_BEGINS*/
+- .section .init, \"ax\", @progbits
+- .globl _init
+- .ent _init
+-_init:
+- ldgp $29, 0($27)
+- subq $30, 16, $30
+- lda $27, __gmon_start__
+- stq $26, 0($30)
+- stq $29, 8($30)
+- .prologue 1
+- beq $27, 1f
+- jsr $26, ($27), __gmon_start__
+- ldq $29, 8($30)
+-1:
+- .align 3
+- .end _init
+- .size _init, 0
+-/*@_init_PROLOG_ENDS*/
+-
+-/*@_init_EPILOG_BEGINS*/
+- .section .init, \"ax\", @progbits
+- ldq $26, 0($30)
+- ldq $29, 8($30)
+- addq $30, 16, $30
+- ret
+-/*@_init_EPILOG_ENDS*/
+-
+-/*@_fini_PROLOG_BEGINS*/
+- .section .fini, \"ax\", @progbits
+- .globl _fini
+- .ent _fini
+-_fini:
+- ldgp $29, 0($27)
+- subq $30, 16, $30
+- stq $26, 0($30)
+- stq $29, 8($30)
+- .prologue 1
+- .align 3
+- .end _fini
+- .size _fini, 0
+-/*@_fini_PROLOG_ENDS*/
+-
+-/*@_fini_EPILOG_BEGINS*/
+- .section .fini, \"ax\", @progbits
+- ldq $26, 0($30)
+- ldq $29, 8($30)
+- addq $30, 16, $30
+- ret
+-/*@_fini_EPILOG_ENDS*/
+-
+-/*@TRAILER_BEGINS*/
++__asm__ ("\n\
++\n\
++#include \"defs.h\"\n\
++\n\
++/*@HEADER_ENDS*/\n\
++\n\
++/*@_init_PROLOG_BEGINS*/\n\
++ .section .init, \"ax\", @progbits\n\
++ .globl _init\n\
++ .ent _init\n\
++_init:\n\
++ ldgp $29, 0($27)\n\
++ subq $30, 16, $30\n\
++ lda $27, __gmon_start__\n\
++ stq $26, 0($30)\n\
++ stq $29, 8($30)\n\
++ .prologue 1\n\
++ beq $27, 1f\n\
++ jsr $26, ($27), __gmon_start__\n\
++ ldq $29, 8($30)\n\
++1:\n\
++ .align 3\n\
++ .end _init\n\
++ .size _init, 0\n\
++/*@_init_PROLOG_ENDS*/\n\
++\n\
++/*@_init_EPILOG_BEGINS*/\n\
++ .section .init, \"ax\", @progbits\n\
++ ldq $26, 0($30)\n\
++ ldq $29, 8($30)\n\
++ addq $30, 16, $30\n\
++ ret\n\
++/*@_init_EPILOG_ENDS*/\n\
++\n\
++/*@_fini_PROLOG_BEGINS*/\n\
++ .section .fini, \"ax\", @progbits\n\
++ .globl _fini\n\
++ .ent _fini\n\
++_fini:\n\
++ ldgp $29, 0($27)\n\
++ subq $30, 16, $30\n\
++ stq $26, 0($30)\n\
++ stq $29, 8($30)\n\
++ .prologue 1\n\
++ .align 3\n\
++ .end _fini\n\
++ .size _fini, 0\n\
++/*@_fini_PROLOG_ENDS*/\n\
++\n\
++/*@_fini_EPILOG_BEGINS*/\n\
++ .section .fini, \"ax\", @progbits\n\
++ ldq $26, 0($30)\n\
++ ldq $29, 8($30)\n\
++ addq $30, 16, $30\n\
++ ret\n\
++/*@_fini_EPILOG_ENDS*/\n\
++\n\
++/*@TRAILER_BEGINS*/\n\
+ ");
diff --git a/recipes/glibc/glibc-2.2.5/initfini-flags.patch b/recipes/glibc/glibc-2.2.5/initfini-flags.patch
new file mode 100644
index 0000000000..1c9bd2bcf2
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/initfini-flags.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- glibc-2.2.5/csu/Makefile~glibc-2.3.2-initfini
++++ glibc-2.2.5/csu/Makefile
+@@ -92,7 +92,7 @@
+ $(objpfx)crt%.o: $(objpfx)crt%.S $(objpfx)defs.h
+ $(compile.S) -g0 $(ASFLAGS-.os) -o $@
+
+-CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions
++CFLAGS-initfini.s = -O1 -g0 -fPIC -fno-inline-functions
+
+ vpath initfini.c $(full_config_sysdirs)
+
diff --git a/recipes/glibc/glibc-2.2.5/initfini-sh.patch b/recipes/glibc/glibc-2.2.5/initfini-sh.patch
new file mode 100644
index 0000000000..2566cd933a
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/initfini-sh.patch
@@ -0,0 +1,248 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/sh/elf/initfini.c~initfini-sh.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/sh/elf/initfini.c 2004-09-03 19:00:39.000000000 -0500
+@@ -27,122 +27,122 @@
+ * crtn.s puts the corresponding function epilogues
+ in the .init and .fini sections. */
+
+-__asm__ ("
+-
+-#include \"defs.h\"
+-#define SHARED
+-
+-/*@HEADER_ENDS*/
+-
+-/*@TESTS_BEGIN*/
+-
+-/*@TESTS_END*/
+-
+-/*@_init_PROLOG_BEGINS*/
+- .section .init
+- .align 5
+- .global _init
+- .type _init,@function
+-_init:
+- mov.l r12,@-r15
+- mov.l r14,@-r15
+- sts.l pr,@-r15
+-#ifdef SHARED
+- mova .L22,r0
+- mov.l .L22,r12
+- add r0,r12
+- mova .L23,r0
+- mov.l .L23,r1
+- add r0,r1
+-#else
+- mov.l .L23,r1
+-#endif
+- jsr @r1
+- mov r15,r14
+- bra 1f
+- nop
+- .align 2
+-#ifdef SHARED
+-.L22:
+- .long _GLOBAL_OFFSET_TABLE_
+-.L23:
+- .long __gmon_start__@PLT
+-#else
+-.L23:
+- .long __gmon_start__
+-#endif
+- .data
+- .global __fpscr_values
+-__fpscr_values:
+- .long 0
+- .long 0x80000
+- .previous
+-1:
+- ALIGN
+- END_INIT
+-
+-
+-/*@_init_PROLOG_ENDS*/
+-
+-/*@_init_EPILOG_BEGINS*/
+- .section .init
+- mov r14,r15
+- lds.l @r15+,pr
+- mov.l @r15+,r14
+- rts
+- mov.l @r15+,r12
+- END_INIT
+- .section .text
+- .align 5
+- .weak __gmon_start__
+- .type __gmon_start__,@function
+-__gmon_start__:
+- mov.l r14,@-r15
+- mov r15,r14
+- mov r14,r15
+- rts
+- mov.l @r15+,r14
+-
+-/*@_init_EPILOG_ENDS*/
+-
+-/*@_fini_PROLOG_BEGINS*/
+- .section .fini
+- .align 5
+- .global _fini
+- .type _fini,@function
+-_fini:
+- mov.l r12,@-r15
+- mov.l r14,@-r15
+- sts.l pr,@-r15
+-#ifdef SHARED
+- mova .L27,r0
+- mov.l .L27,r12
+- add r0,r12
+-#endif
+- mov r15,r14
+- ALIGN
+- END_FINI
+-#ifdef SHARED
+- bra 1f
+- nop
+- .align 2
+-.L27:
+- .long _GLOBAL_OFFSET_TABLE_
+-#endif
+-1:
+-/*@_fini_PROLOG_ENDS*/
+-
+-/*@_fini_EPILOG_BEGINS*/
+- .section .fini
+- mov r14,r15
+- lds.l @r15+,pr
+- mov.l @r15+,r14
+- rts
+- mov.l @r15+,r12
+-
+- END_FINI
+-
+-/*@_fini_EPILOG_ENDS*/
+-
+-/*@TRAILER_BEGINS*/
++__asm__ ("\n\
++\n\
++#include \"defs.h\"\n\
++#define SHARED\n\
++\n\
++/*@HEADER_ENDS*/\n\
++\n\
++/*@TESTS_BEGIN*/\n\
++\n\
++/*@TESTS_END*/\n\
++\n\
++/*@_init_PROLOG_BEGINS*/\n\
++ .section .init\n\
++ .align 5\n\
++ .global _init\n\
++ .type _init,@function\n\
++_init:\n\
++ mov.l r12,@-r15\n\
++ mov.l r14,@-r15\n\
++ sts.l pr,@-r15\n\
++#ifdef SHARED\n\
++ mova .L22,r0\n\
++ mov.l .L22,r12\n\
++ add r0,r12\n\
++ mova .L23,r0\n\
++ mov.l .L23,r1\n\
++ add r0,r1\n\
++#else\n\
++ mov.l .L23,r1\n\
++#endif\n\
++ jsr @r1\n\
++ mov r15,r14\n\
++ bra 1f\n\
++ nop\n\
++ .align 2\n\
++#ifdef SHARED\n\
++.L22:\n\
++ .long _GLOBAL_OFFSET_TABLE_\n\
++.L23:\n\
++ .long __gmon_start__@PLT\n\
++#else\n\
++.L23:\n\
++ .long __gmon_start__\n\
++#endif\n\
++ .data\n\
++ .global __fpscr_values\n\
++__fpscr_values:\n\
++ .long 0\n\
++ .long 0x80000\n\
++ .previous\n\
++1:\n\
++ ALIGN\n\
++ END_INIT\n\
++\n\
++ \n\
++/*@_init_PROLOG_ENDS*/\n\
++\n\
++/*@_init_EPILOG_BEGINS*/\n\
++ .section .init\n\
++ mov r14,r15\n\
++ lds.l @r15+,pr\n\
++ mov.l @r15+,r14\n\
++ rts \n\
++ mov.l @r15+,r12\n\
++ END_INIT\n\
++ .section .text\n\
++ .align 5\n\
++ .weak __gmon_start__\n\
++ .type __gmon_start__,@function\n\
++__gmon_start__:\n\
++ mov.l r14,@-r15\n\
++ mov r15,r14\n\
++ mov r14,r15\n\
++ rts \n\
++ mov.l @r15+,r14\n\
++ \n\
++/*@_init_EPILOG_ENDS*/\n\
++\n\
++/*@_fini_PROLOG_BEGINS*/\n\
++ .section .fini\n\
++ .align 5\n\
++ .global _fini\n\
++ .type _fini,@function\n\
++_fini:\n\
++ mov.l r12,@-r15\n\
++ mov.l r14,@-r15\n\
++ sts.l pr,@-r15\n\
++#ifdef SHARED\n\
++ mova .L27,r0\n\
++ mov.l .L27,r12\n\
++ add r0,r12\n\
++#endif\n\
++ mov r15,r14\n\
++ ALIGN\n\
++ END_FINI\n\
++#ifdef SHARED\n\
++ bra 1f\n\
++ nop\n\
++ .align 2\n\
++.L27:\n\
++ .long _GLOBAL_OFFSET_TABLE_\n\
++#endif\n\
++1:\n\
++/*@_fini_PROLOG_ENDS*/\n\
++\n\
++/*@_fini_EPILOG_BEGINS*/\n\
++ .section .fini\n\
++ mov r14,r15\n\
++ lds.l @r15+,pr\n\
++ mov.l @r15+,r14\n\
++ rts \n\
++ mov.l @r15+,r12\n\
++\n\
++ END_FINI\n\
++ \n\
++/*@_fini_EPILOG_ENDS*/\n\
++\n\
++/*@TRAILER_BEGINS*/\n\
+ ");
diff --git a/recipes/glibc/glibc-2.2.5/ldd.patch b/recipes/glibc/glibc-2.2.5/ldd.patch
new file mode 100644
index 0000000000..01719dbe08
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/ldd.patch
@@ -0,0 +1,38 @@
+--- elf/ldd.bash.in~ Tue Apr 3 21:43:31 2001
++++ elf/ldd.bash.in Tue Apr 3 21:54:15 2001
+@@ -32,6 +32,7 @@
+ warn=
+ bind_now=
+ verbose=
++filename_magic_regex="((^|/)lib|.so$)"
+
+ while test $# -gt 0; do
+ case "$1" in
+@@ -123,8 +124,11 @@
+ echo "ldd: ${file}:" $"No such file or directory" >&2
+ result=1
+ elif test -r "$file"; then
+- test -x "$file" || echo 'ldd:' $"\
+-warning: you do not have execution permission for" "\`$file'" >&2
++ if test ! -x "$file" && eval echo "$file" \
++ | egrep -v "$filename_magic_regex" > /dev/null; then
++ echo 'ldd:' $"warning: you do not have execution permission for"\
++ "\`$file'" >&2
++ fi
+ RTLD=
+ for rtld in ${RTLDLIST}; do
+ if test -x $rtld; then
+@@ -143,7 +147,12 @@
+ fi
+ case $ret in
+ 0)
+- eval $add_env '"$file"' || result=1
++ if [ ! -x "$file" ] && eval file -L "$file" 2>/dev/null \
++ | sed 10q | egrep "$file_magic_regex" > /dev/null; then
++ eval $add_env ${RTLD} '"$file"' || result=1
++ else
++ eval $add_env '"$file"' || result=1
++ fi
+ ;;
+ 1)
+ # This can be a non-ELF binary or no binary at all.
diff --git a/recipes/glibc/glibc-2.2.5/linuxthreads-2.2.5-ppc405erratum77.patch b/recipes/glibc/glibc-2.2.5/linuxthreads-2.2.5-ppc405erratum77.patch
new file mode 100644
index 0000000000..48127a1281
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/linuxthreads-2.2.5-ppc405erratum77.patch
@@ -0,0 +1,34 @@
+# see http://bugs.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&pr=4155
+# and http://www.kegel.com/xgcc3/ppc405erratum77.html
+# See also matching patch for glibc
+
+diff -aur glibc-2.2.5.orig/linuxthreads/sysdeps/powerpc/pt-machine.h glibc-2.2.5/linuxthreads/sysdeps/powerpc/pt-machine.h
+--- glibc-2.2.5.orig/linuxthreads/sysdeps/powerpc/pt-machine.h Thu May 17 12:47:46 2001
++++ glibc-2.2.5/linuxthreads/sysdeps/powerpc/pt-machine.h Tue Jul 23 05:38:24 2002
+@@ -41,6 +41,17 @@
+ #define HAS_COMPARE_AND_SWAP_WITH_RELEASE_SEMANTICS
+ #define IMPLEMENT_TAS_WITH_CAS
+
++#ifdef __PPC405__
++/* workaround for PPC405 erratum #77 - Mark Hatle, dank. References:
++ http://www-3.ibm.com/chips/techlib/techlib.nsf/techdocs/89DED00DEBFF54BF87256A8000491BA2/$file/405CR_C_errata_1_2.pdf
++ http://ppc.bkbits.net:8080/linuxppc_2_4_devel/cset@1.489
++ http://www.kegel.com/xgcc3/ppc405erratum77.html
++ FIXME: using dbct instead of sync would be faster */
++#define __LINUXTHREADS_PPC405_ERR77_SYNC "sync \n\t"
++#else
++#define __LINUXTHREADS_PPC405_ERR77_SYNC
++#endif
++
+ PT_EI int
+ __compare_and_swap (long int *p, long int oldval, long int newval)
+ {
+@@ -50,6 +61,7 @@
+ "0: lwarx %0,0,%1 ;"
+ " xor. %0,%3,%0;"
+ " bne 1f;"
++ __LINUXTHREADS_PPC405_ERR77_SYNC
+ " stwcx. %2,0,%1;"
+ " bne- 0b;"
+ "1: "
+
diff --git a/recipes/glibc/glibc-2.2.5/longjmp-sparc.patch b/recipes/glibc/glibc-2.2.5/longjmp-sparc.patch
new file mode 100644
index 0000000000..8bce091779
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/longjmp-sparc.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h~longjmp-sparc.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h 2004-09-03 19:00:39.000000000 -0500
+@@ -48,7 +48,7 @@
+ #define END(name) \
+ .size name, . - name
+
+-#define LOC(name) . ## L ## name
++#define LOC(name) .##L##name
+
+ #ifdef PIC
+ #define SYSCALL_ERROR_HANDLER \
diff --git a/recipes/glibc/glibc-2.2.5/pt-initfini-alpha.patch b/recipes/glibc/glibc-2.2.5/pt-initfini-alpha.patch
new file mode 100644
index 0000000000..22a1cfed17
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/pt-initfini-alpha.patch
@@ -0,0 +1,119 @@
+--- glibc-2.2.5/linuxthreads/sysdeps/alpha/elf/pt-initfini.c.old Fri Jun 6 22:02:08 2003
++++ glibc-2.2.5/linuxthreads/sysdeps/alpha/elf/pt-initfini.c Fri Jun 6 22:02:33 2003
+@@ -37,60 +37,60 @@
+ files, all of which may have different GP values. So we must reload
+ the GP value from crti.o in crtn.o. */
+
+-__asm__ ("
+-
+-#include \"defs.h\"
+-
+-/*@HEADER_ENDS*/
+-
+-/*@_init_PROLOG_BEGINS*/
+- .section .init, \"ax\", @progbits
+- .globl _init
+- .ent _init
+-_init:
+- ldgp $29, 0($27)
+- subq $30, 16, $30
+- lda $27, __pthread_initialize_minimal
+- stq $26, 0($30)
+- stq $29, 8($30)
+- .prologue 1
+- jsr $26, ($27), __pthread_initialize_minimal
+- ldq $29, 8($30)
+- .align 3
+- .end _init
+- .size _init, 0
+-/*@_init_PROLOG_ENDS*/
+-
+-/*@_init_EPILOG_BEGINS*/
+- .section .init, \"ax\", @progbits
+- ldq $26, 0($30)
+- ldq $29, 8($30)
+- addq $30, 16, $30
+- ret
+-/*@_init_EPILOG_ENDS*/
+-
+-/*@_fini_PROLOG_BEGINS*/
+- .section .fini, \"ax\", @progbits
+- .globl _fini
+- .ent _fini
+-_fini:
+- ldgp $29, 0($27)
+- subq $30, 16, $30
+- stq $26, 0($30)
+- stq $29, 8($30)
+- .prologue 1
+- .align 3
+- .end _fini
+- .size _fini, 0
+-/*@_fini_PROLOG_ENDS*/
+-
+-/*@_fini_EPILOG_BEGINS*/
+- .section .fini, \"ax\", @progbits
+- ldq $26, 0($30)
+- ldq $29, 8($30)
+- addq $30, 16, $30
+- ret
+-/*@_fini_EPILOG_ENDS*/
+-
+-/*@TRAILER_BEGINS*/
++__asm__ ("\n\
++\n\
++#include \"defs.h\"\n\
++\n\
++/*@HEADER_ENDS*/\n\
++\n\
++/*@_init_PROLOG_BEGINS*/\n\
++ .section .init, \"ax\", @progbits\n\
++ .globl _init\n\
++ .ent _init\n\
++_init:\n\
++ ldgp $29, 0($27)\n\
++ subq $30, 16, $30\n\
++ lda $27, __pthread_initialize_minimal\n\
++ stq $26, 0($30)\n\
++ stq $29, 8($30)\n\
++ .prologue 1\n\
++ jsr $26, ($27), __pthread_initialize_minimal\n\
++ ldq $29, 8($30)\n\
++ .align 3\n\
++ .end _init\n\
++ .size _init, 0\n\
++/*@_init_PROLOG_ENDS*/\n\
++\n\
++/*@_init_EPILOG_BEGINS*/\n\
++ .section .init, \"ax\", @progbits\n\
++ ldq $26, 0($30)\n\
++ ldq $29, 8($30)\n\
++ addq $30, 16, $30\n\
++ ret\n\
++/*@_init_EPILOG_ENDS*/\n\
++\n\
++/*@_fini_PROLOG_BEGINS*/\n\
++ .section .fini, \"ax\", @progbits\n\
++ .globl _fini\n\
++ .ent _fini\n\
++_fini:\n\
++ ldgp $29, 0($27)\n\
++ subq $30, 16, $30\n\
++ stq $26, 0($30)\n\
++ stq $29, 8($30)\n\
++ .prologue 1\n\
++ .align 3\n\
++ .end _fini\n\
++ .size _fini, 0\n\
++/*@_fini_PROLOG_ENDS*/\n\
++\n\
++/*@_fini_EPILOG_BEGINS*/\n\
++ .section .fini, \"ax\", @progbits\n\
++ ldq $26, 0($30)\n\
++ ldq $29, 8($30)\n\
++ addq $30, 16, $30\n\
++ ret\n\
++/*@_fini_EPILOG_ENDS*/\n\
++\n\
++/*@TRAILER_BEGINS*/\n\
+ ");
diff --git a/recipes/glibc/glibc-2.2.5/pt-initfini-flags.patch b/recipes/glibc/glibc-2.2.5/pt-initfini-flags.patch
new file mode 100644
index 0000000000..e8ba2facfc
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/pt-initfini-flags.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- glibc-2.2.5/linuxthreads/Makefile~glibc-linuxthreads-2.3.2-initfini
++++ glibc-2.2.5/linuxthreads/Makefile
+@@ -54,7 +54,7 @@
+ extra-objs += crti.o
+ omit-deps += crti
+
+-CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions
++CFLAGS-pt-initfini.s = -O1 -g0 -fPIC -fno-inline-functions
+ endif
+
+ librt-tests = ex10 ex11
diff --git a/recipes/glibc/glibc-2.2.5/pt-initfini-sh.patch b/recipes/glibc/glibc-2.2.5/pt-initfini-sh.patch
new file mode 100644
index 0000000000..8c9cdb8ada
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/pt-initfini-sh.patch
@@ -0,0 +1,267 @@
+--- glibc-2.2.5/linuxthreads/sysdeps/unix/sysv/linux/sh/pt-initfini.c.old Wed May 28 09:29:55 2003
++++ glibc-2.2.5/linuxthreads/sysdeps/unix/sysv/linux/sh/pt-initfini.c Wed May 28 09:30:11 2003
+@@ -36,134 +36,134 @@
+ * crtn.s puts the corresponding function epilogues
+ in the .init and .fini sections. */
+
+-__asm__ ("
+-
+-#include \"defs.h\"
+-#define SHARED
+-
+-/*@HEADER_ENDS*/
+-
+-/*@TESTS_BEGIN*/
+-
+-/*@TESTS_END*/
+-
+-/*@_init_PROLOG_BEGINS*/
+- .section .init
+- .align 5
+- .global _init
+- .type _init,@function
+-_init:
+- mov.l r12,@-r15
+- mov.l r14,@-r15
+- sts.l pr,@-r15
+-#ifdef SHARED
+- mova .L22,r0
+- mov.l .L22,r12
+- add r0,r12
+- mova .L24,r0
+- mov.l .L24,r1
+- add r0,r1
+- jsr @r1
+- nop
+- mova .L23,r0
+- mov.l .L23,r1
+- add r0,r1
+-#else
+- mov.l .L24,r1
+- jsr @r1
+- nop
+- mov.l .L23,r1
+-#endif
+- jsr @r1
+- mov r15,r14
+- bra 1f
+- nop
+- .align 2
+-#ifdef SHARED
+-.L22:
+- .long _GLOBAL_OFFSET_TABLE_
+-.L23:
+- .long __gmon_start__@PLT
+-.L24:
+- .long __pthread_initialize_minimal@PLT
+-#else
+-.L23:
+- .long __gmon_start__
+-.L24:
+- .long __pthread_initialize_minimal
+-#endif
+- .data
+- .global __fpscr_values
+-__fpscr_values:
+- .long 0
+- .long 0x80000
+- .previous
+-1:
+- ALIGN
+- END_INIT
+-
+-
+-/*@_init_PROLOG_ENDS*/
+-
+-/*@_init_EPILOG_BEGINS*/
+- .section .init
+- mov r14,r15
+- lds.l @r15+,pr
+- mov.l @r15+,r14
+- rts
+- mov.l @r15+,r12
+- END_INIT
+- .section .text
+- .align 5
+- .weak __gmon_start__
+- .type __gmon_start__,@function
+-__gmon_start__:
+- mov.l r14,@-r15
+- mov r15,r14
+- mov r14,r15
+- rts
+- mov.l @r15+,r14
+-
+-/*@_init_EPILOG_ENDS*/
+-
+-/*@_fini_PROLOG_BEGINS*/
+- .section .fini
+- .align 5
+- .global _fini
+- .type _fini,@function
+-_fini:
+- mov.l r12,@-r15
+- mov.l r14,@-r15
+- sts.l pr,@-r15
+-#ifdef SHARED
+- mova .L27,r0
+- mov.l .L27,r12
+- add r0,r12
+-#endif
+- mov r15,r14
+- ALIGN
+- END_FINI
+-#ifdef SHARED
+- bra 1f
+- nop
+- .align 2
+-.L27:
+- .long _GLOBAL_OFFSET_TABLE_
+-#endif
+-1:
+-/*@_fini_PROLOG_ENDS*/
+-
+-/*@_fini_EPILOG_BEGINS*/
+- .section .fini
+- mov r14,r15
+- lds.l @r15+,pr
+- mov.l @r15+,r14
+- rts
+- mov.l @r15+,r12
+-
+- END_FINI
+-
+-/*@_fini_EPILOG_ENDS*/
+-
+-/*@TRAILER_BEGINS*/
++__asm__ ("\n\
++\n\
++#include \"defs.h\"\n\
++#define SHARED\n\
++\n\
++/*@HEADER_ENDS*/\n\
++\n\
++/*@TESTS_BEGIN*/\n\
++\n\
++/*@TESTS_END*/\n\
++\n\
++/*@_init_PROLOG_BEGINS*/\n\
++ .section .init\n\
++ .align 5\n\
++ .global _init\n\
++ .type _init,@function\n\
++_init:\n\
++ mov.l r12,@-r15\n\
++ mov.l r14,@-r15\n\
++ sts.l pr,@-r15\n\
++#ifdef SHARED\n\
++ mova .L22,r0\n\
++ mov.l .L22,r12\n\
++ add r0,r12\n\
++ mova .L24,r0\n\
++ mov.l .L24,r1\n\
++ add r0,r1\n\
++ jsr @r1\n\
++ nop\n\
++ mova .L23,r0\n\
++ mov.l .L23,r1\n\
++ add r0,r1\n\
++#else\n\
++ mov.l .L24,r1\n\
++ jsr @r1\n\
++ nop\n\
++ mov.l .L23,r1\n\
++#endif\n\
++ jsr @r1\n\
++ mov r15,r14\n\
++ bra 1f\n\
++ nop\n\
++ .align 2\n\
++#ifdef SHARED\n\
++.L22:\n\
++ .long _GLOBAL_OFFSET_TABLE_\n\
++.L23:\n\
++ .long __gmon_start__@PLT\n\
++.L24:\n\
++ .long __pthread_initialize_minimal@PLT\n\
++#else\n\
++.L23:\n\
++ .long __gmon_start__\n\
++.L24:\n\
++ .long __pthread_initialize_minimal\n\
++#endif\n\
++ .data\n\
++ .global __fpscr_values\n\
++__fpscr_values:\n\
++ .long 0\n\
++ .long 0x80000\n\
++ .previous\n\
++1:\n\
++ ALIGN\n\
++ END_INIT\n\
++\n\
++ \n\
++/*@_init_PROLOG_ENDS*/\n\
++\n\
++/*@_init_EPILOG_BEGINS*/\n\
++ .section .init\n\
++ mov r14,r15\n\
++ lds.l @r15+,pr\n\
++ mov.l @r15+,r14\n\
++ rts \n\
++ mov.l @r15+,r12\n\
++ END_INIT\n\
++ .section .text\n\
++ .align 5\n\
++ .weak __gmon_start__\n\
++ .type __gmon_start__,@function\n\
++__gmon_start__:\n\
++ mov.l r14,@-r15\n\
++ mov r15,r14\n\
++ mov r14,r15\n\
++ rts \n\
++ mov.l @r15+,r14\n\
++ \n\
++/*@_init_EPILOG_ENDS*/\n\
++\n\
++/*@_fini_PROLOG_BEGINS*/\n\
++ .section .fini\n\
++ .align 5\n\
++ .global _fini\n\
++ .type _fini,@function\n\
++_fini:\n\
++ mov.l r12,@-r15\n\
++ mov.l r14,@-r15\n\
++ sts.l pr,@-r15\n\
++#ifdef SHARED\n\
++ mova .L27,r0\n\
++ mov.l .L27,r12\n\
++ add r0,r12\n\
++#endif\n\
++ mov r15,r14\n\
++ ALIGN\n\
++ END_FINI\n\
++#ifdef SHARED\n\
++ bra 1f\n\
++ nop\n\
++ .align 2\n\
++.L27:\n\
++ .long _GLOBAL_OFFSET_TABLE_\n\
++#endif\n\
++1:\n\
++/*@_fini_PROLOG_ENDS*/\n\
++\n\
++/*@_fini_EPILOG_BEGINS*/\n\
++ .section .fini\n\
++ mov r14,r15\n\
++ lds.l @r15+,pr\n\
++ mov.l @r15+,r14\n\
++ rts \n\
++ mov.l @r15+,r12\n\
++\n\
++ END_FINI\n\
++ \n\
++/*@_fini_EPILOG_ENDS*/\n\
++\n\
++/*@TRAILER_BEGINS*/\n\
+ ");
diff --git a/recipes/glibc/glibc-2.2.5/sh-setjmp-fix.patch b/recipes/glibc/glibc-2.2.5/sh-setjmp-fix.patch
new file mode 100644
index 0000000000..fa2f51aab6
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/sh-setjmp-fix.patch
@@ -0,0 +1,17 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/sh/bits/setjmp.h~sh-setjmp-fix.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/sh/bits/setjmp.h 2004-09-03 19:00:39.000000000 -0500
+@@ -42,7 +42,9 @@
+ } __jmp_buf[1];
+ #endif
+
++#if defined __USE_MISC || defined _ASM
+ #define JB_SIZE (4 * 15)
++#endif
+
+ /* Test if longjmp to JMPBUF would unwind the frame
+ containing a local variable at ADDRESS. */
diff --git a/recipes/glibc/glibc-2.2.5/sprintf-prototype.patch b/recipes/glibc/glibc-2.2.5/sprintf-prototype.patch
new file mode 100644
index 0000000000..47dc672a38
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/sprintf-prototype.patch
@@ -0,0 +1,18 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/stdio-common/sprintf.c~sprintf-prototype.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/stdio-common/sprintf.c 2004-09-03 19:00:39.000000000 -0500
+@@ -27,9 +27,7 @@
+ /* Write formatted output into S, according to the format string FORMAT. */
+ /* VARARGS2 */
+ int
+-sprintf (s, format)
+- char *s;
+- const char *format;
++sprintf (char *s, const char *format, ...)
+ {
+ va_list arg;
+ int done;
diff --git a/recipes/glibc/glibc-2.2.5/sscanf.patch b/recipes/glibc/glibc-2.2.5/sscanf.patch
new file mode 100644
index 0000000000..2958b1f8e0
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/sscanf.patch
@@ -0,0 +1,64 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/stdio-common/sscanf.c~sscanf.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/stdio-common/sscanf.c 2004-09-03 19:00:39.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1995, 1996, 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1991,1995,1996,1998,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -27,9 +27,7 @@
+ /* Read formatted input from S, according to the format string FORMAT. */
+ /* VARARGS2 */
+ int
+-sscanf (s, format)
+- const char *s;
+- const char *format;
++sscanf (const char *s, const char *format, ...)
+ {
+ va_list arg;
+ int done;
+--- glibc-2.2.5/libio/swprintf.c~sscanf.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/libio/swprintf.c 2004-09-03 19:00:39.000000000 -0500
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1991,1995,1997,1998,1999,2000 Free Software Foundation, Inc.
++/* Copyright (C) 1991,1995,1997,1998,1999,2000,2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,10 +23,7 @@
+ /* Write formatted output into S, according to the format string FORMAT. */
+ /* VARARGS3 */
+ int
+-swprintf (s, n, format)
+- wchar_t *s;
+- size_t n;
+- const wchar_t *format;
++swprintf (wchar_t *s, size_t n, const wchar_t *format, ...)
+ {
+ va_list arg;
+ int done;
+--- glibc-2.2.5/libio/swscanf.c~sscanf.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/libio/swscanf.c 2004-09-03 19:00:39.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1995, 1996, 1998, 1999 Free Software Foundation, Inc.
++/* Copyright (C) 1991,1995,1996,1998,1999,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,9 +22,7 @@
+ /* Read formatted input from S, according to the format string FORMAT. */
+ /* VARARGS2 */
+ int
+-swscanf (s, format)
+- const wchar_t *s;
+- const wchar_t *format;
++swscanf (const wchar_t *s, const wchar_t *format, ...)
+ {
+ va_list arg;
+ int done;
diff --git a/recipes/glibc/glibc-2.2.5/threadparam.patch b/recipes/glibc/glibc-2.2.5/threadparam.patch
new file mode 100644
index 0000000000..dd97838c07
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/threadparam.patch
@@ -0,0 +1,69 @@
+2002-05-21 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/pthread/pthread.h (pthread_create): Rename first parameter.
+ (pthread_cancel): Likewise.
+ * internals.h (__pthread_create_2_1): Likewise.
+ * sysdeps/unix/sysv/linux/bits/sigthread.h (pthread_kill): Likewise.
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads/internals.h,v
+retrieving revision 1.69.2.2
+retrieving revision 1.69.2.3
+diff -u -r1.69.2.2 -r1.69.2.3
+--- libc/linuxthreads/internals.h 2002/03/22 08:30:32 1.69.2.2
++++ libc/linuxthreads/internals.h 2002/08/20 22:01:25 1.69.2.3
+@@ -554,7 +554,7 @@
+ /* Prototypes for compatibility functions. */
+ extern int __pthread_attr_init_2_1 (pthread_attr_t *__attr);
+ extern int __pthread_attr_init_2_0 (pthread_attr_t *__attr);
+-extern int __pthread_create_2_1 (pthread_t *__restrict __thread,
++extern int __pthread_create_2_1 (pthread_t *__restrict __threadp,
+ const pthread_attr_t *__attr,
+ void *(*__start_routine) (void *),
+ void *__restrict __arg);
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/pthread/pthread.h,v
+retrieving revision 1.31
+retrieving revision 1.31.2.1
+diff -u -r1.31 -r1.31.2.1
+--- libc/linuxthreads/sysdeps/pthread/pthread.h 2001/03/15 21:12:31 1.31
++++ libc/linuxthreads/sysdeps/pthread/pthread.h 2002/08/20 22:01:26 1.31.2.1
+@@ -160,7 +160,7 @@
+ /* Create a thread with given attributes ATTR (or default attributes
+ if ATTR is NULL), and call function START_ROUTINE with given
+ arguments ARG. */
+-extern int pthread_create (pthread_t *__restrict __thread,
++extern int pthread_create (pthread_t *__restrict __threadp,
+ __const pthread_attr_t *__restrict __attr,
+ void *(*__start_routine) (void *),
+ void *__restrict __arg) __THROW;
+@@ -588,7 +588,7 @@
+ extern int pthread_setcanceltype (int __type, int *__oldtype) __THROW;
+
+ /* Cancel THREAD immediately or at the next possibility. */
+-extern int pthread_cancel (pthread_t __thread) __THROW;
++extern int pthread_cancel (pthread_t __cancelthread) __THROW;
+
+ /* Test for pending cancellation for the current thread and terminate
+ the thread as per pthread_exit(PTHREAD_CANCELED) if it has been
+===================================================================
+RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/unix/sysv/linux/bits/sigthread.h,v
+retrieving revision 1.5
+retrieving revision 1.5.2.1
+diff -u -r1.5 -r1.5.2.1
+--- libc/linuxthreads/sysdeps/unix/sysv/linux/bits/sigthread.h 2000/08/21 06:48:03 1.5
++++ libc/linuxthreads/sysdeps/unix/sysv/linux/bits/sigthread.h 2002/08/20 22:01:26 1.5.2.1
+@@ -1,5 +1,5 @@
+ /* Signal handling function for threaded programs.
+- Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -33,6 +33,6 @@
+ __sigset_t *__restrict __oldmask)__THROW;
+
+ /* Send signal SIGNO to the given thread. */
+-extern int pthread_kill (pthread_t __thread, int __signo) __THROW;
++extern int pthread_kill (pthread_t __threadid, int __signo) __THROW;
+
+ #endif /* bits/sigthread.h */
diff --git a/recipes/glibc/glibc-2.2.5/unwind-arm.patch b/recipes/glibc/glibc-2.2.5/unwind-arm.patch
new file mode 100644
index 0000000000..b44f41aec0
--- /dev/null
+++ b/recipes/glibc/glibc-2.2.5/unwind-arm.patch
@@ -0,0 +1,18 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- glibc-2.2.5/sysdeps/unix/sysv/linux/configure~unwind-arm.patch 2004-09-03 19:00:33.000000000 -0500
++++ glibc-2.2.5/sysdeps/unix/sysv/linux/configure 2004-09-03 19:00:39.000000000 -0500
+@@ -56,6 +56,10 @@
+ arch_minimum_kernel=2.1.100
+ libc_cv_gcc_unwind_find_fde=yes
+ ;;
++ arm*)
++ libc_cv_gcc_unwind_find_fde=yes
++ arch_minimum_kernel=2.0.10
++ ;;
+ i386*)
+ libc_cv_gcc_unwind_find_fde=yes
+ arch_minimum_kernel=2.0.10