[oe] [PATCH 2/3] glibc 2.10.1: cleaned up; patches only in local dir
Frans Meulenbroeks
fransmeulenbroeks at gmail.com
Fri Jul 16 06:07:50 UTC 2010
2010/7/15 Khem Raj <raj.khem at gmail.com>
> On Thu, Jul 15, 2010 at 1:46 PM, Frans Meulenbroeks
> <fransmeulenbroeks at gmail.com> wrote:
> > moved all patches to glibc-2.10.1
> > removed references to other dirs.
> >
> > Signed-off-by: Frans Meulenbroeks <fransmeulenbroeks at 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 at 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 at nevyn.them.org>
> > +References: <499146270610241149ibe030e0nd9d6b177a95b346e at mail.gmail.com>
> <499146270610241254u7cadf63ej2edf05cedbc5266f at mail.gmail.com> <
> 20061024195837.GA20181 at nevyn.them.org> <
> 200610291954.27022.vapier at 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 at 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 at 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 at lists.openembedded.org
> > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
> >
>
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
>
More information about the Openembedded-devel
mailing list