* [PATCH 1/3] glibc 2.9: cleaned up; patches only in local dir
@ 2010-07-15 20:46 Frans Meulenbroeks
2010-07-15 20:46 ` [PATCH 2/3] glibc 2.10.1: " Frans Meulenbroeks
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Frans Meulenbroeks @ 2010-07-15 20:46 UTC (permalink / raw)
To: openembedded-devel
moved all patches to glibc-2.9
removed references to other dirs.
Signed-off-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
---
recipes/glibc/glibc-2.9/arm-longlong.patch | 58 ++
.../glibc-2.9/arm-lowlevellock-include-tls.patch | 12 +
recipes/glibc/glibc-2.9/arm-memcpy.patch | 758 ++++++++++++++++++++
recipes/glibc/glibc-2.9/dl-cache-libcmp.patch | 10 +
recipes/glibc/glibc-2.9/fhs-linux-paths.patch | 11 +
recipes/glibc/glibc-2.9/generate-supported.mk | 11 +
recipes/glibc/glibc-2.9/generic-bits_select.h | 35 +
recipes/glibc/glibc-2.9/generic-bits_time.h | 75 ++
recipes/glibc/glibc-2.9/generic-bits_types.h | 200 +++++
recipes/glibc/glibc-2.9/generic-bits_typesizes.h | 66 ++
.../glibc-2.9/glibc-arm-IO-acquire-lock-fix.diff | 13 +
recipes/glibc/glibc-2.9/glibc-check_pf.patch | 343 +++++++++
recipes/glibc/glibc-2.9/ldd-unbash.patch | 11 +
recipes/glibc/glibc-2.9/ldsocache-varrun.patch | 18 +
recipes/glibc/glibc-2.9/march-i686.patch | 38 +
recipes/glibc/glibc-2.9/no-z-defs.patch | 9 +
recipes/glibc/glibc-2.9/nptl-crosscompile.patch | 26 +
recipes/glibc/glibc-2.9/nscd-init.patch | 39 +
recipes/glibc/glibc-2.9/powerpc-sqrt-hack.diff | 25 +
recipes/glibc/glibc-2.9/tls_i486.patch | 14 +
recipes/glibc/glibc_2.9.bb | 3 -
21 files changed, 1772 insertions(+), 3 deletions(-)
create mode 100644 recipes/glibc/glibc-2.9/arm-longlong.patch
create mode 100644 recipes/glibc/glibc-2.9/arm-lowlevellock-include-tls.patch
create mode 100644 recipes/glibc/glibc-2.9/arm-memcpy.patch
create mode 100644 recipes/glibc/glibc-2.9/dl-cache-libcmp.patch
create mode 100644 recipes/glibc/glibc-2.9/fhs-linux-paths.patch
create mode 100644 recipes/glibc/glibc-2.9/generate-supported.mk
create mode 100644 recipes/glibc/glibc-2.9/generic-bits_select.h
create mode 100644 recipes/glibc/glibc-2.9/generic-bits_time.h
create mode 100644 recipes/glibc/glibc-2.9/generic-bits_types.h
create mode 100644 recipes/glibc/glibc-2.9/generic-bits_typesizes.h
create mode 100644 recipes/glibc/glibc-2.9/glibc-arm-IO-acquire-lock-fix.diff
create mode 100644 recipes/glibc/glibc-2.9/glibc-check_pf.patch
create mode 100644 recipes/glibc/glibc-2.9/ldd-unbash.patch
create mode 100644 recipes/glibc/glibc-2.9/ldsocache-varrun.patch
create mode 100644 recipes/glibc/glibc-2.9/march-i686.patch
create mode 100644 recipes/glibc/glibc-2.9/no-z-defs.patch
create mode 100644 recipes/glibc/glibc-2.9/nptl-crosscompile.patch
create mode 100644 recipes/glibc/glibc-2.9/nscd-init.patch
create mode 100644 recipes/glibc/glibc-2.9/powerpc-sqrt-hack.diff
create mode 100644 recipes/glibc/glibc-2.9/tls_i486.patch
diff --git a/recipes/glibc/glibc-2.9/arm-longlong.patch b/recipes/glibc/glibc-2.9/arm-longlong.patch
new file mode 100644
index 0000000..28aca83
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/arm-longlong.patch
@@ -0,0 +1,58 @@
+--- glibc-2.4/stdlib/longlong.h.ark 2006-03-11 22:49:27.000000000 +0100
++++ glibc-2.4/stdlib/longlong.h 2006-03-11 22:55:12.000000000 +0100
+@@ -206,6 +206,14 @@
+ "rI" ((USItype) (bh)), \
+ "r" ((USItype) (al)), \
+ "rI" ((USItype) (bl)) __CLOBBER_CC)
++/* 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" \
+@@ -227,7 +235,13 @@
+ : "r" ((USItype) (a)), \
+ "r" ((USItype) (b)) __CLOBBER_CC );}
+ #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
+--- glibc-2.4/ports/sysdeps/arm/mp_clz_tab.c.ark 2006-03-11 22:56:43.000000000 +0100
++++ glibc-2.4/ports/sysdeps/arm/mp_clz_tab.c 2006-03-11 22:58:19.000000000 +0100
+@@ -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 <stdlib/mp_clz_tab.c>
++#endif
diff --git a/recipes/glibc/glibc-2.9/arm-lowlevellock-include-tls.patch b/recipes/glibc/glibc-2.9/arm-lowlevellock-include-tls.patch
new file mode 100644
index 0000000..5c8062e
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/arm-lowlevellock-include-tls.patch
@@ -0,0 +1,12 @@
+Index: glibc-2.9/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
+===================================================================
+--- glibc-2.9.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h 2009-06-19 20:54:35.446686910 +0400
++++ glibc-2.9/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h 2009-06-19 20:54:43.774683370 +0400
+@@ -25,6 +25,7 @@
+ #include <atomic.h>
+ #include <sysdep.h>
+ #include <kernel-features.h>
++#include <tls.h>
+
+ #define FUTEX_WAIT 0
+ #define FUTEX_WAKE 1
diff --git a/recipes/glibc/glibc-2.9/arm-memcpy.patch b/recipes/glibc/glibc-2.9/arm-memcpy.patch
new file mode 100644
index 0000000..bc2b3da
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/arm-memcpy.patch
@@ -0,0 +1,758 @@
+--- /dev/null 2004-02-02 20:32:13.000000000 +0000
++++ sysdeps/arm/memmove.S 2004-03-20 18:37:23.000000000 +0000
+@@ -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-02-02 20:32:13.000000000 +0000
++++ sysdeps/arm/bcopy.S 2004-03-20 18:37:48.000000000 +0000
+@@ -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)
+
+--- /dev/null 2004-02-02 20:32:13.000000000 +0000
++++ sysdeps/arm/memcpy.S 2004-05-02 14:33:22.000000000 +0100
+@@ -0,0 +1,242 @@
++/*
++ * 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)
++
diff --git a/recipes/glibc/glibc-2.9/dl-cache-libcmp.patch b/recipes/glibc/glibc-2.9/dl-cache-libcmp.patch
new file mode 100644
index 0000000..2fedfa6
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/dl-cache-libcmp.patch
@@ -0,0 +1,10 @@
+--- glibc-2.4/elf/Versions.ark 2006-03-11 23:30:09.000000000 +0100
++++ glibc-2.4/elf/Versions 2006-03-11 23:31:44.000000000 +0100
+@@ -63,5 +63,7 @@
+ _dl_debug_state;
+ # Pointer protection.
+ __pointer_chk_guard;
++ # for ldconfig
++ _dl_cache_libcmp;
+ }
+ }
diff --git a/recipes/glibc/glibc-2.9/fhs-linux-paths.patch b/recipes/glibc/glibc-2.9/fhs-linux-paths.patch
new file mode 100644
index 0000000..1f32f6d
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/fhs-linux-paths.patch
@@ -0,0 +1,11 @@
+--- glibc-2.1.1/sysdeps/unix/sysv/linux/paths.h~ Thu May 27 13:16:33 1999
++++ glibc-2.1.1/sysdeps/unix/sysv/linux/paths.h Thu May 27 13:17:55 1999
+@@ -71,7 +71,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.9/generate-supported.mk b/recipes/glibc/glibc-2.9/generate-supported.mk
new file mode 100644
index 0000000..d2a28c2
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/generate-supported.mk
@@ -0,0 +1,11 @@
+#!/usr/bin/make
+
+include $(IN)
+
+all:
+ rm -f $(OUT)
+ touch $(OUT)
+ for locale in $(SUPPORTED-LOCALES); do \
+ [ $$locale = true ] && continue; \
+ echo $$locale | sed 's,/, ,' >> $(OUT); \
+ done
diff --git a/recipes/glibc/glibc-2.9/generic-bits_select.h b/recipes/glibc/glibc-2.9/generic-bits_select.h
new file mode 100644
index 0000000..47e7ded
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/generic-bits_select.h
@@ -0,0 +1,35 @@
+/* Copyright (C) 1997, 1998, 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. */
+
+#ifndef _SYS_SELECT_H
+# error "Never use <bits/select.h> directly; include <sys/select.h> instead."
+#endif
+
+
+/* We don't use `memset' because this would require a prototype and
+ the array isn't too big. */
+#define __FD_ZERO(s) \
+ do { \
+ unsigned int __i; \
+ fd_set *__arr = (s); \
+ for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \
+ __FDS_BITS (__arr)[__i] = 0; \
+ } while (0)
+#define __FD_SET(d, s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d))
+#define __FD_CLR(d, s) (__FDS_BITS (s)[__FDELT(d)] &= ~__FDMASK(d))
+#define __FD_ISSET(d, s) ((__FDS_BITS (s)[__FDELT(d)] & __FDMASK(d)) != 0)
diff --git a/recipes/glibc/glibc-2.9/generic-bits_time.h b/recipes/glibc/glibc-2.9/generic-bits_time.h
new file mode 100644
index 0000000..b3184d1
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/generic-bits_time.h
@@ -0,0 +1,75 @@
+/* System-dependent timing definitions. Generic version.
+ Copyright (C) 1996,1997,1999-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
+ 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. */
+
+/*
+ * Never include this file directly; use <time.h> instead.
+ */
+
+#ifndef __need_timeval
+# ifndef _BITS_TIME_H
+# define _BITS_TIME_H 1
+
+/* ISO/IEC 9899:1990 7.12.1: <time.h>
+ The macro `CLOCKS_PER_SEC' is the number per second of the value
+ returned by the `clock' function. */
+/* CAE XSH, Issue 4, Version 2: <time.h>
+ The value of CLOCKS_PER_SEC is required to be 1 million on all
+ XSI-conformant systems. */
+# define CLOCKS_PER_SEC 1000000l
+
+# if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K
+/* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK
+ presents the real value for clock ticks per second for the system. */
+# include <bits/types.h>
+extern long int __sysconf (int);
+# define CLK_TCK ((__clock_t) __sysconf (2)) /* 2 is _SC_CLK_TCK */
+# endif
+
+# ifdef __USE_POSIX199309
+/* Identifier for system-wide realtime clock. */
+# define CLOCK_REALTIME 0
+/* Monotonic system-wide clock. */
+# define CLOCK_MONOTONIC 1
+/* High-resolution timer from the CPU. */
+# define CLOCK_PROCESS_CPUTIME_ID 2
+/* Thread-specific CPU-time clock. */
+# define CLOCK_THREAD_CPUTIME_ID 3
+
+/* Flag to indicate time is absolute. */
+# define TIMER_ABSTIME 1
+# endif
+
+# endif /* bits/time.h */
+#endif
+
+#ifdef __need_timeval
+# undef __need_timeval
+# ifndef _STRUCT_TIMEVAL
+# define _STRUCT_TIMEVAL 1
+# include <bits/types.h>
+
+/* A time value that is accurate to the nearest
+ microsecond but also has a range of years. */
+struct timeval
+ {
+ __time_t tv_sec; /* Seconds. */
+ __suseconds_t tv_usec; /* Microseconds. */
+ };
+# endif /* struct timeval */
+#endif /* need timeval */
diff --git a/recipes/glibc/glibc-2.9/generic-bits_types.h b/recipes/glibc/glibc-2.9/generic-bits_types.h
new file mode 100644
index 0000000..65c8a9f
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/generic-bits_types.h
@@ -0,0 +1,200 @@
+/* bits/types.h -- definitions of __*_t types underlying *_t types.
+ Copyright (C) 2002, 2003, 2004, 2005 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. */
+
+/*
+ * Never include this file directly; use <sys/types.h> instead.
+ */
+
+#ifndef _BITS_TYPES_H
+#define _BITS_TYPES_H 1
+
+#include <features.h>
+#include <bits/wordsize.h>
+
+#define __need_size_t
+#include <stddef.h>
+
+/* Convenience types. */
+typedef unsigned char __u_char;
+typedef unsigned short int __u_short;
+typedef unsigned int __u_int;
+typedef unsigned long int __u_long;
+
+/* Fixed-size types, underlying types depend on word size and compiler. */
+typedef signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef signed short int __int16_t;
+typedef unsigned short int __uint16_t;
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+#if __WORDSIZE == 64
+typedef signed long int __int64_t;
+typedef unsigned long int __uint64_t;
+#elif defined __GLIBC_HAVE_LONG_LONG
+__extension__ typedef signed long long int __int64_t;
+__extension__ typedef unsigned long long int __uint64_t;
+#endif
+
+/* quad_t is also 64 bits. */
+#if __WORDSIZE == 64
+typedef long int __quad_t;
+typedef unsigned long int __u_quad_t;
+#elif defined __GLIBC_HAVE_LONG_LONG
+__extension__ typedef long long int __quad_t;
+__extension__ typedef unsigned long long int __u_quad_t;
+#else
+typedef struct
+{
+ long __val[2];
+} __quad_t;
+typedef struct
+{
+ __u_long __val[2];
+} __u_quad_t;
+#endif
+
+
+/* The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+ macros for each of the OS types we define below. The definitions
+ of those macros must use the following macros for underlying types.
+ We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+ variants of each of the following integer types on this machine.
+
+ 16 -- "natural" 16-bit type (always short)
+ 32 -- "natural" 32-bit type (always int)
+ 64 -- "natural" 64-bit type (long or long long)
+ LONG32 -- 32-bit type, traditionally long
+ QUAD -- 64-bit type, always long long
+ WORD -- natural type of __WORDSIZE bits (int or long)
+ LONGWORD -- type of __WORDSIZE bits, traditionally long
+
+ We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+ conventional uses of `long' or `long long' type modifiers match the
+ types we define, even when a less-adorned type would be the same size.
+ This matters for (somewhat) portably writing printf/scanf formats for
+ these types, where using the appropriate l or ll format modifiers can
+ make the typedefs and the formats match up across all GNU platforms. If
+ we used `long' when it's 64 bits where `long long' is expected, then the
+ compiler would warn about the formats not matching the argument types,
+ and the programmer changing them to shut up the compiler would break the
+ program's portability.
+
+ Here we assume what is presently the case in all the GCC configurations
+ we support: long long is always 64 bits, long is always word/address size,
+ and int is always 32 bits. */
+
+#define __S16_TYPE short int
+#define __U16_TYPE unsigned short int
+#define __S32_TYPE int
+#define __U32_TYPE unsigned int
+#define __SLONGWORD_TYPE long int
+#define __ULONGWORD_TYPE unsigned long int
+#if __WORDSIZE == 32
+# define __SQUAD_TYPE __quad_t
+# define __UQUAD_TYPE __u_quad_t
+# define __SWORD_TYPE int
+# define __UWORD_TYPE unsigned int
+# define __SLONG32_TYPE long int
+# define __ULONG32_TYPE unsigned long int
+# define __S64_TYPE __quad_t
+# define __U64_TYPE __u_quad_t
+/* We want __extension__ before typedef's that use nonstandard base types
+ such as `long long' in C89 mode. */
+# define __STD_TYPE __extension__ typedef
+#elif __WORDSIZE == 64
+# define __SQUAD_TYPE long int
+# define __UQUAD_TYPE unsigned long int
+# define __SWORD_TYPE long int
+# define __UWORD_TYPE unsigned long int
+# define __SLONG32_TYPE int
+# define __ULONG32_TYPE unsigned int
+# define __S64_TYPE long int
+# define __U64_TYPE unsigned long int
+/* No need to mark the typedef with __extension__. */
+# define __STD_TYPE typedef
+#else
+# error
+#endif
+#include <bits/typesizes.h> /* Defines __*_T_TYPE macros. */
+
+
+__STD_TYPE __DEV_T_TYPE __dev_t; /* Type of device numbers. */
+__STD_TYPE __UID_T_TYPE __uid_t; /* Type of user identifications. */
+__STD_TYPE __GID_T_TYPE __gid_t; /* Type of group identifications. */
+__STD_TYPE __INO_T_TYPE __ino_t; /* Type of file serial numbers. */
+__STD_TYPE __INO64_T_TYPE __ino64_t; /* Type of file serial numbers (LFS).*/
+__STD_TYPE __MODE_T_TYPE __mode_t; /* Type of file attribute bitmasks. */
+__STD_TYPE __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */
+__STD_TYPE __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */
+__STD_TYPE __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets (LFS). */
+__STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */
+__STD_TYPE __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */
+__STD_TYPE __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */
+__STD_TYPE __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. */
+__STD_TYPE __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement (LFS). */
+__STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */
+__STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */
+__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */
+__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */
+
+__STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */
+__STD_TYPE __SWBLK_T_TYPE __swblk_t; /* Type of a swap block maybe? */
+__STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */
+
+/* Clock ID used in clock and timer functions. */
+__STD_TYPE __CLOCKID_T_TYPE __clockid_t;
+
+/* Timer ID returned by `timer_create'. */
+__STD_TYPE __TIMER_T_TYPE __timer_t;
+
+/* Type to represent block size. */
+__STD_TYPE __BLKSIZE_T_TYPE __blksize_t;
+
+/* Types from the Large File Support interface. */
+
+/* Type to count number of disk blocks. */
+__STD_TYPE __BLKCNT_T_TYPE __blkcnt_t;
+__STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t;
+
+/* Type to count file system blocks. */
+__STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t;
+__STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t;
+
+/* Type to count file system nodes. */
+__STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t;
+__STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t;
+
+__STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error. */
+
+/* These few don't really vary by system, they always correspond
+ to one of the other defined types. */
+typedef __off64_t __loff_t; /* Type of file sizes and offsets (LFS). */
+typedef __quad_t *__qaddr_t;
+typedef char *__caddr_t;
+
+/* Duplicates info from stdint.h but this is used in unistd.h. */
+__STD_TYPE __SWORD_TYPE __intptr_t;
+
+/* Duplicate info from sys/socket.h. */
+__STD_TYPE __U32_TYPE __socklen_t;
+
+
+#undef __STD_TYPE
+
+#endif /* bits/types.h */
diff --git a/recipes/glibc/glibc-2.9/generic-bits_typesizes.h b/recipes/glibc/glibc-2.9/generic-bits_typesizes.h
new file mode 100644
index 0000000..e9226c4
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/generic-bits_typesizes.h
@@ -0,0 +1,66 @@
+/* bits/typesizes.h -- underlying types for *_t. Generic version.
+ Copyright (C) 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
+ 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 _BITS_TYPES_H
+# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
+#endif
+
+#ifndef _BITS_TYPESIZES_H
+#define _BITS_TYPESIZES_H 1
+
+/* See <bits/types.h> for the meaning of these macros. This file exists so
+ that <bits/types.h> need not vary across different GNU platforms. */
+
+#define __DEV_T_TYPE __UQUAD_TYPE
+#define __UID_T_TYPE __U32_TYPE
+#define __GID_T_TYPE __U32_TYPE
+#define __INO_T_TYPE __ULONGWORD_TYPE
+#define __INO64_T_TYPE __UQUAD_TYPE
+#define __MODE_T_TYPE __U32_TYPE
+#define __NLINK_T_TYPE __UWORD_TYPE
+#define __OFF_T_TYPE __SLONGWORD_TYPE
+#define __OFF64_T_TYPE __SQUAD_TYPE
+#define __PID_T_TYPE __S32_TYPE
+#define __RLIM_T_TYPE __ULONGWORD_TYPE
+#define __RLIM64_T_TYPE __UQUAD_TYPE
+#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
+#define __BLKCNT64_T_TYPE __SQUAD_TYPE
+#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
+#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
+#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
+#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
+#define __ID_T_TYPE __U32_TYPE
+#define __CLOCK_T_TYPE __SLONGWORD_TYPE
+#define __TIME_T_TYPE __SLONGWORD_TYPE
+#define __USECONDS_T_TYPE __U32_TYPE
+#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
+#define __DADDR_T_TYPE __S32_TYPE
+#define __SWBLK_T_TYPE __SLONGWORD_TYPE
+#define __KEY_T_TYPE __S32_TYPE
+#define __CLOCKID_T_TYPE __S32_TYPE
+#define __TIMER_T_TYPE void *
+#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
+#define __FSID_T_TYPE struct { int __val[2]; }
+#define __SSIZE_T_TYPE __SWORD_TYPE
+
+/* Number of descriptors that can fit in an `fd_set'. */
+#define __FD_SETSIZE 1024
+
+
+#endif /* bits/typesizes.h */
diff --git a/recipes/glibc/glibc-2.9/glibc-arm-IO-acquire-lock-fix.diff b/recipes/glibc/glibc-2.9/glibc-arm-IO-acquire-lock-fix.diff
new file mode 100644
index 0000000..a552cf0
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/glibc-arm-IO-acquire-lock-fix.diff
@@ -0,0 +1,13 @@
+Arm needs a similar fix as http://sourceware.org/ml/libc-ports/2007-12/msg00000.html
+
+--- /tmp/stdio-lock.h 2008-03-04 18:51:15.555038993 +0100
++++ glibc-2.7/ports/sysdeps/unix/sysv/linux/arm/bits/stdio-lock.h 2008-03-04 18:51:28.445035052 +0100
+@@ -50,6 +50,8 @@
+ _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, (_fp)); \
+ _IO_flockfile (_fp)
+
++# define _IO_acquire_lock_clear_flags2(_fp) _IO_acquire_lock (_fp)
++
+ # define _IO_release_lock(_fp) \
+ _IO_funlockfile (_fp); \
+ _IO_cleanup_region_end (0)
diff --git a/recipes/glibc/glibc-2.9/glibc-check_pf.patch b/recipes/glibc/glibc-2.9/glibc-check_pf.patch
new file mode 100644
index 0000000..3cff6bb
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/glibc-check_pf.patch
@@ -0,0 +1,343 @@
+From libc-ports-return-550-listarch-libc-ports=sources dot redhat dot com at sourceware dot org Tue Oct 31 17:37:21 2006
+Return-Path: <libc-ports-return-550-listarch-libc-ports=sources dot redhat dot com at sourceware dot org>
+Delivered-To: listarch-libc-ports at sources dot redhat dot com
+Received: (qmail 17273 invoked by alias); 31 Oct 2006 17:37:20 -0000
+Received: (qmail 17262 invoked by uid 22791); 31 Oct 2006 17:37:19 -0000
+X-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,TW_CP
+X-Spam-Check-By: sourceware.org
+Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Tue, 31 Oct 2006 17:37:11 +0000
+Received: from drow by nevyn.them.org with local (Exim 4.54) id 1GexXw-0007Dj-30; Tue, 31 Oct 2006 12:37:08 -0500
+Date: Tue, 31 Oct 2006 12:37:08 -0500
+From: Daniel Jacobowitz <drow at false dot org>
+To: Mike Frysinger <vapier at gentoo dot org>
+Cc: libc-ports at sourceware dot org, Philip Balister <philip dot balister at gmail dot com>
+Subject: Re: Problem with glibc-2.5 on ARM
+Message-ID: <20061031173708.GJ20468@nevyn.them.org>
+References: <499146270610241149ibe030e0nd9d6b177a95b346e@mail.gmail.com> <499146270610241254u7cadf63ej2edf05cedbc5266f@mail.gmail.com> <20061024195837.GA20181@nevyn.them.org> <200610291954.27022.vapier@gentoo.org>
+MIME-Version: 1.0
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+In-Reply-To: <200610291954 dot 27022 dot vapier at gentoo dot org>
+User-Agent: Mutt/1.5.13 (2006-08-11)
+X-IsSubscribed: yes
+Mailing-List: contact libc-ports-help at sourceware dot org; run by ezmlm
+Precedence: bulk
+List-Subscribe: <mailto:libc-ports-subscribe at sourceware dot org>
+List-Post: <mailto:libc-ports at sourceware dot org>
+List-Help: <mailto:libc-ports-help at sourceware dot org>, <http://sourceware dot org/lists dot html#faqs>
+Sender: libc-ports-owner at sourceware dot org
+Delivered-To: mailing list libc-ports at sourceware dot org
+
+On Sun, Oct 29, 2006 at 07:54:25PM -0500, Mike Frysinger wrote:
+> On Tuesday 24 October 2006 15:58, Daniel Jacobowitz wrote:
+> > ARM is going to need a slightly different version of that file, I
+> > guess.
+>
+> would declaring req with attribute packed not help ?
+> -mike
+
+Nope. "struct rtgenmsg" would still have size 4.
+
+Philip, are you still at all interested in this for the old ABI?
+I don't have time to test this patch right now, but I think it
+will work.
+
+--
+Daniel Jacobowitz
+CodeSourcery
+
+2006-10-31 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * sysdeps/unix/sysv/linux/arm/check_pf.c: New file.
+ * sysdeps/unix/sysv/linux/arm/eabi/check_pf.c: New file.
+
+Index: sysdeps/unix/sysv/linux/arm/check_pf.c
+===================================================================
+RCS file: sysdeps/unix/sysv/linux/arm/check_pf.c
+diff -N sysdeps/unix/sysv/linux/arm/check_pf.c
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ sysdeps/unix/sysv/linux/arm/check_pf.c 31 Oct 2006 17:29:58 -0000
+@@ -0,0 +1,274 @@
++/* Determine protocol families for which interfaces exist. ARM Linux version.
++ Copyright (C) 2003, 2006 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 <assert.h>
++#include <errno.h>
++#include <ifaddrs.h>
++#include <netdb.h>
++#include <stddef.h>
++#include <string.h>
++#include <time.h>
++#include <unistd.h>
++#include <sys/socket.h>
++
++#include <asm/types.h>
++#include <linux/netlink.h>
++#include <linux/rtnetlink.h>
++
++#include <not-cancel.h>
++#include <kernel-features.h>
++
++
++#ifndef IFA_F_TEMPORARY
++# define IFA_F_TEMPORARY IFA_F_SECONDARY
++#endif
++#ifndef IFA_F_HOMEADDRESS
++# define IFA_F_HOMEADDRESS 0
++#endif
++
++
++static int
++make_request (int fd, pid_t pid, bool *seen_ipv4, bool *seen_ipv6,
++ struct in6addrinfo **in6ai, size_t *in6ailen)
++{
++ struct req
++ {
++ struct nlmsghdr nlh;
++ struct rtgenmsg g;
++ } req;
++ struct sockaddr_nl nladdr;
++
++ /* struct rtgenmsg consists of a single byte but the ARM ABI rounds
++ it up to a word. Clear the padding explicitly here. */
++ assert (sizeof (req.g) == 4);
++ memset (&req.g, '\0', sizeof (req.g));
++
++ req.nlh.nlmsg_len = sizeof (req);
++ req.nlh.nlmsg_type = RTM_GETADDR;
++ req.nlh.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST;
++ req.nlh.nlmsg_pid = 0;
++ req.nlh.nlmsg_seq = time (NULL);
++ req.g.rtgen_family = AF_UNSPEC;
++
++ memset (&nladdr, '\0', sizeof (nladdr));
++ nladdr.nl_family = AF_NETLINK;
++
++ if (TEMP_FAILURE_RETRY (__sendto (fd, (void *) &req, sizeof (req), 0,
++ (struct sockaddr *) &nladdr,
++ sizeof (nladdr))) < 0)
++ return -1;
++
++ *seen_ipv4 = false;
++ *seen_ipv6 = false;
++
++ bool done = false;
++ char buf[4096];
++ struct iovec iov = { buf, sizeof (buf) };
++ struct in6ailist
++ {
++ struct in6addrinfo info;
++ struct in6ailist *next;
++ } *in6ailist = NULL;
++ size_t in6ailistlen = 0;
++
++ do
++ {
++ struct msghdr msg =
++ {
++ (void *) &nladdr, sizeof (nladdr),
++ &iov, 1,
++ NULL, 0,
++ 0
++ };
++
++ ssize_t read_len = TEMP_FAILURE_RETRY (__recvmsg (fd, &msg, 0));
++ if (read_len < 0)
++ return -1;
++
++ if (msg.msg_flags & MSG_TRUNC)
++ return -1;
++
++ struct nlmsghdr *nlmh;
++ for (nlmh = (struct nlmsghdr *) buf;
++ NLMSG_OK (nlmh, (size_t) read_len);
++ nlmh = (struct nlmsghdr *) NLMSG_NEXT (nlmh, read_len))
++ {
++ if (nladdr.nl_pid != 0 || (pid_t) nlmh->nlmsg_pid != pid
++ || nlmh->nlmsg_seq != req.nlh.nlmsg_seq)
++ continue;
++
++ if (nlmh->nlmsg_type == RTM_NEWADDR)
++ {
++ struct ifaddrmsg *ifam = (struct ifaddrmsg *) NLMSG_DATA (nlmh);
++
++ switch (ifam->ifa_family)
++ {
++ case AF_INET:
++ *seen_ipv4 = true;
++ break;
++ case AF_INET6:
++ *seen_ipv6 = true;
++
++ if (ifam->ifa_flags & (IFA_F_DEPRECATED
++ | IFA_F_TEMPORARY
++ | IFA_F_HOMEADDRESS))
++ {
++ struct rtattr *rta = IFA_RTA (ifam);
++ size_t len = (nlmh->nlmsg_len
++ - NLMSG_LENGTH (sizeof (*ifam)));
++ void *local = NULL;
++ void *address = NULL;
++ while (RTA_OK (rta, len))
++ {
++ switch (rta->rta_type)
++ {
++ case IFA_LOCAL:
++ local = RTA_DATA (rta);
++ break;
++
++ case IFA_ADDRESS:
++ address = RTA_DATA (rta);
++ break;
++ }
++
++ rta = RTA_NEXT (rta, len);
++ }
++
++ struct in6ailist *newp = alloca (sizeof (*newp));
++ newp->info.flags = (((ifam->ifa_flags & IFA_F_DEPRECATED)
++ ? in6ai_deprecated : 0)
++ | ((ifam->ifa_flags
++ & IFA_F_TEMPORARY)
++ ? in6ai_temporary : 0)
++ | ((ifam->ifa_flags
++ & IFA_F_HOMEADDRESS)
++ ? in6ai_homeaddress : 0));
++ memcpy (newp->info.addr, address ?: local,
++ sizeof (newp->info.addr));
++ newp->next = in6ailist;
++ in6ailist = newp;
++ ++in6ailistlen;
++ }
++ break;
++ default:
++ /* Ignore. */
++ break;
++ }
++ }
++ else if (nlmh->nlmsg_type == NLMSG_DONE)
++ /* We found the end, leave the loop. */
++ done = true;
++ }
++ }
++ while (! done);
++
++ close_not_cancel_no_status (fd);
++
++ if (in6ailist != NULL)
++ {
++ *in6ai = malloc (in6ailistlen * sizeof (**in6ai));
++ if (*in6ai == NULL)
++ return -1;
++
++ *in6ailen = in6ailistlen;
++
++ do
++ {
++ (*in6ai)[--in6ailistlen] = in6ailist->info;
++ in6ailist = in6ailist->next;
++ }
++ while (in6ailist != NULL);
++ }
++
++ return 0;
++}
++
++
++/* We don't know if we have NETLINK support compiled in in our
++ Kernel. */
++#if __ASSUME_NETLINK_SUPPORT == 0
++/* Define in ifaddrs.h. */
++extern int __no_netlink_support attribute_hidden;
++#else
++# define __no_netlink_support 0
++#endif
++
++
++void
++attribute_hidden
++__check_pf (bool *seen_ipv4, bool *seen_ipv6,
++ struct in6addrinfo **in6ai, size_t *in6ailen)
++{
++ *in6ai = NULL;
++ *in6ailen = 0;
++
++ if (! __no_netlink_support)
++ {
++ int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
++
++ struct sockaddr_nl nladdr;
++ memset (&nladdr, '\0', sizeof (nladdr));
++ nladdr.nl_family = AF_NETLINK;
++
++ socklen_t addr_len = sizeof (nladdr);
++
++ if (fd >= 0
++ && __bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0
++ && __getsockname (fd, (struct sockaddr *) &nladdr, &addr_len) == 0
++ && make_request (fd, nladdr.nl_pid, seen_ipv4, seen_ipv6,
++ in6ai, in6ailen) == 0)
++ /* It worked. */
++ return;
++
++ if (fd >= 0)
++ __close (fd);
++
++#if __ASSUME_NETLINK_SUPPORT == 0
++ /* Remember that there is no netlink support. */
++ __no_netlink_support = 1;
++#else
++ /* We cannot determine what interfaces are available. Be
++ pessimistic. */
++ *seen_ipv4 = true;
++ *seen_ipv6 = true;
++#endif
++ }
++
++#if __ASSUME_NETLINK_SUPPORT == 0
++ /* No netlink. Get the interface list via getifaddrs. */
++ struct ifaddrs *ifa = NULL;
++ if (getifaddrs (&ifa) != 0)
++ {
++ /* We cannot determine what interfaces are available. Be
++ pessimistic. */
++ *seen_ipv4 = true;
++ *seen_ipv6 = true;
++ return;
++ }
++
++ struct ifaddrs *runp;
++ for (runp = ifa; runp != NULL; runp = runp->ifa_next)
++ if (runp->ifa_addr->sa_family == PF_INET)
++ *seen_ipv4 = true;
++ else if (runp->ifa_addr->sa_family == PF_INET6)
++ *seen_ipv6 = true;
++
++ (void) freeifaddrs (ifa);
++#endif
++}
+Index: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c
+===================================================================
+RCS file: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c
+diff -N sysdeps/unix/sysv/linux/arm/eabi/check_pf.c
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ sysdeps/unix/sysv/linux/arm/eabi/check_pf.c 31 Oct 2006 17:29:58 -0000
+@@ -0,0 +1 @@
++#include <sysdeps/unix/sysv/linux/check_pf.c>
+
diff --git a/recipes/glibc/glibc-2.9/ldd-unbash.patch b/recipes/glibc/glibc-2.9/ldd-unbash.patch
new file mode 100644
index 0000000..2fb8854
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/ldd-unbash.patch
@@ -0,0 +1,11 @@
+--- glibc-2.5/elf/ldd.bash.in.org 2006-04-30 16:06:20.000000000 +0000
++++ glibc-2.5/elf/ldd.bash.in 2007-03-30 19:18:57.000000000 +0000
+@@ -110,7 +110,7 @@
+ # environments where the executed program might not have permissions
+ # to write to the console/tty. But only bash 3.x supports the pipefail
+ # option, and we don't bother to handle the case for older bash versions.
+-if set -o pipefail 2> /dev/null; then
++if false; then
+ try_trace() {
+ eval $add_env '"$@"' | cat
+ }
diff --git a/recipes/glibc/glibc-2.9/ldsocache-varrun.patch b/recipes/glibc/glibc-2.9/ldsocache-varrun.patch
new file mode 100644
index 0000000..9994d4f
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/ldsocache-varrun.patch
@@ -0,0 +1,18 @@
+This patch moves ld.so.cache from /etc to /var/run. This is for devices
+where /etc is JFFS2 or CRAMFS but /var is a ramdisk.
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- libc/sysdeps/generic/dl-cache.h~ldsocache-varrun
++++ libc/sysdeps/generic/dl-cache.h
+@@ -29,7 +29,7 @@
+ #endif
+
+ #ifndef LD_SO_CACHE
+-# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache"
++# define LD_SO_CACHE "/var/run/ld.so.cache"
+ #endif
+
+ #ifndef add_system_dir
diff --git a/recipes/glibc/glibc-2.9/march-i686.patch b/recipes/glibc/glibc-2.9/march-i686.patch
new file mode 100644
index 0000000..0461603
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/march-i686.patch
@@ -0,0 +1,38 @@
+2007-02-15 Khem Raj <kraj@xxxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/i386/sysdep.h: Re-define __i686.
+ * nptl/sysdeps/pthread/pt-initfini.c: Ditto.
+
+
+
+Index: sysdeps/unix/sysv/linux/i386/sysdep.h
+===================================================================
+--- sysdeps/unix/sysv/linux/i386/sysdep.h (revision 1469)
++++ sysdeps/unix/sysv/linux/i386/sysdep.h (working copy)
+@@ -29,6 +29,10 @@
+ #include <dl-sysdep.h>
+ #include <tls.h>
+
++#if defined __i686 && defined __ASSEMBLER__
++#undef __i686
++#define __i686 __i686
++#endif
+
+ /* For Linux we can use the system call table in the header file
+ /usr/include/asm/unistd.h
+Index: nptl/sysdeps/pthread/pt-initfini.c
+===================================================================
+--- nptl/sysdeps/pthread/pt-initfini.c (revision 1469)
++++ nptl/sysdeps/pthread/pt-initfini.c (working copy)
+@@ -45,6 +45,11 @@
+ /* Embed an #include to pull in the alignment and .end directives. */
+ asm ("\n#include \"defs.h\"");
+
++asm ("\n#if defined __i686 && defined __ASSEMBLER__");
++asm ("\n#undef __i686");
++asm ("\n#define __i686 __i686");
++asm ("\n#endif");
++
+ /* The initial common code ends here. */
+ asm ("\n/*@HEADER_ENDS*/");
+
diff --git a/recipes/glibc/glibc-2.9/no-z-defs.patch b/recipes/glibc/glibc-2.9/no-z-defs.patch
new file mode 100644
index 0000000..48c6a41
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/no-z-defs.patch
@@ -0,0 +1,9 @@
+Create a configparms file which disabled no-z-defs.
+This is required to build a working glibs for sh4,
+without there will be a lot linker errors during the build.
+
+diff -duNr libc.orig/configparms libc/configparms
+--- libc.orig/configparms 1970-01-01 10:00:00.000000000 +1000
++++ libc/configparms 2006-02-23 14:08:18.000000000 +1100
+@@ -0,0 +1 @@
++no-z-defs=yes
diff --git a/recipes/glibc/glibc-2.9/nptl-crosscompile.patch b/recipes/glibc/glibc-2.9/nptl-crosscompile.patch
new file mode 100644
index 0000000..18a46ad
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/nptl-crosscompile.patch
@@ -0,0 +1,26 @@
+--- glibc-2.4/nptl/sysdeps/pthread/configure.in.ark 2006-03-12 00:41:40.000000000 +0100
++++ glibc-2.4/nptl/sysdeps/pthread/configure.in 2006-03-12 00:44:08.000000000 +0100
+@@ -45,5 +45,6 @@
+ AC_MSG_ERROR([the compiler must support C cleanup handling])
+ fi
+ else
+- AC_MSG_ERROR(forced unwind support is required)
++ AC_MSG_WARN([forced unwind support is required, can't be verified while crosscompiling])
++ AC_DEFINE(HAVE_FORCED_UNWIND)
+ fi
+--- glibc-2.4/nptl/sysdeps/pthread/configure.ark 2006-03-12 00:42:47.000000000 +0100
++++ glibc-2.4/nptl/sysdeps/pthread/configure 2006-03-12 00:44:08.000000000 +0100
+@@ -153,7 +153,10 @@
+ { (exit 1); exit 1; }; }
+ fi
+ else
+- { { echo "$as_me:$LINENO: error: forced unwind support is required" >&5
+-echo "$as_me: error: forced unwind support is required" >&2;}
+- { (exit 1); exit 1; }; }
++ { echo "$as_me:$LINENO: WARNING: forced unwind support is required, can't be verified while crosscompiling" >&5
++echo "$as_me: WARNING: forced unwind support is required, can't be verified while crosscompiling" >&2;}
++ cat >>confdefs.h <<\_ACEOF
++#define HAVE_FORCED_UNWIND 1
++_ACEOF
++
+ fi
diff --git a/recipes/glibc/glibc-2.9/nscd-init.patch b/recipes/glibc/glibc-2.9/nscd-init.patch
new file mode 100644
index 0000000..884609a
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/nscd-init.patch
@@ -0,0 +1,39 @@
+--- nscd/nscd.init
++++ nscd/nscd.init
+@@ -48,9 +48,8 @@
+
+ start () {
+ [ -d /var/run/nscd ] || mkdir /var/run/nscd
+- [ -d /var/db/nscd ] || mkdir /var/db/nscd
+ echo -n $"Starting $prog: "
+- daemon /usr/sbin/nscd
++ /usr/sbin/nscd
+ RETVAL=$?
+ echo
+ [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nscd
+@@ -67,12 +66,10 @@
+ # a non-privileged user
+ rm -f /var/run/nscd/nscd.pid
+ rm -f /var/run/nscd/socket
+- success $"$prog shutdown"
+- else
+- failure $"$prog shutdown"
+ fi
+- echo
+- return $RETVAL
++ echo "Done."
++ # If nscd did not run, return 0 according to LSB.
++ return 0
+ }
+
+ restart() {
+@@ -104,7 +101,8 @@
+ ;;
+ force-reload | reload)
+ echo -n $"Reloading $prog: "
+- killproc /usr/sbin/nscd -HUP
++ # Use killall, initscripts-1.0-r115 don't support -HUP yet.
++ killall -HUP /usr/sbin/nscd
+ RETVAL=$?
+ echo
+ ;;
diff --git a/recipes/glibc/glibc-2.9/powerpc-sqrt-hack.diff b/recipes/glibc/glibc-2.9/powerpc-sqrt-hack.diff
new file mode 100644
index 0000000..1046efb
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/powerpc-sqrt-hack.diff
@@ -0,0 +1,25 @@
+diff -Nurd ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c
+--- ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c 2006-04-14 07:44:30.000000000 +0200
++++ glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c 2006-12-08 12:53:32.202227000 +0100
+@@ -25,6 +25,9 @@
+ #include <sysdep.h>
+ #include <ldsodefs.h>
+
++#define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0)
++
++
+ static const double almost_half = 0.5000000000000001; /* 0.5 + 2^-53 */
+ static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
+ static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
+diff -Nurd ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c
+--- ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c 2006-04-14 07:44:30.000000000 +0200
++++ glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c 2006-12-08 12:53:36.992227000 +0100
+@@ -25,6 +25,8 @@
+ #include <sysdep.h>
+ #include <ldsodefs.h>
+
++#define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0)
++
+ static const float almost_half = 0.50000006; /* 0.5 + 2^-24 */
+ static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
+ static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
diff --git a/recipes/glibc/glibc-2.9/tls_i486.patch b/recipes/glibc/glibc-2.9/tls_i486.patch
new file mode 100644
index 0000000..69a1fdf
--- /dev/null
+++ b/recipes/glibc/glibc-2.9/tls_i486.patch
@@ -0,0 +1,14 @@
+Index: glibc-2.9/sysdeps/i386/dl-tlsdesc.S
+===================================================================
+--- glibc-2.9.orig/sysdeps/i386/dl-tlsdesc.S 2009-07-07 23:21:11.647664128 +0200
++++ glibc-2.9/sysdeps/i386/dl-tlsdesc.S 2009-07-07 23:21:32.802555992 +0200
+@@ -128,8 +128,7 @@
+ .Lslow:
+ cfi_adjust_cfa_offset (28)
+ movl %ebx, 16(%esp)
+- call __i686.get_pc_thunk.bx
+- addl $_GLOBAL_OFFSET_TABLE_, %ebx
++ LOAD_PIC_REG (bx)
+ call ___tls_get_addr@PLT
+ movl 16(%esp), %ebx
+ jmp .Lret
diff --git a/recipes/glibc/glibc_2.9.bb b/recipes/glibc/glibc_2.9.bb
index e7ab63d..33326f3 100644
--- a/recipes/glibc/glibc_2.9.bb
+++ b/recipes/glibc/glibc_2.9.bb
@@ -11,9 +11,6 @@ PR = "${INC_PR}.3"
BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${layout_includedir}"
-
-FILESPATHPKG =. "glibc-2.4:"
-
GLIBC_ADDONS ?= "ports,nptl,libidn"
GLIBC_BROKEN_LOCALES = " _ER _ET so_ET yn_ER sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN"
--
1.6.4.2
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH 2/3] glibc 2.10.1: cleaned up; patches only in local dir 2010-07-15 20:46 [PATCH 1/3] glibc 2.9: cleaned up; patches only in local dir Frans Meulenbroeks @ 2010-07-15 20:46 ` Frans Meulenbroeks 2010-07-15 20:46 ` [PATCH 3/3] glibc: remove old/obsolete versions Frans Meulenbroeks 2010-07-15 21:50 ` [PATCH 2/3] glibc 2.10.1: cleaned up; patches only in local dir Khem Raj 2010-07-15 21:49 ` [PATCH 1/3] glibc 2.9: " Khem Raj 2010-07-17 7:56 ` Khem Raj 2 siblings, 2 replies; 9+ messages in thread From: Frans Meulenbroeks @ 2010-07-15 20:46 UTC (permalink / raw) To: openembedded-devel moved all patches to glibc-2.10.1 removed references to other dirs. Signed-off-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com> --- recipes/glibc/glibc-2.10.1/arm-longlong.patch | 58 ++ .../arm-lowlevellock-include-tls.patch | 12 + recipes/glibc/glibc-2.10.1/arm-memcpy.patch | 758 ++++++++++++++++++++ .../glibc/glibc-2.10.1/armv4t-interworking.patch | 47 ++ recipes/glibc/glibc-2.10.1/dl-cache-libcmp.patch | 10 + recipes/glibc/glibc-2.10.1/etc/ld.so.conf | 2 + recipes/glibc/glibc-2.10.1/fhs-linux-paths.patch | 11 + recipes/glibc/glibc-2.10.1/generate-supported.mk | 11 + recipes/glibc/glibc-2.10.1/generic-bits_select.h | 35 + recipes/glibc/glibc-2.10.1/generic-bits_time.h | 75 ++ recipes/glibc/glibc-2.10.1/generic-bits_types.h | 200 +++++ .../glibc/glibc-2.10.1/generic-bits_typesizes.h | 66 ++ .../glibc-arm-IO-acquire-lock-fix.diff | 13 + recipes/glibc/glibc-2.10.1/glibc-check_pf.patch | 343 +++++++++ recipes/glibc/glibc-2.10.1/ldd-unbash.patch | 11 + recipes/glibc/glibc-2.10.1/ldsocache-varrun.patch | 18 + recipes/glibc/glibc-2.10.1/march-i686.patch | 38 + recipes/glibc/glibc-2.10.1/no-z-defs.patch | 9 + recipes/glibc/glibc-2.10.1/nptl-crosscompile.patch | 26 + recipes/glibc/glibc-2.10.1/nscd-init.patch | 39 + recipes/glibc/glibc-2.10.1/powerpc-sqrt-hack.diff | 25 + recipes/glibc/glibc_2.10.1.bb | 3 - 22 files changed, 1807 insertions(+), 3 deletions(-) create mode 100644 recipes/glibc/glibc-2.10.1/arm-longlong.patch create mode 100644 recipes/glibc/glibc-2.10.1/arm-lowlevellock-include-tls.patch create mode 100644 recipes/glibc/glibc-2.10.1/arm-memcpy.patch create mode 100644 recipes/glibc/glibc-2.10.1/armv4t-interworking.patch create mode 100644 recipes/glibc/glibc-2.10.1/dl-cache-libcmp.patch create mode 100644 recipes/glibc/glibc-2.10.1/etc/ld.so.conf create mode 100644 recipes/glibc/glibc-2.10.1/fhs-linux-paths.patch create mode 100644 recipes/glibc/glibc-2.10.1/generate-supported.mk create mode 100644 recipes/glibc/glibc-2.10.1/generic-bits_select.h create mode 100644 recipes/glibc/glibc-2.10.1/generic-bits_time.h create mode 100644 recipes/glibc/glibc-2.10.1/generic-bits_types.h create mode 100644 recipes/glibc/glibc-2.10.1/generic-bits_typesizes.h create mode 100644 recipes/glibc/glibc-2.10.1/glibc-arm-IO-acquire-lock-fix.diff create mode 100644 recipes/glibc/glibc-2.10.1/glibc-check_pf.patch create mode 100644 recipes/glibc/glibc-2.10.1/ldd-unbash.patch create mode 100644 recipes/glibc/glibc-2.10.1/ldsocache-varrun.patch create mode 100644 recipes/glibc/glibc-2.10.1/march-i686.patch create mode 100644 recipes/glibc/glibc-2.10.1/no-z-defs.patch create mode 100644 recipes/glibc/glibc-2.10.1/nptl-crosscompile.patch create mode 100644 recipes/glibc/glibc-2.10.1/nscd-init.patch create mode 100644 recipes/glibc/glibc-2.10.1/powerpc-sqrt-hack.diff diff --git a/recipes/glibc/glibc-2.10.1/arm-longlong.patch b/recipes/glibc/glibc-2.10.1/arm-longlong.patch new file mode 100644 index 0000000..28aca83 --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/arm-longlong.patch @@ -0,0 +1,58 @@ +--- glibc-2.4/stdlib/longlong.h.ark 2006-03-11 22:49:27.000000000 +0100 ++++ glibc-2.4/stdlib/longlong.h 2006-03-11 22:55:12.000000000 +0100 +@@ -206,6 +206,14 @@ + "rI" ((USItype) (bh)), \ + "r" ((USItype) (al)), \ + "rI" ((USItype) (bl)) __CLOBBER_CC) ++/* 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" \ +@@ -227,7 +235,13 @@ + : "r" ((USItype) (a)), \ + "r" ((USItype) (b)) __CLOBBER_CC );} + #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 +--- glibc-2.4/ports/sysdeps/arm/mp_clz_tab.c.ark 2006-03-11 22:56:43.000000000 +0100 ++++ glibc-2.4/ports/sysdeps/arm/mp_clz_tab.c 2006-03-11 22:58:19.000000000 +0100 +@@ -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 <stdlib/mp_clz_tab.c> ++#endif diff --git a/recipes/glibc/glibc-2.10.1/arm-lowlevellock-include-tls.patch b/recipes/glibc/glibc-2.10.1/arm-lowlevellock-include-tls.patch new file mode 100644 index 0000000..5c8062e --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/arm-lowlevellock-include-tls.patch @@ -0,0 +1,12 @@ +Index: glibc-2.9/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h +=================================================================== +--- glibc-2.9.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h 2009-06-19 20:54:35.446686910 +0400 ++++ glibc-2.9/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h 2009-06-19 20:54:43.774683370 +0400 +@@ -25,6 +25,7 @@ + #include <atomic.h> + #include <sysdep.h> + #include <kernel-features.h> ++#include <tls.h> + + #define FUTEX_WAIT 0 + #define FUTEX_WAKE 1 diff --git a/recipes/glibc/glibc-2.10.1/arm-memcpy.patch b/recipes/glibc/glibc-2.10.1/arm-memcpy.patch new file mode 100644 index 0000000..bc2b3da --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/arm-memcpy.patch @@ -0,0 +1,758 @@ +--- /dev/null 2004-02-02 20:32:13.000000000 +0000 ++++ sysdeps/arm/memmove.S 2004-03-20 18:37:23.000000000 +0000 +@@ -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-02-02 20:32:13.000000000 +0000 ++++ sysdeps/arm/bcopy.S 2004-03-20 18:37:48.000000000 +0000 +@@ -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) + +--- /dev/null 2004-02-02 20:32:13.000000000 +0000 ++++ sysdeps/arm/memcpy.S 2004-05-02 14:33:22.000000000 +0100 +@@ -0,0 +1,242 @@ ++/* ++ * 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) ++ diff --git a/recipes/glibc/glibc-2.10.1/armv4t-interworking.patch b/recipes/glibc/glibc-2.10.1/armv4t-interworking.patch new file mode 100644 index 0000000..ce91ad6 --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/armv4t-interworking.patch @@ -0,0 +1,47 @@ +--- libc/ports/sysdeps/arm/memcpy.S~ 2006-10-31 17:07:54.000000000 +0000 ++++ libc/ports/sysdeps/arm/memcpy.S 2008-10-24 11:09:34.000000000 +0100 +@@ -130,7 +130,12 @@ + strcsb r4, [r0], #1 + strcsb ip, [r0] + ++#if defined (__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__) ++ ldmfd sp!, {r0, r4, lr} ++ bx lr ++#else + ldmfd sp!, {r0, r4, pc} ++#endif + + 9: rsb ip, ip, #4 + cmp ip, #2 +--- libc/ports/sysdeps/arm/memmove.S~ 2006-10-31 17:07:54.000000000 +0000 ++++ libc/ports/sysdeps/arm/memmove.S 2008-10-24 11:09:44.000000000 +0100 +@@ -140,7 +140,12 @@ + strneb r3, [r0, #-1]! + strcsb r4, [r0, #-1]! + strcsb ip, [r0, #-1] ++#if defined (__ARM_ARCH_4T__) && defined (__THUMB_INTERWORK__) ++ ldmfd sp!, {r0, r4, lr} ++ bx lr ++#else + ldmfd sp!, {r0, r4, pc} ++#endif + + 9: cmp ip, #2 + ldrgtb r3, [r1, #-1]! +--- libc/ports/sysdeps/unix/sysv/linux/arm/clone.S~ 2005-11-16 19:03:42.000000000 +0000 ++++ libc/ports/sysdeps/unix/sysv/linux/arm/clone.S 2008-10-24 11:11:05.000000000 +0100 +@@ -96,8 +96,14 @@ + #endif + @ pick the function arg and call address off the stack and execute + ldr r0, [sp, #4] ++#if defined(__ARM_ARCH_V4T__) && defined(__THUMB_INTERWORK__) ++ ldr ip, [sp], #8 ++ mov lr, pc ++ bx ip ++#else + mov lr, pc + ldr pc, [sp], #8 ++#endif + + @ and we are done, passing the return value through r0 + b PLTJMP(_exit) diff --git a/recipes/glibc/glibc-2.10.1/dl-cache-libcmp.patch b/recipes/glibc/glibc-2.10.1/dl-cache-libcmp.patch new file mode 100644 index 0000000..2fedfa6 --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/dl-cache-libcmp.patch @@ -0,0 +1,10 @@ +--- glibc-2.4/elf/Versions.ark 2006-03-11 23:30:09.000000000 +0100 ++++ glibc-2.4/elf/Versions 2006-03-11 23:31:44.000000000 +0100 +@@ -63,5 +63,7 @@ + _dl_debug_state; + # Pointer protection. + __pointer_chk_guard; ++ # for ldconfig ++ _dl_cache_libcmp; + } + } diff --git a/recipes/glibc/glibc-2.10.1/etc/ld.so.conf b/recipes/glibc/glibc-2.10.1/etc/ld.so.conf new file mode 100644 index 0000000..46e06d3 --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/etc/ld.so.conf @@ -0,0 +1,2 @@ +/usr/local/lib + diff --git a/recipes/glibc/glibc-2.10.1/fhs-linux-paths.patch b/recipes/glibc/glibc-2.10.1/fhs-linux-paths.patch new file mode 100644 index 0000000..1f32f6d --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/fhs-linux-paths.patch @@ -0,0 +1,11 @@ +--- glibc-2.1.1/sysdeps/unix/sysv/linux/paths.h~ Thu May 27 13:16:33 1999 ++++ glibc-2.1.1/sysdeps/unix/sysv/linux/paths.h Thu May 27 13:17:55 1999 +@@ -71,7 +71,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.10.1/generate-supported.mk b/recipes/glibc/glibc-2.10.1/generate-supported.mk new file mode 100644 index 0000000..d2a28c2 --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/generate-supported.mk @@ -0,0 +1,11 @@ +#!/usr/bin/make + +include $(IN) + +all: + rm -f $(OUT) + touch $(OUT) + for locale in $(SUPPORTED-LOCALES); do \ + [ $$locale = true ] && continue; \ + echo $$locale | sed 's,/, ,' >> $(OUT); \ + done diff --git a/recipes/glibc/glibc-2.10.1/generic-bits_select.h b/recipes/glibc/glibc-2.10.1/generic-bits_select.h new file mode 100644 index 0000000..47e7ded --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/generic-bits_select.h @@ -0,0 +1,35 @@ +/* Copyright (C) 1997, 1998, 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. */ + +#ifndef _SYS_SELECT_H +# error "Never use <bits/select.h> directly; include <sys/select.h> instead." +#endif + + +/* We don't use `memset' because this would require a prototype and + the array isn't too big. */ +#define __FD_ZERO(s) \ + do { \ + unsigned int __i; \ + fd_set *__arr = (s); \ + for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \ + __FDS_BITS (__arr)[__i] = 0; \ + } while (0) +#define __FD_SET(d, s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d)) +#define __FD_CLR(d, s) (__FDS_BITS (s)[__FDELT(d)] &= ~__FDMASK(d)) +#define __FD_ISSET(d, s) ((__FDS_BITS (s)[__FDELT(d)] & __FDMASK(d)) != 0) diff --git a/recipes/glibc/glibc-2.10.1/generic-bits_time.h b/recipes/glibc/glibc-2.10.1/generic-bits_time.h new file mode 100644 index 0000000..b3184d1 --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/generic-bits_time.h @@ -0,0 +1,75 @@ +/* System-dependent timing definitions. Generic version. + Copyright (C) 1996,1997,1999-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 + 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. */ + +/* + * Never include this file directly; use <time.h> instead. + */ + +#ifndef __need_timeval +# ifndef _BITS_TIME_H +# define _BITS_TIME_H 1 + +/* ISO/IEC 9899:1990 7.12.1: <time.h> + The macro `CLOCKS_PER_SEC' is the number per second of the value + returned by the `clock' function. */ +/* CAE XSH, Issue 4, Version 2: <time.h> + The value of CLOCKS_PER_SEC is required to be 1 million on all + XSI-conformant systems. */ +# define CLOCKS_PER_SEC 1000000l + +# if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K +/* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK + presents the real value for clock ticks per second for the system. */ +# include <bits/types.h> +extern long int __sysconf (int); +# define CLK_TCK ((__clock_t) __sysconf (2)) /* 2 is _SC_CLK_TCK */ +# endif + +# ifdef __USE_POSIX199309 +/* Identifier for system-wide realtime clock. */ +# define CLOCK_REALTIME 0 +/* Monotonic system-wide clock. */ +# define CLOCK_MONOTONIC 1 +/* High-resolution timer from the CPU. */ +# define CLOCK_PROCESS_CPUTIME_ID 2 +/* Thread-specific CPU-time clock. */ +# define CLOCK_THREAD_CPUTIME_ID 3 + +/* Flag to indicate time is absolute. */ +# define TIMER_ABSTIME 1 +# endif + +# endif /* bits/time.h */ +#endif + +#ifdef __need_timeval +# undef __need_timeval +# ifndef _STRUCT_TIMEVAL +# define _STRUCT_TIMEVAL 1 +# include <bits/types.h> + +/* A time value that is accurate to the nearest + microsecond but also has a range of years. */ +struct timeval + { + __time_t tv_sec; /* Seconds. */ + __suseconds_t tv_usec; /* Microseconds. */ + }; +# endif /* struct timeval */ +#endif /* need timeval */ diff --git a/recipes/glibc/glibc-2.10.1/generic-bits_types.h b/recipes/glibc/glibc-2.10.1/generic-bits_types.h new file mode 100644 index 0000000..65c8a9f --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/generic-bits_types.h @@ -0,0 +1,200 @@ +/* bits/types.h -- definitions of __*_t types underlying *_t types. + Copyright (C) 2002, 2003, 2004, 2005 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. */ + +/* + * Never include this file directly; use <sys/types.h> instead. + */ + +#ifndef _BITS_TYPES_H +#define _BITS_TYPES_H 1 + +#include <features.h> +#include <bits/wordsize.h> + +#define __need_size_t +#include <stddef.h> + +/* Convenience types. */ +typedef unsigned char __u_char; +typedef unsigned short int __u_short; +typedef unsigned int __u_int; +typedef unsigned long int __u_long; + +/* Fixed-size types, underlying types depend on word size and compiler. */ +typedef signed char __int8_t; +typedef unsigned char __uint8_t; +typedef signed short int __int16_t; +typedef unsigned short int __uint16_t; +typedef signed int __int32_t; +typedef unsigned int __uint32_t; +#if __WORDSIZE == 64 +typedef signed long int __int64_t; +typedef unsigned long int __uint64_t; +#elif defined __GLIBC_HAVE_LONG_LONG +__extension__ typedef signed long long int __int64_t; +__extension__ typedef unsigned long long int __uint64_t; +#endif + +/* quad_t is also 64 bits. */ +#if __WORDSIZE == 64 +typedef long int __quad_t; +typedef unsigned long int __u_quad_t; +#elif defined __GLIBC_HAVE_LONG_LONG +__extension__ typedef long long int __quad_t; +__extension__ typedef unsigned long long int __u_quad_t; +#else +typedef struct +{ + long __val[2]; +} __quad_t; +typedef struct +{ + __u_long __val[2]; +} __u_quad_t; +#endif + + +/* The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE + macros for each of the OS types we define below. The definitions + of those macros must use the following macros for underlying types. + We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned + variants of each of the following integer types on this machine. + + 16 -- "natural" 16-bit type (always short) + 32 -- "natural" 32-bit type (always int) + 64 -- "natural" 64-bit type (long or long long) + LONG32 -- 32-bit type, traditionally long + QUAD -- 64-bit type, always long long + WORD -- natural type of __WORDSIZE bits (int or long) + LONGWORD -- type of __WORDSIZE bits, traditionally long + + We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the + conventional uses of `long' or `long long' type modifiers match the + types we define, even when a less-adorned type would be the same size. + This matters for (somewhat) portably writing printf/scanf formats for + these types, where using the appropriate l or ll format modifiers can + make the typedefs and the formats match up across all GNU platforms. If + we used `long' when it's 64 bits where `long long' is expected, then the + compiler would warn about the formats not matching the argument types, + and the programmer changing them to shut up the compiler would break the + program's portability. + + Here we assume what is presently the case in all the GCC configurations + we support: long long is always 64 bits, long is always word/address size, + and int is always 32 bits. */ + +#define __S16_TYPE short int +#define __U16_TYPE unsigned short int +#define __S32_TYPE int +#define __U32_TYPE unsigned int +#define __SLONGWORD_TYPE long int +#define __ULONGWORD_TYPE unsigned long int +#if __WORDSIZE == 32 +# define __SQUAD_TYPE __quad_t +# define __UQUAD_TYPE __u_quad_t +# define __SWORD_TYPE int +# define __UWORD_TYPE unsigned int +# define __SLONG32_TYPE long int +# define __ULONG32_TYPE unsigned long int +# define __S64_TYPE __quad_t +# define __U64_TYPE __u_quad_t +/* We want __extension__ before typedef's that use nonstandard base types + such as `long long' in C89 mode. */ +# define __STD_TYPE __extension__ typedef +#elif __WORDSIZE == 64 +# define __SQUAD_TYPE long int +# define __UQUAD_TYPE unsigned long int +# define __SWORD_TYPE long int +# define __UWORD_TYPE unsigned long int +# define __SLONG32_TYPE int +# define __ULONG32_TYPE unsigned int +# define __S64_TYPE long int +# define __U64_TYPE unsigned long int +/* No need to mark the typedef with __extension__. */ +# define __STD_TYPE typedef +#else +# error +#endif +#include <bits/typesizes.h> /* Defines __*_T_TYPE macros. */ + + +__STD_TYPE __DEV_T_TYPE __dev_t; /* Type of device numbers. */ +__STD_TYPE __UID_T_TYPE __uid_t; /* Type of user identifications. */ +__STD_TYPE __GID_T_TYPE __gid_t; /* Type of group identifications. */ +__STD_TYPE __INO_T_TYPE __ino_t; /* Type of file serial numbers. */ +__STD_TYPE __INO64_T_TYPE __ino64_t; /* Type of file serial numbers (LFS).*/ +__STD_TYPE __MODE_T_TYPE __mode_t; /* Type of file attribute bitmasks. */ +__STD_TYPE __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */ +__STD_TYPE __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */ +__STD_TYPE __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets (LFS). */ +__STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */ +__STD_TYPE __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */ +__STD_TYPE __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */ +__STD_TYPE __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. */ +__STD_TYPE __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement (LFS). */ +__STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */ +__STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */ +__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */ +__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */ + +__STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */ +__STD_TYPE __SWBLK_T_TYPE __swblk_t; /* Type of a swap block maybe? */ +__STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */ + +/* Clock ID used in clock and timer functions. */ +__STD_TYPE __CLOCKID_T_TYPE __clockid_t; + +/* Timer ID returned by `timer_create'. */ +__STD_TYPE __TIMER_T_TYPE __timer_t; + +/* Type to represent block size. */ +__STD_TYPE __BLKSIZE_T_TYPE __blksize_t; + +/* Types from the Large File Support interface. */ + +/* Type to count number of disk blocks. */ +__STD_TYPE __BLKCNT_T_TYPE __blkcnt_t; +__STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t; + +/* Type to count file system blocks. */ +__STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t; +__STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t; + +/* Type to count file system nodes. */ +__STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t; +__STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t; + +__STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error. */ + +/* These few don't really vary by system, they always correspond + to one of the other defined types. */ +typedef __off64_t __loff_t; /* Type of file sizes and offsets (LFS). */ +typedef __quad_t *__qaddr_t; +typedef char *__caddr_t; + +/* Duplicates info from stdint.h but this is used in unistd.h. */ +__STD_TYPE __SWORD_TYPE __intptr_t; + +/* Duplicate info from sys/socket.h. */ +__STD_TYPE __U32_TYPE __socklen_t; + + +#undef __STD_TYPE + +#endif /* bits/types.h */ diff --git a/recipes/glibc/glibc-2.10.1/generic-bits_typesizes.h b/recipes/glibc/glibc-2.10.1/generic-bits_typesizes.h new file mode 100644 index 0000000..e9226c4 --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/generic-bits_typesizes.h @@ -0,0 +1,66 @@ +/* bits/typesizes.h -- underlying types for *_t. Generic version. + Copyright (C) 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 + 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 _BITS_TYPES_H +# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead." +#endif + +#ifndef _BITS_TYPESIZES_H +#define _BITS_TYPESIZES_H 1 + +/* See <bits/types.h> for the meaning of these macros. This file exists so + that <bits/types.h> need not vary across different GNU platforms. */ + +#define __DEV_T_TYPE __UQUAD_TYPE +#define __UID_T_TYPE __U32_TYPE +#define __GID_T_TYPE __U32_TYPE +#define __INO_T_TYPE __ULONGWORD_TYPE +#define __INO64_T_TYPE __UQUAD_TYPE +#define __MODE_T_TYPE __U32_TYPE +#define __NLINK_T_TYPE __UWORD_TYPE +#define __OFF_T_TYPE __SLONGWORD_TYPE +#define __OFF64_T_TYPE __SQUAD_TYPE +#define __PID_T_TYPE __S32_TYPE +#define __RLIM_T_TYPE __ULONGWORD_TYPE +#define __RLIM64_T_TYPE __UQUAD_TYPE +#define __BLKCNT_T_TYPE __SLONGWORD_TYPE +#define __BLKCNT64_T_TYPE __SQUAD_TYPE +#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE +#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE +#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE +#define __FSFILCNT64_T_TYPE __UQUAD_TYPE +#define __ID_T_TYPE __U32_TYPE +#define __CLOCK_T_TYPE __SLONGWORD_TYPE +#define __TIME_T_TYPE __SLONGWORD_TYPE +#define __USECONDS_T_TYPE __U32_TYPE +#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE +#define __DADDR_T_TYPE __S32_TYPE +#define __SWBLK_T_TYPE __SLONGWORD_TYPE +#define __KEY_T_TYPE __S32_TYPE +#define __CLOCKID_T_TYPE __S32_TYPE +#define __TIMER_T_TYPE void * +#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE +#define __FSID_T_TYPE struct { int __val[2]; } +#define __SSIZE_T_TYPE __SWORD_TYPE + +/* Number of descriptors that can fit in an `fd_set'. */ +#define __FD_SETSIZE 1024 + + +#endif /* bits/typesizes.h */ diff --git a/recipes/glibc/glibc-2.10.1/glibc-arm-IO-acquire-lock-fix.diff b/recipes/glibc/glibc-2.10.1/glibc-arm-IO-acquire-lock-fix.diff new file mode 100644 index 0000000..a552cf0 --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/glibc-arm-IO-acquire-lock-fix.diff @@ -0,0 +1,13 @@ +Arm needs a similar fix as http://sourceware.org/ml/libc-ports/2007-12/msg00000.html + +--- /tmp/stdio-lock.h 2008-03-04 18:51:15.555038993 +0100 ++++ glibc-2.7/ports/sysdeps/unix/sysv/linux/arm/bits/stdio-lock.h 2008-03-04 18:51:28.445035052 +0100 +@@ -50,6 +50,8 @@ + _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, (_fp)); \ + _IO_flockfile (_fp) + ++# define _IO_acquire_lock_clear_flags2(_fp) _IO_acquire_lock (_fp) ++ + # define _IO_release_lock(_fp) \ + _IO_funlockfile (_fp); \ + _IO_cleanup_region_end (0) diff --git a/recipes/glibc/glibc-2.10.1/glibc-check_pf.patch b/recipes/glibc/glibc-2.10.1/glibc-check_pf.patch new file mode 100644 index 0000000..3cff6bb --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/glibc-check_pf.patch @@ -0,0 +1,343 @@ +From libc-ports-return-550-listarch-libc-ports=sources dot redhat dot com at sourceware dot org Tue Oct 31 17:37:21 2006 +Return-Path: <libc-ports-return-550-listarch-libc-ports=sources dot redhat dot com at sourceware dot org> +Delivered-To: listarch-libc-ports at sources dot redhat dot com +Received: (qmail 17273 invoked by alias); 31 Oct 2006 17:37:20 -0000 +Received: (qmail 17262 invoked by uid 22791); 31 Oct 2006 17:37:19 -0000 +X-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,TW_CP +X-Spam-Check-By: sourceware.org +Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Tue, 31 Oct 2006 17:37:11 +0000 +Received: from drow by nevyn.them.org with local (Exim 4.54) id 1GexXw-0007Dj-30; Tue, 31 Oct 2006 12:37:08 -0500 +Date: Tue, 31 Oct 2006 12:37:08 -0500 +From: Daniel Jacobowitz <drow at false dot org> +To: Mike Frysinger <vapier at gentoo dot org> +Cc: libc-ports at sourceware dot org, Philip Balister <philip dot balister at gmail dot com> +Subject: Re: Problem with glibc-2.5 on ARM +Message-ID: <20061031173708.GJ20468@nevyn.them.org> +References: <499146270610241149ibe030e0nd9d6b177a95b346e@mail.gmail.com> <499146270610241254u7cadf63ej2edf05cedbc5266f@mail.gmail.com> <20061024195837.GA20181@nevyn.them.org> <200610291954.27022.vapier@gentoo.org> +MIME-Version: 1.0 +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline +In-Reply-To: <200610291954 dot 27022 dot vapier at gentoo dot org> +User-Agent: Mutt/1.5.13 (2006-08-11) +X-IsSubscribed: yes +Mailing-List: contact libc-ports-help at sourceware dot org; run by ezmlm +Precedence: bulk +List-Subscribe: <mailto:libc-ports-subscribe at sourceware dot org> +List-Post: <mailto:libc-ports at sourceware dot org> +List-Help: <mailto:libc-ports-help at sourceware dot org>, <http://sourceware dot org/lists dot html#faqs> +Sender: libc-ports-owner at sourceware dot org +Delivered-To: mailing list libc-ports at sourceware dot org + +On Sun, Oct 29, 2006 at 07:54:25PM -0500, Mike Frysinger wrote: +> On Tuesday 24 October 2006 15:58, Daniel Jacobowitz wrote: +> > ARM is going to need a slightly different version of that file, I +> > guess. +> +> would declaring req with attribute packed not help ? +> -mike + +Nope. "struct rtgenmsg" would still have size 4. + +Philip, are you still at all interested in this for the old ABI? +I don't have time to test this patch right now, but I think it +will work. + +-- +Daniel Jacobowitz +CodeSourcery + +2006-10-31 Daniel Jacobowitz <dan@codesourcery.com> + + * sysdeps/unix/sysv/linux/arm/check_pf.c: New file. + * sysdeps/unix/sysv/linux/arm/eabi/check_pf.c: New file. + +Index: sysdeps/unix/sysv/linux/arm/check_pf.c +=================================================================== +RCS file: sysdeps/unix/sysv/linux/arm/check_pf.c +diff -N sysdeps/unix/sysv/linux/arm/check_pf.c +--- /dev/null 1 Jan 1970 00:00:00 -0000 ++++ sysdeps/unix/sysv/linux/arm/check_pf.c 31 Oct 2006 17:29:58 -0000 +@@ -0,0 +1,274 @@ ++/* Determine protocol families for which interfaces exist. ARM Linux version. ++ Copyright (C) 2003, 2006 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 <assert.h> ++#include <errno.h> ++#include <ifaddrs.h> ++#include <netdb.h> ++#include <stddef.h> ++#include <string.h> ++#include <time.h> ++#include <unistd.h> ++#include <sys/socket.h> ++ ++#include <asm/types.h> ++#include <linux/netlink.h> ++#include <linux/rtnetlink.h> ++ ++#include <not-cancel.h> ++#include <kernel-features.h> ++ ++ ++#ifndef IFA_F_TEMPORARY ++# define IFA_F_TEMPORARY IFA_F_SECONDARY ++#endif ++#ifndef IFA_F_HOMEADDRESS ++# define IFA_F_HOMEADDRESS 0 ++#endif ++ ++ ++static int ++make_request (int fd, pid_t pid, bool *seen_ipv4, bool *seen_ipv6, ++ struct in6addrinfo **in6ai, size_t *in6ailen) ++{ ++ struct req ++ { ++ struct nlmsghdr nlh; ++ struct rtgenmsg g; ++ } req; ++ struct sockaddr_nl nladdr; ++ ++ /* struct rtgenmsg consists of a single byte but the ARM ABI rounds ++ it up to a word. Clear the padding explicitly here. */ ++ assert (sizeof (req.g) == 4); ++ memset (&req.g, '\0', sizeof (req.g)); ++ ++ req.nlh.nlmsg_len = sizeof (req); ++ req.nlh.nlmsg_type = RTM_GETADDR; ++ req.nlh.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST; ++ req.nlh.nlmsg_pid = 0; ++ req.nlh.nlmsg_seq = time (NULL); ++ req.g.rtgen_family = AF_UNSPEC; ++ ++ memset (&nladdr, '\0', sizeof (nladdr)); ++ nladdr.nl_family = AF_NETLINK; ++ ++ if (TEMP_FAILURE_RETRY (__sendto (fd, (void *) &req, sizeof (req), 0, ++ (struct sockaddr *) &nladdr, ++ sizeof (nladdr))) < 0) ++ return -1; ++ ++ *seen_ipv4 = false; ++ *seen_ipv6 = false; ++ ++ bool done = false; ++ char buf[4096]; ++ struct iovec iov = { buf, sizeof (buf) }; ++ struct in6ailist ++ { ++ struct in6addrinfo info; ++ struct in6ailist *next; ++ } *in6ailist = NULL; ++ size_t in6ailistlen = 0; ++ ++ do ++ { ++ struct msghdr msg = ++ { ++ (void *) &nladdr, sizeof (nladdr), ++ &iov, 1, ++ NULL, 0, ++ 0 ++ }; ++ ++ ssize_t read_len = TEMP_FAILURE_RETRY (__recvmsg (fd, &msg, 0)); ++ if (read_len < 0) ++ return -1; ++ ++ if (msg.msg_flags & MSG_TRUNC) ++ return -1; ++ ++ struct nlmsghdr *nlmh; ++ for (nlmh = (struct nlmsghdr *) buf; ++ NLMSG_OK (nlmh, (size_t) read_len); ++ nlmh = (struct nlmsghdr *) NLMSG_NEXT (nlmh, read_len)) ++ { ++ if (nladdr.nl_pid != 0 || (pid_t) nlmh->nlmsg_pid != pid ++ || nlmh->nlmsg_seq != req.nlh.nlmsg_seq) ++ continue; ++ ++ if (nlmh->nlmsg_type == RTM_NEWADDR) ++ { ++ struct ifaddrmsg *ifam = (struct ifaddrmsg *) NLMSG_DATA (nlmh); ++ ++ switch (ifam->ifa_family) ++ { ++ case AF_INET: ++ *seen_ipv4 = true; ++ break; ++ case AF_INET6: ++ *seen_ipv6 = true; ++ ++ if (ifam->ifa_flags & (IFA_F_DEPRECATED ++ | IFA_F_TEMPORARY ++ | IFA_F_HOMEADDRESS)) ++ { ++ struct rtattr *rta = IFA_RTA (ifam); ++ size_t len = (nlmh->nlmsg_len ++ - NLMSG_LENGTH (sizeof (*ifam))); ++ void *local = NULL; ++ void *address = NULL; ++ while (RTA_OK (rta, len)) ++ { ++ switch (rta->rta_type) ++ { ++ case IFA_LOCAL: ++ local = RTA_DATA (rta); ++ break; ++ ++ case IFA_ADDRESS: ++ address = RTA_DATA (rta); ++ break; ++ } ++ ++ rta = RTA_NEXT (rta, len); ++ } ++ ++ struct in6ailist *newp = alloca (sizeof (*newp)); ++ newp->info.flags = (((ifam->ifa_flags & IFA_F_DEPRECATED) ++ ? in6ai_deprecated : 0) ++ | ((ifam->ifa_flags ++ & IFA_F_TEMPORARY) ++ ? in6ai_temporary : 0) ++ | ((ifam->ifa_flags ++ & IFA_F_HOMEADDRESS) ++ ? in6ai_homeaddress : 0)); ++ memcpy (newp->info.addr, address ?: local, ++ sizeof (newp->info.addr)); ++ newp->next = in6ailist; ++ in6ailist = newp; ++ ++in6ailistlen; ++ } ++ break; ++ default: ++ /* Ignore. */ ++ break; ++ } ++ } ++ else if (nlmh->nlmsg_type == NLMSG_DONE) ++ /* We found the end, leave the loop. */ ++ done = true; ++ } ++ } ++ while (! done); ++ ++ close_not_cancel_no_status (fd); ++ ++ if (in6ailist != NULL) ++ { ++ *in6ai = malloc (in6ailistlen * sizeof (**in6ai)); ++ if (*in6ai == NULL) ++ return -1; ++ ++ *in6ailen = in6ailistlen; ++ ++ do ++ { ++ (*in6ai)[--in6ailistlen] = in6ailist->info; ++ in6ailist = in6ailist->next; ++ } ++ while (in6ailist != NULL); ++ } ++ ++ return 0; ++} ++ ++ ++/* We don't know if we have NETLINK support compiled in in our ++ Kernel. */ ++#if __ASSUME_NETLINK_SUPPORT == 0 ++/* Define in ifaddrs.h. */ ++extern int __no_netlink_support attribute_hidden; ++#else ++# define __no_netlink_support 0 ++#endif ++ ++ ++void ++attribute_hidden ++__check_pf (bool *seen_ipv4, bool *seen_ipv6, ++ struct in6addrinfo **in6ai, size_t *in6ailen) ++{ ++ *in6ai = NULL; ++ *in6ailen = 0; ++ ++ if (! __no_netlink_support) ++ { ++ int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE); ++ ++ struct sockaddr_nl nladdr; ++ memset (&nladdr, '\0', sizeof (nladdr)); ++ nladdr.nl_family = AF_NETLINK; ++ ++ socklen_t addr_len = sizeof (nladdr); ++ ++ if (fd >= 0 ++ && __bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0 ++ && __getsockname (fd, (struct sockaddr *) &nladdr, &addr_len) == 0 ++ && make_request (fd, nladdr.nl_pid, seen_ipv4, seen_ipv6, ++ in6ai, in6ailen) == 0) ++ /* It worked. */ ++ return; ++ ++ if (fd >= 0) ++ __close (fd); ++ ++#if __ASSUME_NETLINK_SUPPORT == 0 ++ /* Remember that there is no netlink support. */ ++ __no_netlink_support = 1; ++#else ++ /* We cannot determine what interfaces are available. Be ++ pessimistic. */ ++ *seen_ipv4 = true; ++ *seen_ipv6 = true; ++#endif ++ } ++ ++#if __ASSUME_NETLINK_SUPPORT == 0 ++ /* No netlink. Get the interface list via getifaddrs. */ ++ struct ifaddrs *ifa = NULL; ++ if (getifaddrs (&ifa) != 0) ++ { ++ /* We cannot determine what interfaces are available. Be ++ pessimistic. */ ++ *seen_ipv4 = true; ++ *seen_ipv6 = true; ++ return; ++ } ++ ++ struct ifaddrs *runp; ++ for (runp = ifa; runp != NULL; runp = runp->ifa_next) ++ if (runp->ifa_addr->sa_family == PF_INET) ++ *seen_ipv4 = true; ++ else if (runp->ifa_addr->sa_family == PF_INET6) ++ *seen_ipv6 = true; ++ ++ (void) freeifaddrs (ifa); ++#endif ++} +Index: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c +=================================================================== +RCS file: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c +diff -N sysdeps/unix/sysv/linux/arm/eabi/check_pf.c +--- /dev/null 1 Jan 1970 00:00:00 -0000 ++++ sysdeps/unix/sysv/linux/arm/eabi/check_pf.c 31 Oct 2006 17:29:58 -0000 +@@ -0,0 +1 @@ ++#include <sysdeps/unix/sysv/linux/check_pf.c> + diff --git a/recipes/glibc/glibc-2.10.1/ldd-unbash.patch b/recipes/glibc/glibc-2.10.1/ldd-unbash.patch new file mode 100644 index 0000000..2fb8854 --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/ldd-unbash.patch @@ -0,0 +1,11 @@ +--- glibc-2.5/elf/ldd.bash.in.org 2006-04-30 16:06:20.000000000 +0000 ++++ glibc-2.5/elf/ldd.bash.in 2007-03-30 19:18:57.000000000 +0000 +@@ -110,7 +110,7 @@ + # environments where the executed program might not have permissions + # to write to the console/tty. But only bash 3.x supports the pipefail + # option, and we don't bother to handle the case for older bash versions. +-if set -o pipefail 2> /dev/null; then ++if false; then + try_trace() { + eval $add_env '"$@"' | cat + } diff --git a/recipes/glibc/glibc-2.10.1/ldsocache-varrun.patch b/recipes/glibc/glibc-2.10.1/ldsocache-varrun.patch new file mode 100644 index 0000000..9994d4f --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/ldsocache-varrun.patch @@ -0,0 +1,18 @@ +This patch moves ld.so.cache from /etc to /var/run. This is for devices +where /etc is JFFS2 or CRAMFS but /var is a ramdisk. + +# +# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher +# + +--- libc/sysdeps/generic/dl-cache.h~ldsocache-varrun ++++ libc/sysdeps/generic/dl-cache.h +@@ -29,7 +29,7 @@ + #endif + + #ifndef LD_SO_CACHE +-# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache" ++# define LD_SO_CACHE "/var/run/ld.so.cache" + #endif + + #ifndef add_system_dir diff --git a/recipes/glibc/glibc-2.10.1/march-i686.patch b/recipes/glibc/glibc-2.10.1/march-i686.patch new file mode 100644 index 0000000..0461603 --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/march-i686.patch @@ -0,0 +1,38 @@ +2007-02-15 Khem Raj <kraj@xxxxxxxxxx> + + * sysdeps/unix/sysv/linux/i386/sysdep.h: Re-define __i686. + * nptl/sysdeps/pthread/pt-initfini.c: Ditto. + + + +Index: sysdeps/unix/sysv/linux/i386/sysdep.h +=================================================================== +--- sysdeps/unix/sysv/linux/i386/sysdep.h (revision 1469) ++++ sysdeps/unix/sysv/linux/i386/sysdep.h (working copy) +@@ -29,6 +29,10 @@ + #include <dl-sysdep.h> + #include <tls.h> + ++#if defined __i686 && defined __ASSEMBLER__ ++#undef __i686 ++#define __i686 __i686 ++#endif + + /* For Linux we can use the system call table in the header file + /usr/include/asm/unistd.h +Index: nptl/sysdeps/pthread/pt-initfini.c +=================================================================== +--- nptl/sysdeps/pthread/pt-initfini.c (revision 1469) ++++ nptl/sysdeps/pthread/pt-initfini.c (working copy) +@@ -45,6 +45,11 @@ + /* Embed an #include to pull in the alignment and .end directives. */ + asm ("\n#include \"defs.h\""); + ++asm ("\n#if defined __i686 && defined __ASSEMBLER__"); ++asm ("\n#undef __i686"); ++asm ("\n#define __i686 __i686"); ++asm ("\n#endif"); ++ + /* The initial common code ends here. */ + asm ("\n/*@HEADER_ENDS*/"); + diff --git a/recipes/glibc/glibc-2.10.1/no-z-defs.patch b/recipes/glibc/glibc-2.10.1/no-z-defs.patch new file mode 100644 index 0000000..48c6a41 --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/no-z-defs.patch @@ -0,0 +1,9 @@ +Create a configparms file which disabled no-z-defs. +This is required to build a working glibs for sh4, +without there will be a lot linker errors during the build. + +diff -duNr libc.orig/configparms libc/configparms +--- libc.orig/configparms 1970-01-01 10:00:00.000000000 +1000 ++++ libc/configparms 2006-02-23 14:08:18.000000000 +1100 +@@ -0,0 +1 @@ ++no-z-defs=yes diff --git a/recipes/glibc/glibc-2.10.1/nptl-crosscompile.patch b/recipes/glibc/glibc-2.10.1/nptl-crosscompile.patch new file mode 100644 index 0000000..18a46ad --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/nptl-crosscompile.patch @@ -0,0 +1,26 @@ +--- glibc-2.4/nptl/sysdeps/pthread/configure.in.ark 2006-03-12 00:41:40.000000000 +0100 ++++ glibc-2.4/nptl/sysdeps/pthread/configure.in 2006-03-12 00:44:08.000000000 +0100 +@@ -45,5 +45,6 @@ + AC_MSG_ERROR([the compiler must support C cleanup handling]) + fi + else +- AC_MSG_ERROR(forced unwind support is required) ++ AC_MSG_WARN([forced unwind support is required, can't be verified while crosscompiling]) ++ AC_DEFINE(HAVE_FORCED_UNWIND) + fi +--- glibc-2.4/nptl/sysdeps/pthread/configure.ark 2006-03-12 00:42:47.000000000 +0100 ++++ glibc-2.4/nptl/sysdeps/pthread/configure 2006-03-12 00:44:08.000000000 +0100 +@@ -153,7 +153,10 @@ + { (exit 1); exit 1; }; } + fi + else +- { { echo "$as_me:$LINENO: error: forced unwind support is required" >&5 +-echo "$as_me: error: forced unwind support is required" >&2;} +- { (exit 1); exit 1; }; } ++ { echo "$as_me:$LINENO: WARNING: forced unwind support is required, can't be verified while crosscompiling" >&5 ++echo "$as_me: WARNING: forced unwind support is required, can't be verified while crosscompiling" >&2;} ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_FORCED_UNWIND 1 ++_ACEOF ++ + fi diff --git a/recipes/glibc/glibc-2.10.1/nscd-init.patch b/recipes/glibc/glibc-2.10.1/nscd-init.patch new file mode 100644 index 0000000..884609a --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/nscd-init.patch @@ -0,0 +1,39 @@ +--- nscd/nscd.init ++++ nscd/nscd.init +@@ -48,9 +48,8 @@ + + start () { + [ -d /var/run/nscd ] || mkdir /var/run/nscd +- [ -d /var/db/nscd ] || mkdir /var/db/nscd + echo -n $"Starting $prog: " +- daemon /usr/sbin/nscd ++ /usr/sbin/nscd + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nscd +@@ -67,12 +66,10 @@ + # a non-privileged user + rm -f /var/run/nscd/nscd.pid + rm -f /var/run/nscd/socket +- success $"$prog shutdown" +- else +- failure $"$prog shutdown" + fi +- echo +- return $RETVAL ++ echo "Done." ++ # If nscd did not run, return 0 according to LSB. ++ return 0 + } + + restart() { +@@ -104,7 +101,8 @@ + ;; + force-reload | reload) + echo -n $"Reloading $prog: " +- killproc /usr/sbin/nscd -HUP ++ # Use killall, initscripts-1.0-r115 don't support -HUP yet. ++ killall -HUP /usr/sbin/nscd + RETVAL=$? + echo + ;; diff --git a/recipes/glibc/glibc-2.10.1/powerpc-sqrt-hack.diff b/recipes/glibc/glibc-2.10.1/powerpc-sqrt-hack.diff new file mode 100644 index 0000000..1046efb --- /dev/null +++ b/recipes/glibc/glibc-2.10.1/powerpc-sqrt-hack.diff @@ -0,0 +1,25 @@ +diff -Nurd ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c +--- ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c 2006-04-14 07:44:30.000000000 +0200 ++++ glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c 2006-12-08 12:53:32.202227000 +0100 +@@ -25,6 +25,9 @@ + #include <sysdep.h> + #include <ldsodefs.h> + ++#define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0) ++ ++ + static const double almost_half = 0.5000000000000001; /* 0.5 + 2^-53 */ + static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 }; + static const ieee_float_shape_type a_inf = {.word = 0x7f800000 }; +diff -Nurd ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c +--- ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c 2006-04-14 07:44:30.000000000 +0200 ++++ glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c 2006-12-08 12:53:36.992227000 +0100 +@@ -25,6 +25,8 @@ + #include <sysdep.h> + #include <ldsodefs.h> + ++#define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0) ++ + static const float almost_half = 0.50000006; /* 0.5 + 2^-24 */ + static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 }; + static const ieee_float_shape_type a_inf = {.word = 0x7f800000 }; diff --git a/recipes/glibc/glibc_2.10.1.bb b/recipes/glibc/glibc_2.10.1.bb index 3c2fce8..b29e36a 100644 --- a/recipes/glibc/glibc_2.10.1.bb +++ b/recipes/glibc/glibc_2.10.1.bb @@ -11,9 +11,6 @@ RPROVIDES_${PN}-dev = "libc6-dev virtual-libc-dev" BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}" TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${layout_includedir}" - -FILESPATHPKG =. "glibc-2.4:" - GLIBC_ADDONS ?= "ports,nptl,libidn" GLIBC_BROKEN_LOCALES = " _ER _ET so_ET yn_ER sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN" -- 1.6.4.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/3] glibc: remove old/obsolete versions 2010-07-15 20:46 ` [PATCH 2/3] glibc 2.10.1: " Frans Meulenbroeks @ 2010-07-15 20:46 ` Frans Meulenbroeks 2010-07-16 6:41 ` Graham Gower 2010-07-15 21:50 ` [PATCH 2/3] glibc 2.10.1: cleaned up; patches only in local dir Khem Raj 1 sibling, 1 reply; 9+ messages in thread From: Frans Meulenbroeks @ 2010-07-15 20:46 UTC (permalink / raw) To: openembedded-devel as mentioned before on the OE ML. removing some old versions which are not pinned by any distro and are fairly old: glibc-initial_2.3.2+cvs20040726.bb glibc-initial_2.3.6.bb glibc-initial_2.4.bb glibc-initial_2.7.bb glibc_2.3.2+cvs20040726.bb glibc_2.3.3+cvs20041128.bb glibc_2.3.3+cvs20050221.bb glibc_2.3.3+cvs20050420.bb glibc_2.3.6.bb glibc_2.4.bb glibc_2.7.bb Signed-off-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com> --- recipes/glibc/glibc-2.3.6/etc/ld.so.conf | 2 - ...-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch | 28 - ...ibc-2.3.6-bind-already-defined-on-powerpc.patch | 65 -- ...hreads-allow-gcc-4.1-powerpc32-initfini.s.patch | 28 - .../glibc-2.3.6-linuxthreads-pthread-raise.patch | 37 - .../glibc-2.3.6/glibc-arm-socket-weakalias.patch | 45 -- recipes/glibc/glibc-2.3.6/glibc-cross_sunrpc.patch | 79 -- recipes/glibc/glibc-2.3.6/glibc-memusage.patch | 44 -- .../glibc/glibc-2.3.6/glibc-rtld-libcc-eh.patch | 25 - .../glibc-2.3.6/late-install-loop-break.patch | 29 - recipes/glibc/glibc-2.4/arm-longlong.patch | 58 -- recipes/glibc/glibc-2.4/arm-memcpy.patch | 758 -------------------- recipes/glibc/glibc-2.4/arm_eabi_ipc_fix.patch | 94 --- recipes/glibc/glibc-2.4/dl-cache-libcmp.patch | 10 - .../glibc/glibc-2.4/dyn-ldconfig-20041128.patch | 22 - recipes/glibc/glibc-2.4/dyn-ldconfig.patch | 62 -- recipes/glibc/glibc-2.4/etc/ld.so.conf | 2 - recipes/glibc/glibc-2.4/fixup-aeabi-syscalls.patch | 329 --------- recipes/glibc/glibc-2.4/generic-bits_select.h | 35 - recipes/glibc/glibc-2.4/generic-bits_time.h | 75 -- recipes/glibc/glibc-2.4/generic-bits_types.h | 200 ----- recipes/glibc/glibc-2.4/generic-bits_typesizes.h | 66 -- recipes/glibc/glibc-2.4/glibc-2.4-compile.patch | 29 - recipes/glibc/glibc-2.4/glibc-2.4-openat-3.patch | 133 ---- .../glibc-2.4/glibc-arm-IO-acquire-lock-fix.diff | 13 - .../glibc/glibc-2.4/glibc-arm-no-asm-page.patch | 15 - recipes/glibc/glibc-2.4/glibc-check_pf.patch | 343 --------- .../glibc/glibc-2.4/glibc-crunch-eabi-force.patch | 133 ---- .../glibc-2.4/glibc-crunch-eabi-fraiseexcpt.patch | 88 --- .../glibc-crunch-eabi-setjmp_longjmp.patch | 112 --- .../glibc/glibc-2.4/glibc-crunch-eabi-unwind.patch | 12 - recipes/glibc/glibc-2.4/glibc-crunch-eabi.patch | 461 ------------ .../glibc-crunch-endian-bigword-littlebyte.patch | 40 - ...glibc-crunch-endian-littleword-littlebyte.patch | 40 - recipes/glibc/glibc-2.4/glibc-crunch-oabi.patch | 310 -------- recipes/glibc/glibc-2.4/glibc-crunch-oabi2.patch | 18 - .../glibc-use-isystem-include-fixed.patch | 46 -- recipes/glibc/glibc-2.4/ldd-unbash.patch | 11 - recipes/glibc/glibc-2.4/ldsocache-varrun.patch | 18 - recipes/glibc/glibc-2.4/no-z-defs.patch | 9 - recipes/glibc/glibc-2.4/nptl-crosscompile.patch | 26 - recipes/glibc/glibc-2.4/powerpc-sqrt-hack.diff | 25 - recipes/glibc/glibc-2.4/zecke-sane-readelf.patch | 243 ------- recipes/glibc/glibc-2.7/all_glibc-i586-chk.patch | 33 - recipes/glibc/glibc-initial_2.3.2+cvs20040726.bb | 4 - recipes/glibc/glibc-initial_2.3.6.bb | 2 - recipes/glibc/glibc-initial_2.4.bb | 2 - recipes/glibc/glibc-initial_2.7.bb | 6 - recipes/glibc/glibc_2.3.2+cvs20040726.bb | 78 -- recipes/glibc/glibc_2.3.3+cvs20041128.bb | 100 --- recipes/glibc/glibc_2.3.3+cvs20050221.bb | 83 --- recipes/glibc/glibc_2.3.3+cvs20050420.bb | 84 --- recipes/glibc/glibc_2.3.6.bb | 118 --- recipes/glibc/glibc_2.4.bb | 156 ---- recipes/glibc/glibc_2.7.bb | 169 ----- 55 files changed, 0 insertions(+), 5053 deletions(-) delete mode 100644 recipes/glibc/glibc-2.3.6/etc/ld.so.conf delete mode 100644 recipes/glibc/glibc-2.3.6/glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch delete mode 100644 recipes/glibc/glibc-2.3.6/glibc-2.3.6-bind-already-defined-on-powerpc.patch delete mode 100644 recipes/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-allow-gcc-4.1-powerpc32-initfini.s.patch delete mode 100644 recipes/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-pthread-raise.patch delete mode 100644 recipes/glibc/glibc-2.3.6/glibc-arm-socket-weakalias.patch delete mode 100644 recipes/glibc/glibc-2.3.6/glibc-cross_sunrpc.patch delete mode 100644 recipes/glibc/glibc-2.3.6/glibc-memusage.patch delete mode 100644 recipes/glibc/glibc-2.3.6/glibc-rtld-libcc-eh.patch delete mode 100644 recipes/glibc/glibc-2.3.6/late-install-loop-break.patch delete mode 100644 recipes/glibc/glibc-2.4/arm-longlong.patch delete mode 100644 recipes/glibc/glibc-2.4/arm-memcpy.patch delete mode 100644 recipes/glibc/glibc-2.4/arm_eabi_ipc_fix.patch delete mode 100644 recipes/glibc/glibc-2.4/dl-cache-libcmp.patch delete mode 100644 recipes/glibc/glibc-2.4/dyn-ldconfig-20041128.patch delete mode 100644 recipes/glibc/glibc-2.4/dyn-ldconfig.patch delete mode 100644 recipes/glibc/glibc-2.4/etc/ld.so.conf delete mode 100644 recipes/glibc/glibc-2.4/fixup-aeabi-syscalls.patch delete mode 100644 recipes/glibc/glibc-2.4/generic-bits_select.h delete mode 100644 recipes/glibc/glibc-2.4/generic-bits_time.h delete mode 100644 recipes/glibc/glibc-2.4/generic-bits_types.h delete mode 100644 recipes/glibc/glibc-2.4/generic-bits_typesizes.h delete mode 100644 recipes/glibc/glibc-2.4/glibc-2.4-compile.patch delete mode 100644 recipes/glibc/glibc-2.4/glibc-2.4-openat-3.patch delete mode 100644 recipes/glibc/glibc-2.4/glibc-arm-IO-acquire-lock-fix.diff delete mode 100644 recipes/glibc/glibc-2.4/glibc-arm-no-asm-page.patch delete mode 100644 recipes/glibc/glibc-2.4/glibc-check_pf.patch delete mode 100644 recipes/glibc/glibc-2.4/glibc-crunch-eabi-force.patch delete mode 100644 recipes/glibc/glibc-2.4/glibc-crunch-eabi-fraiseexcpt.patch delete mode 100644 recipes/glibc/glibc-2.4/glibc-crunch-eabi-setjmp_longjmp.patch delete mode 100644 recipes/glibc/glibc-2.4/glibc-crunch-eabi-unwind.patch delete mode 100644 recipes/glibc/glibc-2.4/glibc-crunch-eabi.patch delete mode 100644 recipes/glibc/glibc-2.4/glibc-crunch-endian-bigword-littlebyte.patch delete mode 100644 recipes/glibc/glibc-2.4/glibc-crunch-endian-littleword-littlebyte.patch delete mode 100644 recipes/glibc/glibc-2.4/glibc-crunch-oabi.patch delete mode 100644 recipes/glibc/glibc-2.4/glibc-crunch-oabi2.patch delete mode 100644 recipes/glibc/glibc-2.4/glibc-use-isystem-include-fixed.patch delete mode 100644 recipes/glibc/glibc-2.4/ldd-unbash.patch delete mode 100644 recipes/glibc/glibc-2.4/ldsocache-varrun.patch delete mode 100644 recipes/glibc/glibc-2.4/no-z-defs.patch delete mode 100644 recipes/glibc/glibc-2.4/nptl-crosscompile.patch delete mode 100644 recipes/glibc/glibc-2.4/powerpc-sqrt-hack.diff delete mode 100644 recipes/glibc/glibc-2.4/zecke-sane-readelf.patch delete mode 100644 recipes/glibc/glibc-2.7/all_glibc-i586-chk.patch delete mode 100644 recipes/glibc/glibc-initial_2.3.2+cvs20040726.bb delete mode 100644 recipes/glibc/glibc-initial_2.3.6.bb delete mode 100644 recipes/glibc/glibc-initial_2.4.bb delete mode 100644 recipes/glibc/glibc-initial_2.7.bb delete mode 100644 recipes/glibc/glibc_2.3.2+cvs20040726.bb delete mode 100644 recipes/glibc/glibc_2.3.3+cvs20041128.bb delete mode 100644 recipes/glibc/glibc_2.3.3+cvs20050221.bb delete mode 100644 recipes/glibc/glibc_2.3.3+cvs20050420.bb delete mode 100644 recipes/glibc/glibc_2.3.6.bb delete mode 100644 recipes/glibc/glibc_2.4.bb delete mode 100644 recipes/glibc/glibc_2.7.bb diff --git a/recipes/glibc/glibc-2.3.6/etc/ld.so.conf b/recipes/glibc/glibc-2.3.6/etc/ld.so.conf deleted file mode 100644 index 46e06d3..0000000 --- a/recipes/glibc/glibc-2.3.6/etc/ld.so.conf +++ /dev/null @@ -1,2 +0,0 @@ -/usr/local/lib - diff --git a/recipes/glibc/glibc-2.3.6/glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch b/recipes/glibc/glibc-2.3.6/glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch deleted file mode 100644 index 4348d6f..0000000 --- a/recipes/glibc/glibc-2.3.6/glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch +++ /dev/null @@ -1,28 +0,0 @@ -fixes - -{BUILD_DIR}/build-glibc/csu/crtn.o: In function "dummy": -{BUILD_DIR}/build-glibc/csu/crtn.S:14: multiple definition of "dummy" -{BUILD_DIR}/build-glibc/csu/crti.o:{BUILD_DIR}/build-glibc/csu/crti.S:33: first defined here -{BUILD_DIR}/build-glibc/csu/crtn.o: In function "_init": -{BUILD_DIR}/build-glibc/csu/crtn.S:30: multiple definition of "_init" -{BUILD_DIR}/build-glibc/csu/crti.o:{BUILD_DIR}/build-glibc/csu/crti.S:65: first defined here -{BUILD_DIR}/build-glibc/csu/crtn.o: In function "_fini": -{BUILD_DIR}/build-glibc/csu/crtn.S:25: multiple definition of "_fini" -{BUILD_DIR}/build-glibc/csu/crti.o:{BUILD_DIR}/build-glibc/csu/crti.S:38: first defined here -{BUILD_DIR}/build-glibc/csu/crti.o: In function "_fini": -{BUILD_DIR}/build-glibc/csu/crti.S:(.init+0x20): undefined reference to "i_am_not_a_leaf" -{BUILD_DIR}/build-glibc/csu/crtn.o: In function "_fini": -{BUILD_DIR}/build-glibc/csu/crtn.S:(.init+0x40): undefined reference to "i_am_not_a_leaf" -{BUILD_DIR}/build-glibc/csu/crtn.S:(.init+0x44): undefined reference to "i_am_not_a_leaf" - ---- glibc-2.3.6/sysdeps/powerpc/powerpc32/Makefile.org 2006-08-21 19:03:01.000000000 -0700 -+++ glibc-2.3.6/sysdeps/powerpc/powerpc32/Makefile 2006-08-21 19:03:19.000000000 -0700 -@@ -21,7 +21,7 @@ - ifneq ($(elf),no) - # The initfini generation code doesn't work in the presence of -fPIC, so - # we use -fpic instead which is much better. --CFLAGS-initfini.s = -g0 -fpic -O1 -+CFLAGS-initfini.s = -g0 -fpic -O1 $(fno-unit-at-a-time) - - # There is no benefit to using sdata for these objects, and the user - # of the library should be able to control what goes into sdata. diff --git a/recipes/glibc/glibc-2.3.6/glibc-2.3.6-bind-already-defined-on-powerpc.patch b/recipes/glibc/glibc-2.3.6/glibc-2.3.6-bind-already-defined-on-powerpc.patch deleted file mode 100644 index 9938ef6..0000000 --- a/recipes/glibc/glibc-2.3.6/glibc-2.3.6-bind-already-defined-on-powerpc.patch +++ /dev/null @@ -1,65 +0,0 @@ -Fixes "Error: symbol `__bind' is already defined" error when building for PowerPC - -Patch taken from http://bugs.debian.org/343571 - - ---- x/sysdeps/powerpc/powerpc32/fpu/s_lround.S 2004-06-30 17:29:12.000000000 -0500 -+++ x/sysdeps/powerpc/powerpc32/fpu/s_lround.S 2005-11-18 16:48:11.000000000 -0600 -@@ -88,7 +79,6 @@ - b .L9 - END (__lround) - --strong_alias (__lround, __lround) - weak_alias (__lround, lround) - - strong_alias (__lround, __lroundf) ---- x/sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S 2005-12-16 01:04:21.000000000 -0600 -+++ x/sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S 2005-12-16 01:06:26.000000000 -0600 -@@ -42,7 +42,11 @@ - #define stackblock 20 - - #ifndef __socket --#define __socket P(__,socket) -+# ifndef NO_WEAK_ALIAS -+# define __socket P(__,socket) -+# else -+# define __socket socket -+# endif - #endif - - .text -@@ -116,4 +120,6 @@ - - PSEUDO_END (__socket) - -+#ifndef NO_WEAK_ALIAS - weak_alias (__socket, socket) -+#endif ---- x/sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S 2005-12-16 01:08:45.000000000 -0600 -+++ x/sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S 2005-12-16 01:09:32.000000000 -0600 -@@ -41,12 +41,12 @@ - - #define stackblock 80 /* offset to socket parm area. */ - --#ifndef socket --/* If this is just socket.S leave it alone! */ --#else - #ifndef __socket --#define __socket P(__,socket) --#endif -+# ifndef NO_WEAK_ALIAS -+# define __socket P(__,socket) -+# else -+# define __socket socket -+# endif - #endif - - .text -@@ -120,4 +120,6 @@ - cfi_endproc - PSEUDO_END (__socket) - -+#ifndef NO_WEAK_ALIAS - weak_alias (__socket, socket) -+#endif - diff --git a/recipes/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-allow-gcc-4.1-powerpc32-initfini.s.patch b/recipes/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-allow-gcc-4.1-powerpc32-initfini.s.patch deleted file mode 100644 index 9976ecc..0000000 --- a/recipes/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-allow-gcc-4.1-powerpc32-initfini.s.patch +++ /dev/null @@ -1,28 +0,0 @@ -fixes - -{BUILD_DIR}/build-glibc/linuxthreads/crtn.o: In function "dummy": -{BUILD_DIR}/build-glibc/linuxthreads/crtn.S:14: multiple definition of "dummy" -{BUILD_DIR}/build-glibc/linuxthreads/crti.o:{BUILD_DIR}/build-glibc/linuxthreads/crti.S:33: first defined here -{BUILD_DIR}/build-glibc/linuxthreads/crtn.o: In function "_fini": -{BUILD_DIR}/build-glibc/linuxthreads/crtn.S:30: multiple definition of "_fini" -{BUILD_DIR}/build-glibc/linuxthreads/crti.o:{BUILD_DIR}/build-glibc/linuxthreads/crti.S:65: first defined here -{BUILD_DIR}/build-glibc/linuxthreads/crtn.o: In function "_init": -{BUILD_DIR}/build-glibc/linuxthreads/crtn.S:23: multiple definition of "_init" -{BUILD_DIR}/build-glibc/linuxthreads/crti.o:{BUILD_DIR}/build-glibc/linuxthreads/crti.S:37: first defined here -{BUILD_DIR}/build-glibc/linuxthreads/crti.o: In function "_fini": -{BUILD_DIR}/build-glibc/linuxthreads/crti.S:(.text+0x70): undefined reference to "i_am_not_a_leaf" -{BUILD_DIR}/build-glibc/linuxthreads/crtn.o: In function "_fini": -{BUILD_DIR}/build-glibc/linuxthreads/crtn.S:(.text+0x38): undefined reference to "i_am_not_a_leaf" -collect2: ld returned 1 exit status - ---- glibc-2.3.6/linuxthreads/sysdeps/powerpc/Makefile.org 2003-02-17 20:33:17.000000000 +0000 -+++ glibc-2.3.6/linuxthreads/sysdeps/powerpc/Makefile 2007-04-04 16:26:01.969067632 +0100 -@@ -1,6 +1,6 @@ - ifeq ($(subdir):$(elf),linuxthreads:yes) - # See CFLAGS-initfini.s above; this is the same code. --CFLAGS-pt-initfini.s = -g0 -fpic -O1 -+CFLAGS-pt-initfini.s = -g0 -fpic -O1 $(fno-unit-at-a-time) - endif - ifeq ($(subdir),csu) - gen-as-const-headers += tcb-offsets.sym - diff --git a/recipes/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-pthread-raise.patch b/recipes/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-pthread-raise.patch deleted file mode 100644 index dae5db3..0000000 --- a/recipes/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-pthread-raise.patch +++ /dev/null @@ -1,37 +0,0 @@ ---- glibc-2.3.6/linuxthreads/sysdeps/unix/sysv/linux/raise.c.org 2008-07-16 22:57:58.000000000 -0700 -+++ glibc-2.3.6/linuxthreads/sysdeps/unix/sysv/linux/raise.c 2008-07-16 22:58:26.000000000 -0700 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1991, 1996, 2002, 2003 Free Software Foundation, Inc. -+/* Copyright (C) 1991, 1996, 2002, 2003, 2005 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 -@@ -18,10 +18,13 @@ - - #include <signal.h> - #include <unistd.h> --#include <bits/libc-lock.h> - --#ifndef SHARED -+#ifndef IS_IN_rtld -+# include <bits/libc-lock.h> -+ -+# ifndef SHARED - weak_extern (__pthread_raise) -+# endif - #endif - - /* Raise the signal SIG. */ -@@ -29,8 +32,12 @@ int - raise (sig) - int sig; - { -+#ifdef IS_IN_rtld -+ return __kill (__getpid (), sig); -+#else - return __libc_maybe_call2 (pthread_raise, (sig), - __kill (__getpid (), sig)); -+#endif - } - libc_hidden_def (raise) - weak_alias (raise, gsignal) diff --git a/recipes/glibc/glibc-2.3.6/glibc-arm-socket-weakalias.patch b/recipes/glibc/glibc-2.3.6/glibc-arm-socket-weakalias.patch deleted file mode 100644 index 722365f..0000000 --- a/recipes/glibc/glibc-2.3.6/glibc-arm-socket-weakalias.patch +++ /dev/null @@ -1,45 +0,0 @@ -This one was taken from debian. - -# DP: Description: Fix __bind redefinition problem -# DP: Related bugs: -# DP: Dpatch author: Phil Blundell -# DP: Patch author: Daniel Jacobowitz -# DP: Upstream status: In CVS -# DP: Status Details: -# DP: Date: 2005-12-25 - -Index: sysdeps/unix/sysv/linux/arm/socket.S -=================================================================== -RCS file: /cvs/glibc/ports/sysdeps/unix/sysv/linux/arm/socket.S,v -retrieving revision 1.12 -retrieving revision 1.13 -diff -u -r1.12 -r1.13 ---- glibc-2.3.6.ds1.orig/sysdeps/unix/sysv/linux/arm/socket.S 4 Dec 2004 21:20:16 -0000 1.12 -+++ glibc-2.3.6.ds1/sysdeps/unix/sysv/linux/arm/socket.S 27 Oct 2005 18:50:12 -0000 1.13 -@@ -1,4 +1,6 @@ --/* Copyright (C) 1995, 1996, 1997, 1998, 2003 Free Software Foundation, Inc. -+/* Copyright (C) 1995, 1996, 1997, 1998, 2003, 2004, 2005 -+ 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 -@@ -32,7 +34,11 @@ - The .S files for the other calls just #define socket and #include this. */ - - #ifndef __socket -+#ifndef NO_WEAK_ALIAS - #define __socket P(__,socket) -+#else -+#define __socket socket -+#endif - #endif - - #define PUSHARGS_1 str a1, [sp, $-4]! -@@ -120,4 +126,6 @@ - - PSEUDO_END (__socket) - -+#ifndef NO_WEAK_ALIAS - weak_alias (__socket, socket) -+#endif diff --git a/recipes/glibc/glibc-2.3.6/glibc-cross_sunrpc.patch b/recipes/glibc/glibc-2.3.6/glibc-cross_sunrpc.patch deleted file mode 100644 index 8e24a83..0000000 --- a/recipes/glibc/glibc-2.3.6/glibc-cross_sunrpc.patch +++ /dev/null @@ -1,79 +0,0 @@ -Fix rpcsvc headers missing from glibc, also -allows glibc to produce the rpc headers when cross compiling, -And fix for glibc-bootstrap package doesn't currently build because the -generated sunrpc headers are not available - - ---- - sunrpc/Makefile | 28 ++++++++++++++++++++++++---- - 1 file changed, 24 insertions(+), 4 deletions(-) - -Index: glibc-2.3.6/sunrpc/Makefile -=================================================================== ---- glibc-2.3.6.orig/sunrpc/Makefile 2005-07-17 20:03:49.000000000 -0700 -+++ glibc-2.3.6/sunrpc/Makefile 2008-07-17 15:28:04.000000000 -0700 -@@ -75,6 +75,8 @@ install-sbin := rpcinfo - rpcgen-objs = rpc_main.o rpc_hout.o rpc_cout.o rpc_parse.o \ - rpc_scan.o rpc_util.o rpc_svcout.o rpc_clntout.o \ - rpc_tblout.o rpc_sample.o -+host-rpcgen-objs = $(addprefix host-,$(rpcgen-objs)) -+ - # These headers are part of rpcgen. - distribute := proto.h rpc_util.h rpc_parse.h rpc_scan.h \ - $(rpcgen-objs:.o=.c) etc.rpc \ -@@ -98,8 +100,8 @@ otherlibs += $(nssobjdir)/libnss_files.a - $(resolvobjdir)/libresolv.a - endif - --ifeq (no,$(cross-compiling)) --# We can only build this library if we can run the rpcgen we build. -+ifneq (,$(findstring subdir_install,$(MAKECMDGOALS))) -+## We can only build this library if we can run the rpcgen we build. - headers += $(rpcsvc:%.x=rpcsvc/%.h) - extra-libs := librpcsvc - extra-libs-others := librpcsvc # Make it in `others' pass, not `lib' pass. -@@ -144,8 +146,26 @@ cpp-srcs-left := $(rpcgen-objs:.o=.c) - lib := nonlib - include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left)) - -+# Rely on the target rpcgen objects for dependency information. -+$(objpfx)host-%.o: %.c $(objpfx)%.o -+ $(patsubst %/,cd % &&,$(objpfx)) \ -+ $(BUILD_CC) $($(basename $(<F))-CFLAGS) \ -+ -I$(shell cd .. && pwd) \ -+ -Dattribute_hidden= \ -+ -include $(shell cd ../include && pwd)/libintl.h \ -+ -O2 $(ALL_BUILD_CFLAGS) $(shell pwd)/$(<F) -c -o $(@F) -+ -+$(objpfx)host-rpcgen: $(addprefix $(objpfx),$(host-rpcgen-objs)) -+ $(BUILD_CC) $(BUILD_CFLAGS) $+ -o $(objpfx)host-rpcgen -+ - # Tell rpcgen where to find the C preprocessor. -+ifeq ($(cross-compiling),no) - rpcgen-cmd = CPP='$(CC) -E -x c-header' $(built-program-cmd) -Y ../scripts -+rpcgen-prog = $(objpfx)rpcgen -+else -+rpcgen-cmd = CPP='$(CC) -E -x c-header' $(objpfx)host-rpcgen -Y ../scripts -+rpcgen-prog = $(objpfx)host-rpcgen -+endif - - # Install the rpc data base file. - $(inst_sysconfdir)/rpc: etc.rpc $(+force) -@@ -156,7 +176,7 @@ $(inst_sysconfdir)/rpc: etc.rpc $(+force - # relinked. - $(rpcsvc:%.x=$(objpfx)rpcsvc/%.h): $(objpfx)rpcsvc/%.h: $(objpfx)rpcsvc/%.stmp - @: --$(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(objpfx)rpcgen -+$(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(rpcgen-prog) - $(make-target-directory) - -@rm -f ${@:stmp=T} $@ - $(rpcgen-cmd) -h $< -o ${@:stmp=T} -@@ -166,7 +186,7 @@ $(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(obj - # Generate the rpcsvc XDR functions with rpcgen. - $(rpcsvc:%.x=$(objpfx)x%.c): $(objpfx)x%.c: $(objpfx)x%.stmp - @: --$(objpfx)x%.stmp: rpcsvc/%.x $(objpfx)rpcgen -+$(objpfx)x%.stmp: rpcsvc/%.x $(rpcgen-prog) - -@rm -f ${@:stmp=T} $@ - $(rpcgen-cmd) -c $< -o ${@:stmp=T} - $(move-if-change) $(@:stmp=T) $(@:stmp=c) diff --git a/recipes/glibc/glibc-2.3.6/glibc-memusage.patch b/recipes/glibc/glibc-2.3.6/glibc-memusage.patch deleted file mode 100644 index 39ca1a7..0000000 --- a/recipes/glibc/glibc-2.3.6/glibc-memusage.patch +++ /dev/null @@ -1,44 +0,0 @@ ---- - malloc/Makefile | 4 +++- - malloc/memusage.sh | 6 ++++++ - 2 files changed, 9 insertions(+), 1 deletion(-) - -Index: glibc-2.3.6/malloc/Makefile -=================================================================== ---- glibc-2.3.6.orig/malloc/Makefile 2008-07-17 14:40:54.000000000 -0700 -+++ glibc-2.3.6/malloc/Makefile 2008-07-17 14:42:07.000000000 -0700 -@@ -80,7 +80,7 @@ ifneq ($(cross-compiling),yes) - ifneq ($(LIBGD),no) - install-bin = memusagestat - install-bin-script += memusage --generated += memusagestat memusage -+generated += memusagestat - extra-objs += memusagestat.o - - # The configure.in check for libgd and its headers did not use $SYSINCLUDES. -@@ -90,6 +90,8 @@ extra-objs += memusagestat.o - $(objpfx)memusagestat.o: sysincludes = # nothing - endif - endif -+install-bin-script += memusage -+generated += memusage - - # Another goal which can be used to override the configure decision. - .PHONY: do-memusagestat -Index: glibc-2.3.6/malloc/memusage.sh -=================================================================== ---- glibc-2.3.6.orig/malloc/memusage.sh 2008-07-17 14:42:17.000000000 -0700 -+++ glibc-2.3.6/malloc/memusage.sh 2008-07-17 14:42:54.000000000 -0700 -@@ -205,6 +205,12 @@ if test $# -eq 0; then - do_usage - fi - -+# Find memusagestat. -+if test -n "$png" -a ! -x $memusagestat; then -+ echo >&2 $"PNG generation is not supported." -+ png="" -+fi -+ - # This will be in the environment. - add_env="LD_PRELOAD=$memusageso" - diff --git a/recipes/glibc/glibc-2.3.6/glibc-rtld-libcc-eh.patch b/recipes/glibc/glibc-2.3.6/glibc-rtld-libcc-eh.patch deleted file mode 100644 index a3658f4..0000000 --- a/recipes/glibc/glibc-2.3.6/glibc-rtld-libcc-eh.patch +++ /dev/null @@ -1,25 +0,0 @@ ---- - elf/Makefile | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -Index: glibc-2.3.6/elf/Makefile -=================================================================== ---- glibc-2.3.6.orig/elf/Makefile 2008-07-17 01:10:39.000000000 -0700 -+++ glibc-2.3.6/elf/Makefile 2008-07-17 01:17:18.000000000 -0700 -@@ -279,7 +279,7 @@ $(objpfx)rtld-libc.a: $(objpfx)librtld.m - $(MAKE) -f $< -f rtld-Rules - - $(objpfx)librtld.os: $(objpfx)dl-allobjs.os $(objpfx)rtld-libc.a -- $(LINK.o) -nostdlib -nostartfiles -r -o $@ '-Wl,-(' $^ -lgcc '-Wl,-)' \ -+ $(LINK.o) -nostdlib -nostartfiles -r -o $@ '-Wl,-(' $^ -lgcc -lgcc_eh '-Wl,-)' \ - -Wl,-Map,$@.map - - generated += librtld.map librtld.mk rtld-libc.a librtld.os.map -@@ -295,6 +295,7 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld - -e 's/\. = 0 + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \ - > $@.lds - $(LINK.o) -nostdlib -nostartfiles -shared -o $@ \ -+ -lgcc -lgcc_eh \ - $(LDFLAGS-rtld) -Wl,-z,defs $(z-now-$(bind-now)) \ - $(filter-out $(map-file),$^) $(load-map-file) \ - -Wl,-soname=$(rtld-installed-name) -T $@.lds diff --git a/recipes/glibc/glibc-2.3.6/late-install-loop-break.patch b/recipes/glibc/glibc-2.3.6/late-install-loop-break.patch deleted file mode 100644 index fc7d8b3..0000000 --- a/recipes/glibc/glibc-2.3.6/late-install-loop-break.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- glibc-2.3.6/Makerules Sat Sep 8 22:59:54 2007 -+++ glibc-2.3.6/Makerules Sun Sep 9 01:04:29 2007 -@@ -154,26 +154,6 @@ - common-before-compile = $(before-compile) - endif - --ifndef subdir --# If a makefile needs to do something conditional on something that --# can only be figured out from headers, write a FOO.make.c input --# file that uses cpp contructs and contains @@@ LINE @@@ for each LINE --# to emit in the generated makefile, and use -include $(common-objpfx)FOO.make. --# --# We only generate these in the top-level makefile, to avoid any weirdness --# from subdir-specific makefile tweaks creeping in on an update. --$(common-objpfx)%.make: $(..)%.make.c $(..)Makerules $(common-before-compile) -- rm -f $@T $@.dT -- (echo '# Generated from $*.make.c by Makerules.'; \ -- $(CC) $(CFLAGS) $(CPPFLAGS) -E $< \ -- -MD -MP -MT '$$(common-objpfx)$*.make' -MF $@.dT \ -- | sed -n '/@@@/{s/@@@[ ]*\(.*\)@@@/\1/;s/[ ]*$$//p;}'; \ -- echo 'common-generated += $(@F)'; \ -- sed $(sed-remove-objpfx) $(sed-remove-dotdot) $@.dT; \ -- rm -f $@.dT) > $@T -- mv -f $@T $@ --endif -- - ifdef subdir - sed-remove-dotdot := -e 's@ *\.\.\/\([^ \]*\)@ $$(..)\1@g' \ - -e 's@^\.\.\/\([^ \]*\)@$$(..)\1@g' diff --git a/recipes/glibc/glibc-2.4/arm-longlong.patch b/recipes/glibc/glibc-2.4/arm-longlong.patch deleted file mode 100644 index 28aca83..0000000 --- a/recipes/glibc/glibc-2.4/arm-longlong.patch +++ /dev/null @@ -1,58 +0,0 @@ ---- glibc-2.4/stdlib/longlong.h.ark 2006-03-11 22:49:27.000000000 +0100 -+++ glibc-2.4/stdlib/longlong.h 2006-03-11 22:55:12.000000000 +0100 -@@ -206,6 +206,14 @@ - "rI" ((USItype) (bh)), \ - "r" ((USItype) (al)), \ - "rI" ((USItype) (bl)) __CLOBBER_CC) -+/* 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" \ -@@ -227,7 +235,13 @@ - : "r" ((USItype) (a)), \ - "r" ((USItype) (b)) __CLOBBER_CC );} - #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 ---- glibc-2.4/ports/sysdeps/arm/mp_clz_tab.c.ark 2006-03-11 22:56:43.000000000 +0100 -+++ glibc-2.4/ports/sysdeps/arm/mp_clz_tab.c 2006-03-11 22:58:19.000000000 +0100 -@@ -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 <stdlib/mp_clz_tab.c> -+#endif diff --git a/recipes/glibc/glibc-2.4/arm-memcpy.patch b/recipes/glibc/glibc-2.4/arm-memcpy.patch deleted file mode 100644 index bc2b3da..0000000 --- a/recipes/glibc/glibc-2.4/arm-memcpy.patch +++ /dev/null @@ -1,758 +0,0 @@ ---- /dev/null 2004-02-02 20:32:13.000000000 +0000 -+++ sysdeps/arm/memmove.S 2004-03-20 18:37:23.000000000 +0000 -@@ -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-02-02 20:32:13.000000000 +0000 -+++ sysdeps/arm/bcopy.S 2004-03-20 18:37:48.000000000 +0000 -@@ -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) - ---- /dev/null 2004-02-02 20:32:13.000000000 +0000 -+++ sysdeps/arm/memcpy.S 2004-05-02 14:33:22.000000000 +0100 -@@ -0,0 +1,242 @@ -+/* -+ * 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) -+ diff --git a/recipes/glibc/glibc-2.4/arm_eabi_ipc_fix.patch b/recipes/glibc/glibc-2.4/arm_eabi_ipc_fix.patch deleted file mode 100644 index 8b36960..0000000 --- a/recipes/glibc/glibc-2.4/arm_eabi_ipc_fix.patch +++ /dev/null @@ -1,94 +0,0 @@ -From libc-ports-return-430-listarch-libc-ports=sources dot redhat dot com at sourceware dot org Mon Aug 21 20:08:57 2006 -Return-Path: <libc-ports-return-430-listarch-libc-ports=sources dot redhat dot com at sourceware dot org> -Delivered-To: listarch-libc-ports at sources dot redhat dot com -Received: (qmail 9913 invoked by alias); 21 Aug 2006 20:08:56 -0000 -Received: (qmail 9893 invoked by uid 22791); 21 Aug 2006 20:08:53 -0000 -X-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,TW_HM,TW_SG,TW_SN -X-Spam-Check-By: sourceware.org -Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Mon, 21 Aug 2006 20:08:44 +0000 -Received: from drow by nevyn.them.org with local (Exim 4.54) id 1GFG4f-0007gO-TW for libc-ports@sourceware.org; Mon, 21 Aug 2006 16:08:42 -0400 -Date: Mon, 21 Aug 2006 16:08:41 -0400 -From: Daniel Jacobowitz <drow at false dot org> -To: libc-ports at sourceware dot org -Subject: ARM IPC fix -Message-ID: <20060821200841.GA29502@nevyn.them.org> -MIME-Version: 1.0 -Content-Type: text/plain; charset=us-ascii -Content-Disposition: inline -User-Agent: Mutt/1.5.11+cvs20060403 -X-IsSubscribed: yes -Mailing-List: contact libc-ports-help at sourceware dot org; run by ezmlm -Precedence: bulk -List-Subscribe: <mailto:libc-ports-subscribe at sourceware dot org> -List-Post: <mailto:libc-ports at sourceware dot org> -List-Help: <mailto:libc-ports-help at sourceware dot org>, <http://sourceware dot org/lists dot html#faqs> -Sender: libc-ports-owner at sourceware dot org -Delivered-To: mailing list libc-ports at sourceware dot org - -We can't treat msgctl as a real syscall; if we don't add __IPC_64, we'll get -a mismatched type for ipc_perm. Fixed by using the Alpha implementation, -which is similar to the standard i386 implementation but doesn't use -the multiplexer syscall. - --- -Daniel Jacobowitz -CodeSourcery - -2006-08-21 Daniel Jacobowitz <dan@codesourcery.com> - - * sysdeps/unix/sysv/linux/arm/eabi/syscalls.list: Remove msgctl, - shmctl, and semctl. - * sysdeps/unix/sysv/linux/arm/eabi/semctl.c, - sysdeps/unix/sysv/linux/arm/eabi/shmctl.c, - sysdeps/unix/sysv/linux/arm/eabi/msgctl.c: New files. - -Index: a/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list -=================================================================== ---- a/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list (revision 147209) -+++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list (working copy) -@@ -1,18 +1,16 @@ - # File name Caller Syscall name # args Strong name Weak names - --# semaphore and shm system calls --msgctl - msgctl i:iip __msgctl msgctl -+# Semaphore and shm system calls. msgctl, shmctl, and semctl have C -+# wrappers (to set __IPC_64). - msgget - msgget i:ii __msgget msgget - msgrcv - msgrcv Ci:ibnii __msgrcv msgrcv - msgsnd - msgsnd Ci:ibni __msgsnd msgsnd - shmat - shmat i:ipi __shmat shmat --shmctl - shmctl i:iip __shmctl shmctl - shmdt - shmdt i:s __shmdt shmdt - shmget - shmget i:iii __shmget shmget - semop - semop i:ipi __semop semop - semtimedop - semtimedop i:ipip semtimedop - semget - semget i:iii __semget semget --semctl - semctl i:iiii __semctl semctl - - # proper socket implementations: - accept - accept Ci:iBN __libc_accept __accept accept - -Property changes on: sysdeps/unix/sysv/linux/arm/eabi/syscalls.list -___________________________________________________________________ -Name: svn:mime-type - - application/octet-stream - -Index: a/ports/sysdeps/unix/sysv/linux/arm/eabi/semctl.c -=================================================================== ---- a/ports/sysdeps/unix/sysv/linux/arm/eabi/semctl.c (revision 0) -+++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/semctl.c (revision 0) -@@ -0,0 +1 @@ -+#include <sysdeps/unix/sysv/linux/alpha/semctl.c> -Index: a/ports/sysdeps/unix/sysv/linux/arm/eabi/msgctl.c -=================================================================== ---- a/ports/sysdeps/unix/sysv/linux/arm/eabi/msgctl.c (revision 0) -+++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/msgctl.c (revision 0) -@@ -0,0 +1 @@ -+#include <sysdeps/unix/sysv/linux/alpha/msgctl.c> -Index: a/ports/sysdeps/unix/sysv/linux/arm/eabi/shmctl.c -=================================================================== ---- a/ports/sysdeps/unix/sysv/linux/arm/eabi/shmctl.c (revision 0) -+++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/shmctl.c (revision 0) -@@ -0,0 +1 @@ -+#include <sysdeps/unix/sysv/linux/alpha/shmctl.c> - diff --git a/recipes/glibc/glibc-2.4/dl-cache-libcmp.patch b/recipes/glibc/glibc-2.4/dl-cache-libcmp.patch deleted file mode 100644 index 2fedfa6..0000000 --- a/recipes/glibc/glibc-2.4/dl-cache-libcmp.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- glibc-2.4/elf/Versions.ark 2006-03-11 23:30:09.000000000 +0100 -+++ glibc-2.4/elf/Versions 2006-03-11 23:31:44.000000000 +0100 -@@ -63,5 +63,7 @@ - _dl_debug_state; - # Pointer protection. - __pointer_chk_guard; -+ # for ldconfig -+ _dl_cache_libcmp; - } - } diff --git a/recipes/glibc/glibc-2.4/dyn-ldconfig-20041128.patch b/recipes/glibc/glibc-2.4/dyn-ldconfig-20041128.patch deleted file mode 100644 index 451b6d4..0000000 --- a/recipes/glibc/glibc-2.4/dyn-ldconfig-20041128.patch +++ /dev/null @@ -1,22 +0,0 @@ - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - ---- libc/elf/Makefile~dyn-ldconfig-20041128 -+++ libc/elf/Makefile -@@ -118,12 +118,13 @@ - - ifeq (yes,$(use-ldconfig)) - ifeq (yes,$(build-shared)) --others-static += ldconfig -+#others-static += ldconfig - others += ldconfig - install-rootsbin += ldconfig - - ldconfig-modules := cache readlib xmalloc xstrdup chroot_canon - extra-objs += $(ldconfig-modules:=.o) -+CPPFLAGS-readlib.c = -DNOT_IN_libc=1 - - # To find xmalloc.c and xstrdup.c - vpath %.c ../locale/programs diff --git a/recipes/glibc/glibc-2.4/dyn-ldconfig.patch b/recipes/glibc/glibc-2.4/dyn-ldconfig.patch deleted file mode 100644 index 1041965..0000000 --- a/recipes/glibc/glibc-2.4/dyn-ldconfig.patch +++ /dev/null @@ -1,62 +0,0 @@ ---- elf/Makefile 13 Mar 2003 21:50:57 -0000 1.258 -+++ elf/Makefile 27 Mar 2003 20:36:07 -0000 -@@ -109,12 +109,13 @@ - - ifeq (yes,$(use-ldconfig)) - ifeq (yes,$(build-shared)) --others-static += ldconfig -+#others-static += ldconfig - others += ldconfig - install-rootsbin += ldconfig - - ldconfig-modules := cache readlib xmalloc xstrdup chroot_canon - extra-objs += $(ldconfig-modules:=.o) -+CPPFLAGS-readlib.c = -DNOT_IN_libc=1 - - # To find xmalloc.c and xstrdup.c - vpath %.c ../locale/programs ---- elf/ldconfig.c 13 Jan 2003 08:53:14 -0000 1.31 -+++ elf/ldconfig.c 27 Mar 2003 20:36:09 -0000 -@@ -149,6 +149,9 @@ - static int - is_hwcap_platform (const char *name) - { -+#if 1 -+ return 0; -+#else - int hwcap_idx = _dl_string_hwcap (name); - - if (hwcap_idx != -1 && ((1 << hwcap_idx) & hwcap_mask)) -@@ -164,6 +167,7 @@ - #endif - - return 0; -+#endif - } - - /* Get hwcap (including platform) encoding of path. */ -@@ -175,6 +179,7 @@ - uint64_t hwcap = 0; - uint64_t h; - -+#if 0 - size_t len; - - len = strlen (str); -@@ -210,6 +215,7 @@ - *ptr = '\0'; - } - -+#endif - free (str); - return hwcap; - } ---- elf/Versions.old 2004-06-26 13:18:35.000000000 +0100 -+++ elf/Versions 2004-06-26 14:41:09.000000000 +0100 -@@ -54,5 +54,6 @@ - _dl_get_tls_static_info; _dl_allocate_tls_init; - _dl_tls_setup; _dl_rtld_di_serinfo; - _dl_make_stack_executable; -+ _dl_cache_libcmp; - } - } diff --git a/recipes/glibc/glibc-2.4/etc/ld.so.conf b/recipes/glibc/glibc-2.4/etc/ld.so.conf deleted file mode 100644 index 46e06d3..0000000 --- a/recipes/glibc/glibc-2.4/etc/ld.so.conf +++ /dev/null @@ -1,2 +0,0 @@ -/usr/local/lib - diff --git a/recipes/glibc/glibc-2.4/fixup-aeabi-syscalls.patch b/recipes/glibc/glibc-2.4/fixup-aeabi-syscalls.patch deleted file mode 100644 index fb733b9..0000000 --- a/recipes/glibc/glibc-2.4/fixup-aeabi-syscalls.patch +++ /dev/null @@ -1,329 +0,0 @@ -Fix up ARM EABI for removed syscalls -http://sourceware.org/ml/libc-ports/2006-03/msg00029.html - -Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/socket.S -=================================================================== ---- glibc.orig/ports/sysdeps/unix/sysv/linux/arm/eabi/socket.S 2006-03-21 15:58:10.000000000 -0500 -+++ /dev/null 1970-01-01 00:00:00.000000000 +0000 -@@ -1,131 +0,0 @@ --/* Copyright (C) 1995, 1996, 1997, 1998, 2003, 2005 -- 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 <sysdep-cancel.h> --#include <socketcall.h> -- --#define P(a, b) P2(a, b) --#define P2(a, b) a##b -- -- .text --/* The socket-oriented system calls are handled unusally in Linux. -- They are all gated through the single `socketcall' system call number. -- `socketcall' takes two arguments: the first is the subcode, specifying -- which socket function is being called; and the second is a pointer to -- the arguments to the specific function. -- -- The .S files for the other calls just #define socket and #include this. */ -- --#ifndef __socket --# ifndef NO_WEAK_ALIAS --# define __socket P(__,socket) --# else --# define __socket socket --# endif --#endif -- --#define PUSHARGS_1 str a1, [sp, $-8]!; .pad #8 --#define PUSHARGS_2 stmfd sp!, {a1, a2}; .pad #8 --#define PUSHARGS_3 stmfd sp!, {a1, a2, a3, a4}; .pad #16 /* a4 pushed for padding */ --#define PUSHARGS_4 stmfd sp!, {a1, a2, a3, a4}; .pad #16 --#define PUSHARGS_5 stmfd sp!, {a1, a2, a3, a4}; .pad #16 /* Caller has already pushed arg 5 */ --#define PUSHARGS_6 stmfd sp!, {a1, a2, a3, a4}; .pad #16 -- --#define POPARGS_1 add sp, sp, #8 --#define POPARGS_2 add sp, sp, #8 --#define POPARGS_3 add sp, sp, #16 --#define POPARGS_4 add sp, sp, #16 --#define POPARGS_5 add sp, sp, #16 --#define POPARGS_6 add sp, sp, #16 -- --#ifndef NARGS --#define NARGS 3 /* If we were called with no wrapper, this is really socket() */ --#endif -- --#if defined NEED_CANCELLATION && defined CENABLE -- PSEUDO_PROLOGUE --#endif -- --.globl __socket --ENTRY (__socket) -- .fnstart -- -- /* This code previously moved sp into ip and stored the args using -- stmdb ip!, {a1-a4}. It did not modify sp, so the stack never had -- to be restored after the syscall completed. It saved an -- instruction and meant no stack cleanup work was required. -- -- This will not work in the case of a socket call being interrupted -- by a signal. If the signal handler uses any stack the arguments -- to socket will be trashed. The results of a restart of any -- socket call are then unpredictable. */ -- -- /* Push args onto the stack. */ -- P(PUSHARGS_,NARGS) -- --#if defined NEED_CANCELLATION && defined CENABLE -- SINGLE_THREAD_P -- bne 1f --#endif -- -- /* Do the system call trap. */ -- mov a1, $P(SOCKOP_,socket) -- mov a2, sp -- DO_CALL (socketcall, 0) -- -- /* Pop args off the stack */ -- P(POPARGS_,NARGS) -- -- /* r0 is < 0 if there was an error. */ -- cmn r0, $124 -- RETINSTR(cc, r14) -- b PLTJMP(SYSCALL_ERROR) -- --#if defined NEED_CANCELLATION && defined CENABLE --1: -- stmfd sp!, {r7, lr} -- .save {r7, lr} -- CENABLE -- mov ip, r0 -- -- mov r0, #P(SOCKOP_,socket) -- add r1, sp, #8 -- mov r7, #SYS_ify(socketcall) -- swi 0x0 -- -- mov r7, r0 -- mov r0, ip -- CDISABLE -- mov r0, r7 -- ldmfd sp!, {r7, lr} -- -- P(POPARGS_,NARGS) -- -- /* r0 is < 0 if there was an error. */ -- cmn r0, $124 -- RETINSTR(cc, r14) -- b PLTJMP(SYSCALL_ERROR) --#endif -- -- .fnend --PSEUDO_END (__socket) -- --#ifndef NO_WEAK_ALIAS --weak_alias (__socket, socket) --#endif -Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list 2006-03-21 15:58:46.000000000 -0500 -@@ -0,0 +1,34 @@ -+# File name Caller Syscall name # args Strong name Weak names -+ -+# semaphore and shm system calls -+msgctl - msgctl i:iip __msgctl msgctl -+msgget - msgget i:ii __msgget msgget -+msgrcv - msgrcv Ci:ibnii __msgrcv msgrcv -+msgsnd - msgsnd Ci:ibni __msgsnd msgsnd -+shmat - shmat i:ipi __shmat shmat -+shmctl - shmctl i:iip __shmctl shmctl -+shmdt - shmdt i:s __shmdt shmdt -+shmget - shmget i:iii __shmget shmget -+semop - semop i:ipi __semop semop -+semtimedop - semtimedop i:ipip semtimedop -+semget - semget i:iii __semget semget -+semctl - semctl i:iiii __semctl semctl -+ -+# proper socket implementations: -+accept - accept Ci:iBN __libc_accept __accept accept -+bind - bind i:ipi __bind bind -+connect - connect Ci:ipi __libc_connect __connect_internal __connect connect -+getpeername - getpeername i:ipp __getpeername getpeername -+getsockname - getsockname i:ipp __getsockname getsockname -+getsockopt - getsockopt i:iiiBN __getsockopt getsockopt -+listen - listen i:ii __listen listen -+recv - recv Ci:ibni __libc_recv __recv recv -+recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom -+recvmsg - recvmsg Ci:ipi __libc_recvmsg __recvmsg recvmsg -+send - send Ci:ibni __libc_send __send send -+sendmsg - sendmsg Ci:ipi __libc_sendmsg __sendmsg sendmsg -+sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto -+setsockopt - setsockopt i:iiibn __setsockopt setsockopt -+shutdown - shutdown i:ii __shutdown shutdown -+socket - socket i:iii __socket socket -+socketpair - socketpair i:iiif __socketpair socketpair -Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/linuxthreads/sysdep-cancel.h -=================================================================== ---- glibc.orig/ports/sysdeps/unix/sysv/linux/arm/eabi/linuxthreads/sysdep-cancel.h 2006-03-21 15:58:10.000000000 -0500 -+++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/linuxthreads/sysdep-cancel.h 2006-03-21 15:58:46.000000000 -0500 -@@ -53,9 +53,9 @@ - UNDOARGS_##args; \ - cmn r0, $4096; - --/* DOARGS pushes four bytes on the stack for five arguments, and nothing -- otherwise. In order to preserve doubleword alignment, sometimes we must -- save an extra register. */ -+/* DOARGS pushes four bytes on the stack for five arguments, eight bytes for -+ six arguments, and nothing for fewer. In order to preserve doubleword -+ alignment, sometimes we must save an extra register. */ - - # define DOCARGS_0 stmfd sp!, {r7, lr} - # define UNDOCARGS_0 -@@ -81,6 +81,10 @@ - # define UNDOCARGS_5 ldmfd sp!, {r0, r1, r2, r3} - # define RESTORE_LR_5 ldmfd sp!, {r4, r7, lr} - -+# define DOCARGS_6 stmfd sp!, {r0, r1, r2, r3, r7, lr} -+# define UNDOCARGS_6 ldmfd sp!, {r0, r1, r2, r3} -+# define RESTORE_LR_6 RESTORE_LR_0 -+ - # ifdef IS_IN_libpthread - # define CENABLE bl PLTJMP(__pthread_enable_asynccancel) - # define CDISABLE bl PLTJMP(__pthread_disable_asynccancel) -Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h -=================================================================== ---- glibc.orig/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h 2006-03-21 15:58:10.000000000 -0500 -+++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h 2006-03-21 15:58:46.000000000 -0500 -@@ -64,9 +64,9 @@ - UNDOARGS_##args; \ - cmn r0, $4096; - --/* DOARGS pushes four bytes on the stack for five arguments, and nothing -- otherwise. In order to preserve doubleword alignment, sometimes we must -- save an extra register. */ -+/* DOARGS pushes four bytes on the stack for five arguments, eight bytes for -+ six arguments, and nothing for fewer. In order to preserve doubleword -+ alignment, sometimes we must save an extra register. */ - - # define RESTART_UNWIND .fnend; .fnstart; .save {r7, lr} - -@@ -94,6 +94,10 @@ - # define UNDOCARGS_5 ldmfd sp!, {r0, r1, r2, r3}; .fnend; .fnstart; .save {r4}; .save {r7, lr}; .pad #4 - # define RESTORE_LR_5 ldmfd sp!, {r4, r7, lr} - -+# define DOCARGS_6 .save {r4, r5}; stmfd sp!, {r0, r1, r2, r3, r7, lr}; .save {r7, lr}; .pad #20 -+# define UNDOCARGS_6 ldmfd sp!, {r0, r1, r2, r3}; .fnend; .fnstart; .save {r4, r5}; .save {r7, lr} -+# define RESTORE_LR_6 RESTORE_LR_0 -+ - # ifdef IS_IN_libpthread - # define CENABLE bl PLTJMP(__pthread_enable_asynccancel) - # define CDISABLE bl PLTJMP(__pthread_disable_asynccancel) -Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h -=================================================================== ---- glibc.orig/ports/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h 2006-03-21 15:58:10.000000000 -0500 -+++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h 2006-03-21 15:58:46.000000000 -0500 -@@ -1,4 +1,4 @@ --/* Copyright (C) 2005 -+/* Copyright (C) 2005, 2006 - Free Software Foundation, Inc. - - This file is part of the GNU C Library. -@@ -29,6 +29,12 @@ - # error Kernel headers are too old - #endif - -+/* Don't use stime, even if the kernel headers define it. We have -+ settimeofday, and some EABI kernels have removed stime. Similarly -+ use setitimer to implement alarm. */ -+#undef __NR_stime -+#undef __NR_alarm -+ - /* The ARM EABI user interface passes the syscall number in r7, instead - of in the swi. This is more efficient, because the kernel does not need - to fetch the swi from memory to find out the number; which can be painful -Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/umount.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/umount.c 2006-03-21 15:58:46.000000000 -0500 -@@ -0,0 +1,31 @@ -+/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by David Huggins-Daines <dhd@debian.org>, 2000. -+ -+ 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. */ -+ -+/* Since we don't have an oldumount system call, do what the kernel -+ does down here. */ -+ -+extern long int __umount2 (const char *name, int flags); -+ -+long int -+__umount (const char *name) -+{ -+ return __umount2 (name, 0); -+} -+ -+weak_alias (__umount, umount); -Index: glibc/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ glibc/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h 2006-03-20 17:26:58.000000000 -0500 -@@ -0,0 +1,31 @@ -+/* Set flags signalling availability of kernel features based on given -+ kernel version number. -+ Copyright (C) 2006 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. */ -+ -+/* The utimes syscall was added before 2.6.1. */ -+#if __LINUX_KERNEL_VERSION >= 132609 -+# define __ASSUME_UTIMES 1 -+#endif -+ -+/* The new getrlimit syscall was added sometime before 2.4.6. */ -+#if __LINUX_KERNEL_VERSION >= 132102 -+#define __ASSUME_NEW_GETRLIMIT_SYSCALL 1 -+#endif -+ -+#include_next <kernel-features.h> diff --git a/recipes/glibc/glibc-2.4/generic-bits_select.h b/recipes/glibc/glibc-2.4/generic-bits_select.h deleted file mode 100644 index 47e7ded..0000000 --- a/recipes/glibc/glibc-2.4/generic-bits_select.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright (C) 1997, 1998, 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. */ - -#ifndef _SYS_SELECT_H -# error "Never use <bits/select.h> directly; include <sys/select.h> instead." -#endif - - -/* We don't use `memset' because this would require a prototype and - the array isn't too big. */ -#define __FD_ZERO(s) \ - do { \ - unsigned int __i; \ - fd_set *__arr = (s); \ - for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \ - __FDS_BITS (__arr)[__i] = 0; \ - } while (0) -#define __FD_SET(d, s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d)) -#define __FD_CLR(d, s) (__FDS_BITS (s)[__FDELT(d)] &= ~__FDMASK(d)) -#define __FD_ISSET(d, s) ((__FDS_BITS (s)[__FDELT(d)] & __FDMASK(d)) != 0) diff --git a/recipes/glibc/glibc-2.4/generic-bits_time.h b/recipes/glibc/glibc-2.4/generic-bits_time.h deleted file mode 100644 index b3184d1..0000000 --- a/recipes/glibc/glibc-2.4/generic-bits_time.h +++ /dev/null @@ -1,75 +0,0 @@ -/* System-dependent timing definitions. Generic version. - Copyright (C) 1996,1997,1999-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 - 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. */ - -/* - * Never include this file directly; use <time.h> instead. - */ - -#ifndef __need_timeval -# ifndef _BITS_TIME_H -# define _BITS_TIME_H 1 - -/* ISO/IEC 9899:1990 7.12.1: <time.h> - The macro `CLOCKS_PER_SEC' is the number per second of the value - returned by the `clock' function. */ -/* CAE XSH, Issue 4, Version 2: <time.h> - The value of CLOCKS_PER_SEC is required to be 1 million on all - XSI-conformant systems. */ -# define CLOCKS_PER_SEC 1000000l - -# if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K -/* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK - presents the real value for clock ticks per second for the system. */ -# include <bits/types.h> -extern long int __sysconf (int); -# define CLK_TCK ((__clock_t) __sysconf (2)) /* 2 is _SC_CLK_TCK */ -# endif - -# ifdef __USE_POSIX199309 -/* Identifier for system-wide realtime clock. */ -# define CLOCK_REALTIME 0 -/* Monotonic system-wide clock. */ -# define CLOCK_MONOTONIC 1 -/* High-resolution timer from the CPU. */ -# define CLOCK_PROCESS_CPUTIME_ID 2 -/* Thread-specific CPU-time clock. */ -# define CLOCK_THREAD_CPUTIME_ID 3 - -/* Flag to indicate time is absolute. */ -# define TIMER_ABSTIME 1 -# endif - -# endif /* bits/time.h */ -#endif - -#ifdef __need_timeval -# undef __need_timeval -# ifndef _STRUCT_TIMEVAL -# define _STRUCT_TIMEVAL 1 -# include <bits/types.h> - -/* A time value that is accurate to the nearest - microsecond but also has a range of years. */ -struct timeval - { - __time_t tv_sec; /* Seconds. */ - __suseconds_t tv_usec; /* Microseconds. */ - }; -# endif /* struct timeval */ -#endif /* need timeval */ diff --git a/recipes/glibc/glibc-2.4/generic-bits_types.h b/recipes/glibc/glibc-2.4/generic-bits_types.h deleted file mode 100644 index 65c8a9f..0000000 --- a/recipes/glibc/glibc-2.4/generic-bits_types.h +++ /dev/null @@ -1,200 +0,0 @@ -/* bits/types.h -- definitions of __*_t types underlying *_t types. - Copyright (C) 2002, 2003, 2004, 2005 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. */ - -/* - * Never include this file directly; use <sys/types.h> instead. - */ - -#ifndef _BITS_TYPES_H -#define _BITS_TYPES_H 1 - -#include <features.h> -#include <bits/wordsize.h> - -#define __need_size_t -#include <stddef.h> - -/* Convenience types. */ -typedef unsigned char __u_char; -typedef unsigned short int __u_short; -typedef unsigned int __u_int; -typedef unsigned long int __u_long; - -/* Fixed-size types, underlying types depend on word size and compiler. */ -typedef signed char __int8_t; -typedef unsigned char __uint8_t; -typedef signed short int __int16_t; -typedef unsigned short int __uint16_t; -typedef signed int __int32_t; -typedef unsigned int __uint32_t; -#if __WORDSIZE == 64 -typedef signed long int __int64_t; -typedef unsigned long int __uint64_t; -#elif defined __GLIBC_HAVE_LONG_LONG -__extension__ typedef signed long long int __int64_t; -__extension__ typedef unsigned long long int __uint64_t; -#endif - -/* quad_t is also 64 bits. */ -#if __WORDSIZE == 64 -typedef long int __quad_t; -typedef unsigned long int __u_quad_t; -#elif defined __GLIBC_HAVE_LONG_LONG -__extension__ typedef long long int __quad_t; -__extension__ typedef unsigned long long int __u_quad_t; -#else -typedef struct -{ - long __val[2]; -} __quad_t; -typedef struct -{ - __u_long __val[2]; -} __u_quad_t; -#endif - - -/* The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE - macros for each of the OS types we define below. The definitions - of those macros must use the following macros for underlying types. - We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned - variants of each of the following integer types on this machine. - - 16 -- "natural" 16-bit type (always short) - 32 -- "natural" 32-bit type (always int) - 64 -- "natural" 64-bit type (long or long long) - LONG32 -- 32-bit type, traditionally long - QUAD -- 64-bit type, always long long - WORD -- natural type of __WORDSIZE bits (int or long) - LONGWORD -- type of __WORDSIZE bits, traditionally long - - We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the - conventional uses of `long' or `long long' type modifiers match the - types we define, even when a less-adorned type would be the same size. - This matters for (somewhat) portably writing printf/scanf formats for - these types, where using the appropriate l or ll format modifiers can - make the typedefs and the formats match up across all GNU platforms. If - we used `long' when it's 64 bits where `long long' is expected, then the - compiler would warn about the formats not matching the argument types, - and the programmer changing them to shut up the compiler would break the - program's portability. - - Here we assume what is presently the case in all the GCC configurations - we support: long long is always 64 bits, long is always word/address size, - and int is always 32 bits. */ - -#define __S16_TYPE short int -#define __U16_TYPE unsigned short int -#define __S32_TYPE int -#define __U32_TYPE unsigned int -#define __SLONGWORD_TYPE long int -#define __ULONGWORD_TYPE unsigned long int -#if __WORDSIZE == 32 -# define __SQUAD_TYPE __quad_t -# define __UQUAD_TYPE __u_quad_t -# define __SWORD_TYPE int -# define __UWORD_TYPE unsigned int -# define __SLONG32_TYPE long int -# define __ULONG32_TYPE unsigned long int -# define __S64_TYPE __quad_t -# define __U64_TYPE __u_quad_t -/* We want __extension__ before typedef's that use nonstandard base types - such as `long long' in C89 mode. */ -# define __STD_TYPE __extension__ typedef -#elif __WORDSIZE == 64 -# define __SQUAD_TYPE long int -# define __UQUAD_TYPE unsigned long int -# define __SWORD_TYPE long int -# define __UWORD_TYPE unsigned long int -# define __SLONG32_TYPE int -# define __ULONG32_TYPE unsigned int -# define __S64_TYPE long int -# define __U64_TYPE unsigned long int -/* No need to mark the typedef with __extension__. */ -# define __STD_TYPE typedef -#else -# error -#endif -#include <bits/typesizes.h> /* Defines __*_T_TYPE macros. */ - - -__STD_TYPE __DEV_T_TYPE __dev_t; /* Type of device numbers. */ -__STD_TYPE __UID_T_TYPE __uid_t; /* Type of user identifications. */ -__STD_TYPE __GID_T_TYPE __gid_t; /* Type of group identifications. */ -__STD_TYPE __INO_T_TYPE __ino_t; /* Type of file serial numbers. */ -__STD_TYPE __INO64_T_TYPE __ino64_t; /* Type of file serial numbers (LFS).*/ -__STD_TYPE __MODE_T_TYPE __mode_t; /* Type of file attribute bitmasks. */ -__STD_TYPE __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */ -__STD_TYPE __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */ -__STD_TYPE __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets (LFS). */ -__STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */ -__STD_TYPE __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */ -__STD_TYPE __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */ -__STD_TYPE __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. */ -__STD_TYPE __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement (LFS). */ -__STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */ -__STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */ -__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */ -__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */ - -__STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */ -__STD_TYPE __SWBLK_T_TYPE __swblk_t; /* Type of a swap block maybe? */ -__STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */ - -/* Clock ID used in clock and timer functions. */ -__STD_TYPE __CLOCKID_T_TYPE __clockid_t; - -/* Timer ID returned by `timer_create'. */ -__STD_TYPE __TIMER_T_TYPE __timer_t; - -/* Type to represent block size. */ -__STD_TYPE __BLKSIZE_T_TYPE __blksize_t; - -/* Types from the Large File Support interface. */ - -/* Type to count number of disk blocks. */ -__STD_TYPE __BLKCNT_T_TYPE __blkcnt_t; -__STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t; - -/* Type to count file system blocks. */ -__STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t; -__STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t; - -/* Type to count file system nodes. */ -__STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t; -__STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t; - -__STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error. */ - -/* These few don't really vary by system, they always correspond - to one of the other defined types. */ -typedef __off64_t __loff_t; /* Type of file sizes and offsets (LFS). */ -typedef __quad_t *__qaddr_t; -typedef char *__caddr_t; - -/* Duplicates info from stdint.h but this is used in unistd.h. */ -__STD_TYPE __SWORD_TYPE __intptr_t; - -/* Duplicate info from sys/socket.h. */ -__STD_TYPE __U32_TYPE __socklen_t; - - -#undef __STD_TYPE - -#endif /* bits/types.h */ diff --git a/recipes/glibc/glibc-2.4/generic-bits_typesizes.h b/recipes/glibc/glibc-2.4/generic-bits_typesizes.h deleted file mode 100644 index e9226c4..0000000 --- a/recipes/glibc/glibc-2.4/generic-bits_typesizes.h +++ /dev/null @@ -1,66 +0,0 @@ -/* bits/typesizes.h -- underlying types for *_t. Generic version. - Copyright (C) 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 - 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 _BITS_TYPES_H -# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead." -#endif - -#ifndef _BITS_TYPESIZES_H -#define _BITS_TYPESIZES_H 1 - -/* See <bits/types.h> for the meaning of these macros. This file exists so - that <bits/types.h> need not vary across different GNU platforms. */ - -#define __DEV_T_TYPE __UQUAD_TYPE -#define __UID_T_TYPE __U32_TYPE -#define __GID_T_TYPE __U32_TYPE -#define __INO_T_TYPE __ULONGWORD_TYPE -#define __INO64_T_TYPE __UQUAD_TYPE -#define __MODE_T_TYPE __U32_TYPE -#define __NLINK_T_TYPE __UWORD_TYPE -#define __OFF_T_TYPE __SLONGWORD_TYPE -#define __OFF64_T_TYPE __SQUAD_TYPE -#define __PID_T_TYPE __S32_TYPE -#define __RLIM_T_TYPE __ULONGWORD_TYPE -#define __RLIM64_T_TYPE __UQUAD_TYPE -#define __BLKCNT_T_TYPE __SLONGWORD_TYPE -#define __BLKCNT64_T_TYPE __SQUAD_TYPE -#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE -#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE -#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE -#define __FSFILCNT64_T_TYPE __UQUAD_TYPE -#define __ID_T_TYPE __U32_TYPE -#define __CLOCK_T_TYPE __SLONGWORD_TYPE -#define __TIME_T_TYPE __SLONGWORD_TYPE -#define __USECONDS_T_TYPE __U32_TYPE -#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE -#define __DADDR_T_TYPE __S32_TYPE -#define __SWBLK_T_TYPE __SLONGWORD_TYPE -#define __KEY_T_TYPE __S32_TYPE -#define __CLOCKID_T_TYPE __S32_TYPE -#define __TIMER_T_TYPE void * -#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE -#define __FSID_T_TYPE struct { int __val[2]; } -#define __SSIZE_T_TYPE __SWORD_TYPE - -/* Number of descriptors that can fit in an `fd_set'. */ -#define __FD_SETSIZE 1024 - - -#endif /* bits/typesizes.h */ diff --git a/recipes/glibc/glibc-2.4/glibc-2.4-compile.patch b/recipes/glibc/glibc-2.4/glibc-2.4-compile.patch deleted file mode 100644 index ea9f55a..0000000 --- a/recipes/glibc/glibc-2.4/glibc-2.4-compile.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- glibc-2.4/csu/libc-start.c.ark 2006-03-13 03:07:15.000000000 +0100 -+++ glibc-2.4/csu/libc-start.c 2006-03-13 03:08:51.000000000 +0100 -@@ -59,6 +59,11 @@ - # define LIBC_START_MAIN BP_SYM (__libc_start_main) - #endif - -+#ifdef SHARED -+#include <pthread-functions.h> -+extern struct pthread_functions __libc_pthread_functions; -+#endif -+ - #ifdef MAIN_AUXVEC_ARG - /* main gets passed a pointer to the auxiliary. */ - # define MAIN_AUXVEC_DECL , void * ---- glibc-2.4/nscd/Makefile.ark 2006-03-13 14:05:47.000000000 +0100 -+++ glibc-2.4/nscd/Makefile 2006-03-13 14:06:12.000000000 +0100 -@@ -67,8 +67,10 @@ - # contains only the basic kernel interface headers, not something like - # libselinux. So the simplest thing is to presume that the standard - # system headers will be ok for this file. --$(objpfx)nscd_stat.o: sysincludes = # nothing --$(objpfx)selinux.o: sysincludes = # nothing -+# Except, of course, this breaks crosscompiling with kernel headers in -+# a nonstandard location... -+#$(objpfx)nscd_stat.o: sysincludes = # nothing -+#$(objpfx)selinux.o: sysincludes = # nothing - - distribute := nscd.h nscd-client.h dbg_log.h \ - $(addsuffix .c, $(filter-out xmalloc,$(all-nscd-modules))) \ diff --git a/recipes/glibc/glibc-2.4/glibc-2.4-openat-3.patch b/recipes/glibc/glibc-2.4/glibc-2.4-openat-3.patch deleted file mode 100644 index d3f37f6..0000000 --- a/recipes/glibc/glibc-2.4/glibc-2.4-openat-3.patch +++ /dev/null @@ -1,133 +0,0 @@ -Submitted By: Jim Gifford (patches at jg555 dot com) -Date: 2006-08-18 -Initial Package Version: 2.4 -Origin: http://sourceware.org/bugzilla/show_bug.cgi?id=2873 -Upstream Status: Applied -Description: Fixes http://sourceware.org/bugzilla/show_bug.cgi?id=2873 - http://sourceware.org/bugzilla/show_bug.cgi?id=3040 - http://linuxfromscratch.org/pipermail/lfs-dev/2006-June/057562.html - Updated by Joe Ciccone - -diff -Naur glibc-2.4.orig/sysdeps/unix/sysv/linux/i386/fchownat.c glibc-2.4/sysdeps/unix/sysv/linux/i386/fchownat.c ---- glibc-2.4.orig/sysdeps/unix/sysv/linux/i386/fchownat.c 2006-02-23 14:50:21.000000000 -0800 -+++ glibc-2.4/sysdeps/unix/sysv/linux/i386/fchownat.c 2006-08-18 20:38:21.773288795 -0700 -@@ -61,6 +61,24 @@ - int - fchownat (int fd, const char *file, uid_t owner, gid_t group, int flag) - { -+ int result; -+ -+#ifdef __NR_fchownat -+# ifndef __ASSUME_ATFCTS -+ if (__have_atfcts >= 0) -+# endif -+ { -+ result = INLINE_SYSCALL (fchownat, 5, fd, file, owner, group, flag); -+# ifndef __ASSUME_ATFCTS -+ if (result == -1 && errno == ENOSYS) -+ __have_atfcts = -1; -+ else -+# endif -+ return result; -+ } -+#endif -+ -+#ifndef __ASSUME_ATFCTS - if (flag & ~AT_SYMLINK_NOFOLLOW) - { - __set_errno (EINVAL); -@@ -87,14 +105,13 @@ - file = buf; - } - -- int result; - INTERNAL_SYSCALL_DECL (err); - --#if defined __NR_lchown || __ASSUME_LCHOWN_SYSCALL > 0 --# if __ASSUME_LCHOWN_SYSCALL == 0 -+# if defined __NR_lchown || __ASSUME_LCHOWN_SYSCALL > 0 -+# if __ASSUME_LCHOWN_SYSCALL == 0 - static int __libc_old_chown; - --# ifdef __NR_chown32 -+# ifdef __NR_chown32 - if (__libc_missing_32bit_uids <= 0) - { - if (flag & AT_SYMLINK_NOFOLLOW) -@@ -111,7 +128,7 @@ - - __libc_missing_32bit_uids = 1; - } --# endif /* __NR_chown32 */ -+# endif /* __NR_chown32 */ - - if (((owner + 1) > (uid_t) ((__kernel_uid_t) -1U)) - || ((group + 1) > (gid_t) ((__kernel_gid_t) -1U))) -@@ -135,13 +152,13 @@ - - result = INTERNAL_SYSCALL (lchown, err, 3, CHECK_STRING (file), owner, - group); --# elif __ASSUME_32BITUIDS -+# elif __ASSUME_32BITUIDS - /* This implies __ASSUME_LCHOWN_SYSCALL. */ - result = INTERNAL_SYSCALL (chown32, err, 3, CHECK_STRING (file), owner, - group); --# else -+# else - /* !__ASSUME_32BITUIDS && ASSUME_LCHOWN_SYSCALL */ --# ifdef __NR_chown32 -+# ifdef __NR_chown32 - if (__libc_missing_32bit_uids <= 0) - { - result = INTERNAL_SYSCALL (chown32, err, 3, CHECK_STRING (file), owner, -@@ -153,7 +170,7 @@ - - __libc_missing_32bit_uids = 1; - } --# endif /* __NR_chown32 */ -+# endif /* __NR_chown32 */ - if (((owner + 1) > (uid_t) ((__kernel_uid_t) -1U)) - || ((group + 1) > (gid_t) ((__kernel_gid_t) -1U))) - { -@@ -162,10 +179,10 @@ - } - - result = INTERNAL_SYSCALL (chown, err, 3, CHECK_STRING (file), owner, group); --# endif --#else -+# endif -+# else - result = INTERNAL_SYSCALL (chown, err, 3, CHECK_STRING (file), owner, group); --#endif -+# endif - - if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0)) - goto fail; -@@ -175,4 +192,5 @@ - fail: - __atfct_seterrno (INTERNAL_SYSCALL_ERRNO (result, err), fd, buf); - return -1; -+#endif - } -diff -Naur glibc-2.4.orig/sysdeps/unix/sysv/linux/openat.c glibc-2.4/sysdeps/unix/sysv/linux/openat.c ---- glibc-2.4.orig/sysdeps/unix/sysv/linux/openat.c 2006-02-28 21:32:42.000000000 -0800 -+++ glibc-2.4/sysdeps/unix/sysv/linux/openat.c 2006-08-18 20:39:14.360012706 -0700 -@@ -29,8 +29,6 @@ - - - #if !defined OPENAT && !defined __ASSUME_ATFCTS --# define OPENAT openat -- - /* Set errno after a failed call. If BUF is not null, - it is a /proc/self/fd/ path name we just tried to use. */ - void -@@ -63,6 +61,9 @@ - int __have_atfcts; - #endif - -+#ifndef OPENAT -+# define OPENAT openat -+#endif - - #define OPENAT_NOT_CANCEL CONCAT (OPENAT) - #define CONCAT(name) CONCAT2 (name) diff --git a/recipes/glibc/glibc-2.4/glibc-arm-IO-acquire-lock-fix.diff b/recipes/glibc/glibc-2.4/glibc-arm-IO-acquire-lock-fix.diff deleted file mode 100644 index a552cf0..0000000 --- a/recipes/glibc/glibc-2.4/glibc-arm-IO-acquire-lock-fix.diff +++ /dev/null @@ -1,13 +0,0 @@ -Arm needs a similar fix as http://sourceware.org/ml/libc-ports/2007-12/msg00000.html - ---- /tmp/stdio-lock.h 2008-03-04 18:51:15.555038993 +0100 -+++ glibc-2.7/ports/sysdeps/unix/sysv/linux/arm/bits/stdio-lock.h 2008-03-04 18:51:28.445035052 +0100 -@@ -50,6 +50,8 @@ - _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, (_fp)); \ - _IO_flockfile (_fp) - -+# define _IO_acquire_lock_clear_flags2(_fp) _IO_acquire_lock (_fp) -+ - # define _IO_release_lock(_fp) \ - _IO_funlockfile (_fp); \ - _IO_cleanup_region_end (0) diff --git a/recipes/glibc/glibc-2.4/glibc-arm-no-asm-page.patch b/recipes/glibc/glibc-2.4/glibc-arm-no-asm-page.patch deleted file mode 100644 index 7eb1717..0000000 --- a/recipes/glibc/glibc-2.4/glibc-arm-no-asm-page.patch +++ /dev/null @@ -1,15 +0,0 @@ -http://sourceware.org/ml/libc-ports/2008-04/msg00005.html - - -Index: glibc-2.6.1/ports/sysdeps/unix/sysv/linux/arm/ioperm.c -=================================================================== ---- glibc-2.6.1.orig/ports/sysdeps/unix/sysv/linux/arm/ioperm.c 2008-09-12 18:08:18.000000000 -0700 -+++ glibc-2.6.1/ports/sysdeps/unix/sysv/linux/arm/ioperm.c 2008-09-12 18:08:28.000000000 -0700 -@@ -45,7 +45,6 @@ - #include <sys/mman.h> - - #include <linux/version.h> --#include <asm/page.h> - #include <sys/sysctl.h> - - #define PATH_ARM_SYSTYPE "/etc/arm_systype" diff --git a/recipes/glibc/glibc-2.4/glibc-check_pf.patch b/recipes/glibc/glibc-2.4/glibc-check_pf.patch deleted file mode 100644 index 3cff6bb..0000000 --- a/recipes/glibc/glibc-2.4/glibc-check_pf.patch +++ /dev/null @@ -1,343 +0,0 @@ -From libc-ports-return-550-listarch-libc-ports=sources dot redhat dot com at sourceware dot org Tue Oct 31 17:37:21 2006 -Return-Path: <libc-ports-return-550-listarch-libc-ports=sources dot redhat dot com at sourceware dot org> -Delivered-To: listarch-libc-ports at sources dot redhat dot com -Received: (qmail 17273 invoked by alias); 31 Oct 2006 17:37:20 -0000 -Received: (qmail 17262 invoked by uid 22791); 31 Oct 2006 17:37:19 -0000 -X-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,TW_CP -X-Spam-Check-By: sourceware.org -Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Tue, 31 Oct 2006 17:37:11 +0000 -Received: from drow by nevyn.them.org with local (Exim 4.54) id 1GexXw-0007Dj-30; Tue, 31 Oct 2006 12:37:08 -0500 -Date: Tue, 31 Oct 2006 12:37:08 -0500 -From: Daniel Jacobowitz <drow at false dot org> -To: Mike Frysinger <vapier at gentoo dot org> -Cc: libc-ports at sourceware dot org, Philip Balister <philip dot balister at gmail dot com> -Subject: Re: Problem with glibc-2.5 on ARM -Message-ID: <20061031173708.GJ20468@nevyn.them.org> -References: <499146270610241149ibe030e0nd9d6b177a95b346e@mail.gmail.com> <499146270610241254u7cadf63ej2edf05cedbc5266f@mail.gmail.com> <20061024195837.GA20181@nevyn.them.org> <200610291954.27022.vapier@gentoo.org> -MIME-Version: 1.0 -Content-Type: text/plain; charset=us-ascii -Content-Disposition: inline -In-Reply-To: <200610291954 dot 27022 dot vapier at gentoo dot org> -User-Agent: Mutt/1.5.13 (2006-08-11) -X-IsSubscribed: yes -Mailing-List: contact libc-ports-help at sourceware dot org; run by ezmlm -Precedence: bulk -List-Subscribe: <mailto:libc-ports-subscribe at sourceware dot org> -List-Post: <mailto:libc-ports at sourceware dot org> -List-Help: <mailto:libc-ports-help at sourceware dot org>, <http://sourceware dot org/lists dot html#faqs> -Sender: libc-ports-owner at sourceware dot org -Delivered-To: mailing list libc-ports at sourceware dot org - -On Sun, Oct 29, 2006 at 07:54:25PM -0500, Mike Frysinger wrote: -> On Tuesday 24 October 2006 15:58, Daniel Jacobowitz wrote: -> > ARM is going to need a slightly different version of that file, I -> > guess. -> -> would declaring req with attribute packed not help ? -> -mike - -Nope. "struct rtgenmsg" would still have size 4. - -Philip, are you still at all interested in this for the old ABI? -I don't have time to test this patch right now, but I think it -will work. - --- -Daniel Jacobowitz -CodeSourcery - -2006-10-31 Daniel Jacobowitz <dan@codesourcery.com> - - * sysdeps/unix/sysv/linux/arm/check_pf.c: New file. - * sysdeps/unix/sysv/linux/arm/eabi/check_pf.c: New file. - -Index: sysdeps/unix/sysv/linux/arm/check_pf.c -=================================================================== -RCS file: sysdeps/unix/sysv/linux/arm/check_pf.c -diff -N sysdeps/unix/sysv/linux/arm/check_pf.c ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ sysdeps/unix/sysv/linux/arm/check_pf.c 31 Oct 2006 17:29:58 -0000 -@@ -0,0 +1,274 @@ -+/* Determine protocol families for which interfaces exist. ARM Linux version. -+ Copyright (C) 2003, 2006 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 <assert.h> -+#include <errno.h> -+#include <ifaddrs.h> -+#include <netdb.h> -+#include <stddef.h> -+#include <string.h> -+#include <time.h> -+#include <unistd.h> -+#include <sys/socket.h> -+ -+#include <asm/types.h> -+#include <linux/netlink.h> -+#include <linux/rtnetlink.h> -+ -+#include <not-cancel.h> -+#include <kernel-features.h> -+ -+ -+#ifndef IFA_F_TEMPORARY -+# define IFA_F_TEMPORARY IFA_F_SECONDARY -+#endif -+#ifndef IFA_F_HOMEADDRESS -+# define IFA_F_HOMEADDRESS 0 -+#endif -+ -+ -+static int -+make_request (int fd, pid_t pid, bool *seen_ipv4, bool *seen_ipv6, -+ struct in6addrinfo **in6ai, size_t *in6ailen) -+{ -+ struct req -+ { -+ struct nlmsghdr nlh; -+ struct rtgenmsg g; -+ } req; -+ struct sockaddr_nl nladdr; -+ -+ /* struct rtgenmsg consists of a single byte but the ARM ABI rounds -+ it up to a word. Clear the padding explicitly here. */ -+ assert (sizeof (req.g) == 4); -+ memset (&req.g, '\0', sizeof (req.g)); -+ -+ req.nlh.nlmsg_len = sizeof (req); -+ req.nlh.nlmsg_type = RTM_GETADDR; -+ req.nlh.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST; -+ req.nlh.nlmsg_pid = 0; -+ req.nlh.nlmsg_seq = time (NULL); -+ req.g.rtgen_family = AF_UNSPEC; -+ -+ memset (&nladdr, '\0', sizeof (nladdr)); -+ nladdr.nl_family = AF_NETLINK; -+ -+ if (TEMP_FAILURE_RETRY (__sendto (fd, (void *) &req, sizeof (req), 0, -+ (struct sockaddr *) &nladdr, -+ sizeof (nladdr))) < 0) -+ return -1; -+ -+ *seen_ipv4 = false; -+ *seen_ipv6 = false; -+ -+ bool done = false; -+ char buf[4096]; -+ struct iovec iov = { buf, sizeof (buf) }; -+ struct in6ailist -+ { -+ struct in6addrinfo info; -+ struct in6ailist *next; -+ } *in6ailist = NULL; -+ size_t in6ailistlen = 0; -+ -+ do -+ { -+ struct msghdr msg = -+ { -+ (void *) &nladdr, sizeof (nladdr), -+ &iov, 1, -+ NULL, 0, -+ 0 -+ }; -+ -+ ssize_t read_len = TEMP_FAILURE_RETRY (__recvmsg (fd, &msg, 0)); -+ if (read_len < 0) -+ return -1; -+ -+ if (msg.msg_flags & MSG_TRUNC) -+ return -1; -+ -+ struct nlmsghdr *nlmh; -+ for (nlmh = (struct nlmsghdr *) buf; -+ NLMSG_OK (nlmh, (size_t) read_len); -+ nlmh = (struct nlmsghdr *) NLMSG_NEXT (nlmh, read_len)) -+ { -+ if (nladdr.nl_pid != 0 || (pid_t) nlmh->nlmsg_pid != pid -+ || nlmh->nlmsg_seq != req.nlh.nlmsg_seq) -+ continue; -+ -+ if (nlmh->nlmsg_type == RTM_NEWADDR) -+ { -+ struct ifaddrmsg *ifam = (struct ifaddrmsg *) NLMSG_DATA (nlmh); -+ -+ switch (ifam->ifa_family) -+ { -+ case AF_INET: -+ *seen_ipv4 = true; -+ break; -+ case AF_INET6: -+ *seen_ipv6 = true; -+ -+ if (ifam->ifa_flags & (IFA_F_DEPRECATED -+ | IFA_F_TEMPORARY -+ | IFA_F_HOMEADDRESS)) -+ { -+ struct rtattr *rta = IFA_RTA (ifam); -+ size_t len = (nlmh->nlmsg_len -+ - NLMSG_LENGTH (sizeof (*ifam))); -+ void *local = NULL; -+ void *address = NULL; -+ while (RTA_OK (rta, len)) -+ { -+ switch (rta->rta_type) -+ { -+ case IFA_LOCAL: -+ local = RTA_DATA (rta); -+ break; -+ -+ case IFA_ADDRESS: -+ address = RTA_DATA (rta); -+ break; -+ } -+ -+ rta = RTA_NEXT (rta, len); -+ } -+ -+ struct in6ailist *newp = alloca (sizeof (*newp)); -+ newp->info.flags = (((ifam->ifa_flags & IFA_F_DEPRECATED) -+ ? in6ai_deprecated : 0) -+ | ((ifam->ifa_flags -+ & IFA_F_TEMPORARY) -+ ? in6ai_temporary : 0) -+ | ((ifam->ifa_flags -+ & IFA_F_HOMEADDRESS) -+ ? in6ai_homeaddress : 0)); -+ memcpy (newp->info.addr, address ?: local, -+ sizeof (newp->info.addr)); -+ newp->next = in6ailist; -+ in6ailist = newp; -+ ++in6ailistlen; -+ } -+ break; -+ default: -+ /* Ignore. */ -+ break; -+ } -+ } -+ else if (nlmh->nlmsg_type == NLMSG_DONE) -+ /* We found the end, leave the loop. */ -+ done = true; -+ } -+ } -+ while (! done); -+ -+ close_not_cancel_no_status (fd); -+ -+ if (in6ailist != NULL) -+ { -+ *in6ai = malloc (in6ailistlen * sizeof (**in6ai)); -+ if (*in6ai == NULL) -+ return -1; -+ -+ *in6ailen = in6ailistlen; -+ -+ do -+ { -+ (*in6ai)[--in6ailistlen] = in6ailist->info; -+ in6ailist = in6ailist->next; -+ } -+ while (in6ailist != NULL); -+ } -+ -+ return 0; -+} -+ -+ -+/* We don't know if we have NETLINK support compiled in in our -+ Kernel. */ -+#if __ASSUME_NETLINK_SUPPORT == 0 -+/* Define in ifaddrs.h. */ -+extern int __no_netlink_support attribute_hidden; -+#else -+# define __no_netlink_support 0 -+#endif -+ -+ -+void -+attribute_hidden -+__check_pf (bool *seen_ipv4, bool *seen_ipv6, -+ struct in6addrinfo **in6ai, size_t *in6ailen) -+{ -+ *in6ai = NULL; -+ *in6ailen = 0; -+ -+ if (! __no_netlink_support) -+ { -+ int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE); -+ -+ struct sockaddr_nl nladdr; -+ memset (&nladdr, '\0', sizeof (nladdr)); -+ nladdr.nl_family = AF_NETLINK; -+ -+ socklen_t addr_len = sizeof (nladdr); -+ -+ if (fd >= 0 -+ && __bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0 -+ && __getsockname (fd, (struct sockaddr *) &nladdr, &addr_len) == 0 -+ && make_request (fd, nladdr.nl_pid, seen_ipv4, seen_ipv6, -+ in6ai, in6ailen) == 0) -+ /* It worked. */ -+ return; -+ -+ if (fd >= 0) -+ __close (fd); -+ -+#if __ASSUME_NETLINK_SUPPORT == 0 -+ /* Remember that there is no netlink support. */ -+ __no_netlink_support = 1; -+#else -+ /* We cannot determine what interfaces are available. Be -+ pessimistic. */ -+ *seen_ipv4 = true; -+ *seen_ipv6 = true; -+#endif -+ } -+ -+#if __ASSUME_NETLINK_SUPPORT == 0 -+ /* No netlink. Get the interface list via getifaddrs. */ -+ struct ifaddrs *ifa = NULL; -+ if (getifaddrs (&ifa) != 0) -+ { -+ /* We cannot determine what interfaces are available. Be -+ pessimistic. */ -+ *seen_ipv4 = true; -+ *seen_ipv6 = true; -+ return; -+ } -+ -+ struct ifaddrs *runp; -+ for (runp = ifa; runp != NULL; runp = runp->ifa_next) -+ if (runp->ifa_addr->sa_family == PF_INET) -+ *seen_ipv4 = true; -+ else if (runp->ifa_addr->sa_family == PF_INET6) -+ *seen_ipv6 = true; -+ -+ (void) freeifaddrs (ifa); -+#endif -+} -Index: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c -=================================================================== -RCS file: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c -diff -N sysdeps/unix/sysv/linux/arm/eabi/check_pf.c ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ sysdeps/unix/sysv/linux/arm/eabi/check_pf.c 31 Oct 2006 17:29:58 -0000 -@@ -0,0 +1 @@ -+#include <sysdeps/unix/sysv/linux/check_pf.c> - diff --git a/recipes/glibc/glibc-2.4/glibc-crunch-eabi-force.patch b/recipes/glibc/glibc-2.4/glibc-crunch-eabi-force.patch deleted file mode 100644 index b509b13..0000000 --- a/recipes/glibc/glibc-2.4/glibc-crunch-eabi-force.patch +++ /dev/null @@ -1,133 +0,0 @@ -diff -urN glibc-2.6.1/ports/sysdeps/arm/eabi/bits/fenv.h glibc-2.6.1/ports/sysdeps/arm/eabi/bits/fenv.h ---- glibc-2.6.1/ports/sysdeps/arm/eabi/bits/fenv.h 2008-04-04 18:32:58.000000000 +1000 -+++ glibc-2.6.1/ports/sysdeps/arm/eabi/bits/fenv.h 2008-04-07 10:40:28.000000000 +1000 -@@ -20,6 +20,8 @@ - # error "Never use <bits/fenv.h> directly; include <fenv.h> instead." - #endif - -+#if 0 -+ - /* Define bits representing exceptions in the VFP FPU status word. */ - enum - { -@@ -55,37 +57,50 @@ - #define FE_TOWARDZERO FE_TOWARDZERO - }; - -+#endif -+ - /* Define bits representing exceptions in the CRUNCH FPU status word. */ - enum - { - FE_CRUNCH_INVALID = (1), - #define FE_CRUNCH_INVALID FE_CRUNCH_INVALID -+#define FE_INVALID FE_CRUNCH_INVALID -+#define FE_DIVBYZERO 0 - FE_CRUNCH_OVERFLOW = (4), - #define FE_CRUNCH_OVERFLOW FE_CRUNCH_OVERFLOW -+#define FE_OVERFLOW FE_CRUNCH_OVERFLOW - FE_CRUNCH_UNDERFLOW = (8), - #define FE_CRUNCH_UNDERFLOW FE_CRUNCH_UNDERFLOW -+#define FE_UNDERFLOW FE_CRUNCH_UNDERFLOW - FE_CRUNCH_INEXACT = (16), - #define FE_CRUNCH_INEXACT FE_CRUNCH_INEXACT -+#define FE_INEXACT FE_CRUNCH_INEXACT - }; - - /* Amount to shift by to convert an exception to a mask bit. */ - #define FE_CRUNCH_EXCEPT_SHIFT 5 -+#define FE_EXCEPT_SHIFT FE_CRUNCH_EXCEPT_SHIFT - - /* All supported exceptions, except DIVBYZERO. */ - #define FE_CRUNCH_ALL_EXCEPT \ - (FE_CRUNCH_INVALID | FE_CRUNCH_OVERFLOW | FE_CRUNCH_UNDERFLOW | FE_CRUNCH_INEXACT) -+#define FE_ALL_EXCEPT FE_CRUNCH_ALL_EXCEPT - - /* CRUNCH supports all of the four defined rounding modes. */ - enum - { - FE_CRUNCH_TONEAREST = 0, - #define FE_CRUNCH_TONEAREST FE_CRUNCH_TONEAREST -+#define FE_TONEAREST FE_CRUNCH_TONEAREST - FE_CRUNCH_TOWARDZERO = 0x400, - #define FE_CRUNCH_TOWARDZERO FE_CRUNCH_TOWARDZERO -+#define FE_TOWARDZERO FE_CRUNCH_TOWARDZERO - FE_CRUNCH_DOWNWARD = 0x800, - #define FE_CRUNCH_DOWNWARD FE_CRUNCH_DOWNWARD -+#define FE_DOWNWARD FE_CRUNCH_DOWNWARD - FE_CRUNCH_UPWARD = 0xc00 - #define FE_CRUNCH_UPWARD FE_CRUNCH_UPWARD -+#define FE_UPWARD FE_CRUNCH_UPWARD - }; - - -diff -urN glibc-2.6.1/ports/sysdeps/arm/eabi/fpu_control.h glibc-2.6.1/ports/sysdeps/arm/eabi/fpu_control.h ---- glibc-2.6.1/ports/sysdeps/arm/eabi/fpu_control.h 2008-04-04 18:32:58.000000000 +1000 -+++ glibc-2.6.1/ports/sysdeps/arm/eabi/fpu_control.h 2008-04-07 11:02:13.000000000 +1000 -@@ -20,6 +20,8 @@ - #ifndef _FPU_CONTROL_H - #define _FPU_CONTROL_H - -+#if 0 -+ - /* masking of interrupts */ - #define _FPU_MASK_IM 0x00000100 /* invalid operation */ - #define _FPU_MASK_ZM 0x00000200 /* divide by zero */ -@@ -45,6 +47,11 @@ - #define _FPU_SETCW(cw) \ - __asm__ __volatile__ ("mcr p10, 7, %0, cr1, cr0, 0" : : "r" (cw)) - -+#endif -+ - /* CRUNCH SECTION */ - -+/* Type of the control word. */ -+typedef unsigned int fpu_control_t; -+ - /* DSPSC register: (from EP9312 User's Guide) -@@ -69,19 +73,27 @@ - - /* masking of interrupts */ - #define _FPU_CRUNCH_MASK_IM (1 << 5) /* invalid operation */ -+#define _FPU_MASK_IM _FPU_CRUNCH_MASK_IM - #define _FPU_CRUNCH_MASK_ZM 0 /* divide by zero */ -+#define _FPU_MASK_ZM _FPU_CRUNCH_MASK_ZM - #define _FPU_CRUNCH_MASK_OM (1 << 7) /* overflow */ -+#define _FPU_MASK_OM _FPU_CRUNCH_MASK_OM - #define _FPU_CRUNCH_MASK_UM (1 << 8) /* underflow */ -+#define _FPU_MASK_UM _FPU_CRUNCH_MASK_UM - #define _FPU_CRUNCH_MASK_PM (1 << 9) /* inexact */ -+#define _FPU_MASK_PM _FPU_CRUNCH_MASK_PM - #define _FPU_CRUNCH_MASK_DM 0 /* denormalized operation */ -+#undef _FPU_MASK_DM - - /* Some bits in the FPSCR are not yet defined. They must be preserved when - modifying the contents. */ - #define _FPU_CRUNCH_RESERVED 0x03000042 -+#define _FPU_RESERVED _FPU_CRUNCH_RESERVED - #define _FPU_CRUNCH_DEFAULT 0x00b00000 -+#define _FPU_DEFAULT _FPU_CRUNCH_DEFAULT - /* Default + exceptions enabled. */ - #define _FPU_CRUNCH_IEEE (_FPU_CRUNCH_DEFAULT | 0x000003a0) -- -+#define _FPU_IEEE _FPU_CRUNCH_IEEE - - /* Macros for accessing the hardware control word. */ - /* cfmvr64l %1, mvdx0 */ -@@ -103,6 +115,7 @@ - : "=r" (cw), "=r" (__t1), "=r" (__t2) \ - ); \ - }) -+#define _FPU_GETCW(cw) _FPU_CRUNCH_GETCW(cw) - - /* cfmvr64l %1, mvdx0 */ - /* cfmvr64h %2, mvdx0 */ -@@ -123,7 +136,7 @@ - : "=r" (__t1), "=r" (__t2) : "r" (cw) \ - ); \ - }) -- -+#define _FPU_SETCW(cw) _FPU_CRUNCH_SETCW(cw) - - /* Default control word set at startup. */ - extern fpu_control_t __fpu_control; diff --git a/recipes/glibc/glibc-2.4/glibc-crunch-eabi-fraiseexcpt.patch b/recipes/glibc/glibc-2.4/glibc-crunch-eabi-fraiseexcpt.patch deleted file mode 100644 index dcee3fa..0000000 --- a/recipes/glibc/glibc-2.4/glibc-crunch-eabi-fraiseexcpt.patch +++ /dev/null @@ -1,88 +0,0 @@ -diff -urN glibc-2.5/ports/sysdeps/arm/eabi/fraiseexcpt.c glibc-2.5/ports/sysdeps/arm/eabi-new/fraiseexcpt.c ---- glibc-2.5/ports/sysdeps/arm/eabi/fraiseexcpt.c 2005-10-11 01:29:32.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/eabi-new/fraiseexcpt.c 2008-04-14 17:21:09.000000000 +1000 -@@ -25,6 +25,7 @@ - #include <ldsodefs.h> - #include <dl-procinfo.h> - #include <sysdep.h> -+#include <math.h> - - int - feraiseexcept (int excepts) -@@ -105,8 +105,74 @@ - - if (GLRO (dl_hwcap) & HWCAP_ARM_CRUNCH) - { -- /* Unsupported, for now. */ -- return 1; -+ unsigned int dspsc; -+ const float fp_zero = 0.0, fp_one = 1.0, fp_max = FLT_MAX, -+ fp_min = FLT_MIN, fp_1e32 = 1.0e32f, fp_two = 2.0, -+ fp_three = 3.0, fp_inf = HUGE_VALF; -+ -+ /* Raise exceptions represented by EXPECTS. But we must raise only -+ one signal at a time. It is important that if the overflow/underflow -+ exception and the inexact exception are given at the same time, -+ the overflow/underflow exception follows the inexact exception. After -+ each exception we read from the dspsc, to force the exception to be -+ raised immediately. */ -+ -+ /* There are additional complications because this file may be compiled -+ without CRUNCH support enabled, and we also can't assume that the -+ assembler has CRUNCH instructions enabled. To get around this we use the -+ generic coprocessor mnemonics and avoid asking GCC to put float values -+ in CRUNCH registers. */ -+ -+ /* First: invalid exception. */ -+ if (FE_CRUNCH_INVALID & excepts) -+ /* (ZERO * INFINITY) */ -+ __asm__ __volatile__ ( -+ "ldc p4, cr0, %1\n\t" /* cflds mvf0, %1 */ -+ "ldc p4, cr1, %2\n\t" /* cflds mvf1, %2 */ -+ "cdp p4, 1, cr0, cr0, cr1, 0\n\t" /* cfmuls mvf0, mvf0, mvf1 */ -+ "cdp p4, 0, cr0, cr0, cr0, 7\n\t" /* cfmv32sc mvdx0, dspsc */ -+ "mrc p5, 0, %0, cr0, cr0, 0" : "=r" (dspsc) /* cfmvr64l dspsc, mvdx0 */ -+ : "m" (fp_zero), "m" (fp_inf) -+ : "s0", "s1"); -+ -+ /* Next: overflow. */ -+ if (FE_CRUNCH_OVERFLOW & excepts) -+ /* There's no way to raise overflow without also raising inexact. */ -+ __asm__ __volatile__ ( -+ "ldc p4, cr0, %1\n\t" /* cflds mvf0, %1 */ -+ "ldc p4, cr1, %2\n\t" /* cflds mvf1, %2 */ -+ "cdp p4, 3, cr0, cr0, cr1, 4\n\t" /* cfadds mvf0, mvf0, mvf1 */ -+ "cdp p4, 0, cr0, cr0, cr0, 7\n\t" /* cfmv32sc mvdx0, dspsc */ -+ "mrc p5, 0, %0, cr0, cr0, 0" : "=r" (dspsc) /* cfmvr64l dspsc, mvdx0 */ -+ : "m" (fp_max), "m" (fp_1e32) -+ : "s0", "s1"); -+ -+ /* Next: underflow. */ -+ if (FE_CRUNCH_UNDERFLOW & excepts) -+ /* (FLT_MIN * FLT_MIN) */ -+ __asm__ __volatile__ ( -+ "ldc p4, cr0, %1\n\t" /* cflds mvf0, %1 */ -+ "ldc p4, cr1, %2\n\t" /* cflds mvf1, %2 */ -+ "cdp p4, 1, cr0, cr0, cr1, 0\n\t" /* cfmul mvf0, mvf0, mvf1 */ -+ "cdp p4, 0, cr0, cr0, cr0, 7\n\t" /* cfmv32sc mvdx0, dspsc */ -+ "mrc p5, 0, %0, cr0, cr0, 0" : "=r" (dspsc) /* cfmvr64l dspsc, mvdx0 */ -+ : "m" (fp_min), "m" (fp_min) -+ : "s0", "s1"); -+ -+ /* Last: inexact. */ -+ if (FE_CRUNCH_INEXACT & excepts) -+ /* There's no way to raise inexact without also raising overflow. */ -+ __asm__ __volatile__ ( -+ "ldc p4, cr0, %1\n\t" /* cflds mvf0, %1 */ -+ "ldc p4, cr1, %2\n\t" /* cflds mvf1, %2 */ -+ "cdp p4, 3, cr0, cr0, cr1, 4\n\t" /* cfadds mvf0, mvf0, mvf1 */ -+ "cdp p4, 0, cr0, cr0, cr0, 7\n\t" /* cfmv32sc mvdx0, dspsc */ -+ "mrc p5, 0, %0, cr0, cr0, 0" : "=r" (dspsc) /* cfmvr64l dspsc, mvdx0 */ -+ : "m" (fp_max), "m" (fp_1e32) -+ : "s0", "s1"); -+ -+ /* Success. */ -+ return 0; - } - - /* Unsupported, so fail. */ diff --git a/recipes/glibc/glibc-2.4/glibc-crunch-eabi-setjmp_longjmp.patch b/recipes/glibc/glibc-2.4/glibc-crunch-eabi-setjmp_longjmp.patch deleted file mode 100644 index cf4ed60..0000000 --- a/recipes/glibc/glibc-2.4/glibc-crunch-eabi-setjmp_longjmp.patch +++ /dev/null @@ -1,112 +0,0 @@ ---- glibc-2.5/ports/sysdeps/arm/eabi/setjmp.S 2006-09-22 04:39:51.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/eabi/setjmp.S 2007-05-24 13:31:20.000000000 +1000 -@@ -74,6 +74,34 @@ - stcl p1, cr15, [r12], #8 - Lno_iwmmxt: - -+ tst a3, #HWCAP_ARM_CRUNCH -+ beq Lno_crunch -+ -+ /* Save the call-preserved crunch registers. */ -+ /* Following instructions are cfstrd cr10, [ip], #8 (etc.) */ -+ /* stcl p4, cr4, [r12], #8 */ -+ /* stcl p4, cr5, [r12], #8 */ -+ /* stcl p4, cr6, [r12], #8 */ -+ /* stcl p4, cr7, [r12], #8 */ -+ stcl p4, cr8, [r12], #8 -+ stcl p4, cr9, [r12], #8 -+ stcl p4, cr10, [r12], #8 -+ stcl p4, cr11, [r12], #8 -+ stcl p4, cr12, [r12], #8 -+ stcl p4, cr13, [r12], #8 -+ stcl p4, cr14, [r12], #8 -+ stcl p4, cr15, [r12], #8 -+ /* Store the floating-point status register. -+ /* Following 6 instructions are FPU_CRUNCH_GETCW (r2) clob (r3, r4) */ -+ /* mrc p5, 0, r3, cr0, cr0, 0 */ -+ /* mrc p5, 0, r4, cr0, cr0, 1 */ -+ /* cdp p4, 0, cr0, cr0, cr0, 7 */ -+ /* mrc p5, 0, r2, cr0, cr0, 0 */ -+ /* mcr p5, 0, r3, cr0, cr0, 0 */ -+ /* mcr p5, 0, r4, cr0, cr0, 1 */ -+ /* str r2, [ip], #4 */ -+Lno_crunch: -+ - /* Make a tail call to __sigjmp_save; it takes the same args. */ - B PLTJMP(C_SYMBOL_NAME(__sigjmp_save)) - ---- glibc-2.5/ports/sysdeps/arm/eabi/__longjmp.S 2006-09-22 04:39:51.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/eabi/__longjmp.S 2007-05-24 13:31:23.000000000 +1000 -@@ -76,6 +76,34 @@ - ldcl p1, cr15, [r12], #8 - Lno_iwmmxt: - -+ tst a2, #HWCAP_ARM_CRUNCH -+ beq Lno_crunch -+ -+ /* Restore the call-preserved crunch registers. */ -+ /* Following instructions are cfldrd cr10, [ip], #8 (etc.) */ -+ /* ldcl p4, cr4, [r12], #8 */ -+ /* ldcl p4, cr5, [r12], #8 */ -+ /* ldcl p4, cr6, [r12], #8 */ -+ /* ldcl p4, cr7, [r12], #8 */ -+ ldcl p4, cr8, [r12], #8 -+ ldcl p4, cr9, [r12], #8 -+ ldcl p4, cr10, [r12], #8 -+ ldcl p4, cr11, [r12], #8 -+ ldcl p4, cr12, [r12], #8 -+ ldcl p4, cr13, [r12], #8 -+ ldcl p4, cr14, [r12], #8 -+ ldcl p4, cr15, [r12], #8 -+ /* Restore the floating-point status register. */ -+ ldr r1, [ip], #4 -+ /* Following 6 instructions are FPU_CRUNCH_SETCW (r1) clob (r2, r3). */ -+ /* mrc p5, 0, r2, cr0, cr0, 0 */ -+ /* mrc p5, 0, r3, cr0, cr0, 1 */ -+ /* mcr p5, 0, r1, cr0, cr0, 0 */ -+ /* cdp p4, 1, cr0, cr0, cr0, 7 */ -+ /* mcr p5, 0, r2, cr0, cr0, 0 */ -+ /* mcr p5, 0, r3, cr0, cr0, 1 */ -+Lno_crunch: -+ - DO_RET(lr) - - #ifdef IS_IN_rtld ---- glibc-2.5/ports/sysdeps/unix/sysv/linux/arm/sysdep.h 2006-09-22 04:39:51.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/unix/sysv/linux/arm/sysdep.h 2007-05-24 12:59:03.000000000 +1000 -@@ -48,6 +48,7 @@ - #define HWCAP_ARM_EDSP 128 - #define HWCAP_ARM_JAVA 256 - #define HWCAP_ARM_IWMMXT 512 -+#define HWCAP_ARM_CRUNCH 1024 - - #ifdef __ASSEMBLER__ - ---- glibc-2.5/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.c 2007-07-02 13:20:36.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.c 2007-07-02 13:23:19.000000000 +1000 -@@ -47,12 +47,12 @@ - #if !defined PROCINFO_DECL && defined SHARED - ._dl_arm_cap_flags - #else --PROCINFO_CLASS const char _dl_arm_cap_flags[10][10] -+PROCINFO_CLASS const char _dl_arm_cap_flags[11][10] - #endif - #ifndef PROCINFO_DECL - = { - "swp", "half", "thumb", "26bit", "fast-mult", "fpa", "vfp", "edsp", -- "java", "iwmmxt", -+ "java", "iwmmxt", "crunch", - } - #endif - #if !defined SHARED || defined PROCINFO_DECL ---- glibc-2.5/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h 2007-07-02 13:25:23.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h 2007-07-02 13:25:38.000000000 +1000 -@@ -24,7 +24,7 @@ - #include <ldsodefs.h> - #include <sysdep.h> - --#define _DL_HWCAP_COUNT 10 -+#define _DL_HWCAP_COUNT 11 - - /* The kernel provides platform data but it is not interesting. */ - #define _DL_HWCAP_PLATFORM 0 diff --git a/recipes/glibc/glibc-2.4/glibc-crunch-eabi-unwind.patch b/recipes/glibc/glibc-2.4/glibc-crunch-eabi-unwind.patch deleted file mode 100644 index d91d4fd..0000000 --- a/recipes/glibc/glibc-2.4/glibc-crunch-eabi-unwind.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- glibc-2.7/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind.h 2008-04-04 15:57:19.000000000 +1000 -+++ glibc-2.7/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind.h 2008-04-04 16:00:41.000000000 +1000 -@@ -138,7 +138,8 @@ - _UVRSC_VFP = 1, /* vfp */ - _UVRSC_FPA = 2, /* fpa */ - _UVRSC_WMMXD = 3, /* Intel WMMX data register */ -- _UVRSC_WMMXC = 4 /* Intel WMMX control register */ -+ _UVRSC_WMMXC = 4, /* Intel WMMX control register */ -+ _UVRSC_CRUNCH = 5 /* Maverick crunch register */ - } - _Unwind_VRS_RegClass; - diff --git a/recipes/glibc/glibc-2.4/glibc-crunch-eabi.patch b/recipes/glibc/glibc-2.4/glibc-crunch-eabi.patch deleted file mode 100644 index 8af4baf..0000000 --- a/recipes/glibc/glibc-2.4/glibc-crunch-eabi.patch +++ /dev/null @@ -1,461 +0,0 @@ -diff -urN glibc-2.5/ports/sysdeps/arm/eabi/bits/fenv.h glibc-2.5/ports/sysdeps/arm/eabi/bits/fenv.h ---- glibc-2.5/ports/sysdeps/arm/eabi/bits/fenv.h 2005-10-11 01:29:32.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/eabi/bits/fenv.h 2008-04-02 13:35:39.000000000 +1000 -@@ -20,7 +20,7 @@ - # error "Never use <bits/fenv.h> directly; include <fenv.h> instead." - #endif - --/* Define bits representing exceptions in the FPU status word. */ -+/* Define bits representing exceptions in the VFP FPU status word. */ - enum - { - FE_INVALID = 1, -@@ -55,6 +55,40 @@ - #define FE_TOWARDZERO FE_TOWARDZERO - }; - -+/* Define bits representing exceptions in the CRUNCH FPU status word. */ -+enum -+ { -+ FE_CRUNCH_INVALID = (1), -+#define FE_CRUNCH_INVALID FE_CRUNCH_INVALID -+ FE_CRUNCH_OVERFLOW = (4), -+#define FE_CRUNCH_OVERFLOW FE_CRUNCH_OVERFLOW -+ FE_CRUNCH_UNDERFLOW = (8), -+#define FE_CRUNCH_UNDERFLOW FE_CRUNCH_UNDERFLOW -+ FE_CRUNCH_INEXACT = (16), -+#define FE_CRUNCH_INEXACT FE_CRUNCH_INEXACT -+ }; -+ -+/* Amount to shift by to convert an exception to a mask bit. */ -+#define FE_CRUNCH_EXCEPT_SHIFT 5 -+ -+/* All supported exceptions, except DIVBYZERO. */ -+#define FE_CRUNCH_ALL_EXCEPT \ -+ (FE_CRUNCH_INVALID | FE_CRUNCH_OVERFLOW | FE_CRUNCH_UNDERFLOW | FE_CRUNCH_INEXACT) -+ -+/* CRUNCH supports all of the four defined rounding modes. */ -+enum -+ { -+ FE_CRUNCH_TONEAREST = 0, -+#define FE_CRUNCH_TONEAREST FE_CRUNCH_TONEAREST -+ FE_CRUNCH_TOWARDZERO = 0x400, -+#define FE_CRUNCH_TOWARDZERO FE_CRUNCH_TOWARDZERO -+ FE_CRUNCH_DOWNWARD = 0x800, -+#define FE_CRUNCH_DOWNWARD FE_CRUNCH_DOWNWARD -+ FE_CRUNCH_UPWARD = 0xc00 -+#define FE_CRUNCH_UPWARD FE_CRUNCH_UPWARD -+ }; -+ -+ - /* Type representing exception flags. */ - typedef unsigned int fexcept_t; - -diff -urN glibc-2.5/ports/sysdeps/arm/eabi/fclrexcpt.c glibc-2.5/ports/sysdeps/arm/eabi/fclrexcpt.c ---- glibc-2.5/ports/sysdeps/arm/eabi/fclrexcpt.c 2005-10-11 01:29:32.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/eabi/fclrexcpt.c 2008-04-02 13:25:09.000000000 +1000 -@@ -48,6 +48,26 @@ - return 0; - } - -+ if (GLRO (dl_hwcap) & HWCAP_ARM_CRUNCH) -+ { -+ unsigned long int temp; -+ -+ /* Mask out unsupported bits/exceptions. */ -+ excepts &= FE_CRUNCH_ALL_EXCEPT; -+ -+ /* Get the current floating point status. */ -+ _FPU_CRUNCH_GETCW (temp); -+ -+ /* Clear the relevant bits. */ -+ temp = (temp & ~FE_CRUNCH_ALL_EXCEPT) | (temp & FE_CRUNCH_ALL_EXCEPT & ~excepts); -+ -+ /* Put the new data in effect. */ -+ _FPU_CRUNCH_SETCW (temp); -+ -+ /* Success. */ -+ return 0; -+ } -+ - /* Unsupported, so fail. */ - return 1; - } -diff -urN glibc-2.5/ports/sysdeps/arm/eabi/fedisblxcpt.c glibc-2.5/ports/sysdeps/arm/eabi/fedisblxcpt.c ---- glibc-2.5/ports/sysdeps/arm/eabi/fedisblxcpt.c 2005-10-11 01:29:32.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/eabi/fedisblxcpt.c 2008-04-02 13:29:44.000000000 +1000 -@@ -46,6 +46,23 @@ - return old_exc; - } - -+ if (GLRO (dl_hwcap) & HWCAP_ARM_CRUNCH) -+ { -+ unsigned long int new_exc, old_exc; -+ -+ _FPU_CRUNCH_GETCW(new_exc); -+ -+ old_exc = (new_exc >> FE_CRUNCH_EXCEPT_SHIFT) & FE_CRUNCH_ALL_EXCEPT; -+ -+ excepts &= FE_CRUNCH_ALL_EXCEPT; -+ -+ new_exc &= ~(excepts << FE_CRUNCH_EXCEPT_SHIFT); -+ -+ _FPU_CRUNCH_SETCW(new_exc); -+ -+ return old_exc; -+ } -+ - /* Unsupported, so return -1 for failure. */ - return -1; - } -diff -urN glibc-2.5/ports/sysdeps/arm/eabi/feenablxcpt.c glibc-2.5/ports/sysdeps/arm/eabi/feenablxcpt.c ---- glibc-2.5/ports/sysdeps/arm/eabi/feenablxcpt.c 2005-10-11 01:29:32.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/eabi/feenablxcpt.c 2008-04-02 13:30:30.000000000 +1000 -@@ -46,6 +46,23 @@ - return old_exc; - } - -+ if (GLRO (dl_hwcap) & HWCAP_ARM_CRUNCH) -+ { -+ unsigned long int new_exc, old_exc; -+ -+ _FPU_CRUNCH_GETCW(new_exc); -+ -+ old_exc = (new_exc >> FE_CRUNCH_EXCEPT_SHIFT) & FE_CRUNCH_ALL_EXCEPT; -+ -+ excepts &= FE_CRUNCH_ALL_EXCEPT; -+ -+ new_exc |= (excepts << FE_CRUNCH_EXCEPT_SHIFT); -+ -+ _FPU_CRUNCH_SETCW(new_exc); -+ -+ return old_exc; -+ } -+ - /* Unsupported, so return -1 for failure. */ - return -1; - } -diff -urN glibc-2.5/ports/sysdeps/arm/eabi/fegetenv.c glibc-2.5/ports/sysdeps/arm/eabi/fegetenv.c ---- glibc-2.5/ports/sysdeps/arm/eabi/fegetenv.c 2005-10-11 01:29:32.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/eabi/fegetenv.c 2008-04-02 13:31:08.000000000 +1000 -@@ -38,6 +38,16 @@ - return 0; - } - -+ if (GLRO (dl_hwcap) & HWCAP_ARM_CRUNCH) -+ { -+ unsigned long int temp; -+ _FPU_CRUNCH_GETCW (temp); -+ envp->__cw = temp; -+ -+ /* Success. */ -+ return 0; -+ } -+ - /* Unsupported, so fail. */ - return 1; - } -diff -urN glibc-2.5/ports/sysdeps/arm/eabi/fegetexcept.c glibc-2.5/ports/sysdeps/arm/eabi/fegetexcept.c ---- glibc-2.5/ports/sysdeps/arm/eabi/fegetexcept.c 2005-10-11 01:29:32.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/eabi/fegetexcept.c 2008-04-02 13:31:40.000000000 +1000 -@@ -38,6 +38,15 @@ - return (temp >> FE_EXCEPT_SHIFT) & FE_ALL_EXCEPT; - } - -+ if (GLRO (dl_hwcap) & HWCAP_ARM_CRUNCH) -+ { -+ unsigned long temp; -+ -+ _FPU_CRUNCH_GETCW (temp); -+ -+ return (temp >> FE_CRUNCH_EXCEPT_SHIFT) & FE_CRUNCH_ALL_EXCEPT; -+ } -+ - /* Unsupported. Return all exceptions disabled. */ - return 0; - } -diff -urN glibc-2.5/ports/sysdeps/arm/eabi/fegetround.c glibc-2.5/ports/sysdeps/arm/eabi/fegetround.c ---- glibc-2.5/ports/sysdeps/arm/eabi/fegetround.c 2005-10-11 01:29:32.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/eabi/fegetround.c 2008-04-02 13:32:18.000000000 +1000 -@@ -38,6 +38,16 @@ - return temp & FE_TOWARDZERO; - } - -+ if (GLRO (dl_hwcap) & HWCAP_ARM_CRUNCH) -+ { -+ unsigned int temp; -+ -+ /* Get the current environment. */ -+ _FPU_CRUNCH_GETCW (temp); -+ -+ return temp & FE_CRUNCH_UPWARD; -+ } -+ - /* The current soft-float implementation only handles TONEAREST. */ - return FE_TONEAREST; - } -diff -urN glibc-2.5/ports/sysdeps/arm/eabi/feholdexcpt.c glibc-2.5/ports/sysdeps/arm/eabi/feholdexcpt.c ---- glibc-2.5/ports/sysdeps/arm/eabi/feholdexcpt.c 2005-10-11 01:29:32.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/eabi/feholdexcpt.c 2008-04-02 13:36:24.000000000 +1000 -@@ -47,6 +47,25 @@ - return 0; - } - -+ if (GLRO (dl_hwcap) & HWCAP_ARM_CRUNCH) -+ { -+ unsigned long int temp; -+ -+ /* Store the environment. */ -+ _FPU_CRUNCH_GETCW(temp); -+ envp->__cw = temp; -+ -+ /* Now set all exceptions to non-stop. */ -+ temp &= ~(FE_CRUNCH_ALL_EXCEPT << FE_CRUNCH_EXCEPT_SHIFT); -+ -+ /* And clear all exception flags. */ -+ temp &= ~FE_CRUNCH_ALL_EXCEPT; -+ -+ _FPU_CRUNCH_SETCW(temp); -+ -+ return 0; -+ } -+ - /* Unsupported, so fail. */ - return 1; - } -diff -urN glibc-2.5/ports/sysdeps/arm/eabi/fesetenv.c glibc-2.5/ports/sysdeps/arm/eabi/fesetenv.c ---- glibc-2.5/ports/sysdeps/arm/eabi/fesetenv.c 2005-10-11 01:29:32.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/eabi/fesetenv.c 2008-04-02 13:43:31.000000000 +1000 -@@ -48,6 +48,26 @@ - return 0; - } - -+ if (GLRO (dl_hwcap) & HWCAP_ARM_CRUNCH) -+ { -+ unsigned int temp; -+ -+ _FPU_CRUNCH_GETCW (temp); -+ temp &= _FPU_CRUNCH_RESERVED; -+ -+ if (envp == FE_DFL_ENV) -+ temp |= _FPU_CRUNCH_DEFAULT; -+ else if (envp == FE_NOMASK_ENV) -+ temp |= _FPU_CRUNCH_IEEE; -+ else -+ temp |= envp->__cw & ~_FPU_CRUNCH_RESERVED; -+ -+ _FPU_CRUNCH_SETCW (temp); -+ -+ /* Success. */ -+ return 0; -+ } -+ - /* Unsupported, so fail. */ - return 1; - } -diff -urN glibc-2.5/ports/sysdeps/arm/eabi/fesetround.c glibc-2.5/ports/sysdeps/arm/eabi/fesetround.c ---- glibc-2.5/ports/sysdeps/arm/eabi/fesetround.c 2005-10-11 01:29:32.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/eabi/fesetround.c 2008-04-02 13:57:35.000000000 +1000 -@@ -45,6 +45,24 @@ - default: - return 1; - } - } -+ else if (GLRO (dl_hwcap) & HWCAP_ARM_CRUNCH) -+ { -+ fpu_control_t temp; -+ -+ switch (round) -+ { -+ case FE_CRUNCH_TONEAREST: -+ case FE_CRUNCH_UPWARD: -+ case FE_CRUNCH_DOWNWARD: -+ case FE_CRUNCH_TOWARDZERO: -+ _FPU_CRUNCH_GETCW (temp); -+ temp = (temp & ~FE_CRUNCH_UPWARD) | round; -+ _FPU_CRUNCH_SETCW (temp); -+ return 0; -+ default: -+ return 1; -+ } -+ } - else if (round == FE_TONEAREST) - /* This is the only supported rounding mode for soft-fp. */ -diff -urN glibc-2.5/ports/sysdeps/arm/eabi/fpu_control.h glibc-2.5/ports/sysdeps/arm/eabi/fpu_control.h ---- glibc-2.5/ports/sysdeps/arm/eabi/fpu_control.h 2005-10-11 01:29:32.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/eabi/fpu_control.h 2008-04-02 13:43:05.000000000 +1000 -@@ -45,6 +45,86 @@ - #define _FPU_SETCW(cw) \ - __asm__ __volatile__ ("mcr p10, 7, %0, cr1, cr0, 0" : : "r" (cw)) - -+/* CRUNCH SECTION */ -+ -+/* DSPSC register: (from EP9312 User's Guide) -+ * -+ * bits 31..29 - DAID -+ * bits 28..26 - HVID -+ * bits 25..24 - RSVD -+ * bit 23 - ISAT -+ * bit 22 - UI -+ * bit 21 - INT -+ * bit 20 - AEXC -+ * bits 19..18 - SAT -+ * bits 17..16 - FCC -+ * bit 15 - V -+ * bit 14 - FWDEN -+ * bit 13 - Invalid -+ * bit 12 - Denorm -+ * bits 11..10 - RM -+ * bits 9..5 - IXE, UFE, OFE, RSVD, IOE -+ * bits 4..0 - IX, UF, OF, RSVD, IO -+ */ -+ -+/* masking of interrupts */ -+#define _FPU_CRUNCH_MASK_IM (1 << 5) /* invalid operation */ -+#define _FPU_CRUNCH_MASK_ZM 0 /* divide by zero */ -+#define _FPU_CRUNCH_MASK_OM (1 << 7) /* overflow */ -+#define _FPU_CRUNCH_MASK_UM (1 << 8) /* underflow */ -+#define _FPU_CRUNCH_MASK_PM (1 << 9) /* inexact */ -+#define _FPU_CRUNCH_MASK_DM 0 /* denormalized operation */ -+ -+/* Some bits in the FPSCR are not yet defined. They must be preserved when -+ modifying the contents. */ -+#define _FPU_CRUNCH_RESERVED 0x03000042 -+#define _FPU_CRUNCH_DEFAULT 0x00b00000 -+/* Default + exceptions enabled. */ -+#define _FPU_CRUNCH_IEEE (_FPU_CRUNCH_DEFAULT | 0x000003a0) -+ -+ -+/* Macros for accessing the hardware control word. */ -+/* cfmvr64l %1, mvdx0 */ -+/* cfmvr64h %2, mvdx0 */ -+/* cfmv32sc mvdx0, dspsc */ -+/* cfmvr64l %0, mvdx0 */ -+/* cfmv64lr mvdx0, %1 */ -+/* cfmv64hr mvdx0, %2 */ -+#define _FPU_CRUNCH_GETCW(cw) ({ \ -+ register int __t1, __t2; \ -+ \ -+ __asm__ volatile ( \ -+ "mrc p5, 0, %1, cr0, cr0, 0\n\t" \ -+ "mrc p5, 0, %2, cr0, cr0, 1\n\t" \ -+ "cdp p4, 0, cr0, cr0, cr0, 7\n\t" \ -+ "mrc p5, 0, %0, cr0, cr0, 0\n\t" \ -+ "mcr p5, 0, %1, cr0, cr0, 0\n\t" \ -+ "mcr p5, 0, %2, cr0, cr0, 1" \ -+ : "=r" (cw), "=r" (__t1), "=r" (__t2) \ -+ ); \ -+}) -+ -+/* cfmvr64l %1, mvdx0 */ -+/* cfmvr64h %2, mvdx0 */ -+/* cfmv64lr mvdx0, %0 */ -+/* cfmvsc32 dspsc, mvdx0 */ -+/* cfmv64lr mvdx0, %1 */ -+/* cfmv64hr mvdx0, %2 */ -+#define _FPU_CRUNCH_SETCW(cw) ({ \ -+ register int __t1, __t2; \ -+ \ -+ __asm__ volatile ( \ -+ "mrc p5, 0, %0, cr0, cr0, 0\n\t" \ -+ "mrc p5, 0, %1, cr0, cr0, 1\n\t" \ -+ "mcr p5, 0, %2, cr0, cr0, 0\n\t" \ -+ "cdp p4, 1, cr0, cr0, cr0, 7\n\t" \ -+ "mcr p5, 0, %0, cr0, cr0, 0\n\t" \ -+ "mcr p5, 0, %1, cr0, cr0, 1\n\t" \ -+ : "=r" (__t1), "=r" (__t2) : "r" (cw) \ -+ ); \ -+}) -+ -+ - /* Default control word set at startup. */ - extern fpu_control_t __fpu_control; - -diff -urN glibc-2.5/ports/sysdeps/arm/eabi/fraiseexcpt.c glibc-2.5/ports/sysdeps/arm/eabi/fraiseexcpt.c ---- glibc-2.5/ports/sysdeps/arm/eabi/fraiseexcpt.c 2005-10-11 01:29:32.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/eabi/fraiseexcpt.c 2008-04-07 16:48:09.000000000 +1000 -@@ -103,6 +103,12 @@ - return 0; - } - -+ if (GLRO (dl_hwcap) & HWCAP_ARM_CRUNCH) -+ { -+ /* Unsupported, for now. */ -+ return 1; -+ } -+ - /* Unsupported, so fail. */ - return 1; - } -diff -urN glibc-2.5/ports/sysdeps/arm/eabi/fsetexcptflg.c glibc-2.5/ports/sysdeps/arm/eabi/fsetexcptflg.c ---- glibc-2.5/ports/sysdeps/arm/eabi/fsetexcptflg.c 2005-10-11 01:29:32.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/eabi/fsetexcptflg.c 2008-04-02 13:49:34.000000000 +1000 -@@ -47,6 +47,24 @@ - return 0; - } - -+ if (GLRO (dl_hwcap) & HWCAP_ARM_CRUNCH) -+ { -+ fexcept_t temp; -+ -+ /* Get the current environment. */ -+ _FPU_CRUNCH_GETCW (temp); -+ -+ /* Set the desired exception mask. */ -+ temp &= ~((excepts & FE_CRUNCH_ALL_EXCEPT) << FE_CRUNCH_EXCEPT_SHIFT); -+ temp |= (*flagp & excepts & FE_CRUNCH_ALL_EXCEPT) << FE_CRUNCH_EXCEPT_SHIFT; -+ -+ /* Save state back to the FPU. */ -+ _FPU_CRUNCH_SETCW (temp); -+ -+ /* Success. */ -+ return 0; -+ } -+ - /* Unsupported, so fail. */ - return 1; - } -diff -urN glibc-2.5/ports/sysdeps/arm/eabi/ftestexcept.c glibc-2.5/ports/sysdeps/arm/eabi/ftestexcept.c ---- glibc-2.5/ports/sysdeps/arm/eabi/ftestexcept.c 2005-10-11 01:29:32.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/eabi/ftestexcept.c 2008-04-02 13:50:10.000000000 +1000 -@@ -38,6 +38,16 @@ - return temp & excepts & FE_ALL_EXCEPT; - } - -+ if (GLRO (dl_hwcap) & HWCAP_ARM_CRUNCH) -+ { -+ fexcept_t temp; -+ -+ /* Get current exceptions. */ -+ _FPU_CRUNCH_GETCW(temp); -+ -+ return temp & excepts & FE_CRUNCH_ALL_EXCEPT; -+ } -+ - /* Unsupported, return 0. */ - return 0; - } -diff -urN glibc-2.5/ports/sysdeps/arm/eabi/setfpucw.c glibc-2.5/ports/sysdeps/arm/eabi/setfpucw.c ---- glibc-2.5/ports/sysdeps/arm/eabi/setfpucw.c 2005-10-11 01:29:32.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/eabi/setfpucw.c 2008-04-02 13:51:28.000000000 +1000 -@@ -43,5 +43,20 @@ - _FPU_SETCW (cw); - } - -+ if (GLRO (dl_hwcap) & HWCAP_ARM_CRUNCH) -+ { -+ fpu_control_t cw; -+ -+ /* Fetch the current control word. */ -+ _FPU_CRUNCH_GETCW (cw); -+ -+ /* Preserve the reserved bits, and set the rest as the user -+ specified (or the default, if the user gave zero). */ -+ cw &= _FPU_CRUNCH_RESERVED; -+ cw |= set & ~_FPU_CRUNCH_RESERVED; -+ -+ _FPU_CRUNCH_SETCW (cw); -+ } -+ - /* Do nothing if a VFP unit isn't present. */ - } diff --git a/recipes/glibc/glibc-2.4/glibc-crunch-endian-bigword-littlebyte.patch b/recipes/glibc/glibc-2.4/glibc-crunch-endian-bigword-littlebyte.patch deleted file mode 100644 index e181e97..0000000 --- a/recipes/glibc/glibc-2.4/glibc-crunch-endian-bigword-littlebyte.patch +++ /dev/null @@ -1,40 +0,0 @@ -diff -urN glibc-2.5/ports/sysdeps/arm/bits/endian.h glibc-2.5/ports/sysdeps/arm/bits/endian.h ---- glibc-2.5/ports/sysdeps/arm/bits/endian.h 2005-06-13 20:11:47.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/bits/endian.h 2007-05-18 08:41:52.000000000 +1000 -@@ -15,5 +15,9 @@ - #ifdef __VFP_FP__ - #define __FLOAT_WORD_ORDER __BYTE_ORDER - #else -+#ifdef __MAVERICK__ -+#define __FLOAT_WORD_ORDER __BIG_ENDIAN -+#else - #define __FLOAT_WORD_ORDER __BIG_ENDIAN - #endif -+#endif -diff -urN glibc-2.5/ports/sysdeps/arm/gccframe.h glibc-2.5/ports/sysdeps/arm/gccframe.h ---- glibc-2.5/ports/sysdeps/arm/gccframe.h 2001-11-16 11:07:20.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/gccframe.h 2007-05-18 08:53:38.000000000 +1000 -@@ -17,6 +17,10 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -+#ifdef __MAVERICK__ -+#define FIRST_PSEUDO_REGISTER 43 -+#else - #define FIRST_PSEUDO_REGISTER 27 -+#endif - - #include <sysdeps/generic/gccframe.h> -diff -urN glibc-2.5/ports/sysdeps/arm/gmp-mparam.h glibc-2.5/ports/sysdeps/arm/gmp-mparam.h ---- glibc-2.5/ports/sysdeps/arm/gmp-mparam.h 2005-06-13 20:11:47.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/gmp-mparam.h 2007-05-18 08:54:21.000000000 +1000 -@@ -29,6 +29,9 @@ - #if defined(__ARMEB__) - # define IEEE_DOUBLE_MIXED_ENDIAN 0 - # define IEEE_DOUBLE_BIG_ENDIAN 1 -+#elif defined(__MAVERICK__) -+#define IEEE_DOUBLE_MIXED_ENDIAN 0 -+#define IEEE_DOUBLE_BIG_ENDIAN 1 - #elif defined(__VFP_FP__) - # define IEEE_DOUBLE_MIXED_ENDIAN 0 - # define IEEE_DOUBLE_BIG_ENDIAN 0 diff --git a/recipes/glibc/glibc-2.4/glibc-crunch-endian-littleword-littlebyte.patch b/recipes/glibc/glibc-2.4/glibc-crunch-endian-littleword-littlebyte.patch deleted file mode 100644 index e8559d4..0000000 --- a/recipes/glibc/glibc-2.4/glibc-crunch-endian-littleword-littlebyte.patch +++ /dev/null @@ -1,40 +0,0 @@ -diff -urN glibc-2.5/ports/sysdeps/arm/bits/endian.h glibc-2.5/ports/sysdeps/arm/bits/endian.h ---- glibc-2.5/ports/sysdeps/arm/bits/endian.h 2005-06-13 20:11:47.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/bits/endian.h 2007-05-18 08:41:52.000000000 +1000 -@@ -15,5 +15,9 @@ - #ifdef __VFP_FP__ - #define __FLOAT_WORD_ORDER __BYTE_ORDER - #else -+#ifdef __MAVERICK__ -+#define __FLOAT_WORD_ORDER __LITTLE_ENDIAN -+#else - #define __FLOAT_WORD_ORDER __BIG_ENDIAN - #endif -+#endif -diff -urN glibc-2.5/ports/sysdeps/arm/gccframe.h glibc-2.5/ports/sysdeps/arm/gccframe.h ---- glibc-2.5/ports/sysdeps/arm/gccframe.h 2001-11-16 11:07:20.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/gccframe.h 2007-05-18 08:53:38.000000000 +1000 -@@ -17,6 +17,10 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -+#ifdef __MAVERICK__ -+#define FIRST_PSEUDO_REGISTER 43 -+#else - #define FIRST_PSEUDO_REGISTER 27 -+#endif - - #include <sysdeps/generic/gccframe.h> -diff -urN glibc-2.5/ports/sysdeps/arm/gmp-mparam.h glibc-2.5/ports/sysdeps/arm/gmp-mparam.h ---- glibc-2.5/ports/sysdeps/arm/gmp-mparam.h 2005-06-13 20:11:47.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/gmp-mparam.h 2007-05-18 08:54:21.000000000 +1000 -@@ -29,6 +29,9 @@ - #if defined(__ARMEB__) - # define IEEE_DOUBLE_MIXED_ENDIAN 0 - # define IEEE_DOUBLE_BIG_ENDIAN 1 -+#elif defined(__MAVERICK__) -+#define IEEE_DOUBLE_MIXED_ENDIAN 0 -+#define IEEE_DOUBLE_BIG_ENDIAN 0 - #elif defined(__VFP_FP__) - # define IEEE_DOUBLE_MIXED_ENDIAN 0 - # define IEEE_DOUBLE_BIG_ENDIAN 0 diff --git a/recipes/glibc/glibc-2.4/glibc-crunch-oabi.patch b/recipes/glibc/glibc-2.4/glibc-crunch-oabi.patch deleted file mode 100644 index 964abb4..0000000 --- a/recipes/glibc/glibc-2.4/glibc-crunch-oabi.patch +++ /dev/null @@ -1,310 +0,0 @@ -diff -urN glibc-2.5/ports/sysdeps/arm/fpu/bits/fenv.h glibc-2.5/ports/sysdeps/arm/fpu/bits/fenv.h ---- glibc-2.5/ports/sysdeps/arm/fpu/bits/fenv.h 2001-07-06 14:55:48.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/fpu/bits/fenv.h 2007-05-18 08:44:33.000000000 +1000 -@@ -20,6 +20,45 @@ - # error "Never use <bits/fenv.h> directly; include <fenv.h> instead." - #endif - -+#if defined(__MAVERICK__) -+ -+/* Define bits representing exceptions in the FPU status word. */ -+enum -+ { -+ FE_INVALID = 1, -+#define FE_INVALID FE_INVALID -+ FE_OVERFLOW = 4, -+#define FE_OVERFLOW FE_OVERFLOW -+ FE_UNDERFLOW = 8, -+#define FE_UNDERFLOW FE_UNDERFLOW -+ FE_INEXACT = 16, -+#define FE_INEXACT FE_INEXACT -+ }; -+ -+/* Amount to shift by to convert an exception to a mask bit. */ -+#define FE_EXCEPT_SHIFT 5 -+ -+/* All supported exceptions. */ -+#define FE_ALL_EXCEPT \ -+ (FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT) -+ -+/* IEEE rounding modes. */ -+enum -+ { -+ FE_TONEAREST = 0, -+#define FE_TONEAREST FE_TONEAREST -+ FE_TOWARDZERO = 0x400, -+#define FE_TOWARDZERO FE_TOWARDZERO -+ FE_DOWNWARD = 0x800, -+#define FE_DOWNWARD FE_DOWNWARD -+ FE_UPWARD = 0xc00, -+#define FE_UPWARD FE_UPWARD -+ }; -+ -+#define FE_ROUND_MASK (FE_UPWARD) -+ -+#else /* FPA */ -+ - /* Define bits representing exceptions in the FPU status word. */ - enum - { -@@ -31,6 +70,7 @@ - #define FE_OVERFLOW FE_OVERFLOW - FE_UNDERFLOW = 8, - #define FE_UNDERFLOW FE_UNDERFLOW -+ - }; - - /* Amount to shift by to convert an exception to a mask bit. */ -@@ -44,6 +84,8 @@ - modes exist, but you have to encode them in the actual instruction. */ - #define FE_TONEAREST 0 - -+#endif /* FPA */ -+ - /* Type representing exception flags. */ - typedef unsigned long int fexcept_t; - -diff -urN glibc-2.5/ports/sysdeps/arm/fpu/bits/setjmp.h glibc-2.5/ports/sysdeps/arm/fpu/bits/setjmp.h ---- glibc-2.5/ports/sysdeps/arm/fpu/bits/setjmp.h 2006-01-10 19:22:16.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/fpu/bits/setjmp.h 2007-05-18 08:45:22.000000000 +1000 -@@ -28,7 +28,11 @@ - #ifndef _ASM - /* Jump buffer contains v1-v6, sl, fp, sp and pc. Other registers are not - saved. */ -+#ifdef __MAVERICK__ -+typedef int __jmp_buf[34]; -+#else - typedef int __jmp_buf[22]; - #endif -+#endif - - #endif -diff -urN glibc-2.5/ports/sysdeps/arm/fpu/fegetround.c glibc-2.5/ports/sysdeps/arm/fpu/fegetround.c ---- glibc-2.5/ports/sysdeps/arm/fpu/fegetround.c 2001-07-06 14:55:48.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/fpu/fegetround.c 2007-05-18 08:47:52.000000000 +1000 -@@ -18,9 +18,21 @@ - 02111-1307 USA. */ - - #include <fenv.h> -+#include <fpu_control.h> - - int - fegetround (void) - { -+#if defined(__MAVERICK__) -+ -+ unsigned long temp; -+ -+ _FPU_GETCW (temp); -+ return temp & FE_ROUND_MASK; -+ -+#else /* FPA */ -+ - return FE_TONEAREST; /* Easy. :-) */ -+ -+#endif - } -diff -urN glibc-2.5/ports/sysdeps/arm/fpu/fesetround.c glibc-2.5/ports/sysdeps/arm/fpu/fesetround.c ---- glibc-2.5/ports/sysdeps/arm/fpu/fesetround.c 2005-10-11 01:29:32.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/fpu/fesetround.c 2007-05-18 08:48:32.000000000 +1000 -@@ -20,10 +20,26 @@ - #include <fenv.h> -+#include <fpu_control.h> - - int - fesetround (int round) - { -+#if defined(__MAVERICK__) -+ unsigned long temp; -+ -+ if (round & ~FE_ROUND_MASK) -+ return 1; -+ -+ _FPU_GETCW (temp); -+ temp = (temp & ~FE_ROUND_MASK) | round; -+ _FPU_SETCW (temp); -+ return 0; -+ -+#else /* FPA */ -+ - /* We only support FE_TONEAREST, so there is no need for any work. */ - return (round == FE_TONEAREST)?0:1; -+ -+#endif - } - - libm_hidden_def (fesetround) -diff -urN glibc-2.5/ports/sysdeps/arm/fpu/fpu_control.h glibc-2.5/ports/sysdeps/arm/fpu/fpu_control.h ---- glibc-2.5/ports/sysdeps/arm/fpu/fpu_control.h 2001-07-06 14:55:48.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/fpu/fpu_control.h 2007-05-18 08:50:28.000000000 +1000 -@@ -20,6 +20,81 @@ - #ifndef _FPU_CONTROL_H - #define _FPU_CONTROL_H - -+#if defined(__MAVERICK__) -+ -+/* DSPSC register: (from EP9312 User's Guide) -+ * -+ * bits 31..29 - DAID -+ * bits 28..26 - HVID -+ * bits 25..24 - RSVD -+ * bit 23 - ISAT -+ * bit 22 - UI -+ * bit 21 - INT -+ * bit 20 - AEXC -+ * bits 19..18 - SAT -+ * bits 17..16 - FCC -+ * bit 15 - V -+ * bit 14 - FWDEN -+ * bit 13 - Invalid -+ * bit 12 - Denorm -+ * bits 11..10 - RM -+ * bits 9..5 - IXE, UFE, OFE, RSVD, IOE -+ * bits 4..0 - IX, UF, OF, RSVD, IO -+ */ -+ -+/* masking of interrupts */ -+#define _FPU_MASK_IM (1 << 5) /* invalid operation */ -+#define _FPU_MASK_ZM 0 /* divide by zero */ -+#define _FPU_MASK_OM (1 << 7) /* overflow */ -+#define _FPU_MASK_UM (1 << 8) /* underflow */ -+#define _FPU_MASK_PM (1 << 9) /* inexact */ -+#define _FPU_MASK_DM 0 /* denormalized operation */ -+ -+#define _FPU_RESERVED 0xfffff000 /* These bits are reserved. */ -+ -+#define _FPU_DEFAULT 0x00b00000 /* Default value. */ -+#define _FPU_IEEE 0x00b003a0 /* Default + exceptions enabled. */ -+ -+/* Type of the control word. */ -+typedef unsigned int fpu_control_t; -+ -+/* Macros for accessing the hardware control word. */ -+#define _FPU_GETCW(cw) ({ \ -+ register int __t1, __t2; \ -+ \ -+ __asm__ volatile ( \ -+ "cfmvr64l %1, mvdx0\n\t" \ -+ "cfmvr64h %2, mvdx0\n\t" \ -+ "cfmv32sc mvdx0, dspsc\n\t" \ -+ "cfmvr64l %0, mvdx0\n\t" \ -+ "cfmv64lr mvdx0, %1\n\t" \ -+ "cfmv64hr mvdx0, %2" \ -+ : "=r" (cw), "=r" (__t1), "=r" (__t2) \ -+ ); \ -+}) -+ -+#define _FPU_SETCW(cw) ({ \ -+ register int __t0, __t1, __t2; \ -+ \ -+ __asm__ volatile ( \ -+ "cfmvr64l %1, mvdx0\n\t" \ -+ "cfmvr64h %2, mvdx0\n\t" \ -+ "cfmv64lr mvdx0, %0\n\t" \ -+ "cfmvsc32 dspsc, mvdx0\n\t" \ -+ "cfmv64lr mvdx0, %1\n\t" \ -+ "cfmv64hr mvdx0, %2" \ -+ : "=r" (__t0), "=r" (__t1), "=r" (__t2) \ -+ : "0" (cw) \ -+ ); \ -+}) -+ -+/* Default control word set at startup. */ -+extern fpu_control_t __fpu_control; -+ -+#else /* FPA */ -+ -+ -+ - /* We have a slight terminology confusion here. On the ARM, the register - * we're interested in is actually the FPU status word - the FPU control - * word is something different (which is implementation-defined and only -@@ -99,4 +174,6 @@ - /* Default control word set at startup. */ - extern fpu_control_t __fpu_control; - -+#endif /* FPA */ -+ - #endif /* _FPU_CONTROL_H */ -diff -urN glibc-2.5/ports/sysdeps/arm/fpu/__longjmp.S glibc-2.5/ports/sysdeps/arm/fpu/__longjmp.S ---- glibc-2.5/ports/sysdeps/arm/fpu/__longjmp.S 2001-07-06 14:55:48.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/fpu/__longjmp.S 2007-05-18 08:51:36.000000000 +1000 -@@ -30,7 +30,33 @@ - movs r0, r1 /* get the return value in place */ - moveq r0, #1 /* can't let setjmp() return zero! */ - -+#ifdef __MAVERICK__ -+ cfldrd mvd4, [ip], #8 -+ nop -+ cfldrd mvd5, [ip], #8 -+ nop -+ cfldrd mvd6, [ip], #8 -+ nop -+ cfldrd mvd7, [ip], #8 -+ nop -+ cfldrd mvd8, [ip], #8 -+ nop -+ cfldrd mvd9, [ip], #8 -+ nop -+ cfldrd mvd10, [ip], #8 -+ nop -+ cfldrd mvd11, [ip], #8 -+ nop -+ cfldrd mvd12, [ip], #8 -+ nop -+ cfldrd mvd13, [ip], #8 -+ nop -+ cfldrd mvd14, [ip], #8 -+ nop -+ cfldrd mvd15, [ip], #8 -+#else - lfmfd f4, 4, [ip] ! /* load the floating point regs */ -+#endif - - LOADREGS(ia, ip, {v1-v6, sl, fp, sp, pc}) - END (__longjmp) -diff -urN glibc-2.5/ports/sysdeps/arm/fpu/setjmp.S glibc-2.5/ports/sysdeps/arm/fpu/setjmp.S ---- glibc-2.5/ports/sysdeps/arm/fpu/setjmp.S 2001-07-06 14:55:48.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/fpu/setjmp.S 2007-05-18 08:53:00.000000000 +1000 -@@ -24,11 +24,41 @@ - - ENTRY (__sigsetjmp) - /* Save registers */ -+#ifdef __MAVERICK__ -+ cfstrd mvd4, [r0], #8 -+ nop -+ cfstrd mvd5, [r0], #8 -+ nop -+ cfstrd mvd6, [r0], #8 -+ nop -+ cfstrd mvd7, [r0], #8 -+ nop -+ cfstrd mvd8, [r0], #8 -+ nop -+ cfstrd mvd9, [r0], #8 -+ nop -+ cfstrd mvd10, [r0], #8 -+ nop -+ cfstrd mvd11, [r0], #8 -+ nop -+ cfstrd mvd12, [r0], #8 -+ nop -+ cfstrd mvd13, [r0], #8 -+ nop -+ cfstrd mvd14, [r0], #8 -+ nop -+ cfstrd mvd15, [r0], #8 -+#else - sfmea f4, 4, [r0]! -+#endif - stmia r0, {v1-v6, sl, fp, sp, lr} - - /* Restore pointer to jmp_buf */ -+#ifdef __MAVERICK__ -+ sub r0, r0, #96 -+#else - sub r0, r0, #48 -+#endif - - /* Make a tail call to __sigjmp_save; it takes the same args. */ - B PLTJMP(C_SYMBOL_NAME(__sigjmp_save)) diff --git a/recipes/glibc/glibc-2.4/glibc-crunch-oabi2.patch b/recipes/glibc/glibc-2.4/glibc-crunch-oabi2.patch deleted file mode 100644 index fe5a050..0000000 --- a/recipes/glibc/glibc-2.4/glibc-crunch-oabi2.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- glibc-2.5/ports/sysdeps/arm/sysdep.h 2007-07-02 13:05:53.000000000 +1000 -+++ glibc-2.5/ports/sysdeps/arm/sysdep.h 2007-07-02 13:06:26.000000000 +1000 -@@ -51,6 +51,7 @@ - - #endif - -+#if 0 // ndef __MAVERICK__ - /* APCS-32 doesn't preserve the condition codes across function call. */ - #ifdef __APCS_32__ - #define LOADREGS(cond, base, reglist...)\ -@@ -74,6 +75,7 @@ - #define DO_RET(_reg) \ - movs pc, _reg - #endif -+#endif - - /* Define an entry point visible from C. */ - #define ENTRY(name) \ diff --git a/recipes/glibc/glibc-2.4/glibc-use-isystem-include-fixed.patch b/recipes/glibc/glibc-2.4/glibc-use-isystem-include-fixed.patch deleted file mode 100644 index d9ed12a..0000000 --- a/recipes/glibc/glibc-2.4/glibc-use-isystem-include-fixed.patch +++ /dev/null @@ -1,46 +0,0 @@ -http://sourceware.org/ml/libc-alpha/2007-03/msg00017.html - -GCC trunk now has multiple internal headers directories, one -containing the self-contained GCC-provided headers and one containing -the <limits.h> (not self-contained but including libc's <limits.h> or -a fixed version thereof) and the fixed headers; more such directories -may be added in future. - -When glibc uses -nostdinc, it needs to use -isystem options for all -these internal directories. This patch teaches it about the -include-fixed directory (and is harmless with old GCC versions without -that directory). - -2007-03-18 Joseph Myers <joseph@codesourcery.com> - - * configure.in: Also pass -isystem option for GCC's include-fixed - directory. - * configure: Regenerate. - - -Index: glibc-2.6.1/configure -=================================================================== ---- glibc-2.6.1.orig/configure 2008-09-12 16:38:06.000000000 -0700 -+++ glibc-2.6.1/configure 2008-09-12 16:39:22.000000000 -0700 -@@ -4563,7 +4563,7 @@ - # thing on a system that doesn't need fixincludes. (Not presently a problem.) - if test -n "$sysheaders"; then - ccheaders=`$CC -print-file-name=include` -- SYSINCLUDES="-nostdinc -isystem $ccheaders \ -+ SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $ccheaders-fixed \ - -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`" - if test -n "$CXX"; then - cxxversion=`$CXX -dumpversion 2>&5` && -Index: glibc-2.6.1/configure.in -=================================================================== ---- glibc-2.6.1.orig/configure.in 2008-09-12 16:38:26.000000000 -0700 -+++ glibc-2.6.1/configure.in 2008-09-12 16:39:01.000000000 -0700 -@@ -912,7 +912,7 @@ - # thing on a system that doesn't need fixincludes. (Not presently a problem.) - if test -n "$sysheaders"; then - ccheaders=`$CC -print-file-name=include` -- SYSINCLUDES="-nostdinc -isystem $ccheaders \ -+ SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $ccheaders-fixed \ - -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`" - if test -n "$CXX"; then - cxxversion=`$CXX -dumpversion 2>&AS_MESSAGE_LOG_FD` && diff --git a/recipes/glibc/glibc-2.4/ldd-unbash.patch b/recipes/glibc/glibc-2.4/ldd-unbash.patch deleted file mode 100644 index 2fb8854..0000000 --- a/recipes/glibc/glibc-2.4/ldd-unbash.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- glibc-2.5/elf/ldd.bash.in.org 2006-04-30 16:06:20.000000000 +0000 -+++ glibc-2.5/elf/ldd.bash.in 2007-03-30 19:18:57.000000000 +0000 -@@ -110,7 +110,7 @@ - # environments where the executed program might not have permissions - # to write to the console/tty. But only bash 3.x supports the pipefail - # option, and we don't bother to handle the case for older bash versions. --if set -o pipefail 2> /dev/null; then -+if false; then - try_trace() { - eval $add_env '"$@"' | cat - } diff --git a/recipes/glibc/glibc-2.4/ldsocache-varrun.patch b/recipes/glibc/glibc-2.4/ldsocache-varrun.patch deleted file mode 100644 index 9994d4f..0000000 --- a/recipes/glibc/glibc-2.4/ldsocache-varrun.patch +++ /dev/null @@ -1,18 +0,0 @@ -This patch moves ld.so.cache from /etc to /var/run. This is for devices -where /etc is JFFS2 or CRAMFS but /var is a ramdisk. - -# -# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher -# - ---- libc/sysdeps/generic/dl-cache.h~ldsocache-varrun -+++ libc/sysdeps/generic/dl-cache.h -@@ -29,7 +29,7 @@ - #endif - - #ifndef LD_SO_CACHE --# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache" -+# define LD_SO_CACHE "/var/run/ld.so.cache" - #endif - - #ifndef add_system_dir diff --git a/recipes/glibc/glibc-2.4/no-z-defs.patch b/recipes/glibc/glibc-2.4/no-z-defs.patch deleted file mode 100644 index 48c6a41..0000000 --- a/recipes/glibc/glibc-2.4/no-z-defs.patch +++ /dev/null @@ -1,9 +0,0 @@ -Create a configparms file which disabled no-z-defs. -This is required to build a working glibs for sh4, -without there will be a lot linker errors during the build. - -diff -duNr libc.orig/configparms libc/configparms ---- libc.orig/configparms 1970-01-01 10:00:00.000000000 +1000 -+++ libc/configparms 2006-02-23 14:08:18.000000000 +1100 -@@ -0,0 +1 @@ -+no-z-defs=yes diff --git a/recipes/glibc/glibc-2.4/nptl-crosscompile.patch b/recipes/glibc/glibc-2.4/nptl-crosscompile.patch deleted file mode 100644 index 18a46ad..0000000 --- a/recipes/glibc/glibc-2.4/nptl-crosscompile.patch +++ /dev/null @@ -1,26 +0,0 @@ ---- glibc-2.4/nptl/sysdeps/pthread/configure.in.ark 2006-03-12 00:41:40.000000000 +0100 -+++ glibc-2.4/nptl/sysdeps/pthread/configure.in 2006-03-12 00:44:08.000000000 +0100 -@@ -45,5 +45,6 @@ - AC_MSG_ERROR([the compiler must support C cleanup handling]) - fi - else -- AC_MSG_ERROR(forced unwind support is required) -+ AC_MSG_WARN([forced unwind support is required, can't be verified while crosscompiling]) -+ AC_DEFINE(HAVE_FORCED_UNWIND) - fi ---- glibc-2.4/nptl/sysdeps/pthread/configure.ark 2006-03-12 00:42:47.000000000 +0100 -+++ glibc-2.4/nptl/sysdeps/pthread/configure 2006-03-12 00:44:08.000000000 +0100 -@@ -153,7 +153,10 @@ - { (exit 1); exit 1; }; } - fi - else -- { { echo "$as_me:$LINENO: error: forced unwind support is required" >&5 --echo "$as_me: error: forced unwind support is required" >&2;} -- { (exit 1); exit 1; }; } -+ { echo "$as_me:$LINENO: WARNING: forced unwind support is required, can't be verified while crosscompiling" >&5 -+echo "$as_me: WARNING: forced unwind support is required, can't be verified while crosscompiling" >&2;} -+ cat >>confdefs.h <<\_ACEOF -+#define HAVE_FORCED_UNWIND 1 -+_ACEOF -+ - fi diff --git a/recipes/glibc/glibc-2.4/powerpc-sqrt-hack.diff b/recipes/glibc/glibc-2.4/powerpc-sqrt-hack.diff deleted file mode 100644 index 1046efb..0000000 --- a/recipes/glibc/glibc-2.4/powerpc-sqrt-hack.diff +++ /dev/null @@ -1,25 +0,0 @@ -diff -Nurd ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c ---- ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c 2006-04-14 07:44:30.000000000 +0200 -+++ glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c 2006-12-08 12:53:32.202227000 +0100 -@@ -25,6 +25,9 @@ - #include <sysdep.h> - #include <ldsodefs.h> - -+#define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0) -+ -+ - static const double almost_half = 0.5000000000000001; /* 0.5 + 2^-53 */ - static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 }; - static const ieee_float_shape_type a_inf = {.word = 0x7f800000 }; -diff -Nurd ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c ---- ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c 2006-04-14 07:44:30.000000000 +0200 -+++ glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c 2006-12-08 12:53:36.992227000 +0100 -@@ -25,6 +25,8 @@ - #include <sysdep.h> - #include <ldsodefs.h> - -+#define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0) -+ - static const float almost_half = 0.50000006; /* 0.5 + 2^-24 */ - static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 }; - static const ieee_float_shape_type a_inf = {.word = 0x7f800000 }; diff --git a/recipes/glibc/glibc-2.4/zecke-sane-readelf.patch b/recipes/glibc/glibc-2.4/zecke-sane-readelf.patch deleted file mode 100644 index 2bc8797..0000000 --- a/recipes/glibc/glibc-2.4/zecke-sane-readelf.patch +++ /dev/null @@ -1,243 +0,0 @@ -upstream: http://sources.redhat.com/bugzilla/show_bug.cgi?id=3004 -status: WONTFIX -comment: Use OEs version of the readelf version. There might be no -host system version (e.g. on OSX) or it is not multiarch. - -Index: glibc-2.6.1/configure -=================================================================== ---- glibc-2.6.1.orig/configure 2007-07-31 06:46:12.000000000 -0700 -+++ glibc-2.6.1/configure 2008-09-12 16:38:06.000000000 -0700 -@@ -5478,6 +5478,96 @@ - fi - fi - -+### AC_CHECK_TARGET_TOOL([READELF],[readelf],[readelf],[$PATH]) -+### XXXX copy and pasted -+# Check for readelf -+# Extract the first word of "$target_alias-readelf", so it can be a program name with args. -+set dummy $target_alias-readelf; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_READELF+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$READELF"; then -+ ac_cv_prog_READELF="$READELF" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_READELF="$target_alias-readelf" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+READELF=$ac_cv_prog_READELF -+if test -n "$READELF"; then -+ { echo "$as_me:$LINENO: result: $READELF" >&5 -+echo "${ECHO_T}$READELF" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+if test -z "$ac_cv_prog_READELF"; then -+ if test "$build" = "$target"; then -+ ac_ct_READELF=$READELF -+ # Extract the first word of "readelf", so it can be a program name with args. -+set dummy readelf; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_ac_ct_READELF+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_READELF"; then -+ ac_cv_prog_ac_ct_READELF="$ac_ct_READELF" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_READELF="readelf" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+ test -z "$ac_cv_prog_ac_ct_READELF" && ac_cv_prog_ac_ct_READELF="readelf" -+fi -+fi -+ac_ct_READELF=$ac_cv_prog_ac_ct_READELF -+if test -n "$ac_ct_READELF"; then -+ { echo "$as_me:$LINENO: result: $ac_ct_READELF" >&5 -+echo "${ECHO_T}$ac_ct_READELF" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ READELF=ac_ct_READELF -+ else -+ READELF="readelf" -+ fi -+else -+ READELF="$ac_cv_prog_READELF" -+fi -+ -+### XXXX copy and pasted -+ - echo "$as_me:$LINENO: checking for .preinit_array/.init_array/.fini_array support" >&5 - echo $ECHO_N "checking for .preinit_array/.init_array/.fini_array support... $ECHO_C" >&6 - if test "${libc_cv_initfini_array+set}" = set; then -@@ -5497,7 +5587,7 @@ - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } - then -- if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then -+ if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then - libc_cv_initfini_array=yes - else - libc_cv_initfini_array=no -@@ -5797,7 +5887,7 @@ - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } - then -- if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then -+ if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then - libc_cv_z_combreloc=yes - else - libc_cv_z_combreloc=no -Index: glibc-2.6.1/configure.in -=================================================================== ---- glibc-2.6.1.orig/configure.in 2007-03-20 05:11:23.000000000 -0700 -+++ glibc-2.6.1/configure.in 2008-09-12 16:38:26.000000000 -0700 -@@ -1347,6 +1347,96 @@ - fi - fi - -+### AC_CHECK_TARGET_TOOL([READELF],[readelf],[readelf],[$PATH]) -+### XXXX copy and pasted -+# Check for readelf -+# Extract the first word of "$target_alias-readelf", so it can be a program name with args. -+set dummy $target_alias-readelf; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_READELF+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$READELF"; then -+ ac_cv_prog_READELF="$READELF" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_READELF="$target_alias-readelf" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+READELF=$ac_cv_prog_READELF -+if test -n "$READELF"; then -+ { echo "$as_me:$LINENO: result: $READELF" >&5 -+echo "${ECHO_T}$READELF" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+if test -z "$ac_cv_prog_READELF"; then -+ if test "$build" = "$target"; then -+ ac_ct_READELF=$READELF -+ # Extract the first word of "readelf", so it can be a program name with args. -+set dummy readelf; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_ac_ct_READELF+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_READELF"; then -+ ac_cv_prog_ac_ct_READELF="$ac_ct_READELF" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_READELF="readelf" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+ test -z "$ac_cv_prog_ac_ct_READELF" && ac_cv_prog_ac_ct_READELF="readelf" -+fi -+fi -+ac_ct_READELF=$ac_cv_prog_ac_ct_READELF -+if test -n "$ac_ct_READELF"; then -+ { echo "$as_me:$LINENO: result: $ac_ct_READELF" >&5 -+echo "${ECHO_T}$ac_ct_READELF" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ READELF=ac_ct_READELF -+ else -+ READELF="readelf" -+ fi -+else -+ READELF="$ac_cv_prog_READELF" -+fi -+ -+### XXXX copy and pasted -+ - AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support, - libc_cv_initfini_array, [dnl - cat > conftest.c <<EOF -@@ -1358,7 +1448,7 @@ - if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c - -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD]) - then -- if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then -+ if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then - libc_cv_initfini_array=yes - else - libc_cv_initfini_array=no -@@ -1543,7 +1633,7 @@ - dnl introducing new options this is not easily doable. Instead use a tool - dnl which always is cross-platform: readelf. To detect whether -z combreloc - dnl look for a section named .rel.dyn. -- if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then -+ if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then - libc_cv_z_combreloc=yes - else - libc_cv_z_combreloc=no diff --git a/recipes/glibc/glibc-2.7/all_glibc-i586-chk.patch b/recipes/glibc/glibc-2.7/all_glibc-i586-chk.patch deleted file mode 100644 index 9362bca..0000000 --- a/recipes/glibc/glibc-2.7/all_glibc-i586-chk.patch +++ /dev/null @@ -1,33 +0,0 @@ -http://bugs.gentoo.org/199479 - -2007-09-13 H.J. Lu <hongjiu.lu@intel.com> - - * sysdeps/i386/i586/memcpy_chk.S: New file. - * sysdeps/i386/i586/mempcpy_chk.S: Likewise. - * sysdeps/i386/i586/memset_chk.S: Likewise. - -Index: glibc/sysdeps/i386/i586/memcpy_chk.S -=================================================================== -RCS file: sysdeps/i386/i586/memcpy_chk.S -diff -N sysdeps/i386/i586/memcpy_chk.S ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ glibc/sysdeps/i386/i586/memcpy_chk.S 13 Nov 2007 01:56:18 -0000 1.1 -@@ -0,0 +1 @@ -+#include <sysdeps/i386/i686/memcpy_chk.S> -Index: glibc/sysdeps/i386/i586/mempcpy_chk.S -=================================================================== -RCS file: sysdeps/i386/i586/mempcpy_chk.S -diff -N sysdeps/i386/i586/mempcpy_chk.S ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ glibc/sysdeps/i386/i586/mempcpy_chk.S 13 Nov 2007 01:56:18 -0000 1.1 -@@ -0,0 +1 @@ -+#include <sysdeps/i386/i686/mempcpy_chk.S> -Index: glibc/sysdeps/i386/i586/memset_chk.S -=================================================================== -RCS file: sysdeps/i386/i586/memset_chk.S -diff -N sysdeps/i386/i586/memset_chk.S ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ glibc/sysdeps/i386/i586/memset_chk.S 13 Nov 2007 01:56:18 -0000 1.1 -@@ -0,0 +1 @@ -+#include <sysdeps/i386/i686/memset_chk.S> - diff --git a/recipes/glibc/glibc-initial_2.3.2+cvs20040726.bb b/recipes/glibc/glibc-initial_2.3.2+cvs20040726.bb deleted file mode 100644 index c7dde23..0000000 --- a/recipes/glibc/glibc-initial_2.3.2+cvs20040726.bb +++ /dev/null @@ -1,4 +0,0 @@ -require glibc_${PV}.bb -require glibc-initial.inc - -DEFAULT_PREFERENCE_sh3 = "-99" diff --git a/recipes/glibc/glibc-initial_2.3.6.bb b/recipes/glibc/glibc-initial_2.3.6.bb deleted file mode 100644 index fa7836a..0000000 --- a/recipes/glibc/glibc-initial_2.3.6.bb +++ /dev/null @@ -1,2 +0,0 @@ -require glibc_${PV}.bb -require glibc-initial.inc diff --git a/recipes/glibc/glibc-initial_2.4.bb b/recipes/glibc/glibc-initial_2.4.bb deleted file mode 100644 index fa7836a..0000000 --- a/recipes/glibc/glibc-initial_2.4.bb +++ /dev/null @@ -1,2 +0,0 @@ -require glibc_${PV}.bb -require glibc-initial.inc diff --git a/recipes/glibc/glibc-initial_2.7.bb b/recipes/glibc/glibc-initial_2.7.bb deleted file mode 100644 index d662970..0000000 --- a/recipes/glibc/glibc-initial_2.7.bb +++ /dev/null @@ -1,6 +0,0 @@ -require glibc_${PV}.bb -require glibc-initial.inc - -do_configure_prepend () { - unset CFLAGS -} diff --git a/recipes/glibc/glibc_2.3.2+cvs20040726.bb b/recipes/glibc/glibc_2.3.2+cvs20040726.bb deleted file mode 100644 index 712ad3f..0000000 --- a/recipes/glibc/glibc_2.3.2+cvs20040726.bb +++ /dev/null @@ -1,78 +0,0 @@ -require glibc.inc - -DEFAULT_PREFERENCE_sh3 = "-99" - -FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-cvs" -PR = "${INC_PR}.0" - -GLIBC_ADDONS ?= "linuxthreads" - -# file://noinfo.patch -# file://ldconfig.patch;striplevel=0 -SRC_URI = "cvs://anoncvs@sources.redhat.com/cvs/glibc;module=libc;date=${@bb.data.getVar('PV', d, 1)[9:]} \ - file://arm-ioperm.patch;striplevel=0 \ - file://makeconfig.patch;striplevel=0 \ - file://ldd.patch;striplevel=0 \ - file://fhs-linux-paths.patch \ - file://arm-no-hwcap.patch;striplevel=0 \ - file://arm-memcpy.patch;striplevel=0 \ - file://arm-longlong.patch;striplevel=0 \ - file://arm-machine-gmon.patch;striplevel=0 \ - file://glibc-fp-byteorder.patch \ - \ - file://etc/ld.so.conf \ - file://generate-supported.mk" - -# seems to fail on tls platforms -SRC_URI_append_arm = " file://dyn-ldconfig.patch;striplevel=0" - -SRC_URI_append_openmn = " file://ldsocache-varrun.patch" - -S = "${WORKDIR}/libc" -B = "${WORKDIR}/build-${TARGET_SYS}" - -RDEPENDS_${PN}-dev = "linux-libc-headers-dev" -RPROVIDES_${PN}-dev += "libc-dev virtual-libc-dev" - -EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \ - --without-cvs --disable-profile --disable-debug --without-gd \ - --enable-clocale=gnu \ - --enable-add-ons=${GLIBC_ADDONS} \ - --with-headers=${STAGING_INCDIR} \ - ${GLIBC_EXTRA_OECONF}" - -do_configure () { -# override this function to avoid the autoconf/automake/aclocal/autoheader -# calls for now -# don't pass CPPFLAGS into configure, since it upsets the kernel-headers -# version check and doesn't really help with anything - if [ -z "`which rpcgen`" ]; then - echo "rpcgen not found. Install glibc-devel." - exit 1 - fi - (cd ${S} && gnu-configize) || die "failure in running gnu-configize" - CPPFLAGS="" oe_runconf -} - -rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \ - yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \ - rusers.x spray.x nfs_prot.x rquota.x key_prot.x" - -do_compile () { - # this really is arm specific - touch ${S}/sysdeps/arm/framestate.c - # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging - unset LDFLAGS - base_do_compile - ( - cd ${S}/sunrpc/rpcsvc - for r in ${rpcsvc}; do - h=`echo $r|sed -e's,\.x$,.h,'` - rpcgen -h $r -o $h || oewarn "unable to generate header for $r" - done - ) -} - -require glibc-stage.inc - -require glibc-package.inc diff --git a/recipes/glibc/glibc_2.3.3+cvs20041128.bb b/recipes/glibc/glibc_2.3.3+cvs20041128.bb deleted file mode 100644 index b1e5509..0000000 --- a/recipes/glibc/glibc_2.3.3+cvs20041128.bb +++ /dev/null @@ -1,100 +0,0 @@ -require glibc.inc - -DEFAULT_PREFERENCE_sh3 = "-99" - -FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-cvs" -PR = "${INC_PR}.0" - -GLIBC_ADDONS ?= "linuxthreads" - -DEFAULT_PREFERENCE = "-1" -DEFAULT_PREFERENCE_i686 = "0" -DEFAULT_PREFERENCE_sh3 = "0" -DEFAULT_PREFERENCE_sh4 = "0" - -# -# For now, we will skip building of a gcc package if it is a uclibc one -# and our build is not a uclibc one, and we skip a glibc one if our build -# is a uclibc build. -# -# See the note in gcc/gcc_3.4.0.oe -# - -python __anonymous () { - import bb, re - uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None) - if uc_os: - raise bb.parse.SkipPackage("incompatible with target %s" % - bb.data.getVar('TARGET_OS', d, 1)) -} - -# file://noinfo.patch -# file://ldconfig.patch;striplevel=0 -SRC_URI = "cvs://anoncvs@sources.redhat.com/cvs/glibc;module=libc;date=${@bb.data.getVar('PV', d, 1)[9:]} \ - file://arm-ioperm.patch;striplevel=0 \ - file://ldd.patch;striplevel=0 \ - file://fhs-linux-paths.patch \ - file://arm-no-hwcap.patch;striplevel=0 \ - file://arm-memcpy.patch;striplevel=0 \ - file://arm-longlong.patch;striplevel=0 \ - file://arm-machine-gmon.patch;striplevel=0 \ - \ - file://etc/ld.so.conf \ - file://generate-supported.mk" - -# seems to fail on tls platforms -SRC_URI_append_arm = " file://dyn-ldconfig-20041128.patch" - -SRC_URI_append_openmn = " file://ldsocache-varrun.patch" - -S = "${WORKDIR}/libc" -B = "${WORKDIR}/build-${TARGET_SYS}" - -RDEPENDS_${PN}-dev = "linux-libc-headers-dev" -RPROVIDES_${PN}-dev += "libc-dev virtual-libc-dev" - -EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \ - --without-cvs --disable-profile --disable-debug --without-gd \ - --enable-clocale=gnu \ - --enable-add-ons=${GLIBC_ADDONS} \ - --with-headers=${STAGING_INCDIR} \ - --without-selinux \ - ${GLIBC_EXTRA_OECONF}" - -EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}" - -do_configure () { -# override this function to avoid the autoconf/automake/aclocal/autoheader -# calls for now -# don't pass CPPFLAGS into configure, since it upsets the kernel-headers -# version check and doesn't really help with anything - if [ -z "`which rpcgen`" ]; then - echo "rpcgen not found. Install glibc-devel." - exit 1 - fi - (cd ${S} && gnu-configize) || die "failure in running gnu-configize" - CPPFLAGS="" oe_runconf -} - -rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \ - yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \ - rusers.x spray.x nfs_prot.x rquota.x key_prot.x" - -do_compile () { - # this really is arm specific - touch ${S}/sysdeps/arm/framestate.c - # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging - unset LDFLAGS - base_do_compile - ( - cd ${S}/sunrpc/rpcsvc - for r in ${rpcsvc}; do - h=`echo $r|sed -e's,\.x$,.h,'` - rpcgen -h $r -o $h || oewarn "unable to generate header for $r" - done - ) -} - -require glibc-stage.inc - -require glibc-package.inc diff --git a/recipes/glibc/glibc_2.3.3+cvs20050221.bb b/recipes/glibc/glibc_2.3.3+cvs20050221.bb deleted file mode 100644 index 3164a57..0000000 --- a/recipes/glibc/glibc_2.3.3+cvs20050221.bb +++ /dev/null @@ -1,83 +0,0 @@ -require glibc.inc - -DEFAULT_PREFERENCE_sh3 = "-99" - -FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-cvs" -PR = "${INC_PR}.0" - -GLIBC_ADDONS ?= "linuxthreads" - -DEFAULT_PREFERENCE = "-1" -DEFAULT_PREFERENCE_i686 = "0" -DEFAULT_PREFERENCE_sh3 = "0" -DEFAULT_PREFERENCE_sh4 = "0" - -# file://noinfo.patch -# file://ldconfig.patch;striplevel=0 -SRC_URI = "cvs://anoncvs@sources.redhat.com/cvs/glibc;module=libc;date=${@bb.data.getVar('PV', d, 1)[9:]} \ - file://arm-ioperm.patch;striplevel=0 \ - file://fhs-linux-paths.patch \ - file://arm-no-hwcap.patch;striplevel=0 \ - file://arm-memcpy.patch;striplevel=0 \ - file://arm-longlong.patch;striplevel=0 \ - file://arm-machine-gmon.patch;striplevel=0 \ - file://trampoline.patch;striplevel=0 \ - file://dl-cache-libcmp.patch \ - \ - file://etc/ld.so.conf \ - file://generate-supported.mk" - -# seems to fail on tls platforms -SRC_URI_append_arm = " file://dyn-ldconfig-20041128.patch" - -SRC_URI_append_openmn = " file://ldsocache-varrun.patch" - -S = "${WORKDIR}/libc" -B = "${WORKDIR}/build-${TARGET_SYS}" - -RDEPENDS_${PN}-dev = "linux-libc-headers-dev" -RPROVIDES_${PN}-dev += "libc-dev virtual-libc-dev" - -EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \ - --without-cvs --disable-profile --disable-debug --without-gd \ - --enable-clocale=gnu \ - --enable-add-ons=${GLIBC_ADDONS} \ - --with-headers=${STAGING_INCDIR} \ - --without-selinux \ - ${GLIBC_EXTRA_OECONF}" - -do_configure () { -# override this function to avoid the autoconf/automake/aclocal/autoheader -# calls for now -# don't pass CPPFLAGS into configure, since it upsets the kernel-headers -# version check and doesn't really help with anything - if [ -z "`which rpcgen`" ]; then - echo "rpcgen not found. Install glibc-devel." - exit 1 - fi - (cd ${S} && gnu-configize) || die "failure in running gnu-configize" - CPPFLAGS="" oe_runconf -} - -rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \ - yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \ - rusers.x spray.x nfs_prot.x rquota.x key_prot.x" - -do_compile () { - # this really is arm specific - touch ${S}/sysdeps/arm/framestate.c - # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging - unset LDFLAGS - base_do_compile - ( - cd ${S}/sunrpc/rpcsvc - for r in ${rpcsvc}; do - h=`echo $r|sed -e's,\.x$,.h,'` - rpcgen -h $r -o $h || oewarn "unable to generate header for $r" - done - ) -} - -require glibc-stage.inc - -require glibc-package.inc diff --git a/recipes/glibc/glibc_2.3.3+cvs20050420.bb b/recipes/glibc/glibc_2.3.3+cvs20050420.bb deleted file mode 100644 index 1169d42..0000000 --- a/recipes/glibc/glibc_2.3.3+cvs20050420.bb +++ /dev/null @@ -1,84 +0,0 @@ -require glibc.inc - -DEFAULT_PREFERENCE_i586 = "0" - -DEFAULT_PREFERENCE_sh3 = "-99" - -FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-cvs" -PR = "${INC_PR}.0" - -GLIBC_ADDONS ?= "linuxthreads" - -DEFAULT_PREFERENCE = "-1" - -# file://noinfo.patch -# file://ldconfig.patch;striplevel=0 -SRC_URI = "cvs://anoncvs@sources.redhat.com/cvs/glibc;module=libc;date=${@bb.data.getVar('PV', d, 1)[9:]} \ - file://arm-ioperm.patch;striplevel=0 \ - file://fhs-linux-paths.patch \ - file://arm-no-hwcap.patch;striplevel=0 \ - file://arm-memcpy.patch;striplevel=0 \ - file://arm-longlong.patch;striplevel=0 \ - file://arm-machine-gmon.patch;striplevel=0 \ - file://trampoline.patch;striplevel=0 \ - file://eabi-patch-1;apply=yes \ - file://eabi-patch-2;apply=yes \ - file://eabi-patch-3;apply=yes \ - file://5090_all_stubs-rule-fix.patch \ - file://etc/ld.so.conf \ - file://generate-supported.mk" - -# seems to fail on tls platforms -SRC_URI_append_arm = " file://dyn-ldconfig-20041128.patch" - -SRC_URI_append_openmn = " file://ldsocache-varrun.patch" - -S = "${WORKDIR}/libc" -B = "${WORKDIR}/build-${TARGET_SYS}" - -RDEPENDS_${PN}-dev = "linux-libc-headers-dev" -RPROVIDES_${PN}-dev += "libc-dev virtual-libc-dev" - -EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \ - --without-cvs --disable-profile --disable-debug --without-gd \ - --enable-clocale=gnu \ - --enable-add-ons=${GLIBC_ADDONS} \ - --with-headers=${STAGING_INCDIR} \ - --without-selinux \ - ${GLIBC_EXTRA_OECONF}" - -do_configure () { -# override this function to avoid the autoconf/automake/aclocal/autoheader -# calls for now -# don't pass CPPFLAGS into configure, since it upsets the kernel-headers -# version check and doesn't really help with anything - if [ -z "`which rpcgen`" ]; then - echo "rpcgen not found. Install glibc-devel." - exit 1 - fi - (cd ${S} && gnu-configize) || die "failure in running gnu-configize" - CPPFLAGS="" oe_runconf -} - -rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \ - yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \ - rusers.x spray.x nfs_prot.x rquota.x key_prot.x" - -do_compile () { - # this really is arm specific - touch ${S}/sysdeps/arm/framestate.c - # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging - unset LDFLAGS - base_do_compile - ( - cd ${S}/sunrpc/rpcsvc - for r in ${rpcsvc}; do - h=`echo $r|sed -e's,\.x$,.h,'` - rpcgen -h $r -o $h || oewarn "unable to generate header for $r" - done - ) -} - -require glibc-stage.inc - -require glibc-package.inc diff --git a/recipes/glibc/glibc_2.3.6.bb b/recipes/glibc/glibc_2.3.6.bb deleted file mode 100644 index a2b2953..0000000 --- a/recipes/glibc/glibc_2.3.6.bb +++ /dev/null @@ -1,118 +0,0 @@ -require glibc.inc - -PR = "${INC_PR}.0" - -GLIBC_ADDONS ?= "linuxthreads" - -# ${CROSSTOOL_PATCH_URL}glibc-2.3.5-cygwin.patch - -CROSSTOOL_PATCH_URL = "http://www.kegel.com/crosstool/crosstool-0.43/patches/glibc-2.3.6/" -SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2;name=archive \ - ftp://ftp.gnu.org/pub/gnu/glibc/glibc-linuxthreads-${PV}.tar.bz2;name=linuxthreads \ - ${CROSSTOOL_PATCH_URL}glibc-2.3.5-sh-lowlevellock.patch;name=crosspatch1 \ - ${CROSSTOOL_PATCH_URL}glibc-2.3.5-sh-memset.patch;name=crosspatch2 \ - ${CROSSTOOL_PATCH_URL}glibc-2.3.6-allow-gcc-4.0-arm.patch;name=crosspatch3 \ - ${CROSSTOOL_PATCH_URL}glibc-2.3.6-allow-gcc-4.0-elf.patch;name=crosspatch4 \ - ${CROSSTOOL_PATCH_URL}glibc-2.3.6-configure-apple-as.patch;name=crosspatch5 \ - ${CROSSTOOL_PATCH_URL}glibc-2.3.6-fix-pr631.patch;name=crosspatch6 \ - ${CROSSTOOL_PATCH_URL}glibc-fp-byteorder.patch;name=crosspatch7 \ - ${CROSSTOOL_PATCH_URL}glibc-mips-bootstrap-gcc-header-install.patch;name=crosspatch8 \ - ${CROSSTOOL_PATCH_URL}arm-ctl_bus_isa.patch;name=crosspatch9 \ - ${CROSSTOOL_PATCH_URL}make-install-lib-all.patch;name=crosspatch10 \ - ${CROSSTOOL_PATCH_URL}maybe/glibc-2.3.6-allow-gcc-4.0-powerpc32.patch;name=crosspatch11 \ - file://glibc-2.3.6-bind-already-defined-on-powerpc.patch \ - file://glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch \ - file://glibc-2.3.6-linuxthreads-allow-gcc-4.1-powerpc32-initfini.s.patch \ - file://late-install-loop-break.patch \ - file://glibc-arm-socket-weakalias.patch \ - file://glibc-2.3.6-linuxthreads-pthread-raise.patch \ - file://glibc-cross_sunrpc.patch \ - file://etc/ld.so.conf \ - file://generate-supported.mk" - -S = "${WORKDIR}/glibc-${PV}" -B = "${WORKDIR}/build-${TARGET_SYS}" - -RDEPENDS_${PN}-dev = "linux-libc-headers-dev" -RPROVIDES_${PN}-dev += "libc-dev virtual-libc-dev" - -EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \ - --without-cvs --disable-profile --disable-debug --without-gd \ - --enable-clocale=gnu \ - --enable-add-ons=${GLIBC_ADDONS} \ - --with-headers=${STAGING_INCDIR} \ - ${GLIBC_EXTRA_OECONF}" - -EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}" - -glibc_do_unpack () { - mv "${WORKDIR}/linuxthreads" "${WORKDIR}/linuxthreads_db" "${S}/" -} - -python do_unpack () { - bb.build.exec_func('base_do_unpack', d) - bb.build.exec_func('glibc_do_unpack', d) -} - -do_configure () { -# override this function to avoid the autoconf/automake/aclocal/autoheader -# calls for now -# don't pass CPPFLAGS into configure, since it upsets the kernel-headers -# version check and doesn't really help with anything - if [ -z "`which rpcgen`" ]; then - echo "rpcgen not found. Install glibc-devel." - exit 1 - fi - (cd ${S} && gnu-configize) || die "failure in running gnu-configize" - CPPFLAGS="" libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes oe_runconf -} - -rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \ - yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \ - rusers.x spray.x nfs_prot.x rquota.x key_prot.x" - -do_compile () { - # this really is arm specific - touch ${S}/sysdeps/arm/framestate.c - # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging - unset LDFLAGS - base_do_compile - ( - cd ${S}/sunrpc/rpcsvc - for r in ${rpcsvc}; do - h=`echo $r|sed -e's,\.x$,.h,'` - rpcgen -h $r -o $h || oewarn "unable to generate header for $r" - done - ) -} - -require glibc-stage.inc - -require glibc-package.inc - -SRC_URI[archive.md5sum] = "bfdce99f82d6dbcb64b7f11c05d6bc96" -SRC_URI[archive.sha256sum] = "e73ff5eddea95d09238b41d3c9c4d9ccddcf99fcc93d04956599c91c704f4a8e" -SRC_URI[linuxthreads.md5sum] = "d4eeda37472666a15cc1f407e9c987a9" -SRC_URI[linuxthreads.sha256sum] = "6c3bc4a247d1e5308fb14f81956802f09095d3683219859fcad5795aa3aea638" -SRC_URI[crosspatch1.md5sum] = "bb8da838930b8c6d06bafdbaad5dab1a" -SRC_URI[crosspatch1.sha256sum] = "43cb2a382f30d189f0cacb71cbfa0b153a45a49e5fd73330893d24731fca4eb6" -SRC_URI[crosspatch2.md5sum] = "1acb1e6c444ad45bb1390e7800dc4d7c" -SRC_URI[crosspatch2.sha256sum] = "b301918536819d00b824e134fbdeba3cf4048da060e70e75c8ea56fd92689ad9" -SRC_URI[crosspatch3.md5sum] = "709cb2283068145e557912b0907341a3" -SRC_URI[crosspatch3.sha256sum] = "9dba644da5db0ec5104698706854dcd4ae8d6a10e9419eb049e3d6fcad9d81fe" -SRC_URI[crosspatch4.md5sum] = "79ddbf5e5721442c5753344e4ecdda1c" -SRC_URI[crosspatch4.sha256sum] = "c1ab6923fa4388407cd1dcb2ed441f25c2b9fa18cacf6aad549c31fed3c08f8c" -SRC_URI[crosspatch5.md5sum] = "c4d41a712bf40dfb852e7bc18e1b6c52" -SRC_URI[crosspatch5.sha256sum] = "81611592bf30b4c1fa0c58d170d74c970dbc145127e16cb90d648663e2970cbf" -SRC_URI[crosspatch6.md5sum] = "336ce18c81fe8d7c17d2f7a0dbd62766" -SRC_URI[crosspatch6.sha256sum] = "9487f1d4c05b9c94d94f8bcb34541ef04b77cfc0526dbb0b344c67f2ab388c5b" -SRC_URI[crosspatch7.md5sum] = "c89aac92d100761a767b9d5619fe582f" -SRC_URI[crosspatch7.sha256sum] = "3033d84fd9a62d20a8cb0d42645d7cd5a28d2d108afcb4cc2d89db3dc1e328df" -SRC_URI[crosspatch8.md5sum] = "dc31c9e01df62cba9457af7e9b9c968e" -SRC_URI[crosspatch8.sha256sum] = "a69760ed0ea54b66c31d58cb32c7b23185a6b1d16f38dab8380ec4f2183b122d" -SRC_URI[crosspatch9.md5sum] = "88fa901c9a85633ab62365b0ee9df3b1" -SRC_URI[crosspatch9.sha256sum] = "6651eb15c9f6dabf21af4067b723cb29a87827f66570bfab74fdc00d80cab129" -SRC_URI[crosspatch10.md5sum] = "b94605c3b7ba90bc01648ca6e5cc1aaf" -SRC_URI[crosspatch10.sha256sum] = "16ff3ea972065925338da1a1f37322dc4d8774f6d34d2dde2ce85121c08c99e0" -SRC_URI[crosspatch11.md5sum] = "b89be3e1653ec6df317e30a10a0933b5" -SRC_URI[crosspatch11.sha256sum] = "0b5dd58a5240440ab6dcc0e2278bb99ebb20d0b558578652da59007bf27ae2fe" diff --git a/recipes/glibc/glibc_2.4.bb b/recipes/glibc/glibc_2.4.bb deleted file mode 100644 index cba0fb3..0000000 --- a/recipes/glibc/glibc_2.4.bb +++ /dev/null @@ -1,156 +0,0 @@ -require glibc.inc - -PR = "${INC_PR}.0" - -#add the hosts that are confirmed to be working to COMPATIBLE_HOSTi -COMPATIBLE_HOST = '(i.86.*-linux|sh.*-linux)' -DEFAULT_PREFERENCE_arm = "-1" - -# the -isystem in bitbake.conf screws up glibc do_stage -BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}" -TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${layout_includedir}" - - -FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-2.4" - -GLIBC_ADDONS ?= "ports,nptl,libidn" - -GLIBC_BROKEN_LOCALES = "sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN" - -# -# For now, we will skip building of a gcc package if it is a uclibc one -# and our build is not a uclibc one, and we skip a glibc one if our build -# is a uclibc build. -# -# See the note in gcc/gcc_3.4.0.oe -# - -python __anonymous () { - import bb, re - uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None) - if uc_os: - raise bb.parse.SkipPackage("incompatible with target %s" % - bb.data.getVar('TARGET_OS', d, 1)) -} - -RDEPENDS_${PN}-dev = "linux-libc-headers-dev" -RPROVIDES_${PN}-dev += "libc-dev virtual-libc-dev" - -# file://noinfo.patch -# file://ldconfig.patch;striplevel=0 -# file://arm-machine-gmon.patch;striplevel=0 \ -# \ -# file://arm-ioperm.patch;striplevel=0 \ -# file://ldd.patch;striplevel=0 \ -SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-2.4.tar.bz2;name=archive \ - ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-2.4.tar.bz2;name=ports \ - ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-2.4.tar.bz2;name=libidn \ - file://arm-memcpy.patch \ - file://arm-longlong.patch \ - file://fhs-linux-paths.patch \ - file://dl-cache-libcmp.patch \ - file://ldsocache-varrun.patch \ - file://nptl-crosscompile.patch \ - file://glibc-2.4-compile.patch \ - file://glibc-2.4-openat-3.patch \ - file://fixup-aeabi-syscalls.patch \ - file://zecke-sane-readelf.patch \ - file://arm_eabi_ipc_fix.patch \ - file://generic-bits_select.h \ - file://generic-bits_types.h \ - file://generic-bits_typesizes.h \ - file://generic-bits_time.h \ - file://etc/ld.so.conf \ - file://generate-supported.mk" - - -# Build fails on sh3 and sh4 without additional patches -SRC_URI_append_sh3 = " file://no-z-defs.patch" -SRC_URI_append_sh4 = " file://no-z-defs.patch" - -S = "${WORKDIR}/glibc-2.4" -B = "${WORKDIR}/build-${TARGET_SYS}" - -EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \ - --without-cvs --disable-profile --disable-debug --without-gd \ - --enable-clocale=gnu \ - --enable-add-ons=${GLIBC_ADDONS} \ - --with-headers=${STAGING_INCDIR} \ - --without-selinux \ - ${GLIBC_EXTRA_OECONF}" - -EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}" - -do_munge() { - # Integrate ports and libidn into tree - mv ${WORKDIR}/glibc-ports-${PV} ${S}/ports - mv ${WORKDIR}/glibc-libidn-${PV} ${S}/libidn - - # Ports isn't really working... Fix it - # Some of this is rather dirty, but it seems to be the only - # quick way to get this cruft to compile - rm -rf ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads - ln -s nptl ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads - cp ${S}/sysdeps/unix/sysv/linux/i386/bits/wchar.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/ - cp ${S}/sysdeps/wordsize-32/bits/wordsize.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/ - cp ${WORKDIR}/generic-bits_select.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/select.h - cp ${WORKDIR}/generic-bits_types.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/types.h - cp ${WORKDIR}/generic-bits_typesizes.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/typesizes.h - cp ${WORKDIR}/generic-bits_time.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/time.h - # Copy in generic stuff for not yet implemented headers - for i in ${S}/bits/*.h; do - F=`basename $i` - [ "$F" = "local_lim.h" ] && continue - [ "$F" = "errno.h" ] && continue - test -e ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/$F || test -e ${S}/ports/sysdeps/arm/bits/$F || test -e ${S}/sysdeps/unix/sysv/linux/bits/$F || test -e ${S}/sysdeps/ieee754/bits/$F || cp $i ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/ - done - # This is harmful; we need to get the one from nptl/sysdeps/pthreads - rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/libc-lock.h - # Obsoleted by sysdeps/arm/{fpu,eabi}/bits/fenv.h - rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/fenv.h - # Obsoleted by sysdeps/gnu/bits/utmp.h - rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/utmp.h -} - -addtask munge before do_patch after do_unpack - -do_configure () { -# override this function to avoid the autoconf/automake/aclocal/autoheader -# calls for now -# don't pass CPPFLAGS into configure, since it upsets the kernel-headers -# version check and doesn't really help with anything - if [ -z "`which rpcgen`" ]; then - echo "rpcgen not found. Install glibc-devel." - exit 1 - fi - (cd ${S} && gnu-configize) || die "failure in running gnu-configize" - CPPFLAGS="" oe_runconf -} - -rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \ - yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \ - rusers.x spray.x nfs_prot.x rquota.x key_prot.x" - -do_compile () { - # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging - unset LDFLAGS - base_do_compile - ( - cd ${S}/sunrpc/rpcsvc - for r in ${rpcsvc}; do - h=`echo $r|sed -e's,\.x$,.h,'` - rpcgen -h $r -o $h || oewarn "unable to generate header for $r" - done - ) -} - -require glibc-stage.inc - -require glibc-package.inc - -SRC_URI[archive.md5sum] = "7e9a88dcd41fbc53801dbe5bdacaf245" -SRC_URI[archive.sha256sum] = "27aaaaa78b4ab5da76bb29385dc9be087ba7b855a9102eaaa78ce3ec5e2e7fcd" -SRC_URI[ports.md5sum] = "7bb1b35654e94994925e66676acabd4e" -SRC_URI[ports.sha256sum] = "2fbbcaad8a9f8560485c398a9066959fe2713c8bc7e653ec476fb56fed21d19a" -SRC_URI[libidn.md5sum] = "e2d892b40d654c523ab26a26b7dd86a1" -SRC_URI[libidn.sha256sum] = "2f29ec2b2b2f75f787a1eed8fdea20aff212dc3bad97651ca376914c49181977" diff --git a/recipes/glibc/glibc_2.7.bb b/recipes/glibc/glibc_2.7.bb deleted file mode 100644 index 2f2fc36..0000000 --- a/recipes/glibc/glibc_2.7.bb +++ /dev/null @@ -1,169 +0,0 @@ -require glibc.inc - -ARM_INSTRUCTION_SET = "arm" - -PACKAGES_DYNAMIC = "libc6*" -RPROVIDES_${PN}-dev = "libc6-dev virtual-libc-dev" - -PR = "${INC_PR}.1" - -# the -isystem in bitbake.conf screws up glibc do_stage -BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}" -TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${layout_includedir}" - - -FILESPATHPKG =. "glibc-2.4:" - -GLIBC_ADDONS ?= "ports,nptl,libidn" - -GLIBC_BROKEN_LOCALES = " _ER _ET so_ET yn_ER sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN" - -# -# For now, we will skip building of a gcc package if it is a uclibc one -# and our build is not a uclibc one, and we skip a glibc one if our build -# is a uclibc build. -# -# See the note in gcc/gcc_3.4.0.oe -# - -python __anonymous () { - import bb, re - uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None) - if uc_os: - raise bb.parse.SkipPackage("incompatible with target %s" % - bb.data.getVar('TARGET_OS', d, 1)) -} - -RDEPENDS_${PN}-dev = "linux-libc-headers-dev" - -# file://noinfo.patch -# file://ldconfig.patch;striplevel=0 -# file://arm-machine-gmon.patch;striplevel=0 \ -# \ -# file://arm-ioperm.patch;striplevel=0 \ -# file://ldd.patch;striplevel=0 \ -SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2;name=archive \ - ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-${PV}.tar.bz2;name=ports \ - ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-${PV}.tar.bz2;name=libidn \ - file://arm-memcpy.patch \ - file://arm-longlong.patch \ - file://fhs-linux-paths.patch \ - file://dl-cache-libcmp.patch \ - file://ldsocache-varrun.patch \ - file://nptl-crosscompile.patch \ - file://glibc-check_pf.patch;striplevel=0 \ -# file://glibc-2.4-compile.patch \ -# file://glibc-2.4-openat-3.patch \ -# file://fixup-aeabi-syscalls.patch \ -# file://zecke-sane-readelf.patch \ - file://ldd-unbash.patch \ - file://glibc-arm-IO-acquire-lock-fix.diff \ - file://all_glibc-i586-chk.patch \ - file://glibc-2.6.1-use-short-for-fnstsw.patch \ - file://glibc-use-isystem-include-fixed.patch \ - file://generic-bits_select.h \ - file://generic-bits_types.h \ - file://generic-bits_typesizes.h \ - file://generic-bits_time.h \ - file://etc/ld.so.conf \ - file://generate-supported.mk \ - file://march-i686.patch;striplevel=0 \ - file://glibc-arm-no-asm-page.patch \ - " - - -# Build fails on sh3 and sh4 without additional patches -SRC_URI_append_sh3 = " file://no-z-defs.patch" -SRC_URI_append_sh4 = " file://no-z-defs.patch" - -#powerpc patches to add support for soft-float -SRC_URI_append_powerpc= " file://powerpc-sqrt-hack.diff" - -S = "${WORKDIR}/glibc-${PV}" -B = "${WORKDIR}/build-${TARGET_SYS}" - -EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \ - --without-cvs --disable-profile --disable-debug --without-gd \ - --enable-clocale=gnu \ - --enable-add-ons=${GLIBC_ADDONS} \ - --with-headers=${STAGING_INCDIR} \ - --without-selinux \ - ${GLIBC_EXTRA_OECONF}" - -EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}" - -do_munge() { - # Integrate ports and libidn into tree - mv ${WORKDIR}/glibc-ports-${PV} ${S}/ports - mv ${WORKDIR}/glibc-libidn-${PV} ${S}/libidn - - # Ports isn't really working... Fix it - # Some of this is rather dirty, but it seems to be the only - # quick way to get this cruft to compile - rm -rf ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads - ln -s nptl ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads - cp ${S}/nptl/sysdeps/pthread/bits/sigthread.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/ - cp ${S}/sysdeps/unix/sysv/linux/i386/bits/wchar.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/ - cp ${S}/sysdeps/wordsize-32/bits/wordsize.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/ - cp ${WORKDIR}/generic-bits_select.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/select.h - cp ${WORKDIR}/generic-bits_types.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/types.h - cp ${WORKDIR}/generic-bits_typesizes.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/typesizes.h - cp ${WORKDIR}/generic-bits_time.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/time.h - # Copy in generic stuff for not yet implemented headers - for i in ${S}/bits/*.h; do - F=`basename $i` - [ "$F" = "local_lim.h" ] && continue - [ "$F" = "errno.h" ] && continue - test -e ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/$F || test -e ${S}/ports/sysdeps/arm/bits/$F || test -e ${S}/sysdeps/unix/sysv/linux/bits/$F || test -e ${S}/sysdeps/ieee754/bits/$F || cp $i ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/ - done - # This is harmful; we need to get the one from nptl/sysdeps/pthreads - rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/libc-lock.h - # Obsoleted by sysdeps/arm/{fpu,eabi}/bits/fenv.h - rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/fenv.h - # Obsoleted by sysdeps/gnu/bits/utmp.h - rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/utmp.h -} - -addtask munge before do_patch after do_unpack - - -do_configure () { -# override this function to avoid the autoconf/automake/aclocal/autoheader -# calls for now -# don't pass CPPFLAGS into configure, since it upsets the kernel-headers -# version check and doesn't really help with anything - if [ -z "`which rpcgen`" ]; then - echo "rpcgen not found. Install glibc-devel." - exit 1 - fi - (cd ${S} && gnu-configize) || die "failure in running gnu-configize" - CPPFLAGS="" oe_runconf -} - -rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \ - yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \ - rusers.x spray.x nfs_prot.x rquota.x key_prot.x" - -do_compile () { - # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging - unset LDFLAGS - base_do_compile - ( - cd ${S}/sunrpc/rpcsvc - for r in ${rpcsvc}; do - h=`echo $r|sed -e's,\.x$,.h,'` - rpcgen -h $r -o $h || oewarn "unable to generate header for $r" - done - ) -} - -require glibc-stage.inc - -require glibc-package.inc - -SRC_URI[archive.md5sum] = "065c5952b439deba40083ccd67bcc8f7" -SRC_URI[archive.sha256sum] = "4224a522ac4ee0fd89eb337e7505e280dfb05e2fe1ad44339ba8874081c0451a" -SRC_URI[ports.md5sum] = "eaeb8527b8fa286c2d887157214f9998" -SRC_URI[ports.sha256sum] = "3e481996259af87c3581da23481970a27de679e3c87cfa9a5a59751cd20c7b44" -SRC_URI[libidn.md5sum] = "226809992fb1f3dc6ea23e0f26952ea4" -SRC_URI[libidn.sha256sum] = "07de78810a5320d696792b67131c4cf3d6654aee015a6b74820d66fb00799000" -- 1.6.4.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] glibc: remove old/obsolete versions 2010-07-15 20:46 ` [PATCH 3/3] glibc: remove old/obsolete versions Frans Meulenbroeks @ 2010-07-16 6:41 ` Graham Gower 0 siblings, 0 replies; 9+ messages in thread From: Graham Gower @ 2010-07-16 6:41 UTC (permalink / raw) To: openembedded-devel On 16 July 2010 06:16, Frans Meulenbroeks <fransmeulenbroeks@gmail.com> wrote: > as mentioned before on the OE ML. > removing some old versions which are not pinned by any distro > and are fairly old: > glibc-initial_2.3.2+cvs20040726.bb > glibc-initial_2.3.6.bb > glibc-initial_2.4.bb > glibc-initial_2.7.bb > glibc_2.3.2+cvs20040726.bb > glibc_2.3.3+cvs20041128.bb > glibc_2.3.3+cvs20050221.bb > glibc_2.3.3+cvs20050420.bb > glibc_2.3.6.bb > glibc_2.4.bb > glibc_2.7.bb > Yes! OE needs more of this cruft removal. Acked-by: Graham Gower <graham.gower@gmail.com> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] glibc 2.10.1: cleaned up; patches only in local dir 2010-07-15 20:46 ` [PATCH 2/3] glibc 2.10.1: " Frans Meulenbroeks 2010-07-15 20:46 ` [PATCH 3/3] glibc: remove old/obsolete versions Frans Meulenbroeks @ 2010-07-15 21:50 ` Khem Raj 2010-07-16 6:07 ` Frans Meulenbroeks 1 sibling, 1 reply; 9+ messages in thread From: Khem Raj @ 2010-07-15 21:50 UTC (permalink / raw) To: openembedded-devel On Thu, Jul 15, 2010 at 1:46 PM, Frans Meulenbroeks <fransmeulenbroeks@gmail.com> wrote: > moved all patches to glibc-2.10.1 > removed references to other dirs. > > Signed-off-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com> Please run bitbake -c configure atleast for all recipes you touched. Acked-by: Khem Raj <raj.khem@gmail.com> > --- > recipes/glibc/glibc-2.10.1/arm-longlong.patch | 58 ++ > .../arm-lowlevellock-include-tls.patch | 12 + > recipes/glibc/glibc-2.10.1/arm-memcpy.patch | 758 ++++++++++++++++++++ > .../glibc/glibc-2.10.1/armv4t-interworking.patch | 47 ++ > recipes/glibc/glibc-2.10.1/dl-cache-libcmp.patch | 10 + > recipes/glibc/glibc-2.10.1/etc/ld.so.conf | 2 + > recipes/glibc/glibc-2.10.1/fhs-linux-paths.patch | 11 + > recipes/glibc/glibc-2.10.1/generate-supported.mk | 11 + > recipes/glibc/glibc-2.10.1/generic-bits_select.h | 35 + > recipes/glibc/glibc-2.10.1/generic-bits_time.h | 75 ++ > recipes/glibc/glibc-2.10.1/generic-bits_types.h | 200 +++++ > .../glibc/glibc-2.10.1/generic-bits_typesizes.h | 66 ++ > .../glibc-arm-IO-acquire-lock-fix.diff | 13 + > recipes/glibc/glibc-2.10.1/glibc-check_pf.patch | 343 +++++++++ > recipes/glibc/glibc-2.10.1/ldd-unbash.patch | 11 + > recipes/glibc/glibc-2.10.1/ldsocache-varrun.patch | 18 + > recipes/glibc/glibc-2.10.1/march-i686.patch | 38 + > recipes/glibc/glibc-2.10.1/no-z-defs.patch | 9 + > recipes/glibc/glibc-2.10.1/nptl-crosscompile.patch | 26 + > recipes/glibc/glibc-2.10.1/nscd-init.patch | 39 + > recipes/glibc/glibc-2.10.1/powerpc-sqrt-hack.diff | 25 + > recipes/glibc/glibc_2.10.1.bb | 3 - > 22 files changed, 1807 insertions(+), 3 deletions(-) > create mode 100644 recipes/glibc/glibc-2.10.1/arm-longlong.patch > create mode 100644 recipes/glibc/glibc-2.10.1/arm-lowlevellock-include-tls.patch > create mode 100644 recipes/glibc/glibc-2.10.1/arm-memcpy.patch > create mode 100644 recipes/glibc/glibc-2.10.1/armv4t-interworking.patch > create mode 100644 recipes/glibc/glibc-2.10.1/dl-cache-libcmp.patch > create mode 100644 recipes/glibc/glibc-2.10.1/etc/ld.so.conf > create mode 100644 recipes/glibc/glibc-2.10.1/fhs-linux-paths.patch > create mode 100644 recipes/glibc/glibc-2.10.1/generate-supported.mk > create mode 100644 recipes/glibc/glibc-2.10.1/generic-bits_select.h > create mode 100644 recipes/glibc/glibc-2.10.1/generic-bits_time.h > create mode 100644 recipes/glibc/glibc-2.10.1/generic-bits_types.h > create mode 100644 recipes/glibc/glibc-2.10.1/generic-bits_typesizes.h > create mode 100644 recipes/glibc/glibc-2.10.1/glibc-arm-IO-acquire-lock-fix.diff > create mode 100644 recipes/glibc/glibc-2.10.1/glibc-check_pf.patch > create mode 100644 recipes/glibc/glibc-2.10.1/ldd-unbash.patch > create mode 100644 recipes/glibc/glibc-2.10.1/ldsocache-varrun.patch > create mode 100644 recipes/glibc/glibc-2.10.1/march-i686.patch > create mode 100644 recipes/glibc/glibc-2.10.1/no-z-defs.patch > create mode 100644 recipes/glibc/glibc-2.10.1/nptl-crosscompile.patch > create mode 100644 recipes/glibc/glibc-2.10.1/nscd-init.patch > create mode 100644 recipes/glibc/glibc-2.10.1/powerpc-sqrt-hack.diff > > diff --git a/recipes/glibc/glibc-2.10.1/arm-longlong.patch b/recipes/glibc/glibc-2.10.1/arm-longlong.patch > new file mode 100644 > index 0000000..28aca83 > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/arm-longlong.patch > @@ -0,0 +1,58 @@ > +--- glibc-2.4/stdlib/longlong.h.ark 2006-03-11 22:49:27.000000000 +0100 > ++++ glibc-2.4/stdlib/longlong.h 2006-03-11 22:55:12.000000000 +0100 > +@@ -206,6 +206,14 @@ > + "rI" ((USItype) (bh)), \ > + "r" ((USItype) (al)), \ > + "rI" ((USItype) (bl)) __CLOBBER_CC) > ++/* 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" \ > +@@ -227,7 +235,13 @@ > + : "r" ((USItype) (a)), \ > + "r" ((USItype) (b)) __CLOBBER_CC );} > + #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 > +--- glibc-2.4/ports/sysdeps/arm/mp_clz_tab.c.ark 2006-03-11 22:56:43.000000000 +0100 > ++++ glibc-2.4/ports/sysdeps/arm/mp_clz_tab.c 2006-03-11 22:58:19.000000000 +0100 > +@@ -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 <stdlib/mp_clz_tab.c> > ++#endif > diff --git a/recipes/glibc/glibc-2.10.1/arm-lowlevellock-include-tls.patch b/recipes/glibc/glibc-2.10.1/arm-lowlevellock-include-tls.patch > new file mode 100644 > index 0000000..5c8062e > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/arm-lowlevellock-include-tls.patch > @@ -0,0 +1,12 @@ > +Index: glibc-2.9/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h > +=================================================================== > +--- glibc-2.9.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h 2009-06-19 20:54:35.446686910 +0400 > ++++ glibc-2.9/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h 2009-06-19 20:54:43.774683370 +0400 > +@@ -25,6 +25,7 @@ > + #include <atomic.h> > + #include <sysdep.h> > + #include <kernel-features.h> > ++#include <tls.h> > + > + #define FUTEX_WAIT 0 > + #define FUTEX_WAKE 1 > diff --git a/recipes/glibc/glibc-2.10.1/arm-memcpy.patch b/recipes/glibc/glibc-2.10.1/arm-memcpy.patch > new file mode 100644 > index 0000000..bc2b3da > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/arm-memcpy.patch > @@ -0,0 +1,758 @@ > +--- /dev/null 2004-02-02 20:32:13.000000000 +0000 > ++++ sysdeps/arm/memmove.S 2004-03-20 18:37:23.000000000 +0000 > +@@ -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-02-02 20:32:13.000000000 +0000 > ++++ sysdeps/arm/bcopy.S 2004-03-20 18:37:48.000000000 +0000 > +@@ -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) > + > +--- /dev/null 2004-02-02 20:32:13.000000000 +0000 > ++++ sysdeps/arm/memcpy.S 2004-05-02 14:33:22.000000000 +0100 > +@@ -0,0 +1,242 @@ > ++/* > ++ * 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) > ++ > diff --git a/recipes/glibc/glibc-2.10.1/armv4t-interworking.patch b/recipes/glibc/glibc-2.10.1/armv4t-interworking.patch > new file mode 100644 > index 0000000..ce91ad6 > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/armv4t-interworking.patch > @@ -0,0 +1,47 @@ > +--- libc/ports/sysdeps/arm/memcpy.S~ 2006-10-31 17:07:54.000000000 +0000 > ++++ libc/ports/sysdeps/arm/memcpy.S 2008-10-24 11:09:34.000000000 +0100 > +@@ -130,7 +130,12 @@ > + strcsb r4, [r0], #1 > + strcsb ip, [r0] > + > ++#if defined (__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__) > ++ ldmfd sp!, {r0, r4, lr} > ++ bx lr > ++#else > + ldmfd sp!, {r0, r4, pc} > ++#endif > + > + 9: rsb ip, ip, #4 > + cmp ip, #2 > +--- libc/ports/sysdeps/arm/memmove.S~ 2006-10-31 17:07:54.000000000 +0000 > ++++ libc/ports/sysdeps/arm/memmove.S 2008-10-24 11:09:44.000000000 +0100 > +@@ -140,7 +140,12 @@ > + strneb r3, [r0, #-1]! > + strcsb r4, [r0, #-1]! > + strcsb ip, [r0, #-1] > ++#if defined (__ARM_ARCH_4T__) && defined (__THUMB_INTERWORK__) > ++ ldmfd sp!, {r0, r4, lr} > ++ bx lr > ++#else > + ldmfd sp!, {r0, r4, pc} > ++#endif > + > + 9: cmp ip, #2 > + ldrgtb r3, [r1, #-1]! > +--- libc/ports/sysdeps/unix/sysv/linux/arm/clone.S~ 2005-11-16 19:03:42.000000000 +0000 > ++++ libc/ports/sysdeps/unix/sysv/linux/arm/clone.S 2008-10-24 11:11:05.000000000 +0100 > +@@ -96,8 +96,14 @@ > + #endif > + @ pick the function arg and call address off the stack and execute > + ldr r0, [sp, #4] > ++#if defined(__ARM_ARCH_V4T__) && defined(__THUMB_INTERWORK__) > ++ ldr ip, [sp], #8 > ++ mov lr, pc > ++ bx ip > ++#else > + mov lr, pc > + ldr pc, [sp], #8 > ++#endif > + > + @ and we are done, passing the return value through r0 > + b PLTJMP(_exit) > diff --git a/recipes/glibc/glibc-2.10.1/dl-cache-libcmp.patch b/recipes/glibc/glibc-2.10.1/dl-cache-libcmp.patch > new file mode 100644 > index 0000000..2fedfa6 > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/dl-cache-libcmp.patch > @@ -0,0 +1,10 @@ > +--- glibc-2.4/elf/Versions.ark 2006-03-11 23:30:09.000000000 +0100 > ++++ glibc-2.4/elf/Versions 2006-03-11 23:31:44.000000000 +0100 > +@@ -63,5 +63,7 @@ > + _dl_debug_state; > + # Pointer protection. > + __pointer_chk_guard; > ++ # for ldconfig > ++ _dl_cache_libcmp; > + } > + } > diff --git a/recipes/glibc/glibc-2.10.1/etc/ld.so.conf b/recipes/glibc/glibc-2.10.1/etc/ld.so.conf > new file mode 100644 > index 0000000..46e06d3 > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/etc/ld.so.conf > @@ -0,0 +1,2 @@ > +/usr/local/lib > + > diff --git a/recipes/glibc/glibc-2.10.1/fhs-linux-paths.patch b/recipes/glibc/glibc-2.10.1/fhs-linux-paths.patch > new file mode 100644 > index 0000000..1f32f6d > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/fhs-linux-paths.patch > @@ -0,0 +1,11 @@ > +--- glibc-2.1.1/sysdeps/unix/sysv/linux/paths.h~ Thu May 27 13:16:33 1999 > ++++ glibc-2.1.1/sysdeps/unix/sysv/linux/paths.h Thu May 27 13:17:55 1999 > +@@ -71,7 +71,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.10.1/generate-supported.mk b/recipes/glibc/glibc-2.10.1/generate-supported.mk > new file mode 100644 > index 0000000..d2a28c2 > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/generate-supported.mk > @@ -0,0 +1,11 @@ > +#!/usr/bin/make > + > +include $(IN) > + > +all: > + rm -f $(OUT) > + touch $(OUT) > + for locale in $(SUPPORTED-LOCALES); do \ > + [ $$locale = true ] && continue; \ > + echo $$locale | sed 's,/, ,' >> $(OUT); \ > + done > diff --git a/recipes/glibc/glibc-2.10.1/generic-bits_select.h b/recipes/glibc/glibc-2.10.1/generic-bits_select.h > new file mode 100644 > index 0000000..47e7ded > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/generic-bits_select.h > @@ -0,0 +1,35 @@ > +/* Copyright (C) 1997, 1998, 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. */ > + > +#ifndef _SYS_SELECT_H > +# error "Never use <bits/select.h> directly; include <sys/select.h> instead." > +#endif > + > + > +/* We don't use `memset' because this would require a prototype and > + the array isn't too big. */ > +#define __FD_ZERO(s) \ > + do { \ > + unsigned int __i; \ > + fd_set *__arr = (s); \ > + for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \ > + __FDS_BITS (__arr)[__i] = 0; \ > + } while (0) > +#define __FD_SET(d, s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d)) > +#define __FD_CLR(d, s) (__FDS_BITS (s)[__FDELT(d)] &= ~__FDMASK(d)) > +#define __FD_ISSET(d, s) ((__FDS_BITS (s)[__FDELT(d)] & __FDMASK(d)) != 0) > diff --git a/recipes/glibc/glibc-2.10.1/generic-bits_time.h b/recipes/glibc/glibc-2.10.1/generic-bits_time.h > new file mode 100644 > index 0000000..b3184d1 > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/generic-bits_time.h > @@ -0,0 +1,75 @@ > +/* System-dependent timing definitions. Generic version. > + Copyright (C) 1996,1997,1999-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 > + 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. */ > + > +/* > + * Never include this file directly; use <time.h> instead. > + */ > + > +#ifndef __need_timeval > +# ifndef _BITS_TIME_H > +# define _BITS_TIME_H 1 > + > +/* ISO/IEC 9899:1990 7.12.1: <time.h> > + The macro `CLOCKS_PER_SEC' is the number per second of the value > + returned by the `clock' function. */ > +/* CAE XSH, Issue 4, Version 2: <time.h> > + The value of CLOCKS_PER_SEC is required to be 1 million on all > + XSI-conformant systems. */ > +# define CLOCKS_PER_SEC 1000000l > + > +# if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K > +/* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK > + presents the real value for clock ticks per second for the system. */ > +# include <bits/types.h> > +extern long int __sysconf (int); > +# define CLK_TCK ((__clock_t) __sysconf (2)) /* 2 is _SC_CLK_TCK */ > +# endif > + > +# ifdef __USE_POSIX199309 > +/* Identifier for system-wide realtime clock. */ > +# define CLOCK_REALTIME 0 > +/* Monotonic system-wide clock. */ > +# define CLOCK_MONOTONIC 1 > +/* High-resolution timer from the CPU. */ > +# define CLOCK_PROCESS_CPUTIME_ID 2 > +/* Thread-specific CPU-time clock. */ > +# define CLOCK_THREAD_CPUTIME_ID 3 > + > +/* Flag to indicate time is absolute. */ > +# define TIMER_ABSTIME 1 > +# endif > + > +# endif /* bits/time.h */ > +#endif > + > +#ifdef __need_timeval > +# undef __need_timeval > +# ifndef _STRUCT_TIMEVAL > +# define _STRUCT_TIMEVAL 1 > +# include <bits/types.h> > + > +/* A time value that is accurate to the nearest > + microsecond but also has a range of years. */ > +struct timeval > + { > + __time_t tv_sec; /* Seconds. */ > + __suseconds_t tv_usec; /* Microseconds. */ > + }; > +# endif /* struct timeval */ > +#endif /* need timeval */ > diff --git a/recipes/glibc/glibc-2.10.1/generic-bits_types.h b/recipes/glibc/glibc-2.10.1/generic-bits_types.h > new file mode 100644 > index 0000000..65c8a9f > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/generic-bits_types.h > @@ -0,0 +1,200 @@ > +/* bits/types.h -- definitions of __*_t types underlying *_t types. > + Copyright (C) 2002, 2003, 2004, 2005 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. */ > + > +/* > + * Never include this file directly; use <sys/types.h> instead. > + */ > + > +#ifndef _BITS_TYPES_H > +#define _BITS_TYPES_H 1 > + > +#include <features.h> > +#include <bits/wordsize.h> > + > +#define __need_size_t > +#include <stddef.h> > + > +/* Convenience types. */ > +typedef unsigned char __u_char; > +typedef unsigned short int __u_short; > +typedef unsigned int __u_int; > +typedef unsigned long int __u_long; > + > +/* Fixed-size types, underlying types depend on word size and compiler. */ > +typedef signed char __int8_t; > +typedef unsigned char __uint8_t; > +typedef signed short int __int16_t; > +typedef unsigned short int __uint16_t; > +typedef signed int __int32_t; > +typedef unsigned int __uint32_t; > +#if __WORDSIZE == 64 > +typedef signed long int __int64_t; > +typedef unsigned long int __uint64_t; > +#elif defined __GLIBC_HAVE_LONG_LONG > +__extension__ typedef signed long long int __int64_t; > +__extension__ typedef unsigned long long int __uint64_t; > +#endif > + > +/* quad_t is also 64 bits. */ > +#if __WORDSIZE == 64 > +typedef long int __quad_t; > +typedef unsigned long int __u_quad_t; > +#elif defined __GLIBC_HAVE_LONG_LONG > +__extension__ typedef long long int __quad_t; > +__extension__ typedef unsigned long long int __u_quad_t; > +#else > +typedef struct > +{ > + long __val[2]; > +} __quad_t; > +typedef struct > +{ > + __u_long __val[2]; > +} __u_quad_t; > +#endif > + > + > +/* The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE > + macros for each of the OS types we define below. The definitions > + of those macros must use the following macros for underlying types. > + We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned > + variants of each of the following integer types on this machine. > + > + 16 -- "natural" 16-bit type (always short) > + 32 -- "natural" 32-bit type (always int) > + 64 -- "natural" 64-bit type (long or long long) > + LONG32 -- 32-bit type, traditionally long > + QUAD -- 64-bit type, always long long > + WORD -- natural type of __WORDSIZE bits (int or long) > + LONGWORD -- type of __WORDSIZE bits, traditionally long > + > + We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the > + conventional uses of `long' or `long long' type modifiers match the > + types we define, even when a less-adorned type would be the same size. > + This matters for (somewhat) portably writing printf/scanf formats for > + these types, where using the appropriate l or ll format modifiers can > + make the typedefs and the formats match up across all GNU platforms. If > + we used `long' when it's 64 bits where `long long' is expected, then the > + compiler would warn about the formats not matching the argument types, > + and the programmer changing them to shut up the compiler would break the > + program's portability. > + > + Here we assume what is presently the case in all the GCC configurations > + we support: long long is always 64 bits, long is always word/address size, > + and int is always 32 bits. */ > + > +#define __S16_TYPE short int > +#define __U16_TYPE unsigned short int > +#define __S32_TYPE int > +#define __U32_TYPE unsigned int > +#define __SLONGWORD_TYPE long int > +#define __ULONGWORD_TYPE unsigned long int > +#if __WORDSIZE == 32 > +# define __SQUAD_TYPE __quad_t > +# define __UQUAD_TYPE __u_quad_t > +# define __SWORD_TYPE int > +# define __UWORD_TYPE unsigned int > +# define __SLONG32_TYPE long int > +# define __ULONG32_TYPE unsigned long int > +# define __S64_TYPE __quad_t > +# define __U64_TYPE __u_quad_t > +/* We want __extension__ before typedef's that use nonstandard base types > + such as `long long' in C89 mode. */ > +# define __STD_TYPE __extension__ typedef > +#elif __WORDSIZE == 64 > +# define __SQUAD_TYPE long int > +# define __UQUAD_TYPE unsigned long int > +# define __SWORD_TYPE long int > +# define __UWORD_TYPE unsigned long int > +# define __SLONG32_TYPE int > +# define __ULONG32_TYPE unsigned int > +# define __S64_TYPE long int > +# define __U64_TYPE unsigned long int > +/* No need to mark the typedef with __extension__. */ > +# define __STD_TYPE typedef > +#else > +# error > +#endif > +#include <bits/typesizes.h> /* Defines __*_T_TYPE macros. */ > + > + > +__STD_TYPE __DEV_T_TYPE __dev_t; /* Type of device numbers. */ > +__STD_TYPE __UID_T_TYPE __uid_t; /* Type of user identifications. */ > +__STD_TYPE __GID_T_TYPE __gid_t; /* Type of group identifications. */ > +__STD_TYPE __INO_T_TYPE __ino_t; /* Type of file serial numbers. */ > +__STD_TYPE __INO64_T_TYPE __ino64_t; /* Type of file serial numbers (LFS).*/ > +__STD_TYPE __MODE_T_TYPE __mode_t; /* Type of file attribute bitmasks. */ > +__STD_TYPE __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */ > +__STD_TYPE __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */ > +__STD_TYPE __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets (LFS). */ > +__STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */ > +__STD_TYPE __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */ > +__STD_TYPE __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */ > +__STD_TYPE __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. */ > +__STD_TYPE __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement (LFS). */ > +__STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */ > +__STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */ > +__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */ > +__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */ > + > +__STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */ > +__STD_TYPE __SWBLK_T_TYPE __swblk_t; /* Type of a swap block maybe? */ > +__STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */ > + > +/* Clock ID used in clock and timer functions. */ > +__STD_TYPE __CLOCKID_T_TYPE __clockid_t; > + > +/* Timer ID returned by `timer_create'. */ > +__STD_TYPE __TIMER_T_TYPE __timer_t; > + > +/* Type to represent block size. */ > +__STD_TYPE __BLKSIZE_T_TYPE __blksize_t; > + > +/* Types from the Large File Support interface. */ > + > +/* Type to count number of disk blocks. */ > +__STD_TYPE __BLKCNT_T_TYPE __blkcnt_t; > +__STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t; > + > +/* Type to count file system blocks. */ > +__STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t; > +__STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t; > + > +/* Type to count file system nodes. */ > +__STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t; > +__STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t; > + > +__STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error. */ > + > +/* These few don't really vary by system, they always correspond > + to one of the other defined types. */ > +typedef __off64_t __loff_t; /* Type of file sizes and offsets (LFS). */ > +typedef __quad_t *__qaddr_t; > +typedef char *__caddr_t; > + > +/* Duplicates info from stdint.h but this is used in unistd.h. */ > +__STD_TYPE __SWORD_TYPE __intptr_t; > + > +/* Duplicate info from sys/socket.h. */ > +__STD_TYPE __U32_TYPE __socklen_t; > + > + > +#undef __STD_TYPE > + > +#endif /* bits/types.h */ > diff --git a/recipes/glibc/glibc-2.10.1/generic-bits_typesizes.h b/recipes/glibc/glibc-2.10.1/generic-bits_typesizes.h > new file mode 100644 > index 0000000..e9226c4 > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/generic-bits_typesizes.h > @@ -0,0 +1,66 @@ > +/* bits/typesizes.h -- underlying types for *_t. Generic version. > + Copyright (C) 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 > + 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 _BITS_TYPES_H > +# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead." > +#endif > + > +#ifndef _BITS_TYPESIZES_H > +#define _BITS_TYPESIZES_H 1 > + > +/* See <bits/types.h> for the meaning of these macros. This file exists so > + that <bits/types.h> need not vary across different GNU platforms. */ > + > +#define __DEV_T_TYPE __UQUAD_TYPE > +#define __UID_T_TYPE __U32_TYPE > +#define __GID_T_TYPE __U32_TYPE > +#define __INO_T_TYPE __ULONGWORD_TYPE > +#define __INO64_T_TYPE __UQUAD_TYPE > +#define __MODE_T_TYPE __U32_TYPE > +#define __NLINK_T_TYPE __UWORD_TYPE > +#define __OFF_T_TYPE __SLONGWORD_TYPE > +#define __OFF64_T_TYPE __SQUAD_TYPE > +#define __PID_T_TYPE __S32_TYPE > +#define __RLIM_T_TYPE __ULONGWORD_TYPE > +#define __RLIM64_T_TYPE __UQUAD_TYPE > +#define __BLKCNT_T_TYPE __SLONGWORD_TYPE > +#define __BLKCNT64_T_TYPE __SQUAD_TYPE > +#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE > +#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE > +#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE > +#define __FSFILCNT64_T_TYPE __UQUAD_TYPE > +#define __ID_T_TYPE __U32_TYPE > +#define __CLOCK_T_TYPE __SLONGWORD_TYPE > +#define __TIME_T_TYPE __SLONGWORD_TYPE > +#define __USECONDS_T_TYPE __U32_TYPE > +#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE > +#define __DADDR_T_TYPE __S32_TYPE > +#define __SWBLK_T_TYPE __SLONGWORD_TYPE > +#define __KEY_T_TYPE __S32_TYPE > +#define __CLOCKID_T_TYPE __S32_TYPE > +#define __TIMER_T_TYPE void * > +#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE > +#define __FSID_T_TYPE struct { int __val[2]; } > +#define __SSIZE_T_TYPE __SWORD_TYPE > + > +/* Number of descriptors that can fit in an `fd_set'. */ > +#define __FD_SETSIZE 1024 > + > + > +#endif /* bits/typesizes.h */ > diff --git a/recipes/glibc/glibc-2.10.1/glibc-arm-IO-acquire-lock-fix.diff b/recipes/glibc/glibc-2.10.1/glibc-arm-IO-acquire-lock-fix.diff > new file mode 100644 > index 0000000..a552cf0 > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/glibc-arm-IO-acquire-lock-fix.diff > @@ -0,0 +1,13 @@ > +Arm needs a similar fix as http://sourceware.org/ml/libc-ports/2007-12/msg00000.html > + > +--- /tmp/stdio-lock.h 2008-03-04 18:51:15.555038993 +0100 > ++++ glibc-2.7/ports/sysdeps/unix/sysv/linux/arm/bits/stdio-lock.h 2008-03-04 18:51:28.445035052 +0100 > +@@ -50,6 +50,8 @@ > + _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, (_fp)); \ > + _IO_flockfile (_fp) > + > ++# define _IO_acquire_lock_clear_flags2(_fp) _IO_acquire_lock (_fp) > ++ > + # define _IO_release_lock(_fp) \ > + _IO_funlockfile (_fp); \ > + _IO_cleanup_region_end (0) > diff --git a/recipes/glibc/glibc-2.10.1/glibc-check_pf.patch b/recipes/glibc/glibc-2.10.1/glibc-check_pf.patch > new file mode 100644 > index 0000000..3cff6bb > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/glibc-check_pf.patch > @@ -0,0 +1,343 @@ > +From libc-ports-return-550-listarch-libc-ports=sources dot redhat dot com at sourceware dot org Tue Oct 31 17:37:21 2006 > +Return-Path: <libc-ports-return-550-listarch-libc-ports=sources dot redhat dot com at sourceware dot org> > +Delivered-To: listarch-libc-ports at sources dot redhat dot com > +Received: (qmail 17273 invoked by alias); 31 Oct 2006 17:37:20 -0000 > +Received: (qmail 17262 invoked by uid 22791); 31 Oct 2006 17:37:19 -0000 > +X-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,TW_CP > +X-Spam-Check-By: sourceware.org > +Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Tue, 31 Oct 2006 17:37:11 +0000 > +Received: from drow by nevyn.them.org with local (Exim 4.54) id 1GexXw-0007Dj-30; Tue, 31 Oct 2006 12:37:08 -0500 > +Date: Tue, 31 Oct 2006 12:37:08 -0500 > +From: Daniel Jacobowitz <drow at false dot org> > +To: Mike Frysinger <vapier at gentoo dot org> > +Cc: libc-ports at sourceware dot org, Philip Balister <philip dot balister at gmail dot com> > +Subject: Re: Problem with glibc-2.5 on ARM > +Message-ID: <20061031173708.GJ20468@nevyn.them.org> > +References: <499146270610241149ibe030e0nd9d6b177a95b346e@mail.gmail.com> <499146270610241254u7cadf63ej2edf05cedbc5266f@mail.gmail.com> <20061024195837.GA20181@nevyn.them.org> <200610291954.27022.vapier@gentoo.org> > +MIME-Version: 1.0 > +Content-Type: text/plain; charset=us-ascii > +Content-Disposition: inline > +In-Reply-To: <200610291954 dot 27022 dot vapier at gentoo dot org> > +User-Agent: Mutt/1.5.13 (2006-08-11) > +X-IsSubscribed: yes > +Mailing-List: contact libc-ports-help at sourceware dot org; run by ezmlm > +Precedence: bulk > +List-Subscribe: <mailto:libc-ports-subscribe at sourceware dot org> > +List-Post: <mailto:libc-ports at sourceware dot org> > +List-Help: <mailto:libc-ports-help at sourceware dot org>, <http://sourceware dot org/lists dot html#faqs> > +Sender: libc-ports-owner at sourceware dot org > +Delivered-To: mailing list libc-ports at sourceware dot org > + > +On Sun, Oct 29, 2006 at 07:54:25PM -0500, Mike Frysinger wrote: > +> On Tuesday 24 October 2006 15:58, Daniel Jacobowitz wrote: > +> > ARM is going to need a slightly different version of that file, I > +> > guess. > +> > +> would declaring req with attribute packed not help ? > +> -mike > + > +Nope. "struct rtgenmsg" would still have size 4. > + > +Philip, are you still at all interested in this for the old ABI? > +I don't have time to test this patch right now, but I think it > +will work. > + > +-- > +Daniel Jacobowitz > +CodeSourcery > + > +2006-10-31 Daniel Jacobowitz <dan@codesourcery.com> > + > + * sysdeps/unix/sysv/linux/arm/check_pf.c: New file. > + * sysdeps/unix/sysv/linux/arm/eabi/check_pf.c: New file. > + > +Index: sysdeps/unix/sysv/linux/arm/check_pf.c > +=================================================================== > +RCS file: sysdeps/unix/sysv/linux/arm/check_pf.c > +diff -N sysdeps/unix/sysv/linux/arm/check_pf.c > +--- /dev/null 1 Jan 1970 00:00:00 -0000 > ++++ sysdeps/unix/sysv/linux/arm/check_pf.c 31 Oct 2006 17:29:58 -0000 > +@@ -0,0 +1,274 @@ > ++/* Determine protocol families for which interfaces exist. ARM Linux version. > ++ Copyright (C) 2003, 2006 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 <assert.h> > ++#include <errno.h> > ++#include <ifaddrs.h> > ++#include <netdb.h> > ++#include <stddef.h> > ++#include <string.h> > ++#include <time.h> > ++#include <unistd.h> > ++#include <sys/socket.h> > ++ > ++#include <asm/types.h> > ++#include <linux/netlink.h> > ++#include <linux/rtnetlink.h> > ++ > ++#include <not-cancel.h> > ++#include <kernel-features.h> > ++ > ++ > ++#ifndef IFA_F_TEMPORARY > ++# define IFA_F_TEMPORARY IFA_F_SECONDARY > ++#endif > ++#ifndef IFA_F_HOMEADDRESS > ++# define IFA_F_HOMEADDRESS 0 > ++#endif > ++ > ++ > ++static int > ++make_request (int fd, pid_t pid, bool *seen_ipv4, bool *seen_ipv6, > ++ struct in6addrinfo **in6ai, size_t *in6ailen) > ++{ > ++ struct req > ++ { > ++ struct nlmsghdr nlh; > ++ struct rtgenmsg g; > ++ } req; > ++ struct sockaddr_nl nladdr; > ++ > ++ /* struct rtgenmsg consists of a single byte but the ARM ABI rounds > ++ it up to a word. Clear the padding explicitly here. */ > ++ assert (sizeof (req.g) == 4); > ++ memset (&req.g, '\0', sizeof (req.g)); > ++ > ++ req.nlh.nlmsg_len = sizeof (req); > ++ req.nlh.nlmsg_type = RTM_GETADDR; > ++ req.nlh.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST; > ++ req.nlh.nlmsg_pid = 0; > ++ req.nlh.nlmsg_seq = time (NULL); > ++ req.g.rtgen_family = AF_UNSPEC; > ++ > ++ memset (&nladdr, '\0', sizeof (nladdr)); > ++ nladdr.nl_family = AF_NETLINK; > ++ > ++ if (TEMP_FAILURE_RETRY (__sendto (fd, (void *) &req, sizeof (req), 0, > ++ (struct sockaddr *) &nladdr, > ++ sizeof (nladdr))) < 0) > ++ return -1; > ++ > ++ *seen_ipv4 = false; > ++ *seen_ipv6 = false; > ++ > ++ bool done = false; > ++ char buf[4096]; > ++ struct iovec iov = { buf, sizeof (buf) }; > ++ struct in6ailist > ++ { > ++ struct in6addrinfo info; > ++ struct in6ailist *next; > ++ } *in6ailist = NULL; > ++ size_t in6ailistlen = 0; > ++ > ++ do > ++ { > ++ struct msghdr msg = > ++ { > ++ (void *) &nladdr, sizeof (nladdr), > ++ &iov, 1, > ++ NULL, 0, > ++ 0 > ++ }; > ++ > ++ ssize_t read_len = TEMP_FAILURE_RETRY (__recvmsg (fd, &msg, 0)); > ++ if (read_len < 0) > ++ return -1; > ++ > ++ if (msg.msg_flags & MSG_TRUNC) > ++ return -1; > ++ > ++ struct nlmsghdr *nlmh; > ++ for (nlmh = (struct nlmsghdr *) buf; > ++ NLMSG_OK (nlmh, (size_t) read_len); > ++ nlmh = (struct nlmsghdr *) NLMSG_NEXT (nlmh, read_len)) > ++ { > ++ if (nladdr.nl_pid != 0 || (pid_t) nlmh->nlmsg_pid != pid > ++ || nlmh->nlmsg_seq != req.nlh.nlmsg_seq) > ++ continue; > ++ > ++ if (nlmh->nlmsg_type == RTM_NEWADDR) > ++ { > ++ struct ifaddrmsg *ifam = (struct ifaddrmsg *) NLMSG_DATA (nlmh); > ++ > ++ switch (ifam->ifa_family) > ++ { > ++ case AF_INET: > ++ *seen_ipv4 = true; > ++ break; > ++ case AF_INET6: > ++ *seen_ipv6 = true; > ++ > ++ if (ifam->ifa_flags & (IFA_F_DEPRECATED > ++ | IFA_F_TEMPORARY > ++ | IFA_F_HOMEADDRESS)) > ++ { > ++ struct rtattr *rta = IFA_RTA (ifam); > ++ size_t len = (nlmh->nlmsg_len > ++ - NLMSG_LENGTH (sizeof (*ifam))); > ++ void *local = NULL; > ++ void *address = NULL; > ++ while (RTA_OK (rta, len)) > ++ { > ++ switch (rta->rta_type) > ++ { > ++ case IFA_LOCAL: > ++ local = RTA_DATA (rta); > ++ break; > ++ > ++ case IFA_ADDRESS: > ++ address = RTA_DATA (rta); > ++ break; > ++ } > ++ > ++ rta = RTA_NEXT (rta, len); > ++ } > ++ > ++ struct in6ailist *newp = alloca (sizeof (*newp)); > ++ newp->info.flags = (((ifam->ifa_flags & IFA_F_DEPRECATED) > ++ ? in6ai_deprecated : 0) > ++ | ((ifam->ifa_flags > ++ & IFA_F_TEMPORARY) > ++ ? in6ai_temporary : 0) > ++ | ((ifam->ifa_flags > ++ & IFA_F_HOMEADDRESS) > ++ ? in6ai_homeaddress : 0)); > ++ memcpy (newp->info.addr, address ?: local, > ++ sizeof (newp->info.addr)); > ++ newp->next = in6ailist; > ++ in6ailist = newp; > ++ ++in6ailistlen; > ++ } > ++ break; > ++ default: > ++ /* Ignore. */ > ++ break; > ++ } > ++ } > ++ else if (nlmh->nlmsg_type == NLMSG_DONE) > ++ /* We found the end, leave the loop. */ > ++ done = true; > ++ } > ++ } > ++ while (! done); > ++ > ++ close_not_cancel_no_status (fd); > ++ > ++ if (in6ailist != NULL) > ++ { > ++ *in6ai = malloc (in6ailistlen * sizeof (**in6ai)); > ++ if (*in6ai == NULL) > ++ return -1; > ++ > ++ *in6ailen = in6ailistlen; > ++ > ++ do > ++ { > ++ (*in6ai)[--in6ailistlen] = in6ailist->info; > ++ in6ailist = in6ailist->next; > ++ } > ++ while (in6ailist != NULL); > ++ } > ++ > ++ return 0; > ++} > ++ > ++ > ++/* We don't know if we have NETLINK support compiled in in our > ++ Kernel. */ > ++#if __ASSUME_NETLINK_SUPPORT == 0 > ++/* Define in ifaddrs.h. */ > ++extern int __no_netlink_support attribute_hidden; > ++#else > ++# define __no_netlink_support 0 > ++#endif > ++ > ++ > ++void > ++attribute_hidden > ++__check_pf (bool *seen_ipv4, bool *seen_ipv6, > ++ struct in6addrinfo **in6ai, size_t *in6ailen) > ++{ > ++ *in6ai = NULL; > ++ *in6ailen = 0; > ++ > ++ if (! __no_netlink_support) > ++ { > ++ int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE); > ++ > ++ struct sockaddr_nl nladdr; > ++ memset (&nladdr, '\0', sizeof (nladdr)); > ++ nladdr.nl_family = AF_NETLINK; > ++ > ++ socklen_t addr_len = sizeof (nladdr); > ++ > ++ if (fd >= 0 > ++ && __bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0 > ++ && __getsockname (fd, (struct sockaddr *) &nladdr, &addr_len) == 0 > ++ && make_request (fd, nladdr.nl_pid, seen_ipv4, seen_ipv6, > ++ in6ai, in6ailen) == 0) > ++ /* It worked. */ > ++ return; > ++ > ++ if (fd >= 0) > ++ __close (fd); > ++ > ++#if __ASSUME_NETLINK_SUPPORT == 0 > ++ /* Remember that there is no netlink support. */ > ++ __no_netlink_support = 1; > ++#else > ++ /* We cannot determine what interfaces are available. Be > ++ pessimistic. */ > ++ *seen_ipv4 = true; > ++ *seen_ipv6 = true; > ++#endif > ++ } > ++ > ++#if __ASSUME_NETLINK_SUPPORT == 0 > ++ /* No netlink. Get the interface list via getifaddrs. */ > ++ struct ifaddrs *ifa = NULL; > ++ if (getifaddrs (&ifa) != 0) > ++ { > ++ /* We cannot determine what interfaces are available. Be > ++ pessimistic. */ > ++ *seen_ipv4 = true; > ++ *seen_ipv6 = true; > ++ return; > ++ } > ++ > ++ struct ifaddrs *runp; > ++ for (runp = ifa; runp != NULL; runp = runp->ifa_next) > ++ if (runp->ifa_addr->sa_family == PF_INET) > ++ *seen_ipv4 = true; > ++ else if (runp->ifa_addr->sa_family == PF_INET6) > ++ *seen_ipv6 = true; > ++ > ++ (void) freeifaddrs (ifa); > ++#endif > ++} > +Index: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c > +=================================================================== > +RCS file: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c > +diff -N sysdeps/unix/sysv/linux/arm/eabi/check_pf.c > +--- /dev/null 1 Jan 1970 00:00:00 -0000 > ++++ sysdeps/unix/sysv/linux/arm/eabi/check_pf.c 31 Oct 2006 17:29:58 -0000 > +@@ -0,0 +1 @@ > ++#include <sysdeps/unix/sysv/linux/check_pf.c> > + > diff --git a/recipes/glibc/glibc-2.10.1/ldd-unbash.patch b/recipes/glibc/glibc-2.10.1/ldd-unbash.patch > new file mode 100644 > index 0000000..2fb8854 > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/ldd-unbash.patch > @@ -0,0 +1,11 @@ > +--- glibc-2.5/elf/ldd.bash.in.org 2006-04-30 16:06:20.000000000 +0000 > ++++ glibc-2.5/elf/ldd.bash.in 2007-03-30 19:18:57.000000000 +0000 > +@@ -110,7 +110,7 @@ > + # environments where the executed program might not have permissions > + # to write to the console/tty. But only bash 3.x supports the pipefail > + # option, and we don't bother to handle the case for older bash versions. > +-if set -o pipefail 2> /dev/null; then > ++if false; then > + try_trace() { > + eval $add_env '"$@"' | cat > + } > diff --git a/recipes/glibc/glibc-2.10.1/ldsocache-varrun.patch b/recipes/glibc/glibc-2.10.1/ldsocache-varrun.patch > new file mode 100644 > index 0000000..9994d4f > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/ldsocache-varrun.patch > @@ -0,0 +1,18 @@ > +This patch moves ld.so.cache from /etc to /var/run. This is for devices > +where /etc is JFFS2 or CRAMFS but /var is a ramdisk. > + > +# > +# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher > +# > + > +--- libc/sysdeps/generic/dl-cache.h~ldsocache-varrun > ++++ libc/sysdeps/generic/dl-cache.h > +@@ -29,7 +29,7 @@ > + #endif > + > + #ifndef LD_SO_CACHE > +-# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache" > ++# define LD_SO_CACHE "/var/run/ld.so.cache" > + #endif > + > + #ifndef add_system_dir > diff --git a/recipes/glibc/glibc-2.10.1/march-i686.patch b/recipes/glibc/glibc-2.10.1/march-i686.patch > new file mode 100644 > index 0000000..0461603 > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/march-i686.patch > @@ -0,0 +1,38 @@ > +2007-02-15 Khem Raj <kraj@xxxxxxxxxx> > + > + * sysdeps/unix/sysv/linux/i386/sysdep.h: Re-define __i686. > + * nptl/sysdeps/pthread/pt-initfini.c: Ditto. > + > + > + > +Index: sysdeps/unix/sysv/linux/i386/sysdep.h > +=================================================================== > +--- sysdeps/unix/sysv/linux/i386/sysdep.h (revision 1469) > ++++ sysdeps/unix/sysv/linux/i386/sysdep.h (working copy) > +@@ -29,6 +29,10 @@ > + #include <dl-sysdep.h> > + #include <tls.h> > + > ++#if defined __i686 && defined __ASSEMBLER__ > ++#undef __i686 > ++#define __i686 __i686 > ++#endif > + > + /* For Linux we can use the system call table in the header file > + /usr/include/asm/unistd.h > +Index: nptl/sysdeps/pthread/pt-initfini.c > +=================================================================== > +--- nptl/sysdeps/pthread/pt-initfini.c (revision 1469) > ++++ nptl/sysdeps/pthread/pt-initfini.c (working copy) > +@@ -45,6 +45,11 @@ > + /* Embed an #include to pull in the alignment and .end directives. */ > + asm ("\n#include \"defs.h\""); > + > ++asm ("\n#if defined __i686 && defined __ASSEMBLER__"); > ++asm ("\n#undef __i686"); > ++asm ("\n#define __i686 __i686"); > ++asm ("\n#endif"); > ++ > + /* The initial common code ends here. */ > + asm ("\n/*@HEADER_ENDS*/"); > + > diff --git a/recipes/glibc/glibc-2.10.1/no-z-defs.patch b/recipes/glibc/glibc-2.10.1/no-z-defs.patch > new file mode 100644 > index 0000000..48c6a41 > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/no-z-defs.patch > @@ -0,0 +1,9 @@ > +Create a configparms file which disabled no-z-defs. > +This is required to build a working glibs for sh4, > +without there will be a lot linker errors during the build. > + > +diff -duNr libc.orig/configparms libc/configparms > +--- libc.orig/configparms 1970-01-01 10:00:00.000000000 +1000 > ++++ libc/configparms 2006-02-23 14:08:18.000000000 +1100 > +@@ -0,0 +1 @@ > ++no-z-defs=yes > diff --git a/recipes/glibc/glibc-2.10.1/nptl-crosscompile.patch b/recipes/glibc/glibc-2.10.1/nptl-crosscompile.patch > new file mode 100644 > index 0000000..18a46ad > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/nptl-crosscompile.patch > @@ -0,0 +1,26 @@ > +--- glibc-2.4/nptl/sysdeps/pthread/configure.in.ark 2006-03-12 00:41:40.000000000 +0100 > ++++ glibc-2.4/nptl/sysdeps/pthread/configure.in 2006-03-12 00:44:08.000000000 +0100 > +@@ -45,5 +45,6 @@ > + AC_MSG_ERROR([the compiler must support C cleanup handling]) > + fi > + else > +- AC_MSG_ERROR(forced unwind support is required) > ++ AC_MSG_WARN([forced unwind support is required, can't be verified while crosscompiling]) > ++ AC_DEFINE(HAVE_FORCED_UNWIND) > + fi > +--- glibc-2.4/nptl/sysdeps/pthread/configure.ark 2006-03-12 00:42:47.000000000 +0100 > ++++ glibc-2.4/nptl/sysdeps/pthread/configure 2006-03-12 00:44:08.000000000 +0100 > +@@ -153,7 +153,10 @@ > + { (exit 1); exit 1; }; } > + fi > + else > +- { { echo "$as_me:$LINENO: error: forced unwind support is required" >&5 > +-echo "$as_me: error: forced unwind support is required" >&2;} > +- { (exit 1); exit 1; }; } > ++ { echo "$as_me:$LINENO: WARNING: forced unwind support is required, can't be verified while crosscompiling" >&5 > ++echo "$as_me: WARNING: forced unwind support is required, can't be verified while crosscompiling" >&2;} > ++ cat >>confdefs.h <<\_ACEOF > ++#define HAVE_FORCED_UNWIND 1 > ++_ACEOF > ++ > + fi > diff --git a/recipes/glibc/glibc-2.10.1/nscd-init.patch b/recipes/glibc/glibc-2.10.1/nscd-init.patch > new file mode 100644 > index 0000000..884609a > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/nscd-init.patch > @@ -0,0 +1,39 @@ > +--- nscd/nscd.init > ++++ nscd/nscd.init > +@@ -48,9 +48,8 @@ > + > + start () { > + [ -d /var/run/nscd ] || mkdir /var/run/nscd > +- [ -d /var/db/nscd ] || mkdir /var/db/nscd > + echo -n $"Starting $prog: " > +- daemon /usr/sbin/nscd > ++ /usr/sbin/nscd > + RETVAL=$? > + echo > + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nscd > +@@ -67,12 +66,10 @@ > + # a non-privileged user > + rm -f /var/run/nscd/nscd.pid > + rm -f /var/run/nscd/socket > +- success $"$prog shutdown" > +- else > +- failure $"$prog shutdown" > + fi > +- echo > +- return $RETVAL > ++ echo "Done." > ++ # If nscd did not run, return 0 according to LSB. > ++ return 0 > + } > + > + restart() { > +@@ -104,7 +101,8 @@ > + ;; > + force-reload | reload) > + echo -n $"Reloading $prog: " > +- killproc /usr/sbin/nscd -HUP > ++ # Use killall, initscripts-1.0-r115 don't support -HUP yet. > ++ killall -HUP /usr/sbin/nscd > + RETVAL=$? > + echo > + ;; > diff --git a/recipes/glibc/glibc-2.10.1/powerpc-sqrt-hack.diff b/recipes/glibc/glibc-2.10.1/powerpc-sqrt-hack.diff > new file mode 100644 > index 0000000..1046efb > --- /dev/null > +++ b/recipes/glibc/glibc-2.10.1/powerpc-sqrt-hack.diff > @@ -0,0 +1,25 @@ > +diff -Nurd ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c > +--- ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c 2006-04-14 07:44:30.000000000 +0200 > ++++ glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c 2006-12-08 12:53:32.202227000 +0100 > +@@ -25,6 +25,9 @@ > + #include <sysdep.h> > + #include <ldsodefs.h> > + > ++#define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0) > ++ > ++ > + static const double almost_half = 0.5000000000000001; /* 0.5 + 2^-53 */ > + static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 }; > + static const ieee_float_shape_type a_inf = {.word = 0x7f800000 }; > +diff -Nurd ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c > +--- ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c 2006-04-14 07:44:30.000000000 +0200 > ++++ glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c 2006-12-08 12:53:36.992227000 +0100 > +@@ -25,6 +25,8 @@ > + #include <sysdep.h> > + #include <ldsodefs.h> > + > ++#define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0) > ++ > + static const float almost_half = 0.50000006; /* 0.5 + 2^-24 */ > + static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 }; > + static const ieee_float_shape_type a_inf = {.word = 0x7f800000 }; > diff --git a/recipes/glibc/glibc_2.10.1.bb b/recipes/glibc/glibc_2.10.1.bb > index 3c2fce8..b29e36a 100644 > --- a/recipes/glibc/glibc_2.10.1.bb > +++ b/recipes/glibc/glibc_2.10.1.bb > @@ -11,9 +11,6 @@ RPROVIDES_${PN}-dev = "libc6-dev virtual-libc-dev" > BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}" > TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${layout_includedir}" > > - > -FILESPATHPKG =. "glibc-2.4:" > - > GLIBC_ADDONS ?= "ports,nptl,libidn" > > GLIBC_BROKEN_LOCALES = " _ER _ET so_ET yn_ER sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN" > -- > 1.6.4.2 > > > _______________________________________________ > Openembedded-devel mailing list > Openembedded-devel@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] glibc 2.10.1: cleaned up; patches only in local dir 2010-07-15 21:50 ` [PATCH 2/3] glibc 2.10.1: cleaned up; patches only in local dir Khem Raj @ 2010-07-16 6:07 ` Frans Meulenbroeks 0 siblings, 0 replies; 9+ messages in thread From: Frans Meulenbroeks @ 2010-07-16 6:07 UTC (permalink / raw) To: openembedded-devel 2010/7/15 Khem Raj <raj.khem@gmail.com> > On Thu, Jul 15, 2010 at 1:46 PM, Frans Meulenbroeks > <fransmeulenbroeks@gmail.com> wrote: > > moved all patches to glibc-2.10.1 > > removed references to other dirs. > > > > Signed-off-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com> > > Please run bitbake -c configure atleast for all recipes you touched. > I'll do that before committing (actually I already did a bitbake -c patch to verify that all patch files are there and apply properly > > Acked-by: Khem Raj <raj.khem@gmail.com> > Thanks for the ack. I assume you also agree with the 2.5 patches I send earlier this week. (they are exactly the same except that it concerns 2.5) Frans. > > > > --- > > recipes/glibc/glibc-2.10.1/arm-longlong.patch | 58 ++ > > .../arm-lowlevellock-include-tls.patch | 12 + > > recipes/glibc/glibc-2.10.1/arm-memcpy.patch | 758 > ++++++++++++++++++++ > > .../glibc/glibc-2.10.1/armv4t-interworking.patch | 47 ++ > > recipes/glibc/glibc-2.10.1/dl-cache-libcmp.patch | 10 + > > recipes/glibc/glibc-2.10.1/etc/ld.so.conf | 2 + > > recipes/glibc/glibc-2.10.1/fhs-linux-paths.patch | 11 + > > recipes/glibc/glibc-2.10.1/generate-supported.mk | 11 + > > recipes/glibc/glibc-2.10.1/generic-bits_select.h | 35 + > > recipes/glibc/glibc-2.10.1/generic-bits_time.h | 75 ++ > > recipes/glibc/glibc-2.10.1/generic-bits_types.h | 200 +++++ > > .../glibc/glibc-2.10.1/generic-bits_typesizes.h | 66 ++ > > .../glibc-arm-IO-acquire-lock-fix.diff | 13 + > > recipes/glibc/glibc-2.10.1/glibc-check_pf.patch | 343 +++++++++ > > recipes/glibc/glibc-2.10.1/ldd-unbash.patch | 11 + > > recipes/glibc/glibc-2.10.1/ldsocache-varrun.patch | 18 + > > recipes/glibc/glibc-2.10.1/march-i686.patch | 38 + > > recipes/glibc/glibc-2.10.1/no-z-defs.patch | 9 + > > recipes/glibc/glibc-2.10.1/nptl-crosscompile.patch | 26 + > > recipes/glibc/glibc-2.10.1/nscd-init.patch | 39 + > > recipes/glibc/glibc-2.10.1/powerpc-sqrt-hack.diff | 25 + > > recipes/glibc/glibc_2.10.1.bb | 3 - > > 22 files changed, 1807 insertions(+), 3 deletions(-) > > create mode 100644 recipes/glibc/glibc-2.10.1/arm-longlong.patch > > create mode 100644 > recipes/glibc/glibc-2.10.1/arm-lowlevellock-include-tls.patch > > create mode 100644 recipes/glibc/glibc-2.10.1/arm-memcpy.patch > > create mode 100644 recipes/glibc/glibc-2.10.1/armv4t-interworking.patch > > create mode 100644 recipes/glibc/glibc-2.10.1/dl-cache-libcmp.patch > > create mode 100644 recipes/glibc/glibc-2.10.1/etc/ld.so.conf > > create mode 100644 recipes/glibc/glibc-2.10.1/fhs-linux-paths.patch > > create mode 100644 recipes/glibc/glibc-2.10.1/generate-supported.mk > > create mode 100644 recipes/glibc/glibc-2.10.1/generic-bits_select.h > > create mode 100644 recipes/glibc/glibc-2.10.1/generic-bits_time.h > > create mode 100644 recipes/glibc/glibc-2.10.1/generic-bits_types.h > > create mode 100644 recipes/glibc/glibc-2.10.1/generic-bits_typesizes.h > > create mode 100644 > recipes/glibc/glibc-2.10.1/glibc-arm-IO-acquire-lock-fix.diff > > create mode 100644 recipes/glibc/glibc-2.10.1/glibc-check_pf.patch > > create mode 100644 recipes/glibc/glibc-2.10.1/ldd-unbash.patch > > create mode 100644 recipes/glibc/glibc-2.10.1/ldsocache-varrun.patch > > create mode 100644 recipes/glibc/glibc-2.10.1/march-i686.patch > > create mode 100644 recipes/glibc/glibc-2.10.1/no-z-defs.patch > > create mode 100644 recipes/glibc/glibc-2.10.1/nptl-crosscompile.patch > > create mode 100644 recipes/glibc/glibc-2.10.1/nscd-init.patch > > create mode 100644 recipes/glibc/glibc-2.10.1/powerpc-sqrt-hack.diff > > > > diff --git a/recipes/glibc/glibc-2.10.1/arm-longlong.patch > b/recipes/glibc/glibc-2.10.1/arm-longlong.patch > > new file mode 100644 > > index 0000000..28aca83 > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/arm-longlong.patch > > @@ -0,0 +1,58 @@ > > +--- glibc-2.4/stdlib/longlong.h.ark 2006-03-11 22:49:27.000000000 > +0100 > > ++++ glibc-2.4/stdlib/longlong.h 2006-03-11 22:55:12.000000000 > +0100 > > +@@ -206,6 +206,14 @@ > > + "rI" ((USItype) (bh)), \ > > + "r" ((USItype) (al)), \ > > + "rI" ((USItype) (bl)) __CLOBBER_CC) > > ++/* 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" \ > > +@@ -227,7 +235,13 @@ > > + : "r" ((USItype) (a)), \ > > + "r" ((USItype) (b)) __CLOBBER_CC );} > > + #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 > > +--- glibc-2.4/ports/sysdeps/arm/mp_clz_tab.c.ark 2006-03-11 > 22:56:43.000000000 +0100 > > ++++ glibc-2.4/ports/sysdeps/arm/mp_clz_tab.c 2006-03-11 > 22:58:19.000000000 +0100 > > +@@ -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 <stdlib/mp_clz_tab.c> > > ++#endif > > diff --git > a/recipes/glibc/glibc-2.10.1/arm-lowlevellock-include-tls.patch > b/recipes/glibc/glibc-2.10.1/arm-lowlevellock-include-tls.patch > > new file mode 100644 > > index 0000000..5c8062e > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/arm-lowlevellock-include-tls.patch > > @@ -0,0 +1,12 @@ > > +Index: glibc-2.9/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h > > +=================================================================== > > +--- glibc-2.9.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h > 2009-06-19 20:54:35.446686910 +0400 > > ++++ glibc-2.9/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h > 2009-06-19 20:54:43.774683370 +0400 > > +@@ -25,6 +25,7 @@ > > + #include <atomic.h> > > + #include <sysdep.h> > > + #include <kernel-features.h> > > ++#include <tls.h> > > + > > + #define FUTEX_WAIT 0 > > + #define FUTEX_WAKE 1 > > diff --git a/recipes/glibc/glibc-2.10.1/arm-memcpy.patch > b/recipes/glibc/glibc-2.10.1/arm-memcpy.patch > > new file mode 100644 > > index 0000000..bc2b3da > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/arm-memcpy.patch > > @@ -0,0 +1,758 @@ > > +--- /dev/null 2004-02-02 20:32:13.000000000 +0000 > > ++++ sysdeps/arm/memmove.S 2004-03-20 18:37:23.000000000 +0000 > > +@@ -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-02-02 20:32:13.000000000 +0000 > > ++++ sysdeps/arm/bcopy.S 2004-03-20 18:37:48.000000000 +0000 > > +@@ -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) > > + > > +--- /dev/null 2004-02-02 20:32:13.000000000 +0000 > > ++++ sysdeps/arm/memcpy.S 2004-05-02 14:33:22.000000000 +0100 > > +@@ -0,0 +1,242 @@ > > ++/* > > ++ * 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) > > ++ > > diff --git a/recipes/glibc/glibc-2.10.1/armv4t-interworking.patch > b/recipes/glibc/glibc-2.10.1/armv4t-interworking.patch > > new file mode 100644 > > index 0000000..ce91ad6 > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/armv4t-interworking.patch > > @@ -0,0 +1,47 @@ > > +--- libc/ports/sysdeps/arm/memcpy.S~ 2006-10-31 17:07:54.000000000 > +0000 > > ++++ libc/ports/sysdeps/arm/memcpy.S 2008-10-24 11:09:34.000000000 > +0100 > > +@@ -130,7 +130,12 @@ > > + strcsb r4, [r0], #1 > > + strcsb ip, [r0] > > + > > ++#if defined (__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__) > > ++ ldmfd sp!, {r0, r4, lr} > > ++ bx lr > > ++#else > > + ldmfd sp!, {r0, r4, pc} > > ++#endif > > + > > + 9: rsb ip, ip, #4 > > + cmp ip, #2 > > +--- libc/ports/sysdeps/arm/memmove.S~ 2006-10-31 17:07:54.000000000 > +0000 > > ++++ libc/ports/sysdeps/arm/memmove.S 2008-10-24 11:09:44.000000000 > +0100 > > +@@ -140,7 +140,12 @@ > > + strneb r3, [r0, #-1]! > > + strcsb r4, [r0, #-1]! > > + strcsb ip, [r0, #-1] > > ++#if defined (__ARM_ARCH_4T__) && defined (__THUMB_INTERWORK__) > > ++ ldmfd sp!, {r0, r4, lr} > > ++ bx lr > > ++#else > > + ldmfd sp!, {r0, r4, pc} > > ++#endif > > + > > + 9: cmp ip, #2 > > + ldrgtb r3, [r1, #-1]! > > +--- libc/ports/sysdeps/unix/sysv/linux/arm/clone.S~ 2005-11-16 > 19:03:42.000000000 +0000 > > ++++ libc/ports/sysdeps/unix/sysv/linux/arm/clone.S 2008-10-24 > 11:11:05.000000000 +0100 > > +@@ -96,8 +96,14 @@ > > + #endif > > + @ pick the function arg and call address off the stack and > execute > > + ldr r0, [sp, #4] > > ++#if defined(__ARM_ARCH_V4T__) && defined(__THUMB_INTERWORK__) > > ++ ldr ip, [sp], #8 > > ++ mov lr, pc > > ++ bx ip > > ++#else > > + mov lr, pc > > + ldr pc, [sp], #8 > > ++#endif > > + > > + @ and we are done, passing the return value through r0 > > + b PLTJMP(_exit) > > diff --git a/recipes/glibc/glibc-2.10.1/dl-cache-libcmp.patch > b/recipes/glibc/glibc-2.10.1/dl-cache-libcmp.patch > > new file mode 100644 > > index 0000000..2fedfa6 > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/dl-cache-libcmp.patch > > @@ -0,0 +1,10 @@ > > +--- glibc-2.4/elf/Versions.ark 2006-03-11 23:30:09.000000000 +0100 > > ++++ glibc-2.4/elf/Versions 2006-03-11 23:31:44.000000000 +0100 > > +@@ -63,5 +63,7 @@ > > + _dl_debug_state; > > + # Pointer protection. > > + __pointer_chk_guard; > > ++ # for ldconfig > > ++ _dl_cache_libcmp; > > + } > > + } > > diff --git a/recipes/glibc/glibc-2.10.1/etc/ld.so.conf > b/recipes/glibc/glibc-2.10.1/etc/ld.so.conf > > new file mode 100644 > > index 0000000..46e06d3 > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/etc/ld.so.conf > > @@ -0,0 +1,2 @@ > > +/usr/local/lib > > + > > diff --git a/recipes/glibc/glibc-2.10.1/fhs-linux-paths.patch > b/recipes/glibc/glibc-2.10.1/fhs-linux-paths.patch > > new file mode 100644 > > index 0000000..1f32f6d > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/fhs-linux-paths.patch > > @@ -0,0 +1,11 @@ > > +--- glibc-2.1.1/sysdeps/unix/sysv/linux/paths.h~ Thu May 27 > 13:16:33 1999 > > ++++ glibc-2.1.1/sysdeps/unix/sysv/linux/paths.h Thu May 27 > 13:17:55 1999 > > +@@ -71,7 +71,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.10.1/generate-supported.mkb/recipes/glibc/glibc-2.10.1/ > generate-supported.mk > > new file mode 100644 > > index 0000000..d2a28c2 > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/generate-supported.mk > > @@ -0,0 +1,11 @@ > > +#!/usr/bin/make > > + > > +include $(IN) > > + > > +all: > > + rm -f $(OUT) > > + touch $(OUT) > > + for locale in $(SUPPORTED-LOCALES); do \ > > + [ $$locale = true ] && continue; \ > > + echo $$locale | sed 's,/, ,' >> $(OUT); \ > > + done > > diff --git a/recipes/glibc/glibc-2.10.1/generic-bits_select.h > b/recipes/glibc/glibc-2.10.1/generic-bits_select.h > > new file mode 100644 > > index 0000000..47e7ded > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/generic-bits_select.h > > @@ -0,0 +1,35 @@ > > +/* Copyright (C) 1997, 1998, 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. */ > > + > > +#ifndef _SYS_SELECT_H > > +# error "Never use <bits/select.h> directly; include <sys/select.h> > instead." > > +#endif > > + > > + > > +/* We don't use `memset' because this would require a prototype and > > + the array isn't too big. */ > > +#define __FD_ZERO(s) \ > > + do { > \ > > + unsigned int __i; > \ > > + fd_set *__arr = (s); > \ > > + for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) > \ > > + __FDS_BITS (__arr)[__i] = 0; > \ > > + } while (0) > > +#define __FD_SET(d, s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d)) > > +#define __FD_CLR(d, s) (__FDS_BITS (s)[__FDELT(d)] &= ~__FDMASK(d)) > > +#define __FD_ISSET(d, s) ((__FDS_BITS (s)[__FDELT(d)] & __FDMASK(d)) > != 0) > > diff --git a/recipes/glibc/glibc-2.10.1/generic-bits_time.h > b/recipes/glibc/glibc-2.10.1/generic-bits_time.h > > new file mode 100644 > > index 0000000..b3184d1 > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/generic-bits_time.h > > @@ -0,0 +1,75 @@ > > +/* System-dependent timing definitions. Generic version. > > + Copyright (C) 1996,1997,1999-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 > > + 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. */ > > + > > +/* > > + * Never include this file directly; use <time.h> instead. > > + */ > > + > > +#ifndef __need_timeval > > +# ifndef _BITS_TIME_H > > +# define _BITS_TIME_H 1 > > + > > +/* ISO/IEC 9899:1990 7.12.1: <time.h> > > + The macro `CLOCKS_PER_SEC' is the number per second of the value > > + returned by the `clock' function. */ > > +/* CAE XSH, Issue 4, Version 2: <time.h> > > + The value of CLOCKS_PER_SEC is required to be 1 million on all > > + XSI-conformant systems. */ > > +# define CLOCKS_PER_SEC 1000000l > > + > > +# if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K > > +/* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK > > + presents the real value for clock ticks per second for the system. > */ > > +# include <bits/types.h> > > +extern long int __sysconf (int); > > +# define CLK_TCK ((__clock_t) __sysconf (2)) /* 2 is _SC_CLK_TCK */ > > +# endif > > + > > +# ifdef __USE_POSIX199309 > > +/* Identifier for system-wide realtime clock. */ > > +# define CLOCK_REALTIME 0 > > +/* Monotonic system-wide clock. */ > > +# define CLOCK_MONOTONIC 1 > > +/* High-resolution timer from the CPU. */ > > +# define CLOCK_PROCESS_CPUTIME_ID 2 > > +/* Thread-specific CPU-time clock. */ > > +# define CLOCK_THREAD_CPUTIME_ID 3 > > + > > +/* Flag to indicate time is absolute. */ > > +# define TIMER_ABSTIME 1 > > +# endif > > + > > +# endif /* bits/time.h */ > > +#endif > > + > > +#ifdef __need_timeval > > +# undef __need_timeval > > +# ifndef _STRUCT_TIMEVAL > > +# define _STRUCT_TIMEVAL 1 > > +# include <bits/types.h> > > + > > +/* A time value that is accurate to the nearest > > + microsecond but also has a range of years. */ > > +struct timeval > > + { > > + __time_t tv_sec; /* Seconds. */ > > + __suseconds_t tv_usec; /* Microseconds. */ > > + }; > > +# endif /* struct timeval */ > > +#endif /* need timeval */ > > diff --git a/recipes/glibc/glibc-2.10.1/generic-bits_types.h > b/recipes/glibc/glibc-2.10.1/generic-bits_types.h > > new file mode 100644 > > index 0000000..65c8a9f > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/generic-bits_types.h > > @@ -0,0 +1,200 @@ > > +/* bits/types.h -- definitions of __*_t types underlying *_t types. > > + Copyright (C) 2002, 2003, 2004, 2005 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. */ > > + > > +/* > > + * Never include this file directly; use <sys/types.h> instead. > > + */ > > + > > +#ifndef _BITS_TYPES_H > > +#define _BITS_TYPES_H 1 > > + > > +#include <features.h> > > +#include <bits/wordsize.h> > > + > > +#define __need_size_t > > +#include <stddef.h> > > + > > +/* Convenience types. */ > > +typedef unsigned char __u_char; > > +typedef unsigned short int __u_short; > > +typedef unsigned int __u_int; > > +typedef unsigned long int __u_long; > > + > > +/* Fixed-size types, underlying types depend on word size and compiler. > */ > > +typedef signed char __int8_t; > > +typedef unsigned char __uint8_t; > > +typedef signed short int __int16_t; > > +typedef unsigned short int __uint16_t; > > +typedef signed int __int32_t; > > +typedef unsigned int __uint32_t; > > +#if __WORDSIZE == 64 > > +typedef signed long int __int64_t; > > +typedef unsigned long int __uint64_t; > > +#elif defined __GLIBC_HAVE_LONG_LONG > > +__extension__ typedef signed long long int __int64_t; > > +__extension__ typedef unsigned long long int __uint64_t; > > +#endif > > + > > +/* quad_t is also 64 bits. */ > > +#if __WORDSIZE == 64 > > +typedef long int __quad_t; > > +typedef unsigned long int __u_quad_t; > > +#elif defined __GLIBC_HAVE_LONG_LONG > > +__extension__ typedef long long int __quad_t; > > +__extension__ typedef unsigned long long int __u_quad_t; > > +#else > > +typedef struct > > +{ > > + long __val[2]; > > +} __quad_t; > > +typedef struct > > +{ > > + __u_long __val[2]; > > +} __u_quad_t; > > +#endif > > + > > + > > +/* The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE > > + macros for each of the OS types we define below. The definitions > > + of those macros must use the following macros for underlying types. > > + We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and > unsigned > > + variants of each of the following integer types on this machine. > > + > > + 16 -- "natural" 16-bit type (always short) > > + 32 -- "natural" 32-bit type (always int) > > + 64 -- "natural" 64-bit type (long or long long) > > + LONG32 -- 32-bit type, traditionally long > > + QUAD -- 64-bit type, always long long > > + WORD -- natural type of __WORDSIZE bits (int or long) > > + LONGWORD -- type of __WORDSIZE bits, traditionally long > > + > > + We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the > > + conventional uses of `long' or `long long' type modifiers match the > > + types we define, even when a less-adorned type would be the same > size. > > + This matters for (somewhat) portably writing printf/scanf formats for > > + these types, where using the appropriate l or ll format modifiers can > > + make the typedefs and the formats match up across all GNU platforms. > If > > + we used `long' when it's 64 bits where `long long' is expected, then > the > > + compiler would warn about the formats not matching the argument > types, > > + and the programmer changing them to shut up the compiler would break > the > > + program's portability. > > + > > + Here we assume what is presently the case in all the GCC > configurations > > + we support: long long is always 64 bits, long is always word/address > size, > > + and int is always 32 bits. */ > > + > > +#define __S16_TYPE short int > > +#define __U16_TYPE unsigned short int > > +#define __S32_TYPE int > > +#define __U32_TYPE unsigned int > > +#define __SLONGWORD_TYPE long int > > +#define __ULONGWORD_TYPE unsigned long int > > +#if __WORDSIZE == 32 > > +# define __SQUAD_TYPE __quad_t > > +# define __UQUAD_TYPE __u_quad_t > > +# define __SWORD_TYPE int > > +# define __UWORD_TYPE unsigned int > > +# define __SLONG32_TYPE long int > > +# define __ULONG32_TYPE unsigned long int > > +# define __S64_TYPE __quad_t > > +# define __U64_TYPE __u_quad_t > > +/* We want __extension__ before typedef's that use nonstandard base > types > > + such as `long long' in C89 mode. */ > > +# define __STD_TYPE __extension__ typedef > > +#elif __WORDSIZE == 64 > > +# define __SQUAD_TYPE long int > > +# define __UQUAD_TYPE unsigned long int > > +# define __SWORD_TYPE long int > > +# define __UWORD_TYPE unsigned long int > > +# define __SLONG32_TYPE int > > +# define __ULONG32_TYPE unsigned int > > +# define __S64_TYPE long int > > +# define __U64_TYPE unsigned long int > > +/* No need to mark the typedef with __extension__. */ > > +# define __STD_TYPE typedef > > +#else > > +# error > > +#endif > > +#include <bits/typesizes.h> /* Defines __*_T_TYPE macros. */ > > + > > + > > +__STD_TYPE __DEV_T_TYPE __dev_t; /* Type of device numbers. */ > > +__STD_TYPE __UID_T_TYPE __uid_t; /* Type of user identifications. > */ > > +__STD_TYPE __GID_T_TYPE __gid_t; /* Type of group identifications. > */ > > +__STD_TYPE __INO_T_TYPE __ino_t; /* Type of file serial numbers. > */ > > +__STD_TYPE __INO64_T_TYPE __ino64_t; /* Type of file serial numbers > (LFS).*/ > > +__STD_TYPE __MODE_T_TYPE __mode_t; /* Type of file attribute > bitmasks. */ > > +__STD_TYPE __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */ > > +__STD_TYPE __OFF_T_TYPE __off_t; /* Type of file sizes and > offsets. */ > > +__STD_TYPE __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets > (LFS). */ > > +__STD_TYPE __PID_T_TYPE __pid_t; /* Type of process > identifications. */ > > +__STD_TYPE __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */ > > +__STD_TYPE __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */ > > +__STD_TYPE __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. > */ > > +__STD_TYPE __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement > (LFS). */ > > +__STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */ > > +__STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */ > > +__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */ > > +__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of > microseconds. */ > > + > > +__STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. > */ > > +__STD_TYPE __SWBLK_T_TYPE __swblk_t; /* Type of a swap block maybe? > */ > > +__STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */ > > + > > +/* Clock ID used in clock and timer functions. */ > > +__STD_TYPE __CLOCKID_T_TYPE __clockid_t; > > + > > +/* Timer ID returned by `timer_create'. */ > > +__STD_TYPE __TIMER_T_TYPE __timer_t; > > + > > +/* Type to represent block size. */ > > +__STD_TYPE __BLKSIZE_T_TYPE __blksize_t; > > + > > +/* Types from the Large File Support interface. */ > > + > > +/* Type to count number of disk blocks. */ > > +__STD_TYPE __BLKCNT_T_TYPE __blkcnt_t; > > +__STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t; > > + > > +/* Type to count file system blocks. */ > > +__STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t; > > +__STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t; > > + > > +/* Type to count file system nodes. */ > > +__STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t; > > +__STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t; > > + > > +__STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error. > */ > > + > > +/* These few don't really vary by system, they always correspond > > + to one of the other defined types. */ > > +typedef __off64_t __loff_t; /* Type of file sizes and offsets (LFS). > */ > > +typedef __quad_t *__qaddr_t; > > +typedef char *__caddr_t; > > + > > +/* Duplicates info from stdint.h but this is used in unistd.h. */ > > +__STD_TYPE __SWORD_TYPE __intptr_t; > > + > > +/* Duplicate info from sys/socket.h. */ > > +__STD_TYPE __U32_TYPE __socklen_t; > > + > > + > > +#undef __STD_TYPE > > + > > +#endif /* bits/types.h */ > > diff --git a/recipes/glibc/glibc-2.10.1/generic-bits_typesizes.h > b/recipes/glibc/glibc-2.10.1/generic-bits_typesizes.h > > new file mode 100644 > > index 0000000..e9226c4 > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/generic-bits_typesizes.h > > @@ -0,0 +1,66 @@ > > +/* bits/typesizes.h -- underlying types for *_t. Generic version. > > + Copyright (C) 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 > > + 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 _BITS_TYPES_H > > +# error "Never include <bits/typesizes.h> directly; use <sys/types.h> > instead." > > +#endif > > + > > +#ifndef _BITS_TYPESIZES_H > > +#define _BITS_TYPESIZES_H 1 > > + > > +/* See <bits/types.h> for the meaning of these macros. This file exists > so > > + that <bits/types.h> need not vary across different GNU platforms. */ > > + > > +#define __DEV_T_TYPE __UQUAD_TYPE > > +#define __UID_T_TYPE __U32_TYPE > > +#define __GID_T_TYPE __U32_TYPE > > +#define __INO_T_TYPE __ULONGWORD_TYPE > > +#define __INO64_T_TYPE __UQUAD_TYPE > > +#define __MODE_T_TYPE __U32_TYPE > > +#define __NLINK_T_TYPE __UWORD_TYPE > > +#define __OFF_T_TYPE __SLONGWORD_TYPE > > +#define __OFF64_T_TYPE __SQUAD_TYPE > > +#define __PID_T_TYPE __S32_TYPE > > +#define __RLIM_T_TYPE __ULONGWORD_TYPE > > +#define __RLIM64_T_TYPE __UQUAD_TYPE > > +#define __BLKCNT_T_TYPE __SLONGWORD_TYPE > > +#define __BLKCNT64_T_TYPE __SQUAD_TYPE > > +#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE > > +#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE > > +#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE > > +#define __FSFILCNT64_T_TYPE __UQUAD_TYPE > > +#define __ID_T_TYPE __U32_TYPE > > +#define __CLOCK_T_TYPE __SLONGWORD_TYPE > > +#define __TIME_T_TYPE __SLONGWORD_TYPE > > +#define __USECONDS_T_TYPE __U32_TYPE > > +#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE > > +#define __DADDR_T_TYPE __S32_TYPE > > +#define __SWBLK_T_TYPE __SLONGWORD_TYPE > > +#define __KEY_T_TYPE __S32_TYPE > > +#define __CLOCKID_T_TYPE __S32_TYPE > > +#define __TIMER_T_TYPE void * > > +#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE > > +#define __FSID_T_TYPE struct { int __val[2]; } > > +#define __SSIZE_T_TYPE __SWORD_TYPE > > + > > +/* Number of descriptors that can fit in an `fd_set'. */ > > +#define __FD_SETSIZE 1024 > > + > > + > > +#endif /* bits/typesizes.h */ > > diff --git > a/recipes/glibc/glibc-2.10.1/glibc-arm-IO-acquire-lock-fix.diff > b/recipes/glibc/glibc-2.10.1/glibc-arm-IO-acquire-lock-fix.diff > > new file mode 100644 > > index 0000000..a552cf0 > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/glibc-arm-IO-acquire-lock-fix.diff > > @@ -0,0 +1,13 @@ > > +Arm needs a similar fix as > http://sourceware.org/ml/libc-ports/2007-12/msg00000.html > > + > > +--- /tmp/stdio-lock.h 2008-03-04 18:51:15.555038993 +0100 > > ++++ glibc-2.7/ports/sysdeps/unix/sysv/linux/arm/bits/stdio-lock.h > 2008-03-04 18:51:28.445035052 +0100 > > +@@ -50,6 +50,8 @@ > > + _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, > (_fp)); \ > > + _IO_flockfile (_fp) > > + > > ++# define _IO_acquire_lock_clear_flags2(_fp) _IO_acquire_lock (_fp) > > ++ > > + # define _IO_release_lock(_fp) \ > > + _IO_funlockfile (_fp); > \ > > + _IO_cleanup_region_end (0) > > diff --git a/recipes/glibc/glibc-2.10.1/glibc-check_pf.patch > b/recipes/glibc/glibc-2.10.1/glibc-check_pf.patch > > new file mode 100644 > > index 0000000..3cff6bb > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/glibc-check_pf.patch > > @@ -0,0 +1,343 @@ > > +From libc-ports-return-550-listarch-libc-ports=sources dot redhat dot > com at sourceware dot org Tue Oct 31 17:37:21 2006 > > +Return-Path: <libc-ports-return-550-listarch-libc-ports=sources dot > redhat dot com at sourceware dot org> > > +Delivered-To: listarch-libc-ports at sources dot redhat dot com > > +Received: (qmail 17273 invoked by alias); 31 Oct 2006 17:37:20 -0000 > > +Received: (qmail 17262 invoked by uid 22791); 31 Oct 2006 17:37:19 -0000 > > +X-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,TW_CP > > +X-Spam-Check-By: sourceware.org > > +Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) > by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Tue, 31 Oct 2006 17:37:11 > +0000 > > +Received: from drow by nevyn.them.org with local (Exim 4.54) id > 1GexXw-0007Dj-30; Tue, 31 Oct 2006 12:37:08 -0500 > > +Date: Tue, 31 Oct 2006 12:37:08 -0500 > > +From: Daniel Jacobowitz <drow at false dot org> > > +To: Mike Frysinger <vapier at gentoo dot org> > > +Cc: libc-ports at sourceware dot org, Philip Balister <philip dot > balister at gmail dot com> > > +Subject: Re: Problem with glibc-2.5 on ARM > > +Message-ID: <20061031173708.GJ20468@nevyn.them.org> > > +References: <499146270610241149ibe030e0nd9d6b177a95b346e@mail.gmail.com> > <499146270610241254u7cadf63ej2edf05cedbc5266f@mail.gmail.com> < > 20061024195837.GA20181@nevyn.them.org> < > 200610291954.27022.vapier@gentoo.org> > > +MIME-Version: 1.0 > > +Content-Type: text/plain; charset=us-ascii > > +Content-Disposition: inline > > +In-Reply-To: <200610291954 dot 27022 dot vapier at gentoo dot org> > > +User-Agent: Mutt/1.5.13 (2006-08-11) > > +X-IsSubscribed: yes > > +Mailing-List: contact libc-ports-help at sourceware dot org; run by > ezmlm > > +Precedence: bulk > > +List-Subscribe: <mailto:libc-ports-subscribe at sourceware dot org> > > +List-Post: <mailto:libc-ports at sourceware dot org> > > +List-Help: <mailto:libc-ports-help at sourceware dot org>, < > http://sourceware dot org/lists dot html#faqs> > > +Sender: libc-ports-owner at sourceware dot org > > +Delivered-To: mailing list libc-ports at sourceware dot org > > + > > +On Sun, Oct 29, 2006 at 07:54:25PM -0500, Mike Frysinger wrote: > > +> On Tuesday 24 October 2006 15:58, Daniel Jacobowitz wrote: > > +> > ARM is going to need a slightly different version of that file, I > > +> > guess. > > +> > > +> would declaring req with attribute packed not help ? > > +> -mike > > + > > +Nope. "struct rtgenmsg" would still have size 4. > > + > > +Philip, are you still at all interested in this for the old ABI? > > +I don't have time to test this patch right now, but I think it > > +will work. > > + > > +-- > > +Daniel Jacobowitz > > +CodeSourcery > > + > > +2006-10-31 Daniel Jacobowitz <dan@codesourcery.com> > > + > > + * sysdeps/unix/sysv/linux/arm/check_pf.c: New file. > > + * sysdeps/unix/sysv/linux/arm/eabi/check_pf.c: New file. > > + > > +Index: sysdeps/unix/sysv/linux/arm/check_pf.c > > +=================================================================== > > +RCS file: sysdeps/unix/sysv/linux/arm/check_pf.c > > +diff -N sysdeps/unix/sysv/linux/arm/check_pf.c > > +--- /dev/null 1 Jan 1970 00:00:00 -0000 > > ++++ sysdeps/unix/sysv/linux/arm/check_pf.c 31 Oct 2006 17:29:58 > -0000 > > +@@ -0,0 +1,274 @@ > > ++/* Determine protocol families for which interfaces exist. ARM Linux > version. > > ++ Copyright (C) 2003, 2006 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 <assert.h> > > ++#include <errno.h> > > ++#include <ifaddrs.h> > > ++#include <netdb.h> > > ++#include <stddef.h> > > ++#include <string.h> > > ++#include <time.h> > > ++#include <unistd.h> > > ++#include <sys/socket.h> > > ++ > > ++#include <asm/types.h> > > ++#include <linux/netlink.h> > > ++#include <linux/rtnetlink.h> > > ++ > > ++#include <not-cancel.h> > > ++#include <kernel-features.h> > > ++ > > ++ > > ++#ifndef IFA_F_TEMPORARY > > ++# define IFA_F_TEMPORARY IFA_F_SECONDARY > > ++#endif > > ++#ifndef IFA_F_HOMEADDRESS > > ++# define IFA_F_HOMEADDRESS 0 > > ++#endif > > ++ > > ++ > > ++static int > > ++make_request (int fd, pid_t pid, bool *seen_ipv4, bool *seen_ipv6, > > ++ struct in6addrinfo **in6ai, size_t *in6ailen) > > ++{ > > ++ struct req > > ++ { > > ++ struct nlmsghdr nlh; > > ++ struct rtgenmsg g; > > ++ } req; > > ++ struct sockaddr_nl nladdr; > > ++ > > ++ /* struct rtgenmsg consists of a single byte but the ARM ABI rounds > > ++ it up to a word. Clear the padding explicitly here. */ > > ++ assert (sizeof (req.g) == 4); > > ++ memset (&req.g, '\0', sizeof (req.g)); > > ++ > > ++ req.nlh.nlmsg_len = sizeof (req); > > ++ req.nlh.nlmsg_type = RTM_GETADDR; > > ++ req.nlh.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST; > > ++ req.nlh.nlmsg_pid = 0; > > ++ req.nlh.nlmsg_seq = time (NULL); > > ++ req.g.rtgen_family = AF_UNSPEC; > > ++ > > ++ memset (&nladdr, '\0', sizeof (nladdr)); > > ++ nladdr.nl_family = AF_NETLINK; > > ++ > > ++ if (TEMP_FAILURE_RETRY (__sendto (fd, (void *) &req, sizeof (req), 0, > > ++ (struct sockaddr *) &nladdr, > > ++ sizeof (nladdr))) < 0) > > ++ return -1; > > ++ > > ++ *seen_ipv4 = false; > > ++ *seen_ipv6 = false; > > ++ > > ++ bool done = false; > > ++ char buf[4096]; > > ++ struct iovec iov = { buf, sizeof (buf) }; > > ++ struct in6ailist > > ++ { > > ++ struct in6addrinfo info; > > ++ struct in6ailist *next; > > ++ } *in6ailist = NULL; > > ++ size_t in6ailistlen = 0; > > ++ > > ++ do > > ++ { > > ++ struct msghdr msg = > > ++ { > > ++ (void *) &nladdr, sizeof (nladdr), > > ++ &iov, 1, > > ++ NULL, 0, > > ++ 0 > > ++ }; > > ++ > > ++ ssize_t read_len = TEMP_FAILURE_RETRY (__recvmsg (fd, &msg, 0)); > > ++ if (read_len < 0) > > ++ return -1; > > ++ > > ++ if (msg.msg_flags & MSG_TRUNC) > > ++ return -1; > > ++ > > ++ struct nlmsghdr *nlmh; > > ++ for (nlmh = (struct nlmsghdr *) buf; > > ++ NLMSG_OK (nlmh, (size_t) read_len); > > ++ nlmh = (struct nlmsghdr *) NLMSG_NEXT (nlmh, read_len)) > > ++ { > > ++ if (nladdr.nl_pid != 0 || (pid_t) nlmh->nlmsg_pid != pid > > ++ || nlmh->nlmsg_seq != req.nlh.nlmsg_seq) > > ++ continue; > > ++ > > ++ if (nlmh->nlmsg_type == RTM_NEWADDR) > > ++ { > > ++ struct ifaddrmsg *ifam = (struct ifaddrmsg *) NLMSG_DATA > (nlmh); > > ++ > > ++ switch (ifam->ifa_family) > > ++ { > > ++ case AF_INET: > > ++ *seen_ipv4 = true; > > ++ break; > > ++ case AF_INET6: > > ++ *seen_ipv6 = true; > > ++ > > ++ if (ifam->ifa_flags & (IFA_F_DEPRECATED > > ++ | IFA_F_TEMPORARY > > ++ | IFA_F_HOMEADDRESS)) > > ++ { > > ++ struct rtattr *rta = IFA_RTA (ifam); > > ++ size_t len = (nlmh->nlmsg_len > > ++ - NLMSG_LENGTH (sizeof (*ifam))); > > ++ void *local = NULL; > > ++ void *address = NULL; > > ++ while (RTA_OK (rta, len)) > > ++ { > > ++ switch (rta->rta_type) > > ++ { > > ++ case IFA_LOCAL: > > ++ local = RTA_DATA (rta); > > ++ break; > > ++ > > ++ case IFA_ADDRESS: > > ++ address = RTA_DATA (rta); > > ++ break; > > ++ } > > ++ > > ++ rta = RTA_NEXT (rta, len); > > ++ } > > ++ > > ++ struct in6ailist *newp = alloca (sizeof (*newp)); > > ++ newp->info.flags = (((ifam->ifa_flags & > IFA_F_DEPRECATED) > > ++ ? in6ai_deprecated : 0) > > ++ | ((ifam->ifa_flags > > ++ & IFA_F_TEMPORARY) > > ++ ? in6ai_temporary : 0) > > ++ | ((ifam->ifa_flags > > ++ & IFA_F_HOMEADDRESS) > > ++ ? in6ai_homeaddress : 0)); > > ++ memcpy (newp->info.addr, address ?: local, > > ++ sizeof (newp->info.addr)); > > ++ newp->next = in6ailist; > > ++ in6ailist = newp; > > ++ ++in6ailistlen; > > ++ } > > ++ break; > > ++ default: > > ++ /* Ignore. */ > > ++ break; > > ++ } > > ++ } > > ++ else if (nlmh->nlmsg_type == NLMSG_DONE) > > ++ /* We found the end, leave the loop. */ > > ++ done = true; > > ++ } > > ++ } > > ++ while (! done); > > ++ > > ++ close_not_cancel_no_status (fd); > > ++ > > ++ if (in6ailist != NULL) > > ++ { > > ++ *in6ai = malloc (in6ailistlen * sizeof (**in6ai)); > > ++ if (*in6ai == NULL) > > ++ return -1; > > ++ > > ++ *in6ailen = in6ailistlen; > > ++ > > ++ do > > ++ { > > ++ (*in6ai)[--in6ailistlen] = in6ailist->info; > > ++ in6ailist = in6ailist->next; > > ++ } > > ++ while (in6ailist != NULL); > > ++ } > > ++ > > ++ return 0; > > ++} > > ++ > > ++ > > ++/* We don't know if we have NETLINK support compiled in in our > > ++ Kernel. */ > > ++#if __ASSUME_NETLINK_SUPPORT == 0 > > ++/* Define in ifaddrs.h. */ > > ++extern int __no_netlink_support attribute_hidden; > > ++#else > > ++# define __no_netlink_support 0 > > ++#endif > > ++ > > ++ > > ++void > > ++attribute_hidden > > ++__check_pf (bool *seen_ipv4, bool *seen_ipv6, > > ++ struct in6addrinfo **in6ai, size_t *in6ailen) > > ++{ > > ++ *in6ai = NULL; > > ++ *in6ailen = 0; > > ++ > > ++ if (! __no_netlink_support) > > ++ { > > ++ int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE); > > ++ > > ++ struct sockaddr_nl nladdr; > > ++ memset (&nladdr, '\0', sizeof (nladdr)); > > ++ nladdr.nl_family = AF_NETLINK; > > ++ > > ++ socklen_t addr_len = sizeof (nladdr); > > ++ > > ++ if (fd >= 0 > > ++ && __bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == > 0 > > ++ && __getsockname (fd, (struct sockaddr *) &nladdr, &addr_len) > == 0 > > ++ && make_request (fd, nladdr.nl_pid, seen_ipv4, seen_ipv6, > > ++ in6ai, in6ailen) == 0) > > ++ /* It worked. */ > > ++ return; > > ++ > > ++ if (fd >= 0) > > ++ __close (fd); > > ++ > > ++#if __ASSUME_NETLINK_SUPPORT == 0 > > ++ /* Remember that there is no netlink support. */ > > ++ __no_netlink_support = 1; > > ++#else > > ++ /* We cannot determine what interfaces are available. Be > > ++ pessimistic. */ > > ++ *seen_ipv4 = true; > > ++ *seen_ipv6 = true; > > ++#endif > > ++ } > > ++ > > ++#if __ASSUME_NETLINK_SUPPORT == 0 > > ++ /* No netlink. Get the interface list via getifaddrs. */ > > ++ struct ifaddrs *ifa = NULL; > > ++ if (getifaddrs (&ifa) != 0) > > ++ { > > ++ /* We cannot determine what interfaces are available. Be > > ++ pessimistic. */ > > ++ *seen_ipv4 = true; > > ++ *seen_ipv6 = true; > > ++ return; > > ++ } > > ++ > > ++ struct ifaddrs *runp; > > ++ for (runp = ifa; runp != NULL; runp = runp->ifa_next) > > ++ if (runp->ifa_addr->sa_family == PF_INET) > > ++ *seen_ipv4 = true; > > ++ else if (runp->ifa_addr->sa_family == PF_INET6) > > ++ *seen_ipv6 = true; > > ++ > > ++ (void) freeifaddrs (ifa); > > ++#endif > > ++} > > +Index: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c > > +=================================================================== > > +RCS file: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c > > +diff -N sysdeps/unix/sysv/linux/arm/eabi/check_pf.c > > +--- /dev/null 1 Jan 1970 00:00:00 -0000 > > ++++ sysdeps/unix/sysv/linux/arm/eabi/check_pf.c 31 Oct 2006 > 17:29:58 -0000 > > +@@ -0,0 +1 @@ > > ++#include <sysdeps/unix/sysv/linux/check_pf.c> > > + > > diff --git a/recipes/glibc/glibc-2.10.1/ldd-unbash.patch > b/recipes/glibc/glibc-2.10.1/ldd-unbash.patch > > new file mode 100644 > > index 0000000..2fb8854 > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/ldd-unbash.patch > > @@ -0,0 +1,11 @@ > > +--- glibc-2.5/elf/ldd.bash.in.org 2006-04-30 16:06:20.000000000 > +0000 > > ++++ glibc-2.5/elf/ldd.bash.in 2007-03-30 19:18:57.000000000 +0000 > > +@@ -110,7 +110,7 @@ > > + # environments where the executed program might not have permissions > > + # to write to the console/tty. But only bash 3.x supports the pipefail > > + # option, and we don't bother to handle the case for older bash > versions. > > +-if set -o pipefail 2> /dev/null; then > > ++if false; then > > + try_trace() { > > + eval $add_env '"$@"' | cat > > + } > > diff --git a/recipes/glibc/glibc-2.10.1/ldsocache-varrun.patch > b/recipes/glibc/glibc-2.10.1/ldsocache-varrun.patch > > new file mode 100644 > > index 0000000..9994d4f > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/ldsocache-varrun.patch > > @@ -0,0 +1,18 @@ > > +This patch moves ld.so.cache from /etc to /var/run. This is for devices > > +where /etc is JFFS2 or CRAMFS but /var is a ramdisk. > > + > > +# > > +# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher > > +# > > + > > +--- libc/sysdeps/generic/dl-cache.h~ldsocache-varrun > > ++++ libc/sysdeps/generic/dl-cache.h > > +@@ -29,7 +29,7 @@ > > + #endif > > + > > + #ifndef LD_SO_CACHE > > +-# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache" > > ++# define LD_SO_CACHE "/var/run/ld.so.cache" > > + #endif > > + > > + #ifndef add_system_dir > > diff --git a/recipes/glibc/glibc-2.10.1/march-i686.patch > b/recipes/glibc/glibc-2.10.1/march-i686.patch > > new file mode 100644 > > index 0000000..0461603 > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/march-i686.patch > > @@ -0,0 +1,38 @@ > > +2007-02-15 Khem Raj <kraj@xxxxxxxxxx> > > + > > + * sysdeps/unix/sysv/linux/i386/sysdep.h: Re-define __i686. > > + * nptl/sysdeps/pthread/pt-initfini.c: Ditto. > > + > > + > > + > > +Index: sysdeps/unix/sysv/linux/i386/sysdep.h > > +=================================================================== > > +--- sysdeps/unix/sysv/linux/i386/sysdep.h (revision 1469) > > ++++ sysdeps/unix/sysv/linux/i386/sysdep.h (working copy) > > +@@ -29,6 +29,10 @@ > > + #include <dl-sysdep.h> > > + #include <tls.h> > > + > > ++#if defined __i686 && defined __ASSEMBLER__ > > ++#undef __i686 > > ++#define __i686 __i686 > > ++#endif > > + > > + /* For Linux we can use the system call table in the header file > > + /usr/include/asm/unistd.h > > +Index: nptl/sysdeps/pthread/pt-initfini.c > > +=================================================================== > > +--- nptl/sysdeps/pthread/pt-initfini.c (revision 1469) > > ++++ nptl/sysdeps/pthread/pt-initfini.c (working copy) > > +@@ -45,6 +45,11 @@ > > + /* Embed an #include to pull in the alignment and .end directives. */ > > + asm ("\n#include \"defs.h\""); > > + > > ++asm ("\n#if defined __i686 && defined __ASSEMBLER__"); > > ++asm ("\n#undef __i686"); > > ++asm ("\n#define __i686 __i686"); > > ++asm ("\n#endif"); > > ++ > > + /* The initial common code ends here. */ > > + asm ("\n/*@HEADER_ENDS*/"); > > + > > diff --git a/recipes/glibc/glibc-2.10.1/no-z-defs.patch > b/recipes/glibc/glibc-2.10.1/no-z-defs.patch > > new file mode 100644 > > index 0000000..48c6a41 > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/no-z-defs.patch > > @@ -0,0 +1,9 @@ > > +Create a configparms file which disabled no-z-defs. > > +This is required to build a working glibs for sh4, > > +without there will be a lot linker errors during the build. > > + > > +diff -duNr libc.orig/configparms libc/configparms > > +--- libc.orig/configparms 1970-01-01 10:00:00.000000000 +1000 > > ++++ libc/configparms 2006-02-23 14:08:18.000000000 +1100 > > +@@ -0,0 +1 @@ > > ++no-z-defs=yes > > diff --git a/recipes/glibc/glibc-2.10.1/nptl-crosscompile.patch > b/recipes/glibc/glibc-2.10.1/nptl-crosscompile.patch > > new file mode 100644 > > index 0000000..18a46ad > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/nptl-crosscompile.patch > > @@ -0,0 +1,26 @@ > > +--- glibc-2.4/nptl/sysdeps/pthread/configure.in.ark 2006-03-12 > 00:41:40.000000000 +0100 > > ++++ glibc-2.4/nptl/sysdeps/pthread/configure.in 2006-03-12 > 00:44:08.000000000 +0100 > > +@@ -45,5 +45,6 @@ > > + AC_MSG_ERROR([the compiler must support C cleanup handling]) > > + fi > > + else > > +- AC_MSG_ERROR(forced unwind support is required) > > ++ AC_MSG_WARN([forced unwind support is required, can't be verified > while crosscompiling]) > > ++ AC_DEFINE(HAVE_FORCED_UNWIND) > > + fi > > +--- glibc-2.4/nptl/sysdeps/pthread/configure.ark 2006-03-12 > 00:42:47.000000000 +0100 > > ++++ glibc-2.4/nptl/sysdeps/pthread/configure 2006-03-12 > 00:44:08.000000000 +0100 > > +@@ -153,7 +153,10 @@ > > + { (exit 1); exit 1; }; } > > + fi > > + else > > +- { { echo "$as_me:$LINENO: error: forced unwind support is required" > >&5 > > +-echo "$as_me: error: forced unwind support is required" >&2;} > > +- { (exit 1); exit 1; }; } > > ++ { echo "$as_me:$LINENO: WARNING: forced unwind support is required, > can't be verified while crosscompiling" >&5 > > ++echo "$as_me: WARNING: forced unwind support is required, can't be > verified while crosscompiling" >&2;} > > ++ cat >>confdefs.h <<\_ACEOF > > ++#define HAVE_FORCED_UNWIND 1 > > ++_ACEOF > > ++ > > + fi > > diff --git a/recipes/glibc/glibc-2.10.1/nscd-init.patch > b/recipes/glibc/glibc-2.10.1/nscd-init.patch > > new file mode 100644 > > index 0000000..884609a > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/nscd-init.patch > > @@ -0,0 +1,39 @@ > > +--- nscd/nscd.init > > ++++ nscd/nscd.init > > +@@ -48,9 +48,8 @@ > > + > > + start () { > > + [ -d /var/run/nscd ] || mkdir /var/run/nscd > > +- [ -d /var/db/nscd ] || mkdir /var/db/nscd > > + echo -n $"Starting $prog: " > > +- daemon /usr/sbin/nscd > > ++ /usr/sbin/nscd > > + RETVAL=$? > > + echo > > + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nscd > > +@@ -67,12 +66,10 @@ > > + # a non-privileged user > > + rm -f /var/run/nscd/nscd.pid > > + rm -f /var/run/nscd/socket > > +- success $"$prog shutdown" > > +- else > > +- failure $"$prog shutdown" > > + fi > > +- echo > > +- return $RETVAL > > ++ echo "Done." > > ++ # If nscd did not run, return 0 according to LSB. > > ++ return 0 > > + } > > + > > + restart() { > > +@@ -104,7 +101,8 @@ > > + ;; > > + force-reload | reload) > > + echo -n $"Reloading $prog: " > > +- killproc /usr/sbin/nscd -HUP > > ++ # Use killall, initscripts-1.0-r115 don't support -HUP yet. > > ++ killall -HUP /usr/sbin/nscd > > + RETVAL=$? > > + echo > > + ;; > > diff --git a/recipes/glibc/glibc-2.10.1/powerpc-sqrt-hack.diff > b/recipes/glibc/glibc-2.10.1/powerpc-sqrt-hack.diff > > new file mode 100644 > > index 0000000..1046efb > > --- /dev/null > > +++ b/recipes/glibc/glibc-2.10.1/powerpc-sqrt-hack.diff > > @@ -0,0 +1,25 @@ > > +diff -Nurd > ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c > glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c > > +--- ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c > 2006-04-14 07:44:30.000000000 +0200 > > ++++ glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c 2006-12-08 > 12:53:32.202227000 +0100 > > +@@ -25,6 +25,9 @@ > > + #include <sysdep.h> > > + #include <ldsodefs.h> > > + > > ++#define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0) > > ++ > > ++ > > + static const double almost_half = 0.5000000000000001; /* 0.5 + 2^-53 */ > > + static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 }; > > + static const ieee_float_shape_type a_inf = {.word = 0x7f800000 }; > > +diff -Nurd > ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c > glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c > > +--- ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c > 2006-04-14 07:44:30.000000000 +0200 > > ++++ glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c 2006-12-08 > 12:53:36.992227000 +0100 > > +@@ -25,6 +25,8 @@ > > + #include <sysdep.h> > > + #include <ldsodefs.h> > > + > > ++#define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0) > > ++ > > + static const float almost_half = 0.50000006; /* 0.5 + 2^-24 */ > > + static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 }; > > + static const ieee_float_shape_type a_inf = {.word = 0x7f800000 }; > > diff --git a/recipes/glibc/glibc_2.10.1.bb b/recipes/glibc/ > glibc_2.10.1.bb > > index 3c2fce8..b29e36a 100644 > > --- a/recipes/glibc/glibc_2.10.1.bb > > +++ b/recipes/glibc/glibc_2.10.1.bb > > @@ -11,9 +11,6 @@ RPROVIDES_${PN}-dev = "libc6-dev virtual-libc-dev" > > BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}" > > TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${layout_includedir}" > > > > - > > -FILESPATHPKG =. "glibc-2.4:" > > - > > GLIBC_ADDONS ?= "ports,nptl,libidn" > > > > GLIBC_BROKEN_LOCALES = " _ER _ET so_ET yn_ER sid_ET tr_TR mn_MN gez_ET > gez_ER bn_BD te_IN" > > -- > > 1.6.4.2 > > > > > > _______________________________________________ > > Openembedded-devel mailing list > > Openembedded-devel@lists.openembedded.org > > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel > > > > _______________________________________________ > Openembedded-devel mailing list > Openembedded-devel@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] glibc 2.9: cleaned up; patches only in local dir 2010-07-15 20:46 [PATCH 1/3] glibc 2.9: cleaned up; patches only in local dir Frans Meulenbroeks 2010-07-15 20:46 ` [PATCH 2/3] glibc 2.10.1: " Frans Meulenbroeks @ 2010-07-15 21:49 ` Khem Raj 2010-07-17 7:56 ` Khem Raj 2 siblings, 0 replies; 9+ messages in thread From: Khem Raj @ 2010-07-15 21:49 UTC (permalink / raw) To: openembedded-devel On Thu, Jul 15, 2010 at 1:46 PM, Frans Meulenbroeks <fransmeulenbroeks@gmail.com> wrote: > moved all patches to glibc-2.9 > removed references to other dirs. > > Signed-off-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com> Acked-by: Khem Raj <raj.khem@gmail.com> > --- > recipes/glibc/glibc-2.9/arm-longlong.patch | 58 ++ > .../glibc-2.9/arm-lowlevellock-include-tls.patch | 12 + > recipes/glibc/glibc-2.9/arm-memcpy.patch | 758 ++++++++++++++++++++ > recipes/glibc/glibc-2.9/dl-cache-libcmp.patch | 10 + > recipes/glibc/glibc-2.9/fhs-linux-paths.patch | 11 + > recipes/glibc/glibc-2.9/generate-supported.mk | 11 + > recipes/glibc/glibc-2.9/generic-bits_select.h | 35 + > recipes/glibc/glibc-2.9/generic-bits_time.h | 75 ++ > recipes/glibc/glibc-2.9/generic-bits_types.h | 200 +++++ > recipes/glibc/glibc-2.9/generic-bits_typesizes.h | 66 ++ > .../glibc-2.9/glibc-arm-IO-acquire-lock-fix.diff | 13 + > recipes/glibc/glibc-2.9/glibc-check_pf.patch | 343 +++++++++ > recipes/glibc/glibc-2.9/ldd-unbash.patch | 11 + > recipes/glibc/glibc-2.9/ldsocache-varrun.patch | 18 + > recipes/glibc/glibc-2.9/march-i686.patch | 38 + > recipes/glibc/glibc-2.9/no-z-defs.patch | 9 + > recipes/glibc/glibc-2.9/nptl-crosscompile.patch | 26 + > recipes/glibc/glibc-2.9/nscd-init.patch | 39 + > recipes/glibc/glibc-2.9/powerpc-sqrt-hack.diff | 25 + > recipes/glibc/glibc-2.9/tls_i486.patch | 14 + > recipes/glibc/glibc_2.9.bb | 3 - > 21 files changed, 1772 insertions(+), 3 deletions(-) > create mode 100644 recipes/glibc/glibc-2.9/arm-longlong.patch > create mode 100644 recipes/glibc/glibc-2.9/arm-lowlevellock-include-tls.patch > create mode 100644 recipes/glibc/glibc-2.9/arm-memcpy.patch > create mode 100644 recipes/glibc/glibc-2.9/dl-cache-libcmp.patch > create mode 100644 recipes/glibc/glibc-2.9/fhs-linux-paths.patch > create mode 100644 recipes/glibc/glibc-2.9/generate-supported.mk > create mode 100644 recipes/glibc/glibc-2.9/generic-bits_select.h > create mode 100644 recipes/glibc/glibc-2.9/generic-bits_time.h > create mode 100644 recipes/glibc/glibc-2.9/generic-bits_types.h > create mode 100644 recipes/glibc/glibc-2.9/generic-bits_typesizes.h > create mode 100644 recipes/glibc/glibc-2.9/glibc-arm-IO-acquire-lock-fix.diff > create mode 100644 recipes/glibc/glibc-2.9/glibc-check_pf.patch > create mode 100644 recipes/glibc/glibc-2.9/ldd-unbash.patch > create mode 100644 recipes/glibc/glibc-2.9/ldsocache-varrun.patch > create mode 100644 recipes/glibc/glibc-2.9/march-i686.patch > create mode 100644 recipes/glibc/glibc-2.9/no-z-defs.patch > create mode 100644 recipes/glibc/glibc-2.9/nptl-crosscompile.patch > create mode 100644 recipes/glibc/glibc-2.9/nscd-init.patch > create mode 100644 recipes/glibc/glibc-2.9/powerpc-sqrt-hack.diff > create mode 100644 recipes/glibc/glibc-2.9/tls_i486.patch > > diff --git a/recipes/glibc/glibc-2.9/arm-longlong.patch b/recipes/glibc/glibc-2.9/arm-longlong.patch > new file mode 100644 > index 0000000..28aca83 > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/arm-longlong.patch > @@ -0,0 +1,58 @@ > +--- glibc-2.4/stdlib/longlong.h.ark 2006-03-11 22:49:27.000000000 +0100 > ++++ glibc-2.4/stdlib/longlong.h 2006-03-11 22:55:12.000000000 +0100 > +@@ -206,6 +206,14 @@ > + "rI" ((USItype) (bh)), \ > + "r" ((USItype) (al)), \ > + "rI" ((USItype) (bl)) __CLOBBER_CC) > ++/* 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" \ > +@@ -227,7 +235,13 @@ > + : "r" ((USItype) (a)), \ > + "r" ((USItype) (b)) __CLOBBER_CC );} > + #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 > +--- glibc-2.4/ports/sysdeps/arm/mp_clz_tab.c.ark 2006-03-11 22:56:43.000000000 +0100 > ++++ glibc-2.4/ports/sysdeps/arm/mp_clz_tab.c 2006-03-11 22:58:19.000000000 +0100 > +@@ -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 <stdlib/mp_clz_tab.c> > ++#endif > diff --git a/recipes/glibc/glibc-2.9/arm-lowlevellock-include-tls.patch b/recipes/glibc/glibc-2.9/arm-lowlevellock-include-tls.patch > new file mode 100644 > index 0000000..5c8062e > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/arm-lowlevellock-include-tls.patch > @@ -0,0 +1,12 @@ > +Index: glibc-2.9/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h > +=================================================================== > +--- glibc-2.9.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h 2009-06-19 20:54:35.446686910 +0400 > ++++ glibc-2.9/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h 2009-06-19 20:54:43.774683370 +0400 > +@@ -25,6 +25,7 @@ > + #include <atomic.h> > + #include <sysdep.h> > + #include <kernel-features.h> > ++#include <tls.h> > + > + #define FUTEX_WAIT 0 > + #define FUTEX_WAKE 1 > diff --git a/recipes/glibc/glibc-2.9/arm-memcpy.patch b/recipes/glibc/glibc-2.9/arm-memcpy.patch > new file mode 100644 > index 0000000..bc2b3da > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/arm-memcpy.patch > @@ -0,0 +1,758 @@ > +--- /dev/null 2004-02-02 20:32:13.000000000 +0000 > ++++ sysdeps/arm/memmove.S 2004-03-20 18:37:23.000000000 +0000 > +@@ -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-02-02 20:32:13.000000000 +0000 > ++++ sysdeps/arm/bcopy.S 2004-03-20 18:37:48.000000000 +0000 > +@@ -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) > + > +--- /dev/null 2004-02-02 20:32:13.000000000 +0000 > ++++ sysdeps/arm/memcpy.S 2004-05-02 14:33:22.000000000 +0100 > +@@ -0,0 +1,242 @@ > ++/* > ++ * 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) > ++ > diff --git a/recipes/glibc/glibc-2.9/dl-cache-libcmp.patch b/recipes/glibc/glibc-2.9/dl-cache-libcmp.patch > new file mode 100644 > index 0000000..2fedfa6 > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/dl-cache-libcmp.patch > @@ -0,0 +1,10 @@ > +--- glibc-2.4/elf/Versions.ark 2006-03-11 23:30:09.000000000 +0100 > ++++ glibc-2.4/elf/Versions 2006-03-11 23:31:44.000000000 +0100 > +@@ -63,5 +63,7 @@ > + _dl_debug_state; > + # Pointer protection. > + __pointer_chk_guard; > ++ # for ldconfig > ++ _dl_cache_libcmp; > + } > + } > diff --git a/recipes/glibc/glibc-2.9/fhs-linux-paths.patch b/recipes/glibc/glibc-2.9/fhs-linux-paths.patch > new file mode 100644 > index 0000000..1f32f6d > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/fhs-linux-paths.patch > @@ -0,0 +1,11 @@ > +--- glibc-2.1.1/sysdeps/unix/sysv/linux/paths.h~ Thu May 27 13:16:33 1999 > ++++ glibc-2.1.1/sysdeps/unix/sysv/linux/paths.h Thu May 27 13:17:55 1999 > +@@ -71,7 +71,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.9/generate-supported.mk b/recipes/glibc/glibc-2.9/generate-supported.mk > new file mode 100644 > index 0000000..d2a28c2 > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/generate-supported.mk > @@ -0,0 +1,11 @@ > +#!/usr/bin/make > + > +include $(IN) > + > +all: > + rm -f $(OUT) > + touch $(OUT) > + for locale in $(SUPPORTED-LOCALES); do \ > + [ $$locale = true ] && continue; \ > + echo $$locale | sed 's,/, ,' >> $(OUT); \ > + done > diff --git a/recipes/glibc/glibc-2.9/generic-bits_select.h b/recipes/glibc/glibc-2.9/generic-bits_select.h > new file mode 100644 > index 0000000..47e7ded > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/generic-bits_select.h > @@ -0,0 +1,35 @@ > +/* Copyright (C) 1997, 1998, 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. */ > + > +#ifndef _SYS_SELECT_H > +# error "Never use <bits/select.h> directly; include <sys/select.h> instead." > +#endif > + > + > +/* We don't use `memset' because this would require a prototype and > + the array isn't too big. */ > +#define __FD_ZERO(s) \ > + do { \ > + unsigned int __i; \ > + fd_set *__arr = (s); \ > + for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \ > + __FDS_BITS (__arr)[__i] = 0; \ > + } while (0) > +#define __FD_SET(d, s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d)) > +#define __FD_CLR(d, s) (__FDS_BITS (s)[__FDELT(d)] &= ~__FDMASK(d)) > +#define __FD_ISSET(d, s) ((__FDS_BITS (s)[__FDELT(d)] & __FDMASK(d)) != 0) > diff --git a/recipes/glibc/glibc-2.9/generic-bits_time.h b/recipes/glibc/glibc-2.9/generic-bits_time.h > new file mode 100644 > index 0000000..b3184d1 > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/generic-bits_time.h > @@ -0,0 +1,75 @@ > +/* System-dependent timing definitions. Generic version. > + Copyright (C) 1996,1997,1999-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 > + 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. */ > + > +/* > + * Never include this file directly; use <time.h> instead. > + */ > + > +#ifndef __need_timeval > +# ifndef _BITS_TIME_H > +# define _BITS_TIME_H 1 > + > +/* ISO/IEC 9899:1990 7.12.1: <time.h> > + The macro `CLOCKS_PER_SEC' is the number per second of the value > + returned by the `clock' function. */ > +/* CAE XSH, Issue 4, Version 2: <time.h> > + The value of CLOCKS_PER_SEC is required to be 1 million on all > + XSI-conformant systems. */ > +# define CLOCKS_PER_SEC 1000000l > + > +# if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K > +/* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK > + presents the real value for clock ticks per second for the system. */ > +# include <bits/types.h> > +extern long int __sysconf (int); > +# define CLK_TCK ((__clock_t) __sysconf (2)) /* 2 is _SC_CLK_TCK */ > +# endif > + > +# ifdef __USE_POSIX199309 > +/* Identifier for system-wide realtime clock. */ > +# define CLOCK_REALTIME 0 > +/* Monotonic system-wide clock. */ > +# define CLOCK_MONOTONIC 1 > +/* High-resolution timer from the CPU. */ > +# define CLOCK_PROCESS_CPUTIME_ID 2 > +/* Thread-specific CPU-time clock. */ > +# define CLOCK_THREAD_CPUTIME_ID 3 > + > +/* Flag to indicate time is absolute. */ > +# define TIMER_ABSTIME 1 > +# endif > + > +# endif /* bits/time.h */ > +#endif > + > +#ifdef __need_timeval > +# undef __need_timeval > +# ifndef _STRUCT_TIMEVAL > +# define _STRUCT_TIMEVAL 1 > +# include <bits/types.h> > + > +/* A time value that is accurate to the nearest > + microsecond but also has a range of years. */ > +struct timeval > + { > + __time_t tv_sec; /* Seconds. */ > + __suseconds_t tv_usec; /* Microseconds. */ > + }; > +# endif /* struct timeval */ > +#endif /* need timeval */ > diff --git a/recipes/glibc/glibc-2.9/generic-bits_types.h b/recipes/glibc/glibc-2.9/generic-bits_types.h > new file mode 100644 > index 0000000..65c8a9f > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/generic-bits_types.h > @@ -0,0 +1,200 @@ > +/* bits/types.h -- definitions of __*_t types underlying *_t types. > + Copyright (C) 2002, 2003, 2004, 2005 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. */ > + > +/* > + * Never include this file directly; use <sys/types.h> instead. > + */ > + > +#ifndef _BITS_TYPES_H > +#define _BITS_TYPES_H 1 > + > +#include <features.h> > +#include <bits/wordsize.h> > + > +#define __need_size_t > +#include <stddef.h> > + > +/* Convenience types. */ > +typedef unsigned char __u_char; > +typedef unsigned short int __u_short; > +typedef unsigned int __u_int; > +typedef unsigned long int __u_long; > + > +/* Fixed-size types, underlying types depend on word size and compiler. */ > +typedef signed char __int8_t; > +typedef unsigned char __uint8_t; > +typedef signed short int __int16_t; > +typedef unsigned short int __uint16_t; > +typedef signed int __int32_t; > +typedef unsigned int __uint32_t; > +#if __WORDSIZE == 64 > +typedef signed long int __int64_t; > +typedef unsigned long int __uint64_t; > +#elif defined __GLIBC_HAVE_LONG_LONG > +__extension__ typedef signed long long int __int64_t; > +__extension__ typedef unsigned long long int __uint64_t; > +#endif > + > +/* quad_t is also 64 bits. */ > +#if __WORDSIZE == 64 > +typedef long int __quad_t; > +typedef unsigned long int __u_quad_t; > +#elif defined __GLIBC_HAVE_LONG_LONG > +__extension__ typedef long long int __quad_t; > +__extension__ typedef unsigned long long int __u_quad_t; > +#else > +typedef struct > +{ > + long __val[2]; > +} __quad_t; > +typedef struct > +{ > + __u_long __val[2]; > +} __u_quad_t; > +#endif > + > + > +/* The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE > + macros for each of the OS types we define below. The definitions > + of those macros must use the following macros for underlying types. > + We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned > + variants of each of the following integer types on this machine. > + > + 16 -- "natural" 16-bit type (always short) > + 32 -- "natural" 32-bit type (always int) > + 64 -- "natural" 64-bit type (long or long long) > + LONG32 -- 32-bit type, traditionally long > + QUAD -- 64-bit type, always long long > + WORD -- natural type of __WORDSIZE bits (int or long) > + LONGWORD -- type of __WORDSIZE bits, traditionally long > + > + We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the > + conventional uses of `long' or `long long' type modifiers match the > + types we define, even when a less-adorned type would be the same size. > + This matters for (somewhat) portably writing printf/scanf formats for > + these types, where using the appropriate l or ll format modifiers can > + make the typedefs and the formats match up across all GNU platforms. If > + we used `long' when it's 64 bits where `long long' is expected, then the > + compiler would warn about the formats not matching the argument types, > + and the programmer changing them to shut up the compiler would break the > + program's portability. > + > + Here we assume what is presently the case in all the GCC configurations > + we support: long long is always 64 bits, long is always word/address size, > + and int is always 32 bits. */ > + > +#define __S16_TYPE short int > +#define __U16_TYPE unsigned short int > +#define __S32_TYPE int > +#define __U32_TYPE unsigned int > +#define __SLONGWORD_TYPE long int > +#define __ULONGWORD_TYPE unsigned long int > +#if __WORDSIZE == 32 > +# define __SQUAD_TYPE __quad_t > +# define __UQUAD_TYPE __u_quad_t > +# define __SWORD_TYPE int > +# define __UWORD_TYPE unsigned int > +# define __SLONG32_TYPE long int > +# define __ULONG32_TYPE unsigned long int > +# define __S64_TYPE __quad_t > +# define __U64_TYPE __u_quad_t > +/* We want __extension__ before typedef's that use nonstandard base types > + such as `long long' in C89 mode. */ > +# define __STD_TYPE __extension__ typedef > +#elif __WORDSIZE == 64 > +# define __SQUAD_TYPE long int > +# define __UQUAD_TYPE unsigned long int > +# define __SWORD_TYPE long int > +# define __UWORD_TYPE unsigned long int > +# define __SLONG32_TYPE int > +# define __ULONG32_TYPE unsigned int > +# define __S64_TYPE long int > +# define __U64_TYPE unsigned long int > +/* No need to mark the typedef with __extension__. */ > +# define __STD_TYPE typedef > +#else > +# error > +#endif > +#include <bits/typesizes.h> /* Defines __*_T_TYPE macros. */ > + > + > +__STD_TYPE __DEV_T_TYPE __dev_t; /* Type of device numbers. */ > +__STD_TYPE __UID_T_TYPE __uid_t; /* Type of user identifications. */ > +__STD_TYPE __GID_T_TYPE __gid_t; /* Type of group identifications. */ > +__STD_TYPE __INO_T_TYPE __ino_t; /* Type of file serial numbers. */ > +__STD_TYPE __INO64_T_TYPE __ino64_t; /* Type of file serial numbers (LFS).*/ > +__STD_TYPE __MODE_T_TYPE __mode_t; /* Type of file attribute bitmasks. */ > +__STD_TYPE __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */ > +__STD_TYPE __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */ > +__STD_TYPE __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets (LFS). */ > +__STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */ > +__STD_TYPE __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */ > +__STD_TYPE __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */ > +__STD_TYPE __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. */ > +__STD_TYPE __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement (LFS). */ > +__STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */ > +__STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */ > +__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */ > +__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */ > + > +__STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */ > +__STD_TYPE __SWBLK_T_TYPE __swblk_t; /* Type of a swap block maybe? */ > +__STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */ > + > +/* Clock ID used in clock and timer functions. */ > +__STD_TYPE __CLOCKID_T_TYPE __clockid_t; > + > +/* Timer ID returned by `timer_create'. */ > +__STD_TYPE __TIMER_T_TYPE __timer_t; > + > +/* Type to represent block size. */ > +__STD_TYPE __BLKSIZE_T_TYPE __blksize_t; > + > +/* Types from the Large File Support interface. */ > + > +/* Type to count number of disk blocks. */ > +__STD_TYPE __BLKCNT_T_TYPE __blkcnt_t; > +__STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t; > + > +/* Type to count file system blocks. */ > +__STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t; > +__STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t; > + > +/* Type to count file system nodes. */ > +__STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t; > +__STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t; > + > +__STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error. */ > + > +/* These few don't really vary by system, they always correspond > + to one of the other defined types. */ > +typedef __off64_t __loff_t; /* Type of file sizes and offsets (LFS). */ > +typedef __quad_t *__qaddr_t; > +typedef char *__caddr_t; > + > +/* Duplicates info from stdint.h but this is used in unistd.h. */ > +__STD_TYPE __SWORD_TYPE __intptr_t; > + > +/* Duplicate info from sys/socket.h. */ > +__STD_TYPE __U32_TYPE __socklen_t; > + > + > +#undef __STD_TYPE > + > +#endif /* bits/types.h */ > diff --git a/recipes/glibc/glibc-2.9/generic-bits_typesizes.h b/recipes/glibc/glibc-2.9/generic-bits_typesizes.h > new file mode 100644 > index 0000000..e9226c4 > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/generic-bits_typesizes.h > @@ -0,0 +1,66 @@ > +/* bits/typesizes.h -- underlying types for *_t. Generic version. > + Copyright (C) 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 > + 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 _BITS_TYPES_H > +# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead." > +#endif > + > +#ifndef _BITS_TYPESIZES_H > +#define _BITS_TYPESIZES_H 1 > + > +/* See <bits/types.h> for the meaning of these macros. This file exists so > + that <bits/types.h> need not vary across different GNU platforms. */ > + > +#define __DEV_T_TYPE __UQUAD_TYPE > +#define __UID_T_TYPE __U32_TYPE > +#define __GID_T_TYPE __U32_TYPE > +#define __INO_T_TYPE __ULONGWORD_TYPE > +#define __INO64_T_TYPE __UQUAD_TYPE > +#define __MODE_T_TYPE __U32_TYPE > +#define __NLINK_T_TYPE __UWORD_TYPE > +#define __OFF_T_TYPE __SLONGWORD_TYPE > +#define __OFF64_T_TYPE __SQUAD_TYPE > +#define __PID_T_TYPE __S32_TYPE > +#define __RLIM_T_TYPE __ULONGWORD_TYPE > +#define __RLIM64_T_TYPE __UQUAD_TYPE > +#define __BLKCNT_T_TYPE __SLONGWORD_TYPE > +#define __BLKCNT64_T_TYPE __SQUAD_TYPE > +#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE > +#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE > +#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE > +#define __FSFILCNT64_T_TYPE __UQUAD_TYPE > +#define __ID_T_TYPE __U32_TYPE > +#define __CLOCK_T_TYPE __SLONGWORD_TYPE > +#define __TIME_T_TYPE __SLONGWORD_TYPE > +#define __USECONDS_T_TYPE __U32_TYPE > +#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE > +#define __DADDR_T_TYPE __S32_TYPE > +#define __SWBLK_T_TYPE __SLONGWORD_TYPE > +#define __KEY_T_TYPE __S32_TYPE > +#define __CLOCKID_T_TYPE __S32_TYPE > +#define __TIMER_T_TYPE void * > +#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE > +#define __FSID_T_TYPE struct { int __val[2]; } > +#define __SSIZE_T_TYPE __SWORD_TYPE > + > +/* Number of descriptors that can fit in an `fd_set'. */ > +#define __FD_SETSIZE 1024 > + > + > +#endif /* bits/typesizes.h */ > diff --git a/recipes/glibc/glibc-2.9/glibc-arm-IO-acquire-lock-fix.diff b/recipes/glibc/glibc-2.9/glibc-arm-IO-acquire-lock-fix.diff > new file mode 100644 > index 0000000..a552cf0 > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/glibc-arm-IO-acquire-lock-fix.diff > @@ -0,0 +1,13 @@ > +Arm needs a similar fix as http://sourceware.org/ml/libc-ports/2007-12/msg00000.html > + > +--- /tmp/stdio-lock.h 2008-03-04 18:51:15.555038993 +0100 > ++++ glibc-2.7/ports/sysdeps/unix/sysv/linux/arm/bits/stdio-lock.h 2008-03-04 18:51:28.445035052 +0100 > +@@ -50,6 +50,8 @@ > + _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, (_fp)); \ > + _IO_flockfile (_fp) > + > ++# define _IO_acquire_lock_clear_flags2(_fp) _IO_acquire_lock (_fp) > ++ > + # define _IO_release_lock(_fp) \ > + _IO_funlockfile (_fp); \ > + _IO_cleanup_region_end (0) > diff --git a/recipes/glibc/glibc-2.9/glibc-check_pf.patch b/recipes/glibc/glibc-2.9/glibc-check_pf.patch > new file mode 100644 > index 0000000..3cff6bb > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/glibc-check_pf.patch > @@ -0,0 +1,343 @@ > +From libc-ports-return-550-listarch-libc-ports=sources dot redhat dot com at sourceware dot org Tue Oct 31 17:37:21 2006 > +Return-Path: <libc-ports-return-550-listarch-libc-ports=sources dot redhat dot com at sourceware dot org> > +Delivered-To: listarch-libc-ports at sources dot redhat dot com > +Received: (qmail 17273 invoked by alias); 31 Oct 2006 17:37:20 -0000 > +Received: (qmail 17262 invoked by uid 22791); 31 Oct 2006 17:37:19 -0000 > +X-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,TW_CP > +X-Spam-Check-By: sourceware.org > +Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Tue, 31 Oct 2006 17:37:11 +0000 > +Received: from drow by nevyn.them.org with local (Exim 4.54) id 1GexXw-0007Dj-30; Tue, 31 Oct 2006 12:37:08 -0500 > +Date: Tue, 31 Oct 2006 12:37:08 -0500 > +From: Daniel Jacobowitz <drow at false dot org> > +To: Mike Frysinger <vapier at gentoo dot org> > +Cc: libc-ports at sourceware dot org, Philip Balister <philip dot balister at gmail dot com> > +Subject: Re: Problem with glibc-2.5 on ARM > +Message-ID: <20061031173708.GJ20468@nevyn.them.org> > +References: <499146270610241149ibe030e0nd9d6b177a95b346e@mail.gmail.com> <499146270610241254u7cadf63ej2edf05cedbc5266f@mail.gmail.com> <20061024195837.GA20181@nevyn.them.org> <200610291954.27022.vapier@gentoo.org> > +MIME-Version: 1.0 > +Content-Type: text/plain; charset=us-ascii > +Content-Disposition: inline > +In-Reply-To: <200610291954 dot 27022 dot vapier at gentoo dot org> > +User-Agent: Mutt/1.5.13 (2006-08-11) > +X-IsSubscribed: yes > +Mailing-List: contact libc-ports-help at sourceware dot org; run by ezmlm > +Precedence: bulk > +List-Subscribe: <mailto:libc-ports-subscribe at sourceware dot org> > +List-Post: <mailto:libc-ports at sourceware dot org> > +List-Help: <mailto:libc-ports-help at sourceware dot org>, <http://sourceware dot org/lists dot html#faqs> > +Sender: libc-ports-owner at sourceware dot org > +Delivered-To: mailing list libc-ports at sourceware dot org > + > +On Sun, Oct 29, 2006 at 07:54:25PM -0500, Mike Frysinger wrote: > +> On Tuesday 24 October 2006 15:58, Daniel Jacobowitz wrote: > +> > ARM is going to need a slightly different version of that file, I > +> > guess. > +> > +> would declaring req with attribute packed not help ? > +> -mike > + > +Nope. "struct rtgenmsg" would still have size 4. > + > +Philip, are you still at all interested in this for the old ABI? > +I don't have time to test this patch right now, but I think it > +will work. > + > +-- > +Daniel Jacobowitz > +CodeSourcery > + > +2006-10-31 Daniel Jacobowitz <dan@codesourcery.com> > + > + * sysdeps/unix/sysv/linux/arm/check_pf.c: New file. > + * sysdeps/unix/sysv/linux/arm/eabi/check_pf.c: New file. > + > +Index: sysdeps/unix/sysv/linux/arm/check_pf.c > +=================================================================== > +RCS file: sysdeps/unix/sysv/linux/arm/check_pf.c > +diff -N sysdeps/unix/sysv/linux/arm/check_pf.c > +--- /dev/null 1 Jan 1970 00:00:00 -0000 > ++++ sysdeps/unix/sysv/linux/arm/check_pf.c 31 Oct 2006 17:29:58 -0000 > +@@ -0,0 +1,274 @@ > ++/* Determine protocol families for which interfaces exist. ARM Linux version. > ++ Copyright (C) 2003, 2006 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 <assert.h> > ++#include <errno.h> > ++#include <ifaddrs.h> > ++#include <netdb.h> > ++#include <stddef.h> > ++#include <string.h> > ++#include <time.h> > ++#include <unistd.h> > ++#include <sys/socket.h> > ++ > ++#include <asm/types.h> > ++#include <linux/netlink.h> > ++#include <linux/rtnetlink.h> > ++ > ++#include <not-cancel.h> > ++#include <kernel-features.h> > ++ > ++ > ++#ifndef IFA_F_TEMPORARY > ++# define IFA_F_TEMPORARY IFA_F_SECONDARY > ++#endif > ++#ifndef IFA_F_HOMEADDRESS > ++# define IFA_F_HOMEADDRESS 0 > ++#endif > ++ > ++ > ++static int > ++make_request (int fd, pid_t pid, bool *seen_ipv4, bool *seen_ipv6, > ++ struct in6addrinfo **in6ai, size_t *in6ailen) > ++{ > ++ struct req > ++ { > ++ struct nlmsghdr nlh; > ++ struct rtgenmsg g; > ++ } req; > ++ struct sockaddr_nl nladdr; > ++ > ++ /* struct rtgenmsg consists of a single byte but the ARM ABI rounds > ++ it up to a word. Clear the padding explicitly here. */ > ++ assert (sizeof (req.g) == 4); > ++ memset (&req.g, '\0', sizeof (req.g)); > ++ > ++ req.nlh.nlmsg_len = sizeof (req); > ++ req.nlh.nlmsg_type = RTM_GETADDR; > ++ req.nlh.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST; > ++ req.nlh.nlmsg_pid = 0; > ++ req.nlh.nlmsg_seq = time (NULL); > ++ req.g.rtgen_family = AF_UNSPEC; > ++ > ++ memset (&nladdr, '\0', sizeof (nladdr)); > ++ nladdr.nl_family = AF_NETLINK; > ++ > ++ if (TEMP_FAILURE_RETRY (__sendto (fd, (void *) &req, sizeof (req), 0, > ++ (struct sockaddr *) &nladdr, > ++ sizeof (nladdr))) < 0) > ++ return -1; > ++ > ++ *seen_ipv4 = false; > ++ *seen_ipv6 = false; > ++ > ++ bool done = false; > ++ char buf[4096]; > ++ struct iovec iov = { buf, sizeof (buf) }; > ++ struct in6ailist > ++ { > ++ struct in6addrinfo info; > ++ struct in6ailist *next; > ++ } *in6ailist = NULL; > ++ size_t in6ailistlen = 0; > ++ > ++ do > ++ { > ++ struct msghdr msg = > ++ { > ++ (void *) &nladdr, sizeof (nladdr), > ++ &iov, 1, > ++ NULL, 0, > ++ 0 > ++ }; > ++ > ++ ssize_t read_len = TEMP_FAILURE_RETRY (__recvmsg (fd, &msg, 0)); > ++ if (read_len < 0) > ++ return -1; > ++ > ++ if (msg.msg_flags & MSG_TRUNC) > ++ return -1; > ++ > ++ struct nlmsghdr *nlmh; > ++ for (nlmh = (struct nlmsghdr *) buf; > ++ NLMSG_OK (nlmh, (size_t) read_len); > ++ nlmh = (struct nlmsghdr *) NLMSG_NEXT (nlmh, read_len)) > ++ { > ++ if (nladdr.nl_pid != 0 || (pid_t) nlmh->nlmsg_pid != pid > ++ || nlmh->nlmsg_seq != req.nlh.nlmsg_seq) > ++ continue; > ++ > ++ if (nlmh->nlmsg_type == RTM_NEWADDR) > ++ { > ++ struct ifaddrmsg *ifam = (struct ifaddrmsg *) NLMSG_DATA (nlmh); > ++ > ++ switch (ifam->ifa_family) > ++ { > ++ case AF_INET: > ++ *seen_ipv4 = true; > ++ break; > ++ case AF_INET6: > ++ *seen_ipv6 = true; > ++ > ++ if (ifam->ifa_flags & (IFA_F_DEPRECATED > ++ | IFA_F_TEMPORARY > ++ | IFA_F_HOMEADDRESS)) > ++ { > ++ struct rtattr *rta = IFA_RTA (ifam); > ++ size_t len = (nlmh->nlmsg_len > ++ - NLMSG_LENGTH (sizeof (*ifam))); > ++ void *local = NULL; > ++ void *address = NULL; > ++ while (RTA_OK (rta, len)) > ++ { > ++ switch (rta->rta_type) > ++ { > ++ case IFA_LOCAL: > ++ local = RTA_DATA (rta); > ++ break; > ++ > ++ case IFA_ADDRESS: > ++ address = RTA_DATA (rta); > ++ break; > ++ } > ++ > ++ rta = RTA_NEXT (rta, len); > ++ } > ++ > ++ struct in6ailist *newp = alloca (sizeof (*newp)); > ++ newp->info.flags = (((ifam->ifa_flags & IFA_F_DEPRECATED) > ++ ? in6ai_deprecated : 0) > ++ | ((ifam->ifa_flags > ++ & IFA_F_TEMPORARY) > ++ ? in6ai_temporary : 0) > ++ | ((ifam->ifa_flags > ++ & IFA_F_HOMEADDRESS) > ++ ? in6ai_homeaddress : 0)); > ++ memcpy (newp->info.addr, address ?: local, > ++ sizeof (newp->info.addr)); > ++ newp->next = in6ailist; > ++ in6ailist = newp; > ++ ++in6ailistlen; > ++ } > ++ break; > ++ default: > ++ /* Ignore. */ > ++ break; > ++ } > ++ } > ++ else if (nlmh->nlmsg_type == NLMSG_DONE) > ++ /* We found the end, leave the loop. */ > ++ done = true; > ++ } > ++ } > ++ while (! done); > ++ > ++ close_not_cancel_no_status (fd); > ++ > ++ if (in6ailist != NULL) > ++ { > ++ *in6ai = malloc (in6ailistlen * sizeof (**in6ai)); > ++ if (*in6ai == NULL) > ++ return -1; > ++ > ++ *in6ailen = in6ailistlen; > ++ > ++ do > ++ { > ++ (*in6ai)[--in6ailistlen] = in6ailist->info; > ++ in6ailist = in6ailist->next; > ++ } > ++ while (in6ailist != NULL); > ++ } > ++ > ++ return 0; > ++} > ++ > ++ > ++/* We don't know if we have NETLINK support compiled in in our > ++ Kernel. */ > ++#if __ASSUME_NETLINK_SUPPORT == 0 > ++/* Define in ifaddrs.h. */ > ++extern int __no_netlink_support attribute_hidden; > ++#else > ++# define __no_netlink_support 0 > ++#endif > ++ > ++ > ++void > ++attribute_hidden > ++__check_pf (bool *seen_ipv4, bool *seen_ipv6, > ++ struct in6addrinfo **in6ai, size_t *in6ailen) > ++{ > ++ *in6ai = NULL; > ++ *in6ailen = 0; > ++ > ++ if (! __no_netlink_support) > ++ { > ++ int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE); > ++ > ++ struct sockaddr_nl nladdr; > ++ memset (&nladdr, '\0', sizeof (nladdr)); > ++ nladdr.nl_family = AF_NETLINK; > ++ > ++ socklen_t addr_len = sizeof (nladdr); > ++ > ++ if (fd >= 0 > ++ && __bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0 > ++ && __getsockname (fd, (struct sockaddr *) &nladdr, &addr_len) == 0 > ++ && make_request (fd, nladdr.nl_pid, seen_ipv4, seen_ipv6, > ++ in6ai, in6ailen) == 0) > ++ /* It worked. */ > ++ return; > ++ > ++ if (fd >= 0) > ++ __close (fd); > ++ > ++#if __ASSUME_NETLINK_SUPPORT == 0 > ++ /* Remember that there is no netlink support. */ > ++ __no_netlink_support = 1; > ++#else > ++ /* We cannot determine what interfaces are available. Be > ++ pessimistic. */ > ++ *seen_ipv4 = true; > ++ *seen_ipv6 = true; > ++#endif > ++ } > ++ > ++#if __ASSUME_NETLINK_SUPPORT == 0 > ++ /* No netlink. Get the interface list via getifaddrs. */ > ++ struct ifaddrs *ifa = NULL; > ++ if (getifaddrs (&ifa) != 0) > ++ { > ++ /* We cannot determine what interfaces are available. Be > ++ pessimistic. */ > ++ *seen_ipv4 = true; > ++ *seen_ipv6 = true; > ++ return; > ++ } > ++ > ++ struct ifaddrs *runp; > ++ for (runp = ifa; runp != NULL; runp = runp->ifa_next) > ++ if (runp->ifa_addr->sa_family == PF_INET) > ++ *seen_ipv4 = true; > ++ else if (runp->ifa_addr->sa_family == PF_INET6) > ++ *seen_ipv6 = true; > ++ > ++ (void) freeifaddrs (ifa); > ++#endif > ++} > +Index: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c > +=================================================================== > +RCS file: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c > +diff -N sysdeps/unix/sysv/linux/arm/eabi/check_pf.c > +--- /dev/null 1 Jan 1970 00:00:00 -0000 > ++++ sysdeps/unix/sysv/linux/arm/eabi/check_pf.c 31 Oct 2006 17:29:58 -0000 > +@@ -0,0 +1 @@ > ++#include <sysdeps/unix/sysv/linux/check_pf.c> > + > diff --git a/recipes/glibc/glibc-2.9/ldd-unbash.patch b/recipes/glibc/glibc-2.9/ldd-unbash.patch > new file mode 100644 > index 0000000..2fb8854 > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/ldd-unbash.patch > @@ -0,0 +1,11 @@ > +--- glibc-2.5/elf/ldd.bash.in.org 2006-04-30 16:06:20.000000000 +0000 > ++++ glibc-2.5/elf/ldd.bash.in 2007-03-30 19:18:57.000000000 +0000 > +@@ -110,7 +110,7 @@ > + # environments where the executed program might not have permissions > + # to write to the console/tty. But only bash 3.x supports the pipefail > + # option, and we don't bother to handle the case for older bash versions. > +-if set -o pipefail 2> /dev/null; then > ++if false; then > + try_trace() { > + eval $add_env '"$@"' | cat > + } > diff --git a/recipes/glibc/glibc-2.9/ldsocache-varrun.patch b/recipes/glibc/glibc-2.9/ldsocache-varrun.patch > new file mode 100644 > index 0000000..9994d4f > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/ldsocache-varrun.patch > @@ -0,0 +1,18 @@ > +This patch moves ld.so.cache from /etc to /var/run. This is for devices > +where /etc is JFFS2 or CRAMFS but /var is a ramdisk. > + > +# > +# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher > +# > + > +--- libc/sysdeps/generic/dl-cache.h~ldsocache-varrun > ++++ libc/sysdeps/generic/dl-cache.h > +@@ -29,7 +29,7 @@ > + #endif > + > + #ifndef LD_SO_CACHE > +-# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache" > ++# define LD_SO_CACHE "/var/run/ld.so.cache" > + #endif > + > + #ifndef add_system_dir > diff --git a/recipes/glibc/glibc-2.9/march-i686.patch b/recipes/glibc/glibc-2.9/march-i686.patch > new file mode 100644 > index 0000000..0461603 > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/march-i686.patch > @@ -0,0 +1,38 @@ > +2007-02-15 Khem Raj <kraj@xxxxxxxxxx> > + > + * sysdeps/unix/sysv/linux/i386/sysdep.h: Re-define __i686. > + * nptl/sysdeps/pthread/pt-initfini.c: Ditto. > + > + > + > +Index: sysdeps/unix/sysv/linux/i386/sysdep.h > +=================================================================== > +--- sysdeps/unix/sysv/linux/i386/sysdep.h (revision 1469) > ++++ sysdeps/unix/sysv/linux/i386/sysdep.h (working copy) > +@@ -29,6 +29,10 @@ > + #include <dl-sysdep.h> > + #include <tls.h> > + > ++#if defined __i686 && defined __ASSEMBLER__ > ++#undef __i686 > ++#define __i686 __i686 > ++#endif > + > + /* For Linux we can use the system call table in the header file > + /usr/include/asm/unistd.h > +Index: nptl/sysdeps/pthread/pt-initfini.c > +=================================================================== > +--- nptl/sysdeps/pthread/pt-initfini.c (revision 1469) > ++++ nptl/sysdeps/pthread/pt-initfini.c (working copy) > +@@ -45,6 +45,11 @@ > + /* Embed an #include to pull in the alignment and .end directives. */ > + asm ("\n#include \"defs.h\""); > + > ++asm ("\n#if defined __i686 && defined __ASSEMBLER__"); > ++asm ("\n#undef __i686"); > ++asm ("\n#define __i686 __i686"); > ++asm ("\n#endif"); > ++ > + /* The initial common code ends here. */ > + asm ("\n/*@HEADER_ENDS*/"); > + > diff --git a/recipes/glibc/glibc-2.9/no-z-defs.patch b/recipes/glibc/glibc-2.9/no-z-defs.patch > new file mode 100644 > index 0000000..48c6a41 > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/no-z-defs.patch > @@ -0,0 +1,9 @@ > +Create a configparms file which disabled no-z-defs. > +This is required to build a working glibs for sh4, > +without there will be a lot linker errors during the build. > + > +diff -duNr libc.orig/configparms libc/configparms > +--- libc.orig/configparms 1970-01-01 10:00:00.000000000 +1000 > ++++ libc/configparms 2006-02-23 14:08:18.000000000 +1100 > +@@ -0,0 +1 @@ > ++no-z-defs=yes > diff --git a/recipes/glibc/glibc-2.9/nptl-crosscompile.patch b/recipes/glibc/glibc-2.9/nptl-crosscompile.patch > new file mode 100644 > index 0000000..18a46ad > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/nptl-crosscompile.patch > @@ -0,0 +1,26 @@ > +--- glibc-2.4/nptl/sysdeps/pthread/configure.in.ark 2006-03-12 00:41:40.000000000 +0100 > ++++ glibc-2.4/nptl/sysdeps/pthread/configure.in 2006-03-12 00:44:08.000000000 +0100 > +@@ -45,5 +45,6 @@ > + AC_MSG_ERROR([the compiler must support C cleanup handling]) > + fi > + else > +- AC_MSG_ERROR(forced unwind support is required) > ++ AC_MSG_WARN([forced unwind support is required, can't be verified while crosscompiling]) > ++ AC_DEFINE(HAVE_FORCED_UNWIND) > + fi > +--- glibc-2.4/nptl/sysdeps/pthread/configure.ark 2006-03-12 00:42:47.000000000 +0100 > ++++ glibc-2.4/nptl/sysdeps/pthread/configure 2006-03-12 00:44:08.000000000 +0100 > +@@ -153,7 +153,10 @@ > + { (exit 1); exit 1; }; } > + fi > + else > +- { { echo "$as_me:$LINENO: error: forced unwind support is required" >&5 > +-echo "$as_me: error: forced unwind support is required" >&2;} > +- { (exit 1); exit 1; }; } > ++ { echo "$as_me:$LINENO: WARNING: forced unwind support is required, can't be verified while crosscompiling" >&5 > ++echo "$as_me: WARNING: forced unwind support is required, can't be verified while crosscompiling" >&2;} > ++ cat >>confdefs.h <<\_ACEOF > ++#define HAVE_FORCED_UNWIND 1 > ++_ACEOF > ++ > + fi > diff --git a/recipes/glibc/glibc-2.9/nscd-init.patch b/recipes/glibc/glibc-2.9/nscd-init.patch > new file mode 100644 > index 0000000..884609a > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/nscd-init.patch > @@ -0,0 +1,39 @@ > +--- nscd/nscd.init > ++++ nscd/nscd.init > +@@ -48,9 +48,8 @@ > + > + start () { > + [ -d /var/run/nscd ] || mkdir /var/run/nscd > +- [ -d /var/db/nscd ] || mkdir /var/db/nscd > + echo -n $"Starting $prog: " > +- daemon /usr/sbin/nscd > ++ /usr/sbin/nscd > + RETVAL=$? > + echo > + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nscd > +@@ -67,12 +66,10 @@ > + # a non-privileged user > + rm -f /var/run/nscd/nscd.pid > + rm -f /var/run/nscd/socket > +- success $"$prog shutdown" > +- else > +- failure $"$prog shutdown" > + fi > +- echo > +- return $RETVAL > ++ echo "Done." > ++ # If nscd did not run, return 0 according to LSB. > ++ return 0 > + } > + > + restart() { > +@@ -104,7 +101,8 @@ > + ;; > + force-reload | reload) > + echo -n $"Reloading $prog: " > +- killproc /usr/sbin/nscd -HUP > ++ # Use killall, initscripts-1.0-r115 don't support -HUP yet. > ++ killall -HUP /usr/sbin/nscd > + RETVAL=$? > + echo > + ;; > diff --git a/recipes/glibc/glibc-2.9/powerpc-sqrt-hack.diff b/recipes/glibc/glibc-2.9/powerpc-sqrt-hack.diff > new file mode 100644 > index 0000000..1046efb > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/powerpc-sqrt-hack.diff > @@ -0,0 +1,25 @@ > +diff -Nurd ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c > +--- ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c 2006-04-14 07:44:30.000000000 +0200 > ++++ glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c 2006-12-08 12:53:32.202227000 +0100 > +@@ -25,6 +25,9 @@ > + #include <sysdep.h> > + #include <ldsodefs.h> > + > ++#define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0) > ++ > ++ > + static const double almost_half = 0.5000000000000001; /* 0.5 + 2^-53 */ > + static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 }; > + static const ieee_float_shape_type a_inf = {.word = 0x7f800000 }; > +diff -Nurd ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c > +--- ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c 2006-04-14 07:44:30.000000000 +0200 > ++++ glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c 2006-12-08 12:53:36.992227000 +0100 > +@@ -25,6 +25,8 @@ > + #include <sysdep.h> > + #include <ldsodefs.h> > + > ++#define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0) > ++ > + static const float almost_half = 0.50000006; /* 0.5 + 2^-24 */ > + static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 }; > + static const ieee_float_shape_type a_inf = {.word = 0x7f800000 }; > diff --git a/recipes/glibc/glibc-2.9/tls_i486.patch b/recipes/glibc/glibc-2.9/tls_i486.patch > new file mode 100644 > index 0000000..69a1fdf > --- /dev/null > +++ b/recipes/glibc/glibc-2.9/tls_i486.patch > @@ -0,0 +1,14 @@ > +Index: glibc-2.9/sysdeps/i386/dl-tlsdesc.S > +=================================================================== > +--- glibc-2.9.orig/sysdeps/i386/dl-tlsdesc.S 2009-07-07 23:21:11.647664128 +0200 > ++++ glibc-2.9/sysdeps/i386/dl-tlsdesc.S 2009-07-07 23:21:32.802555992 +0200 > +@@ -128,8 +128,7 @@ > + .Lslow: > + cfi_adjust_cfa_offset (28) > + movl %ebx, 16(%esp) > +- call __i686.get_pc_thunk.bx > +- addl $_GLOBAL_OFFSET_TABLE_, %ebx > ++ LOAD_PIC_REG (bx) > + call ___tls_get_addr@PLT > + movl 16(%esp), %ebx > + jmp .Lret > diff --git a/recipes/glibc/glibc_2.9.bb b/recipes/glibc/glibc_2.9.bb > index e7ab63d..33326f3 100644 > --- a/recipes/glibc/glibc_2.9.bb > +++ b/recipes/glibc/glibc_2.9.bb > @@ -11,9 +11,6 @@ PR = "${INC_PR}.3" > BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}" > TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${layout_includedir}" > > - > -FILESPATHPKG =. "glibc-2.4:" > - > GLIBC_ADDONS ?= "ports,nptl,libidn" > > GLIBC_BROKEN_LOCALES = " _ER _ET so_ET yn_ER sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN" > -- > 1.6.4.2 > > > _______________________________________________ > Openembedded-devel mailing list > Openembedded-devel@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] glibc 2.9: cleaned up; patches only in local dir 2010-07-15 20:46 [PATCH 1/3] glibc 2.9: cleaned up; patches only in local dir Frans Meulenbroeks 2010-07-15 20:46 ` [PATCH 2/3] glibc 2.10.1: " Frans Meulenbroeks 2010-07-15 21:49 ` [PATCH 1/3] glibc 2.9: " Khem Raj @ 2010-07-17 7:56 ` Khem Raj 2010-07-17 8:05 ` Frans Meulenbroeks 2 siblings, 1 reply; 9+ messages in thread From: Khem Raj @ 2010-07-17 7:56 UTC (permalink / raw) To: openembedded-devel On (15/07/10 22:46), Frans Meulenbroeks wrote: > moved all patches to glibc-2.9 > removed references to other dirs. Well you forgot to copy glibc-2.4/etc dir into glibc-2.9 this will render glibc 2.9 unbuildable. Thx -Khem ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] glibc 2.9: cleaned up; patches only in local dir 2010-07-17 7:56 ` Khem Raj @ 2010-07-17 8:05 ` Frans Meulenbroeks 0 siblings, 0 replies; 9+ messages in thread From: Frans Meulenbroeks @ 2010-07-17 8:05 UTC (permalink / raw) To: openembedded-devel 2010/7/17 Khem Raj <raj.khem@gmail.com> > On (15/07/10 22:46), Frans Meulenbroeks wrote: > > moved all patches to glibc-2.9 > > removed references to other dirs. > > > Well you forgot to copy glibc-2.4/etc dir into glibc-2.9 > this will render glibc 2.9 unbuildable. > Thanks for noticing this. Fixed. (apparently forgot the -r when copying the dir over) Frans > > Thx > -Khem > > _______________________________________________ > Openembedded-devel mailing list > Openembedded-devel@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel > ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2010-07-17 8:05 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-07-15 20:46 [PATCH 1/3] glibc 2.9: cleaned up; patches only in local dir Frans Meulenbroeks 2010-07-15 20:46 ` [PATCH 2/3] glibc 2.10.1: " Frans Meulenbroeks 2010-07-15 20:46 ` [PATCH 3/3] glibc: remove old/obsolete versions Frans Meulenbroeks 2010-07-16 6:41 ` Graham Gower 2010-07-15 21:50 ` [PATCH 2/3] glibc 2.10.1: cleaned up; patches only in local dir Khem Raj 2010-07-16 6:07 ` Frans Meulenbroeks 2010-07-15 21:49 ` [PATCH 1/3] glibc 2.9: " Khem Raj 2010-07-17 7:56 ` Khem Raj 2010-07-17 8:05 ` Frans Meulenbroeks
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.