diff options
Diffstat (limited to 'meta/recipes-core/uclibc')
40 files changed, 3559 insertions, 0 deletions
diff --git a/meta/recipes-core/uclibc/files/armeb-kernel-stat.h.patch b/meta/recipes-core/uclibc/files/armeb-kernel-stat.h.patch new file mode 100644 index 0000000000..0440718eec --- /dev/null +++ b/meta/recipes-core/uclibc/files/armeb-kernel-stat.h.patch @@ -0,0 +1,125 @@ +# The 2.6 asm/stat.h for ARM has some rather unusual transmogrifications +# for big-endian running. This patch adds ARM specific code in xstatconv.c +# which deals with the 2.4->2.6 ABI change. +--- uClibc-0.9.27/libc/sysdeps/linux/common/xstatconv.c 2005-01-11 23:59:21.000000000 -0800 ++++ uClibc-0.9.27/libc/sysdeps/linux/common/xstatconv.c 2005-06-05 11:03:56.742587966 -0700 +@@ -18,7 +18,14 @@ + 02111-1307 USA. + + Modified for uClibc by Erik Andersen <andersen@codepoet.org> ++ Further modified for ARMBE by John Bowler <jbowler@acm.org> + */ ++/* This is a copy of common/xstatconv.c with a fixup for the ABI ++ * (structure layout) change in ARM Linux 2.6 - this shifts the ++ * st_dev and st_rdev information from the start of the 8 byte ++ * space to the end on big-endian ARM (only). The code is unchanged ++ * on little endian. ++ */ + + #define _GNU_SOURCE + #define _LARGEFILE64_SOURCE +@@ -32,6 +39,84 @@ + #include <sys/stat.h> + #include "xstatconv.h" + ++/* Only for ARMEB and LFS. */ ++#if defined(__ARMEB__) && defined(__UCLIBC_HAS_LFS__) ++/* stat64 (renamed) from 2.6.11.11. What happened here is that after ++ * Linux 2.4 the 2.4 unsigned short st_rdev and st_dev fields were ++ * lengthened to unsigned long long - causing the inclusion of at least ++ * some of the 0 padding bytes which followed them. On little endian ++ * this is fine because 2.4 did zero the pad bytes (I think) and the ++ * position of the data did not change. On big endian the change ++ * shifted the data to the end of the field. Someone noticed for the ++ * struct stat, and the armeb (big endian) case preserved the ++ * unsigned short (yuck), but no so for stat64 (maybe this was deliberate, ++ * but there is no evidence in the code of this.) Consequently a ++ * fixup is necessary for the stat64 case. The fixup here is to ++ * use the new structure when the change is detected. See below. ++ */ ++struct __kernel_stat64_armeb { ++ /* This definition changes the layout on big-endian from that ++ * used in 2.4.31 - ABI change! Likewise for st_rdev. ++ */ ++ unsigned long long st_dev; ++ unsigned char __pad0[4]; ++ unsigned long __st_ino; ++ unsigned int st_mode; ++ unsigned int st_nlink; ++ unsigned long st_uid; ++ unsigned long st_gid; ++ unsigned long long st_rdev; ++ unsigned char __pad3[4]; ++ long long st_size; ++ unsigned long st_blksize; ++ unsigned long __pad4; ++ unsigned long st_blocks; ++ unsigned long st_atime; ++ unsigned long st_atime_nsec; ++ unsigned long st_mtime; ++ unsigned long st_mtime_nsec; ++ unsigned long st_ctime; ++ unsigned long st_ctime_nsec; ++ unsigned long long st_ino; ++}; ++ ++/* This fixup only works so long as the old struct stat64 is no ++ * smaller than the new one - the caller of xstatconv uses the ++ * *old* struct, but the kernel writes the new one. CASSERT ++ * detects this at compile time. ++ */ ++#define CASSERT(c) do switch (0) { case 0:; case (c):; } while (0) ++ ++void __xstat64_conv_new(struct __kernel_stat64_armeb *kbuf, struct stat64 *buf) ++{ ++ CASSERT(sizeof *kbuf <= sizeof (struct kernel_stat64)); ++ ++ /* Convert from new kernel version of `struct stat64'. */ ++ buf->st_dev = kbuf->st_dev; ++ buf->st_ino = kbuf->st_ino; ++#ifdef _HAVE_STAT64___ST_INO ++ buf->__st_ino = kbuf->__st_ino; ++#endif ++ buf->st_mode = kbuf->st_mode; ++ buf->st_nlink = kbuf->st_nlink; ++ buf->st_uid = kbuf->st_uid; ++ buf->st_gid = kbuf->st_gid; ++ buf->st_rdev = kbuf->st_rdev; ++ buf->st_size = kbuf->st_size; ++ buf->st_blksize = kbuf->st_blksize; ++ buf->st_blocks = kbuf->st_blocks; ++ buf->st_atime = kbuf->st_atime; ++ buf->st_mtime = kbuf->st_mtime; ++ buf->st_ctime = kbuf->st_ctime; ++} ++#define _MAY_HAVE_NEW_STAT64 1 ++#else ++#define _MAY_HAVE_NEW_STAT64 0 ++#endif ++ ++/* The following is taken verbatim from xstatconv.c apart from ++ * the addition of the _MAY_HAVE_NEW_STAT64 code. ++ */ + void __xstat_conv(struct kernel_stat *kbuf, struct stat *buf) + { + /* Convert to current kernel version of `struct stat'. */ +@@ -53,6 +138,19 @@ + #if defined __UCLIBC_HAS_LFS__ + void __xstat64_conv(struct kernel_stat64 *kbuf, struct stat64 *buf) + { ++# if _MAY_HAVE_NEW_STAT64 ++ /* This relies on any device (0,0) not being mountable - i.e. ++ * it fails on Linux 2.4 if dev(0,0) is a mountable block file ++ * system and itself contains it's own device. That doesn't ++ * happen on Linux 2.4 so far as I can see, but even if it ++ * does the API only fails (even then) if 2.4 didn't set all ++ * of the pad bytes to 0 (and it does set them to zero.) ++ */ ++ if (kbuf->st_dev == 0 && kbuf->st_rdev == 0) { ++ __xstat64_conv_new((struct __kernel_stat64_armeb*)kbuf, buf); ++ return; ++ } ++# endif + /* Convert to current kernel version of `struct stat64'. */ + buf->st_dev = kbuf->st_dev; + buf->st_ino = kbuf->st_ino; diff --git a/meta/recipes-core/uclibc/files/errno_values.h.patch b/meta/recipes-core/uclibc/files/errno_values.h.patch new file mode 100644 index 0000000000..a1e39c181b --- /dev/null +++ b/meta/recipes-core/uclibc/files/errno_values.h.patch @@ -0,0 +1,21 @@ +Index: uClibc-0.9.29/libc/sysdeps/linux/common/bits/errno_values.h +=================================================================== +--- uClibc-0.9.29/libc/sysdeps/linux/common/bits/errno_values.h 2002-08-23 20:48:19.000000000 +0200 ++++ uClibc-0.9.29/libc/sysdeps/linux/common/bits/errno_values.h 2007-07-01 22:11:53.000000000 +0200 +@@ -134,4 +134,16 @@ + #define ENOMEDIUM 123 /* No medium found */ + #define EMEDIUMTYPE 124 /* Wrong medium type */ + ++/* the following errornumbers are only in 2.6 */ ++ ++#define ECANCELED 125 /* Operation Canceled */ ++#define ENOKEY 126 /* Required key not available */ ++#define EKEYEXPIRED 127 /* Key has expired */ ++#define EKEYREVOKED 128 /* Key has been revoked */ ++#define EKEYREJECTED 129 /* Key was rejected by service */ ++ ++/* for robust mutexes */ ++#define EOWNERDEAD 130 /* Owner died */ ++#define ENOTRECOVERABLE 131 /* State not recoverable */ ++ + #endif /* _BITS_ERRNO_VALUES_H */ diff --git a/meta/recipes-core/uclibc/files/kernel-key-t-ipc.h.patch b/meta/recipes-core/uclibc/files/kernel-key-t-ipc.h.patch new file mode 100644 index 0000000000..4cc4530470 --- /dev/null +++ b/meta/recipes-core/uclibc/files/kernel-key-t-ipc.h.patch @@ -0,0 +1,27 @@ +# include/linux/posix_types.h defines __kernel_key_t as int, this file +# contains an identical definition. This results in a compiler error +# if both files are included. The ipc.h file, however, also includes +# bits/types.h, which typedefs __key_t to (int), therefore it must +# be safe to use __key_t in place of __kernel_key_t (given that C +# regards equivalent numeric typedefs as identical.) +--- uClibc-0.9.27/libc/sysdeps/linux/common/bits/ipc.h.orig 2005-05-07 13:36:04.448332211 -0700 ++++ uClibc-0.9.27/libc/sysdeps/linux/common/bits/ipc.h 2005-05-07 13:37:00.493885708 -0700 +@@ -35,9 +35,6 @@ + # define IPC_INFO 3 /* See ipcs. */ + #endif + +-/* Type of a SYSV IPC key. */ +-typedef int __kernel_key_t; +- + /* Special key values. */ + #define IPC_PRIVATE ((__key_t) 0) /* Private key. */ + +@@ -45,7 +42,7 @@ + /* Data structure used to pass permission information to IPC operations. */ + struct ipc_perm + { +- __kernel_key_t __key; ++ __key_t __key; + __kernel_uid_t uid; + __kernel_gid_t gid; + __kernel_uid_t cuid; diff --git a/meta/recipes-core/uclibc/files/nokernelheadercheck.patch b/meta/recipes-core/uclibc/files/nokernelheadercheck.patch new file mode 100644 index 0000000000..9f09fb2ac9 --- /dev/null +++ b/meta/recipes-core/uclibc/files/nokernelheadercheck.patch @@ -0,0 +1,24 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- uClibc/Makefile~nokernelheadercheck ++++ uClibc/Makefile +@@ -121,11 +121,11 @@ + @./extra/config/conf -o extra/Configs/Config.in + + headers: include/bits/uClibc_config.h +-ifeq ($(strip $(ARCH_HAS_MMU)),y) +- @set -x; ./extra/scripts/fix_includes.sh -k $(KERNEL_SOURCE) -t $(TARGET_ARCH) +-else +- @set -x; ./extra/scripts/fix_includes.sh -k $(KERNEL_SOURCE) -t $(TARGET_ARCH) -n +-endif ++#ifeq ($(strip $(ARCH_HAS_MMU)),y) ++# @set -x; ./extra/scripts/fix_includes.sh -k $(KERNEL_SOURCE) -t $(TARGET_ARCH) ++#else ++# @set -x; ./extra/scripts/fix_includes.sh -k $(KERNEL_SOURCE) -t $(TARGET_ARCH) -n ++#endif + @cd include/bits; \ + set -e; \ + for i in `ls ../../libc/sysdeps/linux/common/bits/*.h` ; do \ diff --git a/meta/recipes-core/uclibc/files/termios.h.patch b/meta/recipes-core/uclibc/files/termios.h.patch new file mode 100644 index 0000000000..f7200ba393 --- /dev/null +++ b/meta/recipes-core/uclibc/files/termios.h.patch @@ -0,0 +1,22 @@ +Index: uClibc-0.9.29/libc/sysdeps/linux/common/bits/termios.h +=================================================================== +--- uClibc-0.9.29.orig/libc/sysdeps/linux/common/bits/termios.h 2006-02-13 09:41:37.000000000 +0100 ++++ uClibc-0.9.29/libc/sysdeps/linux/common/bits/termios.h 2007-07-03 00:41:27.000000000 +0200 +@@ -156,7 +156,6 @@ + #endif + #define B57600 0010001 + #define B115200 0010002 +-#if 0 /* limited on uClibc, keep in sync w/ cfsetspeed.c */ + #define B230400 0010003 + #define B460800 0010004 + #define B500000 0010005 +@@ -171,9 +170,6 @@ + #define B3500000 0010016 + #define B4000000 0010017 + #define __MAX_BAUD B4000000 +-#else +-#define __MAX_BAUD B115200 +-#endif + #ifdef __USE_MISC + # define CIBAUD 002003600000 /* input baud rate (not used) */ + # define CMSPAR 010000000000 /* mark or space (stick) parity */ diff --git a/meta/recipes-core/uclibc/files/uClibc.distro b/meta/recipes-core/uclibc/files/uClibc.distro new file mode 100644 index 0000000000..d87b891b41 --- /dev/null +++ b/meta/recipes-core/uclibc/files/uClibc.distro @@ -0,0 +1,3 @@ +# Default per-distro config +# DO NOT CHANGE THIS +# Create a new file ${DISTRO}/uClibc.distro diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/Use-__always_inline-instead-of-__inline__.patch b/meta/recipes-core/uclibc/uclibc-0.9.30.1/Use-__always_inline-instead-of-__inline__.patch new file mode 100644 index 0000000000..a9c7a4fb10 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/Use-__always_inline-instead-of-__inline__.patch @@ -0,0 +1,393 @@ +From c190f738e1b0e87658ea5f86c057fb147dc19428 Mon Sep 17 00:00:00 2001 +From: Carmelo Amoroso <carmelo.amoroso@st.com> +Date: Thu, 5 Mar 2009 13:28:55 +0000 +Subject: [PATCH] Use __always_inline instead of __inline__ + +--- + ldso/ldso/arm/dl-sysdep.h | 8 ++++---- + ldso/ldso/bfin/dl-sysdep.h | 2 +- + ldso/ldso/cris/dl-sysdep.h | 6 +++--- + ldso/ldso/i386/dl-sysdep.h | 10 +++++----- + ldso/ldso/m68k/dl-sysdep.h | 6 +++--- + ldso/ldso/mips/dl-sysdep.h | 8 ++++---- + ldso/ldso/powerpc/dl-sysdep.h | 8 ++++---- + ldso/ldso/sh/dl-sysdep.h | 8 ++++---- + ldso/ldso/sh64/dl-sysdep.h | 6 +++--- + ldso/ldso/sparc/dl-sysdep.h | 8 ++++---- + ldso/ldso/xtensa/dl-sysdep.h | 6 +++--- + 11 files changed, 38 insertions(+), 38 deletions(-) + +diff --git a/ldso/ldso/arm/dl-sysdep.h b/ldso/ldso/arm/dl-sysdep.h +index eea3b98..5191dd7 100644 +--- a/ldso/ldso/arm/dl-sysdep.h ++++ b/ldso/ldso/arm/dl-sysdep.h +@@ -15,7 +15,7 @@ + GOT_BASE[1] = (unsigned long) MODULE; \ + } + +-static __inline__ unsigned long arm_modulus(unsigned long m, unsigned long p) ++static __always_inline unsigned long arm_modulus(unsigned long m, unsigned long p) + { + unsigned long i,t,inc; + i=p; t=0; +@@ -67,7 +67,7 @@ unsigned long _dl_linux_resolver(struct elf_resolve * tpnt, int reloc_entry); + first element of the GOT. We used to use the PIC register to do this + without a constant pool reference, but GCC 4.2 will use a pseudo-register + for the PIC base, so it may not be in r10. */ +-static __inline__ Elf32_Addr __attribute__ ((unused)) ++static __always_inline Elf32_Addr __attribute__ ((unused)) + elf_machine_dynamic (void) + { + Elf32_Addr dynamic; +@@ -99,7 +99,7 @@ elf_machine_dynamic (void) + } + + /* Return the run-time load address of the shared object. */ +-static __inline__ Elf32_Addr __attribute__ ((unused)) ++static __always_inline Elf32_Addr __attribute__ ((unused)) + elf_machine_load_address (void) + { + extern void __dl_start __asm__ ("_dl_start"); +@@ -123,7 +123,7 @@ elf_machine_load_address (void) + return pcrel_addr - got_addr; + } + +-static __inline__ void ++static __always_inline void + elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr, + Elf32_Word relative_count) + { +diff --git a/ldso/ldso/bfin/dl-sysdep.h b/ldso/ldso/bfin/dl-sysdep.h +index 3c88da4..f0c5129 100644 +--- a/ldso/ldso/bfin/dl-sysdep.h ++++ b/ldso/ldso/bfin/dl-sysdep.h +@@ -210,7 +210,7 @@ while (0) + #endif + + #include <elf.h> +-static __inline__ void ++static __always_inline void + elf_machine_relative (DL_LOADADDR_TYPE load_off, const Elf32_Addr rel_addr, + Elf32_Word relative_count) + { +diff --git a/ldso/ldso/cris/dl-sysdep.h b/ldso/ldso/cris/dl-sysdep.h +index ffb763a..e454c10 100644 +--- a/ldso/ldso/cris/dl-sysdep.h ++++ b/ldso/ldso/cris/dl-sysdep.h +@@ -37,7 +37,7 @@ extern unsigned long _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entr + || ((type) == R_CRIS_GLOB_DAT)) * ELF_RTYPE_CLASS_PLT) \ + | (((type) == R_CRIS_COPY) * ELF_RTYPE_CLASS_COPY)) + +-static __inline__ Elf32_Addr ++static __always_inline Elf32_Addr + elf_machine_dynamic(void) + { + /* Don't just set this to an asm variable "r0" since that's not logical +@@ -59,7 +59,7 @@ elf_machine_dynamic(void) + there's some other symbol we could use, that we don't *have* to force a + GOT entry for. */ + +-static __inline__ Elf32_Addr ++static __always_inline Elf32_Addr + elf_machine_load_address(void) + { + Elf32_Addr gotaddr_diff; +@@ -93,7 +93,7 @@ elf_machine_load_address(void) + return gotaddr_diff; + } + +-static __inline__ void ++static __always_inline void + elf_machine_relative(Elf32_Addr load_off, const Elf32_Addr rel_addr, + Elf32_Word relative_count) + { +diff --git a/ldso/ldso/i386/dl-sysdep.h b/ldso/ldso/i386/dl-sysdep.h +index 77fa372..6e84861 100644 +--- a/ldso/ldso/i386/dl-sysdep.h ++++ b/ldso/ldso/i386/dl-sysdep.h +@@ -37,8 +37,8 @@ extern unsigned long _dl_linux_resolver(struct elf_resolve * tpnt, int reloc_ent + /* Return the link-time address of _DYNAMIC. Conveniently, this is the + first element of the GOT. This must be inlined in a function which + uses global data. */ +-static __inline__ Elf32_Addr elf_machine_dynamic (void) attribute_unused; +-static __inline__ Elf32_Addr ++static __always_inline Elf32_Addr elf_machine_dynamic (void) attribute_unused; ++static __always_inline Elf32_Addr + elf_machine_dynamic (void) + { + register Elf32_Addr *got __asm__ ("%ebx"); +@@ -47,8 +47,8 @@ elf_machine_dynamic (void) + + + /* Return the run-time load address of the shared object. */ +-static __inline__ Elf32_Addr elf_machine_load_address (void) attribute_unused; +-static __inline__ Elf32_Addr ++static __always_inline Elf32_Addr elf_machine_load_address (void) attribute_unused; ++static __always_inline Elf32_Addr + elf_machine_load_address (void) + { + /* It doesn't matter what variable this is, the reference never makes +@@ -61,7 +61,7 @@ elf_machine_load_address (void) + return addr; + } + +-static __inline__ void ++static __always_inline void + elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr, + Elf32_Word relative_count) + { +diff --git a/ldso/ldso/m68k/dl-sysdep.h b/ldso/ldso/m68k/dl-sysdep.h +index 8e26e20..259cb84 100644 +--- a/ldso/ldso/m68k/dl-sysdep.h ++++ b/ldso/ldso/m68k/dl-sysdep.h +@@ -39,7 +39,7 @@ extern unsigned long _dl_linux_resolver (struct elf_resolve *, int); + /* Return the link-time address of _DYNAMIC. Conveniently, this is the + first element of the GOT. This must be inlined in a function which + uses global data. */ +-static __inline__ Elf32_Addr ++static __always_inline Elf32_Addr + elf_machine_dynamic (void) + { + register Elf32_Addr *got __asm__ ("%a5"); +@@ -48,7 +48,7 @@ elf_machine_dynamic (void) + + + /* Return the run-time load address of the shared object. */ +-static __inline__ Elf32_Addr ++static __always_inline Elf32_Addr + elf_machine_load_address (void) + { + Elf32_Addr addr; +@@ -58,7 +58,7 @@ elf_machine_load_address (void) + return addr; + } + +-static __inline__ void ++static __always_inline void + elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr, + Elf32_Word relative_count) + { +diff --git a/ldso/ldso/mips/dl-sysdep.h b/ldso/ldso/mips/dl-sysdep.h +index cf6b28b..30d84fb 100644 +--- a/ldso/ldso/mips/dl-sysdep.h ++++ b/ldso/ldso/mips/dl-sysdep.h +@@ -169,7 +169,7 @@ void _dl_perform_mips_global_got_relocations(struct elf_resolve *tpnt, int lazy) + + #define OFFSET_GP_GOT 0x7ff0 + +-static __inline__ ElfW(Addr) * ++static __always_inline ElfW(Addr) * + elf_mips_got_from_gpreg (ElfW(Addr) gpreg) + { + /* FIXME: the offset of gp from GOT may be system-dependent. */ +@@ -179,7 +179,7 @@ elf_mips_got_from_gpreg (ElfW(Addr) gpreg) + /* Return the link-time address of _DYNAMIC. Conveniently, this is the + first element of the GOT. This must be inlined in a function which + uses global data. We assume its $gp points to the primary GOT. */ +-static __inline__ ElfW(Addr) ++static __always_inline ElfW(Addr) + elf_machine_dynamic (void) + { + register ElfW(Addr) gp __asm__ ("$28"); +@@ -198,7 +198,7 @@ elf_machine_dynamic (void) + #endif + + /* Return the run-time load address of the shared object. */ +-static __inline__ ElfW(Addr) ++static __always_inline ElfW(Addr) + elf_machine_load_address (void) + { + ElfW(Addr) addr; +@@ -214,7 +214,7 @@ elf_machine_load_address (void) + return addr; + } + +-static __inline__ void ++static __always_inline void + elf_machine_relative (ElfW(Addr) load_off, const ElfW(Addr) rel_addr, + ElfW(Word) relative_count) + { +diff --git a/ldso/ldso/powerpc/dl-sysdep.h b/ldso/ldso/powerpc/dl-sysdep.h +index fdbf564..f33214c 100644 +--- a/ldso/ldso/powerpc/dl-sysdep.h ++++ b/ldso/ldso/powerpc/dl-sysdep.h +@@ -85,7 +85,7 @@ void _dl_init_got(unsigned long *lpnt,struct elf_resolve *tpnt); + #define ELF_MACHINE_PLTREL_OVERLAP 1 + + /* Return the value of the GOT pointer. */ +-static __inline__ Elf32_Addr * __attribute__ ((const)) ++static __always_inline Elf32_Addr * __attribute__ ((const)) + ppc_got (void) + { + Elf32_Addr *got; +@@ -104,14 +104,14 @@ ppc_got (void) + + /* Return the link-time address of _DYNAMIC, stored as + the first value in the GOT. */ +-static __inline__ Elf32_Addr __attribute__ ((const)) ++static __always_inline Elf32_Addr __attribute__ ((const)) + elf_machine_dynamic (void) + { + return *ppc_got(); + } + + /* Return the run-time load address of the shared object. */ +-static __inline__ Elf32_Addr __attribute__ ((const)) ++static __always_inline Elf32_Addr __attribute__ ((const)) + elf_machine_load_address (void) + { + Elf32_Addr *branchaddr; +@@ -159,7 +159,7 @@ elf_machine_load_address (void) + return runtime_dynamic - elf_machine_dynamic (); + } + +-static __inline__ void ++static __always_inline void + elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr, + Elf32_Word relative_count) + { +diff --git a/ldso/ldso/sh/dl-sysdep.h b/ldso/ldso/sh/dl-sysdep.h +index daedda5..d4fc784 100644 +--- a/ldso/ldso/sh/dl-sysdep.h ++++ b/ldso/ldso/sh/dl-sysdep.h +@@ -25,7 +25,7 @@ + struct elf_resolve; + extern unsigned long _dl_linux_resolver(struct elf_resolve * tpnt, int reloc_entry); + +-static __inline__ unsigned int ++static __always_inline unsigned int + _dl_urem(unsigned int n, unsigned int base) + { + int res; +@@ -95,7 +95,7 @@ _dl_urem(unsigned int n, unsigned int base) + /* Return the link-time address of _DYNAMIC. Conveniently, this is the + first element of the GOT. This must be inlined in a function which + uses global data. */ +-static __inline__ Elf32_Addr __attribute__ ((unused)) ++static __always_inline Elf32_Addr __attribute__ ((unused)) + elf_machine_dynamic (void) + { + register Elf32_Addr *got; +@@ -104,7 +104,7 @@ elf_machine_dynamic (void) + } + + /* Return the run-time load address of the shared object. */ +-static __inline__ Elf32_Addr __attribute__ ((unused)) ++static __always_inline Elf32_Addr __attribute__ ((unused)) + elf_machine_load_address (void) + { + Elf32_Addr addr; +@@ -146,7 +146,7 @@ elf_machine_load_address (void) + } \ + } + +-static __inline__ void ++static __always_inline void + elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr, + Elf32_Word relative_count) + { +diff --git a/ldso/ldso/sh64/dl-sysdep.h b/ldso/ldso/sh64/dl-sysdep.h +index fc67b12..15d9b5e 100644 +--- a/ldso/ldso/sh64/dl-sysdep.h ++++ b/ldso/ldso/sh64/dl-sysdep.h +@@ -41,7 +41,7 @@ extern unsigned long _dl_linux_resolver(struct elf_resolve * tpnt, int reloc_ent + /* Return the link-time address of _DYNAMIC. Conveniently, this is the + first element of the GOT. This must be inlined in a function which + uses global data. */ +-static __inline__ Elf32_Addr elf_machine_dynamic(void) ++static __always_inline Elf32_Addr elf_machine_dynamic(void) + { + register Elf32_Addr *got; + +@@ -69,7 +69,7 @@ static __inline__ Elf32_Addr elf_machine_dynamic(void) + } + + /* Return the run-time load address of the shared object. */ +-static __inline__ Elf32_Addr elf_machine_load_address(void) ++static __always_inline Elf32_Addr elf_machine_load_address(void) + { + Elf32_Addr addr; + +@@ -122,7 +122,7 @@ static __inline__ Elf32_Addr elf_machine_load_address(void) + } \ + } + +-static __inline__ void ++static __always_inline void + elf_machine_relative(Elf32_Addr load_off, const Elf32_Addr rel_addr, + Elf32_Word relative_count) + { +diff --git a/ldso/ldso/sparc/dl-sysdep.h b/ldso/ldso/sparc/dl-sysdep.h +index 7936517..ebfa268 100644 +--- a/ldso/ldso/sparc/dl-sysdep.h ++++ b/ldso/ldso/sparc/dl-sysdep.h +@@ -52,7 +52,7 @@ unsigned long _dl_linux_resolver(struct elf_resolve * tpnt, int reloc_entry); + + #ifndef COMPILE_ASM + /* Cheap modulo implementation, taken from arm/ld_sysdep.h. */ +-static __inline__ unsigned long ++static __always_inline unsigned long + sparc_mod(unsigned long m, unsigned long p) + { + unsigned long i, t, inc; +@@ -118,7 +118,7 @@ do { register Elf32_Addr pc __asm__("o7"); \ + /* Return the link-time address of _DYNAMIC. Conveniently, this is the + first element of the GOT. This must be inlined in a function which + uses global data. */ +-static __inline__ Elf32_Addr ++static __always_inline Elf32_Addr + elf_machine_dynamic (void) + { + register Elf32_Addr *got __asm__ ("%l7"); +@@ -129,7 +129,7 @@ elf_machine_dynamic (void) + } + + /* Return the run-time load address of the shared object. */ +-static __inline__ Elf32_Addr ++static __always_inline Elf32_Addr + elf_machine_load_address (void) + { + register Elf32_Addr *pc __asm__ ("%o7"), *got __asm__ ("%l7"); +@@ -148,7 +148,7 @@ elf_machine_load_address (void) + return (Elf32_Addr) got - *got + (pc[2] - pc[3]) * 4 - 4; + } + +-static __inline__ void ++static __always_inline void + elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr, + Elf32_Word relative_count) + { +diff --git a/ldso/ldso/xtensa/dl-sysdep.h b/ldso/ldso/xtensa/dl-sysdep.h +index daae428..07b9b79 100644 +--- a/ldso/ldso/xtensa/dl-sysdep.h ++++ b/ldso/ldso/xtensa/dl-sysdep.h +@@ -85,7 +85,7 @@ extern unsigned long _dl_linux_resolver (struct elf_resolve *, int); + (((type) == R_XTENSA_JMP_SLOT) * ELF_RTYPE_CLASS_PLT) + + /* Return the link-time address of _DYNAMIC. */ +-static __inline__ Elf32_Addr ++static __always_inline Elf32_Addr + elf_machine_dynamic (void) + { + /* This function is only used while bootstrapping the runtime linker. +@@ -95,7 +95,7 @@ elf_machine_dynamic (void) + } + + /* Return the run-time load address of the shared object. */ +-static __inline__ Elf32_Addr ++static __always_inline Elf32_Addr + elf_machine_load_address (void) + { + Elf32_Addr addr, tmp; +@@ -116,7 +116,7 @@ elf_machine_load_address (void) + return addr - 3; + } + +-static __inline__ void ++static __always_inline void + elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr, + Elf32_Word relative_count) + { +-- +1.6.3.3.444.g4ecbc + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/akita/uClibc.machine b/meta/recipes-core/uclibc/uclibc-0.9.30.1/akita/uClibc.machine new file mode 100644 index 0000000000..e27931cf6b --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/akita/uClibc.machine @@ -0,0 +1,70 @@ +# +# Automatically generated make config: don't edit +# Sat May 12 23:18:41 2007 +# +# TARGET_alpha is not set +TARGET_arm=y +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +# TARGET_i386 is not set +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="arm" +FORCE_OPTIONS_FOR_ARCH=y +# CONFIG_ARM_OABI is not set +CONFIG_ARM_EABI=y +USE_BX=y +# CONFIG_GENERIC_ARM is not set +# CONFIG_ARM610 is not set +# CONFIG_ARM710 is not set +# CONFIG_ARM7TDMI is not set +# CONFIG_ARM720T is not set +# CONFIG_ARM920T is not set +# CONFIG_ARM922T is not set +# CONFIG_ARM926T is not set +# CONFIG_ARM10T is not set +# CONFIG_ARM1136JF_S is not set +# CONFIG_ARM1176JZ_S is not set +# CONFIG_ARM1176JZF_S is not set +# CONFIG_ARM_SA110 is not set +# CONFIG_ARM_SA1100 is not set +# CONFIG_ARM_XSCALE is not set +CONFIG_ARM_IWMMXT=y +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_ANY_ENDIAN=y +ARCH_LITTLE_ENDIAN=y +# ARCH_WANTS_BIG_ENDIAN is not set +ARCH_WANTS_LITTLE_ENDIAN=y +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +# UCLIBC_HAS_FPU is not set +UCLIBC_HAS_SOFT_FLOAT=y +DO_C99_MATH=y +KERNEL_HEADERS="/usr/include" +HAVE_DOT_CONFIG=y + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/arm-linuxthreads.patch b/meta/recipes-core/uclibc/uclibc-0.9.30.1/arm-linuxthreads.patch new file mode 100644 index 0000000000..e222668a66 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/arm-linuxthreads.patch @@ -0,0 +1,218 @@ +Index: uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S 2008-08-28 00:22:06.278340855 +0200 +@@ -0,0 +1,78 @@ ++/* Copyright (C) 1999, 2002, 2003, 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Philip Blundell <philb@gnu.org>. ++ ++ 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> ++#define _ERRNO_H 1 ++#include <bits/errno.h> ++#include <kernel-features.h> ++ ++/* Clone the calling process, but without copying the whole address space. ++ The calling process is suspended until the new process exits or is ++ replaced by a call to `execve'. Return -1 for errors, 0 to the new process, ++ and the process ID of the new process to the old process. */ ++ ++ENTRY (__vfork) ++ ++#ifdef __NR_vfork ++ ++#ifdef SHARED ++ ldr ip, 1f ++ ldr r0, 2f ++3: add ip, pc, ip ++ ldr r0, [ip, r0] ++#else ++ ldr r0, 1f ++#endif ++ movs r0, r0 ++ bne HIDDEN_JUMPTARGET (__fork) ++ ++ DO_CALL (vfork, 0) ++ cmn a1, #4096 ++ RETINSTR(cc, lr) ++ ++#ifndef __ASSUME_VFORK_SYSCALL ++ /* Check if vfork syscall is known at all. */ ++ cmn a1, #ENOSYS ++ bne PLTJMP(C_SYMBOL_NAME(__syscall_error)) ++#endif ++ ++#endif ++ ++#ifndef __ASSUME_VFORK_SYSCALL ++ /* If we don't have vfork, fork is close enough. */ ++ DO_CALL (fork, 0) ++ cmn a1, #4096 ++ RETINSTR(cc, lr) ++#elif !defined __NR_vfork ++# error "__NR_vfork not available and __ASSUME_VFORK_SYSCALL defined" ++#endif ++ b PLTJMP(C_SYMBOL_NAME(__syscall_error)) ++ ++#ifdef SHARED ++1: .word _GLOBAL_OFFSET_TABLE_ - 3b - 8 ++2: .word __libc_pthread_functions(GOTOFF) ++#else ++ .weak pthread_create ++1: .word pthread_create ++#endif ++ ++PSEUDO_END (__vfork) ++libc_hidden_def (__vfork) ++ ++weak_alias (__vfork, vfork) +Index: uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h 2008-08-28 00:28:04.301636993 +0200 +@@ -0,0 +1,130 @@ ++/* Copyright (C) 2003, 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Phil Blundell <pb@nexus.co.uk>, 2003. ++ ++ 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 <tls.h> ++#include <pt-machine.h> ++#ifndef __ASSEMBLER__ ++# include <linuxthreads/internals.h> ++#endif ++ ++#if !defined NOT_IN_libc || defined IS_IN_libpthread ++ ++/* We push lr onto the stack, so we have to use ldmib instead of ldmia ++ to find the saved arguments. */ ++# ifdef PIC ++# undef DOARGS_5 ++# undef DOARGS_6 ++# undef DOARGS_7 ++# define DOARGS_5 str r4, [sp, $-4]!; ldr r4, [sp, $8]; ++# define DOARGS_6 mov ip, sp; stmfd sp!, {r4, r5}; ldmib ip, {r4, r5}; ++# define DOARGS_7 mov ip, sp; stmfd sp!, {r4, r5, r6}; ldmib ip, {r4, r5, r6}; ++# endif ++ ++# undef PSEUDO_RET ++# define PSEUDO_RET \ ++ ldrcc pc, [sp], $4; \ ++ ldr lr, [sp], $4; \ ++ b PLTJMP(SYSCALL_ERROR) ++ ++# undef PSEUDO ++# define PSEUDO(name, syscall_name, args) \ ++ .section ".text"; \ ++ PSEUDO_PROLOGUE; \ ++ ENTRY (name); \ ++ SINGLE_THREAD_P; \ ++ bne .Lpseudo_cancel; \ ++ DO_CALL (syscall_name, args); \ ++ cmn r0, $4096; \ ++ RETINSTR(cc, lr); \ ++ b PLTJMP(SYSCALL_ERROR); \ ++ .Lpseudo_cancel: \ ++ str lr, [sp, $-4]!; \ ++ DOCARGS_##args; /* save syscall args around CENABLE. */ \ ++ CENABLE; \ ++ mov ip, r0; /* put mask in safe place. */ \ ++ UNDOCARGS_##args; /* restore syscall args. */ \ ++ swi SYS_ify (syscall_name); /* do the call. */ \ ++ str r0, [sp, $-4]!; /* save syscall return value. */ \ ++ mov r0, ip; /* get mask back. */ \ ++ CDISABLE; \ ++ ldr r0, [sp], $4; /* retrieve return value. */ \ ++ UNDOC2ARGS_##args; /* fix register damage. */ \ ++ cmn r0, $4096; ++ ++# define DOCARGS_0 ++# define UNDOCARGS_0 ++# define UNDOC2ARGS_0 ++ ++# define DOCARGS_1 str r0, [sp, #-4]!; ++# define UNDOCARGS_1 ldr r0, [sp], #4; ++# define UNDOC2ARGS_1 ++ ++# define DOCARGS_2 str r1, [sp, #-4]!; str r0, [sp, #-4]!; ++# define UNDOCARGS_2 ldr r0, [sp], #4; ldr r1, [sp], #4; ++# define UNDOC2ARGS_2 ++ ++# define DOCARGS_3 str r2, [sp, #-4]!; str r1, [sp, #-4]!; str r0, [sp, #-4]!; ++# define UNDOCARGS_3 ldr r0, [sp], #4; ldr r1, [sp], #4; ldr r2, [sp], #4 ++# define UNDOC2ARGS_3 ++ ++# define DOCARGS_4 stmfd sp!, {r0-r3} ++# define UNDOCARGS_4 ldmfd sp!, {r0-r3} ++# define UNDOC2ARGS_4 ++ ++# define DOCARGS_5 stmfd sp!, {r0-r3} ++# define UNDOCARGS_5 ldmfd sp, {r0-r3}; str r4, [sp, #-4]!; ldr r4, [sp, #24] ++# define UNDOC2ARGS_5 ldr r4, [sp], #20 ++ ++# ifdef IS_IN_libpthread ++# define CENABLE bl PLTJMP(__pthread_enable_asynccancel) ++# define CDISABLE bl PLTJMP(__pthread_disable_asynccancel) ++# define __local_multiple_threads __pthread_multiple_threads ++# else ++# define CENABLE bl PLTJMP(__libc_enable_asynccancel) ++# define CDISABLE bl PLTJMP(__libc_disable_asynccancel) ++# define __local_multiple_threads __libc_multiple_threads ++# endif ++ ++# ifndef __ASSEMBLER__ ++extern int __local_multiple_threads attribute_hidden; ++# define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1) ++# else ++# if !defined PIC ++# define SINGLE_THREAD_P \ ++ ldr ip, =__local_multiple_threads; \ ++ ldr ip, [ip]; \ ++ teq ip, #0; ++# define PSEUDO_PROLOGUE ++# else ++# define SINGLE_THREAD_P \ ++ ldr ip, 1b; \ ++2: \ ++ ldr ip, [pc, ip]; \ ++ teq ip, #0; ++# define PSEUDO_PROLOGUE \ ++ 1: .word __local_multiple_threads - 2f - 8; ++# endif ++# endif ++ ++#elif !defined __ASSEMBLER__ ++ ++/* This code should never be used but we define it anyhow. */ ++# define SINGLE_THREAD_P (1) ++ ++#endif diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/arm/uClibc.machine b/meta/recipes-core/uclibc/uclibc-0.9.30.1/arm/uClibc.machine new file mode 100644 index 0000000000..898b73a33b --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/arm/uClibc.machine @@ -0,0 +1,69 @@ +# +# Automatically generated make config: don't edit +# Mon May 14 10:23:14 2007 +# +# TARGET_alpha is not set +TARGET_arm=y +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +# TARGET_i386 is not set +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="arm" +FORCE_OPTIONS_FOR_ARCH=y +# CONFIG_ARM_OABI is not set +CONFIG_ARM_EABI=y +USE_BX=y +# CONFIG_GENERIC_ARM is not set +# CONFIG_ARM610 is not set +# CONFIG_ARM710 is not set +# CONFIG_ARM7TDMI is not set +# CONFIG_ARM720T is not set +CONFIG_ARM920T=y +# CONFIG_ARM922T is not set +# CONFIG_ARM926T is not set +# CONFIG_ARM10T is not set +# CONFIG_ARM1136JF_S is not set +# CONFIG_ARM1176JZ_S is not set +# CONFIG_ARM1176JZF_S is not set +# CONFIG_ARM_SA110 is not set +# CONFIG_ARM_SA1100 is not set +# CONFIG_ARM_XSCALE is not set +# CONFIG_ARM_IWMMXT is not set +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_ANY_ENDIAN=y +ARCH_LITTLE_ENDIAN=y +# ARCH_WANTS_BIG_ENDIAN is not set +ARCH_WANTS_LITTLE_ENDIAN=y +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +# UCLIBC_HAS_FPU is not set +UCLIBC_HAS_SOFT_FLOAT=y +KERNEL_HEADERS="/usr/include" +HAVE_DOT_CONFIG=y + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/armeb/uClibc.machine b/meta/recipes-core/uclibc/uclibc-0.9.30.1/armeb/uClibc.machine new file mode 100644 index 0000000000..2d9f63e531 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/armeb/uClibc.machine @@ -0,0 +1,70 @@ +# +# Automatically generated make config: don't edit +# Sat May 12 22:07:03 2007 +# +# TARGET_alpha is not set +TARGET_arm=y +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +# TARGET_i386 is not set +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="arm" +FORCE_OPTIONS_FOR_ARCH=y +# CONFIG_ARM_OABI is not set +CONFIG_ARM_EABI=y +USE_BX=y +# CONFIG_GENERIC_ARM is not set +# CONFIG_ARM610 is not set +# CONFIG_ARM710 is not set +# CONFIG_ARM7TDMI is not set +# CONFIG_ARM720T is not set +# CONFIG_ARM920T is not set +# CONFIG_ARM922T is not set +# CONFIG_ARM926T is not set +# CONFIG_ARM10T is not set +# CONFIG_ARM1136JF_S is not set +# CONFIG_ARM1176JZ_S is not set +# CONFIG_ARM1176JZF_S is not set +# CONFIG_ARM_SA110 is not set +# CONFIG_ARM_SA1100 is not set +CONFIG_ARM_XSCALE=y +# CONFIG_ARM_IWMMXT is not set +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_ANY_ENDIAN=y +ARCH_BIG_ENDIAN=y +ARCH_WANTS_BIG_ENDIAN=y +# ARCH_WANTS_LITTLE_ENDIAN is not set +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +# UCLIBC_HAS_FPU is not set +UCLIBC_HAS_SOFT_FLOAT=y +DO_C99_MATH=y +KERNEL_HEADERS="/usr/include" +HAVE_DOT_CONFIG=y + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/armv4t/uClibc.machine b/meta/recipes-core/uclibc/uclibc-0.9.30.1/armv4t/uClibc.machine new file mode 100644 index 0000000000..898b73a33b --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/armv4t/uClibc.machine @@ -0,0 +1,69 @@ +# +# Automatically generated make config: don't edit +# Mon May 14 10:23:14 2007 +# +# TARGET_alpha is not set +TARGET_arm=y +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +# TARGET_i386 is not set +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="arm" +FORCE_OPTIONS_FOR_ARCH=y +# CONFIG_ARM_OABI is not set +CONFIG_ARM_EABI=y +USE_BX=y +# CONFIG_GENERIC_ARM is not set +# CONFIG_ARM610 is not set +# CONFIG_ARM710 is not set +# CONFIG_ARM7TDMI is not set +# CONFIG_ARM720T is not set +CONFIG_ARM920T=y +# CONFIG_ARM922T is not set +# CONFIG_ARM926T is not set +# CONFIG_ARM10T is not set +# CONFIG_ARM1136JF_S is not set +# CONFIG_ARM1176JZ_S is not set +# CONFIG_ARM1176JZF_S is not set +# CONFIG_ARM_SA110 is not set +# CONFIG_ARM_SA1100 is not set +# CONFIG_ARM_XSCALE is not set +# CONFIG_ARM_IWMMXT is not set +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_ANY_ENDIAN=y +ARCH_LITTLE_ENDIAN=y +# ARCH_WANTS_BIG_ENDIAN is not set +ARCH_WANTS_LITTLE_ENDIAN=y +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +# UCLIBC_HAS_FPU is not set +UCLIBC_HAS_SOFT_FLOAT=y +KERNEL_HEADERS="/usr/include" +HAVE_DOT_CONFIG=y + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/armv5te/uClibc.machine b/meta/recipes-core/uclibc/uclibc-0.9.30.1/armv5te/uClibc.machine new file mode 100644 index 0000000000..ec0385bc0f --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/armv5te/uClibc.machine @@ -0,0 +1,70 @@ +# +# Automatically generated make config: don't edit +# Sun May 13 11:16:02 2007 +# +# TARGET_alpha is not set +TARGET_arm=y +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +# TARGET_i386 is not set +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="arm" +FORCE_OPTIONS_FOR_ARCH=y +# CONFIG_ARM_OABI is not set +CONFIG_ARM_EABI=y +USE_BX=y +# CONFIG_GENERIC_ARM is not set +# CONFIG_ARM610 is not set +# CONFIG_ARM710 is not set +# CONFIG_ARM7TDMI is not set +# CONFIG_ARM720T is not set +# CONFIG_ARM920T is not set +# CONFIG_ARM922T is not set +# CONFIG_ARM926T is not set +# CONFIG_ARM10T is not set +# CONFIG_ARM1136JF_S is not set +# CONFIG_ARM1176JZ_S is not set +# CONFIG_ARM1176JZF_S is not set +# CONFIG_ARM_SA110 is not set +# CONFIG_ARM_SA1100 is not set +CONFIG_ARM_XSCALE=y +# CONFIG_ARM_IWMMXT is not set +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_ANY_ENDIAN=y +ARCH_LITTLE_ENDIAN=y +# ARCH_WANTS_BIG_ENDIAN is not set +ARCH_WANTS_LITTLE_ENDIAN=y +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +# UCLIBC_HAS_FPU is not set +UCLIBC_HAS_SOFT_FLOAT=y +DO_C99_MATH=y +KERNEL_HEADERS="/data/build/koen/OE/build/tmp/angstrom/cross/arm-angstrom-linux-uclibcgnueabi/include" +HAVE_DOT_CONFIG=y + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/armv6/uClibc.machine b/meta/recipes-core/uclibc/uclibc-0.9.30.1/armv6/uClibc.machine new file mode 100644 index 0000000000..85f70f70c7 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/armv6/uClibc.machine @@ -0,0 +1,70 @@ +# +# Automatically generated make config: don't edit +# Sun May 13 11:16:02 2007 +# +# TARGET_alpha is not set +TARGET_arm=y +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +# TARGET_i386 is not set +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="arm" +FORCE_OPTIONS_FOR_ARCH=y +# CONFIG_ARM_OABI is not set +CONFIG_ARM_EABI=y +USE_BX=y +# CONFIG_GENERIC_ARM is not set +# CONFIG_ARM610 is not set +# CONFIG_ARM710 is not set +# CONFIG_ARM7TDMI is not set +# CONFIG_ARM720T is not set +# CONFIG_ARM920T is not set +# CONFIG_ARM922T is not set +# CONFIG_ARM926T is not set +# CONFIG_ARM10T is not set +# CONFIG_ARM1136JF_S is not set +# CONFIG_ARM1176JZ_S is not set +# CONFIG_ARM1176JZF_S is not set +# CONFIG_ARM_SA110 is not set +# CONFIG_ARM_SA1100 is not set +CONFIG_ARM_XSCALE=y +# CONFIG_ARM_IWMMXT is not set +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_ANY_ENDIAN=y +ARCH_LITTLE_ENDIAN=y +# ARCH_WANTS_BIG_ENDIAN is not set +ARCH_WANTS_LITTLE_ENDIAN=y +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +UCLIBC_HAS_FPU=y +UCLIBC_HAS_SOFT_FLOAT=n +DO_C99_MATH=y +KERNEL_HEADERS="/data/build/koen/OE/build/tmp/angstrom/cross/arm-angstrom-linux-uclibcgnueabi/include" +HAVE_DOT_CONFIG=y + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/armv7a/uClibc.machine b/meta/recipes-core/uclibc/uclibc-0.9.30.1/armv7a/uClibc.machine new file mode 100644 index 0000000000..85f70f70c7 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/armv7a/uClibc.machine @@ -0,0 +1,70 @@ +# +# Automatically generated make config: don't edit +# Sun May 13 11:16:02 2007 +# +# TARGET_alpha is not set +TARGET_arm=y +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +# TARGET_i386 is not set +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="arm" +FORCE_OPTIONS_FOR_ARCH=y +# CONFIG_ARM_OABI is not set +CONFIG_ARM_EABI=y +USE_BX=y +# CONFIG_GENERIC_ARM is not set +# CONFIG_ARM610 is not set +# CONFIG_ARM710 is not set +# CONFIG_ARM7TDMI is not set +# CONFIG_ARM720T is not set +# CONFIG_ARM920T is not set +# CONFIG_ARM922T is not set +# CONFIG_ARM926T is not set +# CONFIG_ARM10T is not set +# CONFIG_ARM1136JF_S is not set +# CONFIG_ARM1176JZ_S is not set +# CONFIG_ARM1176JZF_S is not set +# CONFIG_ARM_SA110 is not set +# CONFIG_ARM_SA1100 is not set +CONFIG_ARM_XSCALE=y +# CONFIG_ARM_IWMMXT is not set +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_ANY_ENDIAN=y +ARCH_LITTLE_ENDIAN=y +# ARCH_WANTS_BIG_ENDIAN is not set +ARCH_WANTS_LITTLE_ENDIAN=y +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +UCLIBC_HAS_FPU=y +UCLIBC_HAS_SOFT_FLOAT=n +DO_C99_MATH=y +KERNEL_HEADERS="/data/build/koen/OE/build/tmp/angstrom/cross/arm-angstrom-linux-uclibcgnueabi/include" +HAVE_DOT_CONFIG=y + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/c7x0/uClibc.machine b/meta/recipes-core/uclibc/uclibc-0.9.30.1/c7x0/uClibc.machine new file mode 100644 index 0000000000..ec0385bc0f --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/c7x0/uClibc.machine @@ -0,0 +1,70 @@ +# +# Automatically generated make config: don't edit +# Sun May 13 11:16:02 2007 +# +# TARGET_alpha is not set +TARGET_arm=y +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +# TARGET_i386 is not set +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="arm" +FORCE_OPTIONS_FOR_ARCH=y +# CONFIG_ARM_OABI is not set +CONFIG_ARM_EABI=y +USE_BX=y +# CONFIG_GENERIC_ARM is not set +# CONFIG_ARM610 is not set +# CONFIG_ARM710 is not set +# CONFIG_ARM7TDMI is not set +# CONFIG_ARM720T is not set +# CONFIG_ARM920T is not set +# CONFIG_ARM922T is not set +# CONFIG_ARM926T is not set +# CONFIG_ARM10T is not set +# CONFIG_ARM1136JF_S is not set +# CONFIG_ARM1176JZ_S is not set +# CONFIG_ARM1176JZF_S is not set +# CONFIG_ARM_SA110 is not set +# CONFIG_ARM_SA1100 is not set +CONFIG_ARM_XSCALE=y +# CONFIG_ARM_IWMMXT is not set +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_ANY_ENDIAN=y +ARCH_LITTLE_ENDIAN=y +# ARCH_WANTS_BIG_ENDIAN is not set +ARCH_WANTS_LITTLE_ENDIAN=y +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +# UCLIBC_HAS_FPU is not set +UCLIBC_HAS_SOFT_FLOAT=y +DO_C99_MATH=y +KERNEL_HEADERS="/data/build/koen/OE/build/tmp/angstrom/cross/arm-angstrom-linux-uclibcgnueabi/include" +HAVE_DOT_CONFIG=y + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/cm-x270/uClibc.machine b/meta/recipes-core/uclibc/uclibc-0.9.30.1/cm-x270/uClibc.machine new file mode 100644 index 0000000000..e27931cf6b --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/cm-x270/uClibc.machine @@ -0,0 +1,70 @@ +# +# Automatically generated make config: don't edit +# Sat May 12 23:18:41 2007 +# +# TARGET_alpha is not set +TARGET_arm=y +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +# TARGET_i386 is not set +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="arm" +FORCE_OPTIONS_FOR_ARCH=y +# CONFIG_ARM_OABI is not set +CONFIG_ARM_EABI=y +USE_BX=y +# CONFIG_GENERIC_ARM is not set +# CONFIG_ARM610 is not set +# CONFIG_ARM710 is not set +# CONFIG_ARM7TDMI is not set +# CONFIG_ARM720T is not set +# CONFIG_ARM920T is not set +# CONFIG_ARM922T is not set +# CONFIG_ARM926T is not set +# CONFIG_ARM10T is not set +# CONFIG_ARM1136JF_S is not set +# CONFIG_ARM1176JZ_S is not set +# CONFIG_ARM1176JZF_S is not set +# CONFIG_ARM_SA110 is not set +# CONFIG_ARM_SA1100 is not set +# CONFIG_ARM_XSCALE is not set +CONFIG_ARM_IWMMXT=y +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_ANY_ENDIAN=y +ARCH_LITTLE_ENDIAN=y +# ARCH_WANTS_BIG_ENDIAN is not set +ARCH_WANTS_LITTLE_ENDIAN=y +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +# UCLIBC_HAS_FPU is not set +UCLIBC_HAS_SOFT_FLOAT=y +DO_C99_MATH=y +KERNEL_HEADERS="/usr/include" +HAVE_DOT_CONFIG=y + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/gcc-4.4-fixlet.patch b/meta/recipes-core/uclibc/uclibc-0.9.30.1/gcc-4.4-fixlet.patch new file mode 100644 index 0000000000..b9ff6710bc --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/gcc-4.4-fixlet.patch @@ -0,0 +1,31 @@ +Index: uClibc-0.9.30.1/extra/scripts/unifdef.c +=================================================================== +--- uClibc-0.9.30.1.orig/extra/scripts/unifdef.c 2009-08-09 11:55:23.000000000 +0200 ++++ uClibc-0.9.30.1/extra/scripts/unifdef.c 2009-08-09 11:55:46.000000000 +0200 +@@ -206,7 +206,7 @@ + static void error(const char *); + static int findsym(const char *); + static void flushline(bool); +-static Linetype getline(void); ++static Linetype _getline(void); + static Linetype ifeval(const char **); + static void ignoreoff(void); + static void ignoreon(void); +@@ -512,7 +512,7 @@ + + for (;;) { + linenum++; +- lineval = getline(); ++ lineval = _getline(); + trans_table[ifstate[depth]][lineval](); + debug("process %s -> %s depth %d", + linetype_name[lineval], +@@ -526,7 +526,7 @@ + * help from skipcomment(). + */ + static Linetype +-getline(void) ++_getline(void) + { + const char *cp; + int cursym; diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/iwmmxt/uClibc.machine b/meta/recipes-core/uclibc/uclibc-0.9.30.1/iwmmxt/uClibc.machine new file mode 100644 index 0000000000..e27931cf6b --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/iwmmxt/uClibc.machine @@ -0,0 +1,70 @@ +# +# Automatically generated make config: don't edit +# Sat May 12 23:18:41 2007 +# +# TARGET_alpha is not set +TARGET_arm=y +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +# TARGET_i386 is not set +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="arm" +FORCE_OPTIONS_FOR_ARCH=y +# CONFIG_ARM_OABI is not set +CONFIG_ARM_EABI=y +USE_BX=y +# CONFIG_GENERIC_ARM is not set +# CONFIG_ARM610 is not set +# CONFIG_ARM710 is not set +# CONFIG_ARM7TDMI is not set +# CONFIG_ARM720T is not set +# CONFIG_ARM920T is not set +# CONFIG_ARM922T is not set +# CONFIG_ARM926T is not set +# CONFIG_ARM10T is not set +# CONFIG_ARM1136JF_S is not set +# CONFIG_ARM1176JZ_S is not set +# CONFIG_ARM1176JZF_S is not set +# CONFIG_ARM_SA110 is not set +# CONFIG_ARM_SA1100 is not set +# CONFIG_ARM_XSCALE is not set +CONFIG_ARM_IWMMXT=y +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_ANY_ENDIAN=y +ARCH_LITTLE_ENDIAN=y +# ARCH_WANTS_BIG_ENDIAN is not set +ARCH_WANTS_LITTLE_ENDIAN=y +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +# UCLIBC_HAS_FPU is not set +UCLIBC_HAS_SOFT_FLOAT=y +DO_C99_MATH=y +KERNEL_HEADERS="/usr/include" +HAVE_DOT_CONFIG=y + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/ldso_use_arm_dl_linux_resolve_in_thumb_mode.patch b/meta/recipes-core/uclibc/uclibc-0.9.30.1/ldso_use_arm_dl_linux_resolve_in_thumb_mode.patch new file mode 100644 index 0000000000..cfa68ce52d --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/ldso_use_arm_dl_linux_resolve_in_thumb_mode.patch @@ -0,0 +1,21 @@ +Index: uClibc/ldso/ldso/arm/resolve.S +=================================================================== +--- uClibc.orig/ldso/ldso/arm/resolve.S 2009-03-20 12:03:32.000000000 -0700 ++++ uClibc/ldso/ldso/arm/resolve.S 2009-03-20 12:04:23.000000000 -0700 +@@ -97,7 +97,6 @@ + + .text + .align 4 @ 16 byte boundary and there are 32 bytes below (arm case) +- #if !defined(__thumb__) || defined(__thumb2__) + .arm + .globl _dl_linux_resolve + .type _dl_linux_resolve,%function +@@ -129,7 +128,7 @@ + #else + mov pc,ip + #endif +-#else ++#if 0 + @ In the thumb case _dl_linux_resolver is thumb. If a bl is used + @ from arm code the linker will insert a stub call which, with + @ binutils 2.16, is not PIC. Since this code is accessed by an diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/linuxthreads-changes.patch b/meta/recipes-core/uclibc/uclibc-0.9.30.1/linuxthreads-changes.patch new file mode 100644 index 0000000000..f6f32cdd29 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/linuxthreads-changes.patch @@ -0,0 +1,291 @@ +Index: uClibc/libpthread/linuxthreads/descr.h +=================================================================== +--- uClibc.orig/libpthread/linuxthreads/descr.h 2008-08-27 23:59:46.171809044 +0200 ++++ uClibc/libpthread/linuxthreads/descr.h 2008-08-28 00:00:35.435134759 +0200 +@@ -123,9 +123,9 @@ + union dtv *dtvp; + pthread_descr self; /* Pointer to this structure */ + int multiple_threads; +-# ifdef NEED_DL_SYSINFO + uintptr_t sysinfo; +-# endif ++ uintptr_t stack_guard; ++ uintptr_t pointer_guard; + } data; + void *__padding[16]; + } p_header; +@@ -193,6 +193,13 @@ + size_t p_alloca_cutoff; /* Maximum size which should be allocated + using alloca() instead of malloc(). */ + /* New elements must be added at the end. */ ++ ++ /* This member must be last. */ ++ char end_padding[]; ++ ++#define PTHREAD_STRUCT_END_PADDING \ ++ (sizeof (struct _pthread_descr_struct) \ ++ - offsetof (struct _pthread_descr_struct, end_padding)) + } __attribute__ ((aligned(32))); /* We need to align the structure so that + doubles are aligned properly. This is 8 + bytes on MIPS and 16 bytes on MIPS64. +Index: uClibc/libpthread/linuxthreads/manager.c +=================================================================== +--- uClibc.orig/libpthread/linuxthreads/manager.c 2008-08-27 23:59:54.185140485 +0200 ++++ uClibc/libpthread/linuxthreads/manager.c 2008-08-28 00:00:35.435134759 +0200 +@@ -679,6 +679,17 @@ + new_thread->p_inheritsched = attr ? attr->__inheritsched : 0; + new_thread->p_alloca_cutoff = stksize / 4 > __MAX_ALLOCA_CUTOFF + ? __MAX_ALLOCA_CUTOFF : stksize / 4; ++ ++ /* Copy the stack guard canary. */ ++#ifdef THREAD_COPY_STACK_GUARD ++ THREAD_COPY_STACK_GUARD (new_thread); ++#endif ++ ++ /* Copy the pointer guard value. */ ++#ifdef THREAD_COPY_POINTER_GUARD ++ THREAD_COPY_POINTER_GUARD (new_thread); ++#endif ++ + /* Initialize the thread handle */ + __pthread_init_lock(&__pthread_handles[sseg].h_lock); + __pthread_handles[sseg].h_descr = new_thread; +@@ -742,15 +753,15 @@ + pid = __clone2(pthread_start_thread_event, + (void **)new_thread_bottom, + (char *)stack_addr - new_thread_bottom, +- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | ++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM | + __pthread_sig_cancel, new_thread); + #elif _STACK_GROWS_UP + pid = __clone(pthread_start_thread_event, (void *) new_thread_bottom, +- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | ++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM | + __pthread_sig_cancel, new_thread); + #else + pid = __clone(pthread_start_thread_event, stack_addr, +- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | ++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM | + __pthread_sig_cancel, new_thread); + #endif + saved_errno = errno; +@@ -783,15 +794,15 @@ + pid = __clone2(pthread_start_thread, + (void **)new_thread_bottom, + (char *)stack_addr - new_thread_bottom, +- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | ++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM | + __pthread_sig_cancel, new_thread); + #elif _STACK_GROWS_UP + pid = __clone(pthread_start_thread, (void *) new_thread_bottom, +- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | ++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM | + __pthread_sig_cancel, new_thread); + #else + pid = __clone(pthread_start_thread, stack_addr, +- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | ++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM | + __pthread_sig_cancel, new_thread); + #endif /* !NEED_SEPARATE_REGISTER_STACK */ + saved_errno = errno; +@@ -892,10 +903,11 @@ + #ifdef _STACK_GROWS_UP + # ifdef USE_TLS + size_t stacksize = guardaddr - th->p_stackaddr; ++ guardaddr = th->p_stackaddr; + # else + size_t stacksize = guardaddr - (char *)th; +-# endif + guardaddr = (char *)th; ++# endif + #else + /* Guardaddr is always set, even if guardsize is 0. This allows + us to compute everything else. */ +Index: uClibc/libpthread/linuxthreads/pthread.c +=================================================================== +--- uClibc.orig/libpthread/linuxthreads/pthread.c 2008-08-28 00:00:00.825141935 +0200 ++++ uClibc/libpthread/linuxthreads/pthread.c 2008-08-28 00:00:35.438472147 +0200 +@@ -698,6 +698,16 @@ + mgr = &__pthread_manager_thread; + #endif + ++ /* Copy the stack guard canary. */ ++#ifdef THREAD_COPY_STACK_GUARD ++ THREAD_COPY_STACK_GUARD (mgr); ++#endif ++ ++ /* Copy the pointer guard value. */ ++#ifdef THREAD_COPY_POINTER_GUARD ++ THREAD_COPY_POINTER_GUARD (mgr); ++#endif ++ + __pthread_manager_request = manager_pipe[1]; /* writing end */ + __pthread_manager_reader = manager_pipe[0]; /* reading end */ + +@@ -738,17 +748,17 @@ + pid = __clone2(__pthread_manager_event, + (void **) __pthread_manager_thread_bos, + THREAD_MANAGER_STACK_SIZE, +- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND, ++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM, + mgr); + #elif _STACK_GROWS_UP + pid = __clone(__pthread_manager_event, + (void **) __pthread_manager_thread_bos, +- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND, ++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM, + mgr); + #else + pid = __clone(__pthread_manager_event, + (void **) __pthread_manager_thread_tos, +- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND, ++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM, + mgr); + #endif + +@@ -778,13 +788,13 @@ + #ifdef NEED_SEPARATE_REGISTER_STACK + pid = __clone2(__pthread_manager, (void **) __pthread_manager_thread_bos, + THREAD_MANAGER_STACK_SIZE, +- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND, mgr); ++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM, mgr); + #elif _STACK_GROWS_UP + pid = __clone(__pthread_manager, (void **) __pthread_manager_thread_bos, +- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND, mgr); ++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM, mgr); + #else + pid = __clone(__pthread_manager, (void **) __pthread_manager_thread_tos, +- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND, mgr); ++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM, mgr); + #endif + } + if (__builtin_expect (pid, 0) == -1) { +@@ -971,6 +981,10 @@ + struct pthread_request request; + pthread_descr self = thread_self(); + ++ /* Make sure we come back here after suspend(), in case we entered ++ from a signal handler. */ ++ THREAD_SETMEM(self, p_signal_jmp, NULL); ++ + request.req_thread = self; + request.req_kind = REQ_PROCESS_EXIT; + request.req_args.exit.code = retcode; +@@ -1198,13 +1212,13 @@ + + void __pthread_restart_old(pthread_descr th) + { +- if (atomic_increment(&th->p_resume_count) == -1) ++ if (pthread_atomic_increment(&th->p_resume_count) == -1) + kill(th->p_pid, __pthread_sig_restart); + } + + void __pthread_suspend_old(pthread_descr self) + { +- if (atomic_decrement(&self->p_resume_count) <= 0) ++ if (pthread_atomic_decrement(&self->p_resume_count) <= 0) + __pthread_wait_for_restart_signal(self); + } + +@@ -1215,7 +1229,7 @@ + int was_signalled = 0; + sigjmp_buf jmpbuf; + +- if (atomic_decrement(&self->p_resume_count) == 0) { ++ if (pthread_atomic_decrement(&self->p_resume_count) == 0) { + /* Set up a longjmp handler for the restart signal, unblock + the signal and sleep. */ + +@@ -1272,9 +1286,9 @@ + being delivered. */ + + if (!was_signalled) { +- if (atomic_increment(&self->p_resume_count) != -1) { ++ if (pthread_atomic_increment(&self->p_resume_count) != -1) { + __pthread_wait_for_restart_signal(self); +- atomic_decrement(&self->p_resume_count); /* should be zero now! */ ++ pthread_atomic_decrement(&self->p_resume_count); /* should be zero now! */ + /* woke spontaneously and consumed restart signal */ + return 1; + } +Index: uClibc/libpthread/linuxthreads/specific.c +=================================================================== +--- uClibc.orig/libpthread/linuxthreads/specific.c 2008-08-28 00:00:07.595139286 +0200 ++++ uClibc/libpthread/linuxthreads/specific.c 2008-08-28 00:00:35.438472147 +0200 +@@ -104,13 +104,14 @@ + that if the key is reallocated later by pthread_key_create, its + associated values will be NULL in all threads. + +- If no threads have been created yet, clear it just in the +- current thread. */ ++ If no threads have been created yet, or if we are exiting, clear ++ it just in the current thread. */ + + struct pthread_key_delete_helper_args args; + args.idx1st = key / PTHREAD_KEY_2NDLEVEL_SIZE; + args.idx2nd = key % PTHREAD_KEY_2NDLEVEL_SIZE; +- if (__pthread_manager_request != -1) ++ if (__pthread_manager_request != -1 ++ && !(__builtin_expect (__pthread_exit_requested, 0))) + { + struct pthread_request request; + +@@ -203,8 +204,9 @@ + __pthread_lock(THREAD_GETMEM(self, p_lock), self); + for (i = 0; i < PTHREAD_KEY_1STLEVEL_SIZE; i++) { + if (THREAD_GETMEM_NC(self, p_specific[i]) != NULL) { +- free(THREAD_GETMEM_NC(self, p_specific[i])); ++ void *p = THREAD_GETMEM_NC(self, p_specific[i]); + THREAD_SETMEM_NC(self, p_specific[i], NULL); ++ free(p); + } + } + __pthread_unlock(THREAD_GETMEM(self, p_lock)); +Index: uClibc/libpthread/linuxthreads/spinlock.c +=================================================================== +--- uClibc.orig/libpthread/linuxthreads/spinlock.c 2008-08-28 00:00:17.805140454 +0200 ++++ uClibc/libpthread/linuxthreads/spinlock.c 2008-08-28 00:00:35.438472147 +0200 +@@ -637,8 +637,20 @@ + #if defined HAS_COMPARE_AND_SWAP + wait_node_dequeue(pp_head, pp_max_prio, p_max_prio); + #endif ++ ++ /* Release the spinlock before restarting. */ ++#if defined TEST_FOR_COMPARE_AND_SWAP ++ if (!__pthread_has_cas) ++#endif ++#if !defined HAS_COMPARE_AND_SWAP || defined TEST_FOR_COMPARE_AND_SWAP ++ { ++ __pthread_release(&lock->__spinlock); ++ } ++#endif ++ + restart(p_max_prio->thr); +- break; ++ ++ return; + } + } + +Index: uClibc/libpthread/linuxthreads/spinlock.h +=================================================================== +--- uClibc.orig/libpthread/linuxthreads/spinlock.h 2008-08-28 00:00:24.768471655 +0200 ++++ uClibc/libpthread/linuxthreads/spinlock.h 2008-08-28 00:02:42.971786951 +0200 +@@ -172,7 +172,7 @@ + + /* Operations on pthread_atomic, which is defined in internals.h */ + +-static __inline__ long atomic_increment(struct pthread_atomic *pa) ++static __inline__ long pthread_atomic_increment(struct pthread_atomic *pa) + { + long oldval; + +@@ -184,7 +184,7 @@ + } + + +-static __inline__ long atomic_decrement(struct pthread_atomic *pa) ++static __inline__ long pthread_atomic_decrement(struct pthread_atomic *pa) + { + long oldval; + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/netbook/uClibc.machine b/meta/recipes-core/uclibc/uclibc-0.9.30.1/netbook/uClibc.machine new file mode 100644 index 0000000000..5df15f94cb --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/netbook/uClibc.machine @@ -0,0 +1,69 @@ +# +# Automatically generated make config: don't edit +# Fri Nov 23 15:49:33 2007 +# +# TARGET_alpha is not set +# TARGET_arm is not set +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +TARGET_i386=y +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="i386" +FORCE_OPTIONS_FOR_ARCH=y +CONFIG_GENERIC_386=y +# CONFIG_386 is not set +# CONFIG_486 is not set +# CONFIG_586 is not set +# CONFIG_586MMX is not set +# CONFIG_686 is not set +# CONFIG_PENTIUMII is not set +# CONFIG_PENTIUMIII is not set +# CONFIG_PENTIUM4 is not set +# CONFIG_K6 is not set +# CONFIG_K7 is not set +# CONFIG_ELAN is not set +# CONFIG_CRUSOE is not set +# CONFIG_WINCHIPC6 is not set +# CONFIG_WINCHIP2 is not set +# CONFIG_CYRIXIII is not set +# CONFIG_NEHEMIAH is not set +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_LITTLE_ENDIAN=y + +# +# Using Little Endian +# +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +UCLIBC_HAS_FPU=y +DO_C99_MATH=y +KERNEL_HEADERS="/usr/include" +HAVE_DOT_CONFIG=y + +UCLIBC_HAS_FENV=y diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/om-gta01/uClibc.machine b/meta/recipes-core/uclibc/uclibc-0.9.30.1/om-gta01/uClibc.machine new file mode 100644 index 0000000000..898b73a33b --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/om-gta01/uClibc.machine @@ -0,0 +1,69 @@ +# +# Automatically generated make config: don't edit +# Mon May 14 10:23:14 2007 +# +# TARGET_alpha is not set +TARGET_arm=y +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +# TARGET_i386 is not set +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="arm" +FORCE_OPTIONS_FOR_ARCH=y +# CONFIG_ARM_OABI is not set +CONFIG_ARM_EABI=y +USE_BX=y +# CONFIG_GENERIC_ARM is not set +# CONFIG_ARM610 is not set +# CONFIG_ARM710 is not set +# CONFIG_ARM7TDMI is not set +# CONFIG_ARM720T is not set +CONFIG_ARM920T=y +# CONFIG_ARM922T is not set +# CONFIG_ARM926T is not set +# CONFIG_ARM10T is not set +# CONFIG_ARM1136JF_S is not set +# CONFIG_ARM1176JZ_S is not set +# CONFIG_ARM1176JZF_S is not set +# CONFIG_ARM_SA110 is not set +# CONFIG_ARM_SA1100 is not set +# CONFIG_ARM_XSCALE is not set +# CONFIG_ARM_IWMMXT is not set +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_ANY_ENDIAN=y +ARCH_LITTLE_ENDIAN=y +# ARCH_WANTS_BIG_ENDIAN is not set +ARCH_WANTS_LITTLE_ENDIAN=y +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +# UCLIBC_HAS_FPU is not set +UCLIBC_HAS_SOFT_FLOAT=y +KERNEL_HEADERS="/usr/include" +HAVE_DOT_CONFIG=y + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/pthread_atfork.patch b/meta/recipes-core/uclibc/uclibc-0.9.30.1/pthread_atfork.patch new file mode 100644 index 0000000000..92accc2a1a --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/pthread_atfork.patch @@ -0,0 +1,42 @@ +Index: uClibc-0.9.30/libpthread/linuxthreads/Makefile.in +=================================================================== +--- uClibc-0.9.30.orig/libpthread/linuxthreads/Makefile.in 2009-01-11 01:09:27.008515954 +0100 ++++ uClibc-0.9.30/libpthread/linuxthreads/Makefile.in 2009-01-11 01:09:35.295181636 +0100 +@@ -45,7 +45,7 @@ + pthread_SRC := \ + attr barrier cancel condvar errno events join pthread \ + lockfile manager mutex pt-machine ptcleanup \ +- ptclock_gettime ptclock_settime ptfork pthandles \ ++ ptclock_gettime ptclock_settime ptfork pthandles pthread_atfork \ + pthread_setegid pthread_seteuid pthread_setgid pthread_setregid \ + pthread_setresgid pthread_setresuid pthread_setreuid pthread_setuid \ + rwlock semaphore sighandler signals specific spinlock +Index: uClibc-0.9.30/libpthread/linuxthreads/pthread_atfork.c +=================================================================== +--- uClibc-0.9.30.orig/libpthread/linuxthreads/pthread_atfork.c 2009-01-11 01:09:44.931848926 +0100 ++++ uClibc-0.9.30/libpthread/linuxthreads/pthread_atfork.c 2009-01-11 01:12:49.926539743 +0100 +@@ -43,12 +43,8 @@ + + /* Hide the symbol so that no definition but the one locally in the + executable or DSO is used. */ +-int +-#ifndef __pthread_atfork +-/* Don't mark the compatibility function as hidden. */ +-attribute_hidden +-#endif +-__pthread_atfork (prepare, parent, child) ++ ++int attribute_hidden __pthread_atfork (prepare, parent, child) + void (*prepare) (void); + void (*parent) (void); + void (*child) (void); +@@ -56,8 +52,5 @@ + return __register_atfork (prepare, parent, child, + &__dso_handle == NULL ? NULL : __dso_handle); + } +-#ifndef __pthread_atfork +-extern int pthread_atfork (void (*prepare) (void), void (*parent) (void), +- void (*child) (void)) attribute_hidden; ++ + strong_alias (__pthread_atfork, pthread_atfork) +-#endif diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/qemuarm/uClibc.machine b/meta/recipes-core/uclibc/uclibc-0.9.30.1/qemuarm/uClibc.machine new file mode 100644 index 0000000000..fafdd7584e --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/qemuarm/uClibc.machine @@ -0,0 +1,70 @@ +# +# Automatically generated make config: don't edit +# Sun May 13 11:16:02 2007 +# +# TARGET_alpha is not set +TARGET_arm=y +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +# TARGET_i386 is not set +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="arm" +FORCE_OPTIONS_FOR_ARCH=y +# CONFIG_ARM_OABI is not set +CONFIG_ARM_EABI=y +USE_BX=y +# CONFIG_GENERIC_ARM is not set +# CONFIG_ARM610 is not set +# CONFIG_ARM710 is not set +# CONFIG_ARM7TDMI is not set +# CONFIG_ARM720T is not set +# CONFIG_ARM920T is not set +# CONFIG_ARM922T is not set +CONFIG_ARM926T=y +# CONFIG_ARM10T is not set +# CONFIG_ARM1136JF_S is not set +# CONFIG_ARM1176JZ_S is not set +# CONFIG_ARM1176JZF_S is not set +# CONFIG_ARM_SA110 is not set +# CONFIG_ARM_SA1100 is not set +# CONFIG_ARM_XSCALE is not set +# CONFIG_ARM_IWMMXT is not set +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_ANY_ENDIAN=y +ARCH_LITTLE_ENDIAN=y +# ARCH_WANTS_BIG_ENDIAN is not set +ARCH_WANTS_LITTLE_ENDIAN=y +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +# UCLIBC_HAS_FPU is not set +UCLIBC_HAS_SOFT_FLOAT=y +DO_C99_MATH=y +KERNEL_HEADERS="/bad/path/to/include" +HAVE_DOT_CONFIG=y + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/qemumips/uClibc.machine b/meta/recipes-core/uclibc/uclibc-0.9.30.1/qemumips/uClibc.machine new file mode 100644 index 0000000000..44fec169c8 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/qemumips/uClibc.machine @@ -0,0 +1,68 @@ +# +# Automatically generated make config: don't edit +# Fri Nov 23 15:49:33 2007 +# +# TARGET_alpha is not set +# TARGET_arm is not set +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +TARGET_i386=y +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="i386" +FORCE_OPTIONS_FOR_ARCH=y +CONFIG_GENERIC_386=y +# CONFIG_386 is not set +# CONFIG_486 is not set +# CONFIG_586 is not set +# CONFIG_586MMX is not set +# CONFIG_686 is not set +# CONFIG_PENTIUMII is not set +# CONFIG_PENTIUMIII is not set +# CONFIG_PENTIUM4 is not set +# CONFIG_K6 is not set +# CONFIG_K7 is not set +# CONFIG_ELAN is not set +# CONFIG_CRUSOE is not set +# CONFIG_WINCHIPC6 is not set +# CONFIG_WINCHIP2 is not set +# CONFIG_CYRIXIII is not set +# CONFIG_NEHEMIAH is not set +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_LITTLE_ENDIAN=y + +# +# Using Little Endian +# +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +UCLIBC_HAS_FPU=y +DO_C99_MATH=y +KERNEL_HEADERS="/usr/include" +HAVE_DOT_CONFIG=y + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/qemux86/uClibc.machine b/meta/recipes-core/uclibc/uclibc-0.9.30.1/qemux86/uClibc.machine new file mode 100644 index 0000000000..44fec169c8 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/qemux86/uClibc.machine @@ -0,0 +1,68 @@ +# +# Automatically generated make config: don't edit +# Fri Nov 23 15:49:33 2007 +# +# TARGET_alpha is not set +# TARGET_arm is not set +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +TARGET_i386=y +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="i386" +FORCE_OPTIONS_FOR_ARCH=y +CONFIG_GENERIC_386=y +# CONFIG_386 is not set +# CONFIG_486 is not set +# CONFIG_586 is not set +# CONFIG_586MMX is not set +# CONFIG_686 is not set +# CONFIG_PENTIUMII is not set +# CONFIG_PENTIUMIII is not set +# CONFIG_PENTIUM4 is not set +# CONFIG_K6 is not set +# CONFIG_K7 is not set +# CONFIG_ELAN is not set +# CONFIG_CRUSOE is not set +# CONFIG_WINCHIPC6 is not set +# CONFIG_WINCHIP2 is not set +# CONFIG_CYRIXIII is not set +# CONFIG_NEHEMIAH is not set +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_LITTLE_ENDIAN=y + +# +# Using Little Endian +# +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +UCLIBC_HAS_FPU=y +DO_C99_MATH=y +KERNEL_HEADERS="/usr/include" +HAVE_DOT_CONFIG=y + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/spitz/uClibc.machine b/meta/recipes-core/uclibc/uclibc-0.9.30.1/spitz/uClibc.machine new file mode 100644 index 0000000000..e27931cf6b --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/spitz/uClibc.machine @@ -0,0 +1,70 @@ +# +# Automatically generated make config: don't edit +# Sat May 12 23:18:41 2007 +# +# TARGET_alpha is not set +TARGET_arm=y +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +# TARGET_i386 is not set +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="arm" +FORCE_OPTIONS_FOR_ARCH=y +# CONFIG_ARM_OABI is not set +CONFIG_ARM_EABI=y +USE_BX=y +# CONFIG_GENERIC_ARM is not set +# CONFIG_ARM610 is not set +# CONFIG_ARM710 is not set +# CONFIG_ARM7TDMI is not set +# CONFIG_ARM720T is not set +# CONFIG_ARM920T is not set +# CONFIG_ARM922T is not set +# CONFIG_ARM926T is not set +# CONFIG_ARM10T is not set +# CONFIG_ARM1136JF_S is not set +# CONFIG_ARM1176JZ_S is not set +# CONFIG_ARM1176JZF_S is not set +# CONFIG_ARM_SA110 is not set +# CONFIG_ARM_SA1100 is not set +# CONFIG_ARM_XSCALE is not set +CONFIG_ARM_IWMMXT=y +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_ANY_ENDIAN=y +ARCH_LITTLE_ENDIAN=y +# ARCH_WANTS_BIG_ENDIAN is not set +ARCH_WANTS_LITTLE_ENDIAN=y +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +# UCLIBC_HAS_FPU is not set +UCLIBC_HAS_SOFT_FLOAT=y +DO_C99_MATH=y +KERNEL_HEADERS="/usr/include" +HAVE_DOT_CONFIG=y + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.config b/meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.config new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.config diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.distro b/meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.distro new file mode 100644 index 0000000000..042ea4c547 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.distro @@ -0,0 +1,148 @@ +# +# General Library Settings +# +# HAVE_NO_PIC is not set +# DOPIC is not set +# HAVE_NO_SHARED is not set +# ARCH_HAS_NO_LDSO is not set +HAVE_SHARED=y +# FORCE_SHAREABLE_TEXT_SEGMENTS is not set +LDSO_LDD_SUPPORT=y +LDSO_CACHE_SUPPORT=y +# LDSO_PRELOAD_FILE_SUPPORT is not set +LDSO_BASE_FILENAME="ld.so" +# UCLIBC_STATIC_LDCONFIG is not set +LDSO_RUNPATH=y +UCLIBC_CTOR_DTOR=y +LDSO_GNU_HASH_SUPPORT=y +# HAS_NO_THREADS is not set +UCLIBC_HAS_THREADS=y +PTHREADS_DEBUG_SUPPORT=y +LINUXTHREADS_OLD=y +UCLIBC_HAS_LFS=y +# MALLOC is not set +# MALLOC_SIMPLE is not set +MALLOC_STANDARD=y +MALLOC_GLIBC_COMPAT=y +UCLIBC_DYNAMIC_ATEXIT=y +COMPAT_ATEXIT=y +UCLIBC_SUSV3_LEGACY=y +UCLIBC_SUSV3_LEGACY_MACROS=y +UCLIBC_HAS_SHADOW=y +UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y +UCLIBC_HAS___PROGNAME=y +UNIX98PTY_ONLY=y +UCLIBC_HAS_GETPT=y +ASSUME_DEVPTS=y +UCLIBC_HAS_TM_EXTENSIONS=y +UCLIBC_HAS_TZ_CACHING=y +UCLIBC_HAS_TZ_FILE=y +UCLIBC_HAS_TZ_FILE_READ_MANY=y +UCLIBC_TZ_FILE_PATH="/etc/TZ" + +# +# Advanced Library Settings +# +UCLIBC_PWD_BUFFER_SIZE=256 +UCLIBC_GRP_BUFFER_SIZE=256 + +# +# Networking Support +# +UCLIBC_HAS_IPV6=y +UCLIBC_HAS_RPC=y +UCLIBC_HAS_FULL_RPC=y +# UCLIBC_HAS_REENTRANT_RPC is not set +# UCLIBC_USE_NETLINK is not set +# UCLIBC_HAS_BSD_RES_CLOSE is not set + +# +# String and Stdio Support +# +UCLIBC_HAS_STRING_GENERIC_OPT=y +UCLIBC_HAS_STRING_ARCH_OPT=y +UCLIBC_HAS_CTYPE_TABLES=y +UCLIBC_HAS_CTYPE_SIGNED=y +# UCLIBC_HAS_CTYPE_UNSAFE is not set +UCLIBC_HAS_CTYPE_CHECKED=y +# UCLIBC_HAS_CTYPE_ENFORCED is not set +UCLIBC_HAS_WCHAR=y +# UCLIBC_HAS_LOCALE is not set +UCLIBC_HAS_HEXADECIMAL_FLOATS=y +UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y +UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9 +UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y +# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set +UCLIBC_HAS_STDIO_BUFSIZ_256=y +# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set +# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set +# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set +# UCLIBC_HAS_STDIO_BUFSIZ_4096 is not set +# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set +UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y +# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set +# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set +# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set +# UCLIBC_HAS_STDIO_GETC_MACRO is not set +# UCLIBC_HAS_STDIO_PUTC_MACRO is not set +UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y +# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set +UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y +UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y +UCLIBC_HAS_PRINTF_M_SPEC=y +UCLIBC_HAS_ERRNO_MESSAGES=y +# UCLIBC_HAS_SYS_ERRLIST is not set +UCLIBC_HAS_SIGNUM_MESSAGES=y +# UCLIBC_HAS_SYS_SIGLIST is not set +UCLIBC_HAS_GNU_GETOPT=y +UCLIBC_HAS_GNU_GETSUBOPT=y + +# +# Big and Tall +# +UCLIBC_HAS_REGEX=y +# UCLIBC_HAS_REGEX_OLD is not set +UCLIBC_HAS_FNMATCH=y +# UCLIBC_HAS_FNMATCH_OLD is not set +UCLIBC_HAS_WORDEXP=y +UCLIBC_HAS_FTW=y +UCLIBC_HAS_GLOB=y +UCLIBC_HAS_GNU_GLOB=y + +# +# Library Installation Options +# +SHARED_LIB_LOADER_PREFIX="/lib" +RUNTIME_PREFIX="/" +DEVEL_PREFIX="//usr" + +# +# Security options +# +# UCLIBC_BUILD_PIE is not set +# UCLIBC_HAS_ARC4RANDOM is not set +# HAVE_NO_SSP is not set +# UCLIBC_HAS_SSP is not set +UCLIBC_BUILD_RELRO=y +UCLIBC_BUILD_NOW=y +UCLIBC_BUILD_NOEXECSTACK=y + +# +# uClibc development/debugging options +# +CROSS_COMPILER_PREFIX="" +UCLIBC_EXTRA_CFLAGS="" +# DODEBUG is not set +# DODEBUG_PT is not set +DOSTRIP=n +# DOASSERTS is not set +# SUPPORT_LD_DEBUG is not set +# SUPPORT_LD_DEBUG_EARLY is not set +# UCLIBC_MALLOC_DEBUGGING is not set +WARNINGS="-Wall" +# EXTRA_WARNINGS is not set +# DOMULTI is not set +# UCLIBC_MJN3_ONLY is not set + +# math stuff for perl +DO_C99_MATH=y diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.machine.armv4t b/meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.machine.armv4t new file mode 100644 index 0000000000..898b73a33b --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.machine.armv4t @@ -0,0 +1,69 @@ +# +# Automatically generated make config: don't edit +# Mon May 14 10:23:14 2007 +# +# TARGET_alpha is not set +TARGET_arm=y +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +# TARGET_i386 is not set +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="arm" +FORCE_OPTIONS_FOR_ARCH=y +# CONFIG_ARM_OABI is not set +CONFIG_ARM_EABI=y +USE_BX=y +# CONFIG_GENERIC_ARM is not set +# CONFIG_ARM610 is not set +# CONFIG_ARM710 is not set +# CONFIG_ARM7TDMI is not set +# CONFIG_ARM720T is not set +CONFIG_ARM920T=y +# CONFIG_ARM922T is not set +# CONFIG_ARM926T is not set +# CONFIG_ARM10T is not set +# CONFIG_ARM1136JF_S is not set +# CONFIG_ARM1176JZ_S is not set +# CONFIG_ARM1176JZF_S is not set +# CONFIG_ARM_SA110 is not set +# CONFIG_ARM_SA1100 is not set +# CONFIG_ARM_XSCALE is not set +# CONFIG_ARM_IWMMXT is not set +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_ANY_ENDIAN=y +ARCH_LITTLE_ENDIAN=y +# ARCH_WANTS_BIG_ENDIAN is not set +ARCH_WANTS_LITTLE_ENDIAN=y +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +# UCLIBC_HAS_FPU is not set +UCLIBC_HAS_SOFT_FLOAT=y +KERNEL_HEADERS="/usr/include" +HAVE_DOT_CONFIG=y + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.machine.armv5te b/meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.machine.armv5te new file mode 100644 index 0000000000..ec0385bc0f --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.machine.armv5te @@ -0,0 +1,70 @@ +# +# Automatically generated make config: don't edit +# Sun May 13 11:16:02 2007 +# +# TARGET_alpha is not set +TARGET_arm=y +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +# TARGET_i386 is not set +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="arm" +FORCE_OPTIONS_FOR_ARCH=y +# CONFIG_ARM_OABI is not set +CONFIG_ARM_EABI=y +USE_BX=y +# CONFIG_GENERIC_ARM is not set +# CONFIG_ARM610 is not set +# CONFIG_ARM710 is not set +# CONFIG_ARM7TDMI is not set +# CONFIG_ARM720T is not set +# CONFIG_ARM920T is not set +# CONFIG_ARM922T is not set +# CONFIG_ARM926T is not set +# CONFIG_ARM10T is not set +# CONFIG_ARM1136JF_S is not set +# CONFIG_ARM1176JZ_S is not set +# CONFIG_ARM1176JZF_S is not set +# CONFIG_ARM_SA110 is not set +# CONFIG_ARM_SA1100 is not set +CONFIG_ARM_XSCALE=y +# CONFIG_ARM_IWMMXT is not set +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_ANY_ENDIAN=y +ARCH_LITTLE_ENDIAN=y +# ARCH_WANTS_BIG_ENDIAN is not set +ARCH_WANTS_LITTLE_ENDIAN=y +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +# UCLIBC_HAS_FPU is not set +UCLIBC_HAS_SOFT_FLOAT=y +DO_C99_MATH=y +KERNEL_HEADERS="/data/build/koen/OE/build/tmp/angstrom/cross/arm-angstrom-linux-uclibcgnueabi/include" +HAVE_DOT_CONFIG=y + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.machine.iwmmxt b/meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.machine.iwmmxt new file mode 100644 index 0000000000..e27931cf6b --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.machine.iwmmxt @@ -0,0 +1,70 @@ +# +# Automatically generated make config: don't edit +# Sat May 12 23:18:41 2007 +# +# TARGET_alpha is not set +TARGET_arm=y +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +# TARGET_i386 is not set +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="arm" +FORCE_OPTIONS_FOR_ARCH=y +# CONFIG_ARM_OABI is not set +CONFIG_ARM_EABI=y +USE_BX=y +# CONFIG_GENERIC_ARM is not set +# CONFIG_ARM610 is not set +# CONFIG_ARM710 is not set +# CONFIG_ARM7TDMI is not set +# CONFIG_ARM720T is not set +# CONFIG_ARM920T is not set +# CONFIG_ARM922T is not set +# CONFIG_ARM926T is not set +# CONFIG_ARM10T is not set +# CONFIG_ARM1136JF_S is not set +# CONFIG_ARM1176JZ_S is not set +# CONFIG_ARM1176JZF_S is not set +# CONFIG_ARM_SA110 is not set +# CONFIG_ARM_SA1100 is not set +# CONFIG_ARM_XSCALE is not set +CONFIG_ARM_IWMMXT=y +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_ANY_ENDIAN=y +ARCH_LITTLE_ENDIAN=y +# ARCH_WANTS_BIG_ENDIAN is not set +ARCH_WANTS_LITTLE_ENDIAN=y +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +# UCLIBC_HAS_FPU is not set +UCLIBC_HAS_SOFT_FLOAT=y +DO_C99_MATH=y +KERNEL_HEADERS="/usr/include" +HAVE_DOT_CONFIG=y + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.machine.strongarm b/meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.machine.strongarm new file mode 100644 index 0000000000..6e89444a64 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.machine.strongarm @@ -0,0 +1,70 @@ +# +# Automatically generated make config: don't edit +# Sun May 13 11:29:51 2007 +# +# TARGET_alpha is not set +TARGET_arm=y +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +# TARGET_i386 is not set +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="arm" +FORCE_OPTIONS_FOR_ARCH=y +CONFIG_ARM_OABI=y +# CONFIG_ARM_EABI is not set +# USE_BX is not set +# CONFIG_GENERIC_ARM is not set +# CONFIG_ARM610 is not set +# CONFIG_ARM710 is not set +# CONFIG_ARM7TDMI is not set +# CONFIG_ARM720T is not set +# CONFIG_ARM920T is not set +# CONFIG_ARM922T is not set +# CONFIG_ARM926T is not set +# CONFIG_ARM10T is not set +# CONFIG_ARM1136JF_S is not set +# CONFIG_ARM1176JZ_S is not set +# CONFIG_ARM1176JZF_S is not set +# CONFIG_ARM_SA110 is not set +CONFIG_ARM_SA1100=y +# CONFIG_ARM_XSCALE is not set +# CONFIG_ARM_IWMMXT is not set +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_ANY_ENDIAN=y +ARCH_LITTLE_ENDIAN=y +# ARCH_WANTS_BIG_ENDIAN is not set +ARCH_WANTS_LITTLE_ENDIAN=y +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +# UCLIBC_HAS_FPU is not set +UCLIBC_HAS_SOFT_FLOAT=y +DO_C99_MATH=y +KERNEL_HEADERS="/usr/include" +HAVE_DOT_CONFIG=y + diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/uclibc-c99-ldbl-math.patch b/meta/recipes-core/uclibc/uclibc-0.9.30.1/uclibc-c99-ldbl-math.patch new file mode 100644 index 0000000000..f3718431ea --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/uclibc-c99-ldbl-math.patch @@ -0,0 +1,474 @@ +Index: uClibc-0.9.30.1/libm/ldouble_wrappers.c +=================================================================== +--- uClibc-0.9.30.1/libm/ldouble_wrappers.c (revision 25552) ++++ uClibc-0.9.30.1/libm/ldouble_wrappers.c (working copy) +@@ -13,6 +13,16 @@ + #include "math.h" + #include <complex.h> + ++#if defined __NO_LONG_DOUBLE_MATH ++# define int_WRAPPER_C99(func) /* not needed */ ++# else ++# define int_WRAPPER_C99(func) \ ++int func##l(long double x) \ ++{ \ ++ return func((double) x); \ ++} \ ++libm_hidden_def(func##l) ++#endif + + /* Implement the following, as defined by SuSv3 */ + #if 0 +@@ -543,46 +553,28 @@ long double truncl (long double x) + #endif + + +-#ifdef __DO_C99_MATH__ ++#if defined __DO_C99_MATH__ + + #ifdef L_fpclassifyl +-int __fpclassifyl (long double x) +-{ +- return __fpclassify ( (double) x ); +-} +-libm_hidden_def(__fpclassifyl) ++int_WRAPPER_C99(__fpclassify) + #endif + + #ifdef L_finitel +-int __finitel (long double x) +-{ +- return __finite ( (double)x ); +-} +-libm_hidden_def(__finitel) ++int_WRAPPER_C99(__finite) + #endif + + #ifdef L_signbitl +-int __signbitl (long double x) +-{ +- return __signbitl ( (double)x ); +-} +-libm_hidden_def(__signbitl) ++int_WRAPPER_C99(__signbit) + #endif + + #ifdef L_isnanl +-int __isnanl (long double x) +-{ +- return __isnan ( (double)x ); +-} +-libm_hidden_def(__isnanl) ++int_WRAPPER_C99(__isnan) + #endif + + #ifdef L_isinfl +-int __isinfl (long double x) +-{ +- return __isinf ( (double)x ); +-} +-libm_hidden_def(__isinfl) ++int_WRAPPER_C99(__isinf) + #endif + +-#endif ++#endif /* DO_C99_MATH */ ++ ++#undef int_WRAPPER_C99 +Index: uClibc-0.9.30.1/libm/nan.c +=================================================================== +--- uClibc-0.9.30.1/libm/nan.c (revision 25552) ++++ uClibc-0.9.30.1/libm/nan.c (working copy) +@@ -45,7 +45,7 @@ float nanf (const char *tagp) + } + libm_hidden_def(nanf) + +-#if defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++#if defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ && !defined __NO_LONG_DOUBLE_MATH + libm_hidden_proto(nanl) + long double nanl (const char *tagp) + { +Index: uClibc-0.9.30.1/include/math.h +=================================================================== +--- uClibc-0.9.30.1/include/math.h (revision 25552) ++++ uClibc-0.9.30.1/include/math.h (working copy) +@@ -118,7 +118,7 @@ __BEGIN_DECLS + # undef __MATH_PRECNAME + + # if (__STDC__ - 0 || __GNUC__ - 0) \ +- && (defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ || defined __LDBL_COMPAT) ++ && (!defined __NO_LONG_DOUBLE_MATH || defined __LDBL_COMPAT) + # ifdef __LDBL_COMPAT + + # ifdef __USE_ISOC99 +@@ -230,7 +230,7 @@ enum + }; + + /* Return number of classification appropriate for X. */ +-# ifndef __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# ifdef __NO_LONG_DOUBLE_MATH + # define fpclassify(x) \ + (sizeof (x) == sizeof (float) ? __fpclassifyf (x) : __fpclassify (x)) + # else +@@ -242,7 +242,7 @@ enum + # endif + + /* Return nonzero value if sign of X is negative. */ +-# ifndef __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# ifdef __NO_LONG_DOUBLE_MATH + # define signbit(x) \ + (sizeof (x) == sizeof (float) ? __signbitf (x) : __signbit (x)) + # else +@@ -254,7 +254,7 @@ enum + # endif + + /* Return nonzero value if X is not +-Inf or NaN. */ +-# ifndef __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# ifdef __NO_LONG_DOUBLE_MATH + # define isfinite(x) \ + (sizeof (x) == sizeof (float) ? __finitef (x) : __finite (x)) + # else +@@ -270,7 +270,7 @@ enum + + /* Return nonzero value if X is a NaN. We could use `fpclassify' but + we already have this functions `__isnan' and it is faster. */ +-# ifndef __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# ifdef __NO_LONG_DOUBLE_MATH + # define isnan(x) \ + (sizeof (x) == sizeof (float) ? __isnanf (x) : __isnan (x)) + # else +@@ -282,7 +282,7 @@ enum + # endif + + /* Return nonzero value is X is positive or negative infinity. */ +-# ifndef __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# ifdef __NO_LONG_DOUBLE_MATH + # define isinf(x) \ + (sizeof (x) == sizeof (float) ? __isinff (x) : __isinf (x)) + # else +Index: uClibc-0.9.30.1/include/tgmath.h +=================================================================== +--- uClibc-0.9.30.1/include/tgmath.h (revision 25552) ++++ uClibc-0.9.30.1/include/tgmath.h (working copy) +@@ -36,7 +36,7 @@ + + #if __GNUC_PREREQ (2, 7) + +-# ifndef __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# ifdef __NO_LONG_DOUBLE_MATH + # define __tgml(fct) fct + # else + # define __tgml(fct) fct ## l +Index: uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/wordsize.h +=================================================================== +--- uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/wordsize.h (revision 25552) ++++ uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/wordsize.h (working copy) +@@ -7,13 +7,13 @@ + # define __WORDSIZE 32 + #endif + +-#if defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ && !defined __LONG_DOUBLE_MATH_OPTIONAL ++#if !defined __NO_LONG_DOUBLE_MATH && !defined __LONG_DOUBLE_MATH_OPTIONAL + + /* Signal the glibc ABI didn't used to have a `long double'. + The changes all the `long double' function variants to be redirects + to the double functions. */ + # define __LONG_DOUBLE_MATH_OPTIONAL 1 + # ifndef __LONG_DOUBLE_128__ +-# undef __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# define __NO_LONG_DOUBLE_MATH 1 + # endif + #endif +Index: uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/mathdef.h +=================================================================== +--- uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/mathdef.h (revision 25552) ++++ uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/mathdef.h (working copy) +@@ -65,11 +65,13 @@ typedef double double_t; + + #endif /* ISO C99 */ + +-#ifdef __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++#ifndef __NO_LONG_DOUBLE_MATH + #include <bits/wordsize.h> + /* Signal that we do not really have a `long double'. The disables the + declaration of all the `long double' function variants. */ + # if __WORDSIZE == 32 +-# undef __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# define __NO_LONG_DOUBLE_MATH 1 ++# elif !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# define __NO_LONG_DOUBLE_MATH 1 + # endif /* __WORDSIZE == 32 */ +-#endif /* __UCLIBC_HAS_LONG_DOUBLE_MATH__ */ ++#endif /* __NO_LONG_DOUBLE_MATH */ +Index: uClibc-0.9.30.1/libc/sysdeps/linux/arm/bits/mathdef.h +=================================================================== +--- uClibc-0.9.30.1/libc/sysdeps/linux/arm/bits/mathdef.h (revision 25552) ++++ uClibc-0.9.30.1/libc/sysdeps/linux/arm/bits/mathdef.h (working copy) +@@ -34,3 +34,11 @@ typedef double double_t; /* `double' exp + # define FP_ILOGBNAN (2147483647) + + #endif /* ISO C99 */ ++ ++#ifndef __NO_LONG_DOUBLE_MATH ++/* Signal that we do not really have a `long double'. This disables the ++ declaration of all the `long double' function variants. */ ++/* XXX The FPA does support this but the patterns in GCC are currently ++ turned off. */ ++# define __NO_LONG_DOUBLE_MATH 1 ++#endif +Index: uClibc-0.9.30.1/libc/sysdeps/linux/m68k/bits/mathdef.h +=================================================================== +--- uClibc-0.9.30.1/libc/sysdeps/linux/m68k/bits/mathdef.h (revision 25552) ++++ uClibc-0.9.30.1/libc/sysdeps/linux/m68k/bits/mathdef.h (working copy) +@@ -36,3 +36,7 @@ typedef long double double_t; /* `double + # define FP_ILOGBNAN (2147483647) + + #endif /* ISO C99 */ ++ ++#if !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# define __NO_LONG_DOUBLE_MATH 1 ++#endif +Index: uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/wordsize.h +=================================================================== +--- uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/wordsize.h (revision 25552) ++++ uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/wordsize.h (working copy) +@@ -18,13 +18,13 @@ + + #define __WORDSIZE 64 + +-#if defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ && !defined __LONG_DOUBLE_MATH_OPTIONAL ++#if !defined __NO_LONG_DOUBLE_MATH && !defined __LONG_DOUBLE_MATH_OPTIONAL + + /* Signal that we didn't used to have a `long double'. The changes all + the `long double' function variants to be redirects to the double + functions. */ + # define __LONG_DOUBLE_MATH_OPTIONAL 1 + # ifndef __LONG_DOUBLE_128__ +-# undef __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# define __NO_LONG_DOUBLE_MATH 1 + # endif + #endif +Index: uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/mathdef.h +=================================================================== +--- uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/mathdef.h (revision 25552) ++++ uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/mathdef.h (working copy) +@@ -78,3 +78,7 @@ typedef double double_t; + + # endif /* GNUC before 3.4 */ + #endif /* COMPLEX_H */ ++ ++#if !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# define __NO_LONG_DOUBLE_MATH 1 ++#endif +Index: uClibc-0.9.30.1/libc/sysdeps/linux/common/bits/mathdef.h +=================================================================== +--- uClibc-0.9.30.1/libc/sysdeps/linux/common/bits/mathdef.h (revision 25552) ++++ uClibc-0.9.30.1/libc/sysdeps/linux/common/bits/mathdef.h (working copy) +@@ -35,3 +35,9 @@ typedef double double_t; /* `double' exp + # define FP_ILOGBNAN 2147483647 + + #endif /* ISO C99 */ ++ ++#ifndef __NO_LONG_DOUBLE_MATH ++/* Signal that we do not really have a `long double'. The disables the ++ declaration of all the `long double' function variants. */ ++# define __NO_LONG_DOUBLE_MATH 1 ++#endif +Index: uClibc-0.9.30.1/libc/sysdeps/linux/i386/bits/mathdef.h +=================================================================== +--- uClibc-0.9.30.1/libc/sysdeps/linux/i386/bits/mathdef.h (revision 25552) ++++ uClibc-0.9.30.1/libc/sysdeps/linux/i386/bits/mathdef.h (working copy) +@@ -44,3 +44,7 @@ typedef long double double_t; /* `double + # define FP_ILOGBNAN (-2147483647 - 1) + + #endif /* ISO C99 */ ++ ++#if !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# define __NO_LONG_DOUBLE_MATH 1 ++#endif +Index: uClibc-0.9.30.1/libc/sysdeps/linux/nios2/bits/mathdef.h +=================================================================== +--- uClibc-0.9.30.1/libc/sysdeps/linux/nios2/bits/mathdef.h (revision 25552) ++++ uClibc-0.9.30.1/libc/sysdeps/linux/nios2/bits/mathdef.h (working copy) +@@ -34,3 +34,11 @@ typedef double double_t; /* `double' exp + # define FP_ILOGBNAN (2147483647) + + #endif /* ISO C99 */ ++ ++#ifndef __NO_LONG_DOUBLE_MATH ++/* Signal that we do not really have a `long double'. This disables the ++ declaration of all the `long double' function variants. */ ++/* XXX The FPA does support this but the patterns in GCC are currently ++ turned off. */ ++# define __NO_LONG_DOUBLE_MATH 1 ++#endif +Index: uClibc-0.9.30.1/libc/sysdeps/linux/x86_64/bits/mathdef.h +=================================================================== +--- uClibc-0.9.30.1/libc/sysdeps/linux/x86_64/bits/mathdef.h (revision 25552) ++++ uClibc-0.9.30.1/libc/sysdeps/linux/x86_64/bits/mathdef.h (working copy) +@@ -46,3 +46,7 @@ typedef long double double_t; /* `double + # define FP_ILOGBNAN (-2147483647 - 1) + + #endif /* ISO C99 */ ++ ++#if !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# define __NO_LONG_DOUBLE_MATH 1 ++#endif +Index: uClibc-0.9.30.1/libc/sysdeps/linux/xtensa/bits/mathdef.h +=================================================================== +--- uClibc-0.9.30.1/libc/sysdeps/linux/xtensa/bits/mathdef.h (revision 25552) ++++ uClibc-0.9.30.1/libc/sysdeps/linux/xtensa/bits/mathdef.h (working copy) +@@ -36,8 +36,8 @@ typedef double double_t; /* `double' exp + + #endif /* ISO C99 */ + +-#if defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++#ifndef __NO_LONG_DOUBLE_MATH + /* Signal that we do not really have a `long double'. The disables the + declaration of all the `long double' function variants. */ +-# undef __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# define __NO_LONG_DOUBLE_MATH 1 + #endif +Index: uClibc-0.9.30.1/libc/sysdeps/linux/ia64/bits/mathdef.h +=================================================================== +--- uClibc-0.9.30.1/libc/sysdeps/linux/ia64/bits/mathdef.h (revision 25552) ++++ uClibc-0.9.30.1/libc/sysdeps/linux/ia64/bits/mathdef.h (working copy) +@@ -35,3 +35,7 @@ typedef double double_t; /* `double' exp + # define FP_ILOGBNAN 2147483647 + + #endif /* ISO C99 */ ++ ++#if !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# define __NO_LONG_DOUBLE_MATH 1 ++#endif +Index: uClibc-0.9.30.1/libc/sysdeps/linux/mips/bits/mathdef.h +=================================================================== +--- uClibc-0.9.30.1/libc/sysdeps/linux/mips/bits/mathdef.h (revision 25552) ++++ uClibc-0.9.30.1/libc/sysdeps/linux/mips/bits/mathdef.h (working copy) +@@ -39,8 +39,10 @@ typedef double double_t; /* `double' exp + + #endif /* ISO C99 */ + +-#if defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ && _MIPS_SIM == _ABIO32 ++#if ! defined __NO_LONG_DOUBLE_MATH && _MIPS_SIM == _ABIO32 + /* Signal that we do not really have a `long double'. This disables the + declaration of all the `long double' function variants. */ +-# error defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ and _MIPS_SIM == _ABIO32 ++# define __NO_LONG_DOUBLE_MATH 1 ++#elif !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# define __NO_LONG_DOUBLE_MATH 1 + #endif +Index: uClibc-0.9.30.1/libc/sysdeps/linux/nios/bits/mathdef.h +=================================================================== +--- uClibc-0.9.30.1/libc/sysdeps/linux/nios/bits/mathdef.h (revision 25552) ++++ uClibc-0.9.30.1/libc/sysdeps/linux/nios/bits/mathdef.h (working copy) +@@ -34,3 +34,11 @@ typedef double double_t; /* `double' exp + # define FP_ILOGBNAN (2147483647) + + #endif /* ISO C99 */ ++ ++#ifndef __NO_LONG_DOUBLE_MATH ++/* Signal that we do not really have a `long double'. This disables the ++ declaration of all the `long double' function variants. */ ++/* XXX The FPA does support this but the patterns in GCC are currently ++ turned off. */ ++# define __NO_LONG_DOUBLE_MATH 1 ++#endif +Index: uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/wordsize.h +=================================================================== +--- uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/wordsize.h (revision 25552) ++++ uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/wordsize.h (working copy) +@@ -6,7 +6,7 @@ + # define __WORDSIZE 32 + #endif + +-#if 0 /* uClibc: done in mathdefs.h: defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ && !defined __LONG_DOUBLE_MATH_OPTIONAL*/ ++#if 0 /* uClibc: done in mathdefs.h: !defined __NO_LONG_DOUBLE_MATH && !defined __LONG_DOUBLE_MATH_OPTIONAL*/ + + # if __WORDSIZE == 32 + /* Signal that in 32bit ABI we didn't used to have a `long double'. +@@ -14,7 +14,7 @@ + to the double functions. */ + # define __LONG_DOUBLE_MATH_OPTIONAL 1 + # ifndef __LONG_DOUBLE_128__ +-# undef __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# define __NO_LONG_DOUBLE_MATH 1 + # endif + # endif + #endif +Index: uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathdef.h +=================================================================== +--- uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathdef.h (revision 25552) ++++ uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathdef.h (working copy) +@@ -57,13 +57,15 @@ typedef double double_t; + + #endif /* ISO C99 */ + +-#ifdef __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++#ifndef __NO_LONG_DOUBLE_MATH + + # if __WORDSIZE == 32 + /* Signal that in 32bit ABI we do not really have a `long double'. + The disables the declaration of all the `long double' function + variants. */ +-# undef __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# define __NO_LONG_DOUBLE_MATH 1 ++# elif !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# define __NO_LONG_DOUBLE_MATH 1 + # endif + + #endif +Index: uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathinline.h +=================================================================== +--- uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathinline.h (revision 25552) ++++ uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathinline.h (working copy) +@@ -37,7 +37,7 @@ + + # if __WORDSIZE == 32 + +-# ifdef __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# ifndef __NO_LONG_DOUBLE_MATH + + # define __unordered_cmp(x, y) \ + (__extension__ \ +@@ -157,7 +157,7 @@ __NTH (__signbit (double __x)) + return __u.__i[0] < 0; + } + +-# ifdef __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# ifndef __NO_LONG_DOUBLE_MATH + __MATH_INLINE int + __NTH (__signbitl (long double __x)) + { +@@ -219,7 +219,7 @@ __NTH (sqrtl (long double __x)) + _Qp_sqrt (&__r, &__x); + return __r; + } +-# elif defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# elif !defined __NO_LONG_DOUBLE_MATH + __MATH_INLINE long double + sqrtl (long double __x) __THROW + { +@@ -257,7 +257,7 @@ __ieee754_sqrtl (long double __x) + _Qp_sqrt(&__r, &__x); + return __r; + } +-# elif defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ ++# elif !defined __NO_LONG_DOUBLE_MATH + __MATH_INLINE long double + __ieee754_sqrtl (long double __x) + { +Index: uClibc-0.9.30.1/libc/sysdeps/linux/sh/bits/mathdef.h +=================================================================== +--- uClibc-0.9.30.1/libc/sysdeps/linux/sh/bits/mathdef.h (revision 25552) ++++ uClibc-0.9.30.1/libc/sysdeps/linux/sh/bits/mathdef.h (working copy) +@@ -61,3 +61,9 @@ typedef double double_t; + # define FP_ILOGBNAN 0x7fffffff + + #endif /* ISO C99 */ ++ ++#ifndef __NO_LONG_DOUBLE_MATH ++/* Signal that we do not really have a `long double'. The disables the ++ declaration of all the `long double' function variants. */ ++# define __NO_LONG_DOUBLE_MATH 1 ++#endif diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/uclibc_ldso_use_O0.patch b/meta/recipes-core/uclibc/uclibc-0.9.30.1/uclibc_ldso_use_O0.patch new file mode 100644 index 0000000000..7a89e66621 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/uclibc_ldso_use_O0.patch @@ -0,0 +1,13 @@ +Index: uClibc/ldso/ldso/Makefile.in +=================================================================== +--- uClibc.orig/ldso/ldso/Makefile.in 2009-02-03 17:27:55.000000000 -0800 ++++ uClibc/ldso/ldso/Makefile.in 2009-02-03 17:28:11.000000000 -0800 +@@ -8,7 +8,7 @@ + CFLAGS-ldso := -DNOT_IN_libc -DIS_IN_rtld $(SSP_DISABLE_FLAGS) + + # This stuff will not work with -fomit-frame-pointer +-CFLAGS-ldso += -fno-omit-frame-pointer ++CFLAGS-ldso += -O0 -fno-omit-frame-pointer + + CFLAGS-ldso += -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) -I$(top_srcdir)ldso/include -I$(top_srcdir)ldso/ldso + CFLAGS-ldso += -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" -DUCLIBC_LDSO=\"$(UCLIBC_LDSO)\" diff --git a/meta/recipes-core/uclibc/uclibc-0.9.30.1/x86/uClibc.machine b/meta/recipes-core/uclibc/uclibc-0.9.30.1/x86/uClibc.machine new file mode 100644 index 0000000000..6cd19e851e --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-0.9.30.1/x86/uClibc.machine @@ -0,0 +1,72 @@ +# +# Automatically generated make config: don't edit +# Version: 0.9.30.1 +# Wed Jul 1 17:04:32 2009 +# +# TARGET_alpha is not set +# TARGET_arm is not set +# TARGET_avr32 is not set +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +TARGET_i386=y +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set +# TARGET_xtensa is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="i386" +FORCE_OPTIONS_FOR_ARCH=y +CONFIG_GENERIC_386=y +# CONFIG_386 is not set +# CONFIG_486 is not set +# CONFIG_586 is not set +# CONFIG_586MMX is not set +# CONFIG_686 is not set +# CONFIG_PENTIUMII is not set +# CONFIG_PENTIUMIII is not set +# CONFIG_PENTIUM4 is not set +# CONFIG_K6 is not set +# CONFIG_K7 is not set +# CONFIG_ELAN is not set +# CONFIG_CRUSOE is not set +# CONFIG_WINCHIPC6 is not set +# CONFIG_WINCHIP2 is not set +# CONFIG_CYRIXIII is not set +# CONFIG_NEHEMIAH is not set +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_LITTLE_ENDIAN=y + +# +# Using Little Endian +# +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +UCLIBC_HAS_FPU=y +DO_C99_MATH=y +# UCLIBC_HAS_FENV is not set +UCLIBC_HAS_LONG_DOUBLE_MATH=y +KERNEL_HEADERS="/bla" +HAVE_DOT_CONFIG=y diff --git a/meta/recipes-core/uclibc/uclibc-initial_0.9.30.1.bb b/meta/recipes-core/uclibc/uclibc-initial_0.9.30.1.bb new file mode 100644 index 0000000000..6d21d3a2c5 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-initial_0.9.30.1.bb @@ -0,0 +1,27 @@ +SECTION = "base" +require uclibc_${PV}.bb + +DEPENDS = "linux-libc-headers ncurses-native virtual/${TARGET_PREFIX}gcc-initial" +PROVIDES = "virtual/${TARGET_PREFIX}libc-initial" +PACKAGES = "" + +do_install() { + # Install initial headers into the cross dir + make V=1 CC="${CC}" PREFIX=${D} DEVEL_PREFIX=${prefix}/ RUNTIME_PREFIX=/ \ + install_headers + #ln -sf include ${STAGING_DIR_NATIVE}${prefix_native}/${TARGET_SYS}/sys-include + + # This conflicts with the c++ version of this header + rm -f ${D}${includedir}/bits/atomicity.h + install -d ${D}${libdir}/ + install -m 644 lib/crt[1in].o ${D}${libdir}/ + install -d ${D}${libdir}/ + install -m 644 lib/libc.so ${D}${libdir}/ +} + +do_compile () { + make V=1 CC="${CC}" PREFIX=${D} DEVEL_PREFIX=${prefix}/ RUNTIME_PREFIX=/ \ + lib/crt1.o lib/crti.o lib/crtn.o + ${CC} -nostdlib -nostartfiles -shared -x c /dev/null \ + -o lib/libc.so +} diff --git a/meta/recipes-core/uclibc/uclibc.inc b/meta/recipes-core/uclibc/uclibc.inc new file mode 100644 index 0000000000..18392b5c17 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc.inc @@ -0,0 +1,183 @@ +DESCRIPTION = "C library for embedded systems" +LICENSE = "LGPL" +SECTION = "libs" +PRIORITY = "required" + +# +# 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 not uc_os: + raise bb.parse.SkipPackage("incompatible with target %s" % + bb.data.getVar('TARGET_OS', d, 1)) +} + +PROVIDES += "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc" +PROVIDES += "${@['virtual/libiconv', ''][bb.data.getVar('USE_NLS', d, 1) != 'yes']}" +DEPENDS = "virtual/${TARGET_PREFIX}binutils \ + virtual/${TARGET_PREFIX}gcc-intermediate linux-libc-headers ncurses-native pax-utils-native" +RDEPENDS_${PN}-dev = "linux-libc-headers-dev" + +# Blackfin needs a wrapper around ld +#DEPENDS_append_bfin = " elf2flt " + +INHIBIT_DEFAULT_DEPS = "1" +PARALLEL_MAKE = "" + +PACKAGES =+ "ldd uclibc-utils-dbg uclibc-utils uclibc-gconv uclibc-thread-db" + +LEAD_SONAME = "libc.so" + +# The last line (gdb and lib1) is for uclinux-uclibc builds +uclibc_baselibs = "${base_libdir}/libcrypt*.so.* ${base_libdir}/libcrypt-*.so \ + ${base_libdir}/libintl*.so.* ${base_libdir}/libintl-*.so \ + ${base_libdir}/libnsl*.so.* ${base_libdir}/libnsl-*.so \ + ${base_libdir}/libresolv*.so.* ${base_libdir}/libresolv-*.so \ + ${base_libdir}/ld*.so.* ${base_libdir}/ld-*.so \ + ${base_libdir}/libc*.so.* ${base_libdir}/libuClibc-*.so \ + ${base_libdir}/libdl*.so.* ${base_libdir}/libdl-*.so \ + ${base_libdir}/libm*.so.* ${base_libdir}/libm-*.so \ + ${base_libdir}/libutil*.so.* ${base_libdir}/libutil-*.so \ + ${base_libdir}/libpthread*.so.* ${base_libdir}/libpthread-*.so \ + ${base_libdir}/librt*.so.* ${base_libdir}/librt-*.so \ + ${libdir}/libc.gdb ${libdir}/libc ${base_libdir}/lib1.so \ + " +FILES_${PN} = "${sysconfdir} ${uclibc_baselibs} /sbin/ldconfig \ + ${libexecdir} ${datadir}/zoneinfo ${libdir}/locale" +FILES_ldd = "${bindir}/ldd" +FILES_uclibc-dev += "${libdir}/*.o" +FILES_uclibc-utils = "${bindir} ${sbindir}" +FILES_uclibc-utils-dbg += "${bindir}/.debug ${sbindir}/.debug" +FILES_uclibc-gconv = "${libdir}/gconv" +FILES_uclibc-thread-db = "/lib/libthread_db*" +RPROVIDES_uclibc-dev += "libc-dev" + +# +# This locale file gets copied into uClibc-${PV}/extra/locale/ prior to +# build, it does not need to be unpacked, but we can't inhibit the unpacking +# in the current build system. +# +UCLIBC_LOCALE_FILE = "uClibc-locale-030818.tgz" +UCLIBC_LOCALE_FILE_arm = "uClibc-locale-030818.arm.tgz" +UCLIBC_LOCALE_URI = "http://www.uclibc.org/downloads/${UCLIBC_LOCALE_FILE}" +UCLIBC_LOCALE_URI_arm = "http://wiki.openembedded.net/dl/uclibc-locale/${UCLIBC_LOCALE_FILE}" + +SRC_URI = "${@['${UCLIBC_LOCALE_URI}', ''][bb.data.getVar('USE_NLS', d, 1) != 'yes']} \ + file://uClibc.config \ + http://www.uclibc.org/downloads/uClibc-${PV}.tar.bz2 \ + " + +# do_stage barfs on a CC with whitepspace, therefore put the 'HOST_CC_ARCH' in +# the CFLAGS (for when building the utils). +OEMAKE_NO_CC = "'STRIPTOOL=true' 'LD=${LD}' \ + 'LOCALE_DATA_FILENAME=${UCLIBC_LOCALE_FILE}'" +EXTRA_OEMAKE = "${OEMAKE_NO_CC} 'CC=${CC}' \ + 'HOSTCFLAGS=-I${STAGING_INCDIR_NATIVE}' \ + ARCH=`grep TARGET_ARCH ${S}/.config|sed -e 's/TARGET_ARCH=//g'`" +EXTRA_OEMAKE_task_do_package = "${OEMAKE_NO_CC}" + +KERNEL_SOURCE = "${STAGING_INCDIR}" +KERNEL_HEADERS = "${STAGING_INCDIR}" + +# Lets munge this via siteinfo.bbclass as well: +# ARCH_BIG_ENDIAN=y +# ARCH_WANTS_BIG_ENDIAN=y +# ARCH_WANTS_LITTLE_ENDIAN is not set + +# How to enable verbose logs: +#export VERBOSE="1" + +configmangle = 's,^KERNEL_SOURCE=.*,KERNEL_SOURCE="${KERNEL_SOURCE}",g; \ + s,^KERNEL_HEADERS=.*,KERNEL_HEADERS="${KERNEL_HEADERS}",g; \ + s,^RUNTIME_PREFIX=.*,RUNTIME_PREFIX="/",g; \ + s,^DEVEL_PREFIX=.*,DEVEL_PREFIX="/${prefix}",g; \ + s,^SHARED_LIB_LOADER_PATH=.*,SHARED_LIB_LOADER_PATH="/lib",; \ + s,^SHARED_LIB_LOADER_PREFIX=.*,SHARED_LIB_LOADER_PREFIX="/lib",; \ + s,.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y,g; \ + ${@["","s,.*UCLIBC_HAS_LOCALE.*,UCLIBC_HAS_LOCALE=y,;"][bb.data.getVar("USE_NLS", d, 1) == "yes"]} \ + ${@["","s,.*LDSO_GNU_HASH_SUPPORT.*,# LDSO_GNU_HASH_SUPPORT is not set,;"][bb.data.getVar("TARGET_ARCH", d, 1) in ['mips', 'mipsel', 'avr32']]} \ + ' + +CFLAGS := "${@oe_filter_out('-I\S+', '${CFLAGS}', d)}" + +python () { + if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: + bb.data.setVar('configmangle_append', ' s,^HAS_FPU=y,# HAS_FPU is not set,;', d) +} + +uclibcbuild_do_patch() { + ln -sf ${STAGING_INCDIR}/linux ${S}/include/linux + ln -sf ${STAGING_INCDIR}/asm ${S}/include/asm + + ${@['cp %s/%s extra/locale' % (bb.data.getVar('DL_DIR', d, 1) or '', bb.data.getVar('UCLIBC_LOCALE_FILE', d, 1) or ''), ''][bb.data.getVar('USE_NLS', d, 1) != 'yes']} +} + +python do_patch () { + bb.build.exec_func('base_do_patch', d) + bb.build.exec_func('uclibcbuild_do_patch', d) +} + +do_configure() { + rm -f ${S}/.config + + # For uClibc 0.9.29, OpenEmbedded splits the uClibc.config in two parts: + # uClibc.machine and uClibc.distro. So, if they exist use them, otherwise + # use a uClibc.config + if [ -f ${WORKDIR}/uClibc.machine -a -f ${WORKDIR}/uClibc.distro ]; then + echo "### uClibc.machine ###" >${S}/merged.config + cat ${WORKDIR}/uClibc.machine >>${S}/merged.config + echo "### uClibc.distro ###" >>${S}/merged.config + cat ${WORKDIR}/uClibc.distro >>${S}/merged.config + else + echo "### uClibc.config ###" >${S}/merged.config + cat ${WORKDIR}/uClibc.config >>${S}/merged.config + fi + cp ${S}/merged.config ${S}/.config + + # Mangle the resulting .config depending on OE variables + perl -i -p -e 's,^CROSS=.*,TARGET_ARCH=${TARGET_ARCH}\nCROSS=${TARGET_PREFIX},g' ${S}/Rules.mak + sed -i -e s:'$(CROSS)strip':true: ${S}/Rules.mak + perl -i -p -e '${configmangle}' ${S}/.config + + sed -i -e '/CONFIG_ARM_EABI/d' ${S}/.config + + if [ `echo ${TARGET_ARCH} | grep -e '^arm'` ]; then + if [ `echo ${TARGET_OS} | grep -e 'eabi$'` ]; then + echo "CONFIG_ARM_EABI=y" >> ${S}/.config + else + echo "# CONFIG_ARM_EABI is not set" >> ${S}/.config + fi + fi + yes '' | oe_runmake oldconfig +} + +do_install() { + oe_runmake PREFIX=${D} DEVEL_PREFIX=${prefix}/ RUNTIME_PREFIX=/ \ + install_dev install_runtime + + # Need to overwrite the version from -initial + if [ ! -e ${D}${libdir}/libc.so ]; then + ln -s ../../lib/libc.so.0 ${D}${libdir}/libc.so + fi + + # We don't really need this in ${includedir} + rm -f ${D}${prefix}/include/.cvsignore + + # This conflicts with the c++ version of this header + rm -f ${D}${prefix}/include/bits/atomicity.h + + oe_runmake "SSP_ALL_CFLAGS=${TARGET_LINK_HASH_STYLE}" utils + oe_runmake STRIPTOOL=true PREFIX=${D} DEVEL_PREFIX=${prefix}/ RUNTIME_PREFIX=/ \ + install_utils + + # oe_runstrip needs +x on files + chmod +x ${D}/${base_libdir}/* +} + diff --git a/meta/recipes-core/uclibc/uclibc_0.9.30.1.bb b/meta/recipes-core/uclibc/uclibc_0.9.30.1.bb new file mode 100644 index 0000000000..6bdf153a2a --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc_0.9.30.1.bb @@ -0,0 +1,33 @@ +# UCLIBC_BASE should be the latest released revision of uclibc (that way +# the config files will typically be correct!) uclibc-cvs takes precedence +# over uclibc-${UCLIBC_BASE}, if a config file in uclibc-cvs is out of date +# try removing it +# +# UCLIBC_BASE can be set in a distro file, but whether this works depends +# on whether the base patches apply to the selected (SRCDATE) svn release. +# +UCLIBC_BASE ?= "0.9.30.1" + +require uclibc.inc +PR = "r1" + +PROVIDES += "virtual/${TARGET_PREFIX}libc-for-gcc" + +SRC_URI += "file://uClibc.machine file://uClibc.distro \ + file://arm-linuxthreads.patch;patch=1 \ + file://linuxthreads-changes.patch;patch=1 \ + file://pthread_atfork.patch;patch=1 \ + file://uclibc_ldso_use_O0.patch;patch=1 \ + file://ldso_use_arm_dl_linux_resolve_in_thumb_mode.patch;patch=1 \ + file://gcc-4.4-fixlet.patch;patch=1 \ + file://uclibc-c99-ldbl-math.patch;patch=1 \ + file://Use-__always_inline-instead-of-__inline__.patch;patch=1 \ + " +#recent versions uclibc require real kernel headers +PACKAGE_ARCH = "${MACHINE_ARCH}" + +#as stated above, uclibc needs real kernel-headers +#however: we can't depend on virtual/kernel when nptl hits due to depends deadlocking .... +KERNEL_SOURCE = "${STAGING_DIR_HOST}/${exec_prefix}" + +S = "${WORKDIR}/uClibc-${UCLIBC_BASE}" |