summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/uclibc
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:14:24 +0100
committerRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:29:45 +0100
commit29d6678fd546377459ef75cf54abeef5b969b5cf (patch)
tree8edd65790e37a00d01c3f203f773fe4b5012db18 /meta/recipes-core/uclibc
parentda49de6885ee1bc424e70bc02f21f6ab920efb55 (diff)
downloadpoky-29d6678fd546377459ef75cf54abeef5b969b5cf.tar.gz
Major layout change to the packages directory
Having one monolithic packages directory makes it hard to find things and is generally overwhelming. This commit splits it into several logical sections roughly based on function, recipes.txt gives more information about the classifications used. The opportunity is also used to switch from "packages" to "recipes" as used in OpenEmbedded as the term "packages" can be confusing to people and has many different meanings. Not all recipes have been classified yet, this is just a first pass at separating things out. Some packages are moved to meta-extras as they're no longer actively used or maintained. Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta/recipes-core/uclibc')
-rw-r--r--meta/recipes-core/uclibc/files/armeb-kernel-stat.h.patch125
-rw-r--r--meta/recipes-core/uclibc/files/errno_values.h.patch21
-rw-r--r--meta/recipes-core/uclibc/files/kernel-key-t-ipc.h.patch27
-rw-r--r--meta/recipes-core/uclibc/files/nokernelheadercheck.patch24
-rw-r--r--meta/recipes-core/uclibc/files/termios.h.patch22
-rw-r--r--meta/recipes-core/uclibc/files/uClibc.distro3
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/Use-__always_inline-instead-of-__inline__.patch393
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/akita/uClibc.machine70
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/arm-linuxthreads.patch218
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/arm/uClibc.machine69
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/armeb/uClibc.machine70
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/armv4t/uClibc.machine69
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/armv5te/uClibc.machine70
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/armv6/uClibc.machine70
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/armv7a/uClibc.machine70
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/c7x0/uClibc.machine70
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/cm-x270/uClibc.machine70
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/gcc-4.4-fixlet.patch31
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/iwmmxt/uClibc.machine70
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/ldso_use_arm_dl_linux_resolve_in_thumb_mode.patch21
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/linuxthreads-changes.patch291
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/netbook/uClibc.machine69
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/om-gta01/uClibc.machine69
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/pthread_atfork.patch42
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/qemuarm/uClibc.machine70
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/qemumips/uClibc.machine68
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/qemux86/uClibc.machine68
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/spitz/uClibc.machine70
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.config0
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.distro148
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.machine.armv4t69
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.machine.armv5te70
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.machine.iwmmxt70
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/uClibc.machine.strongarm70
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/uclibc-c99-ldbl-math.patch474
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/uclibc_ldso_use_O0.patch13
-rw-r--r--meta/recipes-core/uclibc/uclibc-0.9.30.1/x86/uClibc.machine72
-rw-r--r--meta/recipes-core/uclibc/uclibc-initial_0.9.30.1.bb27
-rw-r--r--meta/recipes-core/uclibc/uclibc.inc183
-rw-r--r--meta/recipes-core/uclibc/uclibc_0.9.30.1.bb33
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 @@
1# The 2.6 asm/stat.h for ARM has some rather unusual transmogrifications
2# for big-endian running. This patch adds ARM specific code in xstatconv.c
3# which deals with the 2.4->2.6 ABI change.
4--- uClibc-0.9.27/libc/sysdeps/linux/common/xstatconv.c 2005-01-11 23:59:21.000000000 -0800
5+++ uClibc-0.9.27/libc/sysdeps/linux/common/xstatconv.c 2005-06-05 11:03:56.742587966 -0700
6@@ -18,7 +18,14 @@
7 02111-1307 USA.
8
9 Modified for uClibc by Erik Andersen <andersen@codepoet.org>
10+ Further modified for ARMBE by John Bowler <jbowler@acm.org>
11 */
12+/* This is a copy of common/xstatconv.c with a fixup for the ABI
13+ * (structure layout) change in ARM Linux 2.6 - this shifts the
14+ * st_dev and st_rdev information from the start of the 8 byte
15+ * space to the end on big-endian ARM (only). The code is unchanged
16+ * on little endian.
17+ */
18
19 #define _GNU_SOURCE
20 #define _LARGEFILE64_SOURCE
21@@ -32,6 +39,84 @@
22 #include <sys/stat.h>
23 #include "xstatconv.h"
24
25+/* Only for ARMEB and LFS. */
26+#if defined(__ARMEB__) && defined(__UCLIBC_HAS_LFS__)
27+/* stat64 (renamed) from 2.6.11.11. What happened here is that after
28+ * Linux 2.4 the 2.4 unsigned short st_rdev and st_dev fields were
29+ * lengthened to unsigned long long - causing the inclusion of at least
30+ * some of the 0 padding bytes which followed them. On little endian
31+ * this is fine because 2.4 did zero the pad bytes (I think) and the
32+ * position of the data did not change. On big endian the change
33+ * shifted the data to the end of the field. Someone noticed for the
34+ * struct stat, and the armeb (big endian) case preserved the
35+ * unsigned short (yuck), but no so for stat64 (maybe this was deliberate,
36+ * but there is no evidence in the code of this.) Consequently a
37+ * fixup is necessary for the stat64 case. The fixup here is to
38+ * use the new structure when the change is detected. See below.
39+ */
40+struct __kernel_stat64_armeb {
41+ /* This definition changes the layout on big-endian from that
42+ * used in 2.4.31 - ABI change! Likewise for st_rdev.
43+ */
44+ unsigned long long st_dev;
45+ unsigned char __pad0[4];
46+ unsigned long __st_ino;
47+ unsigned int st_mode;
48+ unsigned int st_nlink;
49+ unsigned long st_uid;
50+ unsigned long st_gid;
51+ unsigned long long st_rdev;
52+ unsigned char __pad3[4];
53+ long long st_size;
54+ unsigned long st_blksize;
55+ unsigned long __pad4;
56+ unsigned long st_blocks;
57+ unsigned long st_atime;
58+ unsigned long st_atime_nsec;
59+ unsigned long st_mtime;
60+ unsigned long st_mtime_nsec;
61+ unsigned long st_ctime;
62+ unsigned long st_ctime_nsec;
63+ unsigned long long st_ino;
64+};
65+
66+/* This fixup only works so long as the old struct stat64 is no
67+ * smaller than the new one - the caller of xstatconv uses the
68+ * *old* struct, but the kernel writes the new one. CASSERT
69+ * detects this at compile time.
70+ */
71+#define CASSERT(c) do switch (0) { case 0:; case (c):; } while (0)
72+
73+void __xstat64_conv_new(struct __kernel_stat64_armeb *kbuf, struct stat64 *buf)
74+{
75+ CASSERT(sizeof *kbuf <= sizeof (struct kernel_stat64));
76+
77+ /* Convert from new kernel version of `struct stat64'. */
78+ buf->st_dev = kbuf->st_dev;
79+ buf->st_ino = kbuf->st_ino;
80+#ifdef _HAVE_STAT64___ST_INO
81+ buf->__st_ino = kbuf->__st_ino;
82+#endif
83+ buf->st_mode = kbuf->st_mode;
84+ buf->st_nlink = kbuf->st_nlink;
85+ buf->st_uid = kbuf->st_uid;
86+ buf->st_gid = kbuf->st_gid;
87+ buf->st_rdev = kbuf->st_rdev;
88+ buf->st_size = kbuf->st_size;
89+ buf->st_blksize = kbuf->st_blksize;
90+ buf->st_blocks = kbuf->st_blocks;
91+ buf->st_atime = kbuf->st_atime;
92+ buf->st_mtime = kbuf->st_mtime;
93+ buf->st_ctime = kbuf->st_ctime;
94+}
95+#define _MAY_HAVE_NEW_STAT64 1
96+#else
97+#define _MAY_HAVE_NEW_STAT64 0
98+#endif
99+
100+/* The following is taken verbatim from xstatconv.c apart from
101+ * the addition of the _MAY_HAVE_NEW_STAT64 code.
102+ */
103 void __xstat_conv(struct kernel_stat *kbuf, struct stat *buf)
104 {
105 /* Convert to current kernel version of `struct stat'. */
106@@ -53,6 +138,19 @@
107 #if defined __UCLIBC_HAS_LFS__
108 void __xstat64_conv(struct kernel_stat64 *kbuf, struct stat64 *buf)
109 {
110+# if _MAY_HAVE_NEW_STAT64
111+ /* This relies on any device (0,0) not being mountable - i.e.
112+ * it fails on Linux 2.4 if dev(0,0) is a mountable block file
113+ * system and itself contains it's own device. That doesn't
114+ * happen on Linux 2.4 so far as I can see, but even if it
115+ * does the API only fails (even then) if 2.4 didn't set all
116+ * of the pad bytes to 0 (and it does set them to zero.)
117+ */
118+ if (kbuf->st_dev == 0 && kbuf->st_rdev == 0) {
119+ __xstat64_conv_new((struct __kernel_stat64_armeb*)kbuf, buf);
120+ return;
121+ }
122+# endif
123 /* Convert to current kernel version of `struct stat64'. */
124 buf->st_dev = kbuf->st_dev;
125 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 @@
1Index: uClibc-0.9.29/libc/sysdeps/linux/common/bits/errno_values.h
2===================================================================
3--- uClibc-0.9.29/libc/sysdeps/linux/common/bits/errno_values.h 2002-08-23 20:48:19.000000000 +0200
4+++ uClibc-0.9.29/libc/sysdeps/linux/common/bits/errno_values.h 2007-07-01 22:11:53.000000000 +0200
5@@ -134,4 +134,16 @@
6 #define ENOMEDIUM 123 /* No medium found */
7 #define EMEDIUMTYPE 124 /* Wrong medium type */
8
9+/* the following errornumbers are only in 2.6 */
10+
11+#define ECANCELED 125 /* Operation Canceled */
12+#define ENOKEY 126 /* Required key not available */
13+#define EKEYEXPIRED 127 /* Key has expired */
14+#define EKEYREVOKED 128 /* Key has been revoked */
15+#define EKEYREJECTED 129 /* Key was rejected by service */
16+
17+/* for robust mutexes */
18+#define EOWNERDEAD 130 /* Owner died */
19+#define ENOTRECOVERABLE 131 /* State not recoverable */
20+
21 #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 @@
1# include/linux/posix_types.h defines __kernel_key_t as int, this file
2# contains an identical definition. This results in a compiler error
3# if both files are included. The ipc.h file, however, also includes
4# bits/types.h, which typedefs __key_t to (int), therefore it must
5# be safe to use __key_t in place of __kernel_key_t (given that C
6# regards equivalent numeric typedefs as identical.)
7--- uClibc-0.9.27/libc/sysdeps/linux/common/bits/ipc.h.orig 2005-05-07 13:36:04.448332211 -0700
8+++ uClibc-0.9.27/libc/sysdeps/linux/common/bits/ipc.h 2005-05-07 13:37:00.493885708 -0700
9@@ -35,9 +35,6 @@
10 # define IPC_INFO 3 /* See ipcs. */
11 #endif
12
13-/* Type of a SYSV IPC key. */
14-typedef int __kernel_key_t;
15-
16 /* Special key values. */
17 #define IPC_PRIVATE ((__key_t) 0) /* Private key. */
18
19@@ -45,7 +42,7 @@
20 /* Data structure used to pass permission information to IPC operations. */
21 struct ipc_perm
22 {
23- __kernel_key_t __key;
24+ __key_t __key;
25 __kernel_uid_t uid;
26 __kernel_gid_t gid;
27 __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 @@
1
2#
3# Patch managed by http://www.holgerschurig.de/patcher.html
4#
5
6--- uClibc/Makefile~nokernelheadercheck
7+++ uClibc/Makefile
8@@ -121,11 +121,11 @@
9 @./extra/config/conf -o extra/Configs/Config.in
10
11 headers: include/bits/uClibc_config.h
12-ifeq ($(strip $(ARCH_HAS_MMU)),y)
13- @set -x; ./extra/scripts/fix_includes.sh -k $(KERNEL_SOURCE) -t $(TARGET_ARCH)
14-else
15- @set -x; ./extra/scripts/fix_includes.sh -k $(KERNEL_SOURCE) -t $(TARGET_ARCH) -n
16-endif
17+#ifeq ($(strip $(ARCH_HAS_MMU)),y)
18+# @set -x; ./extra/scripts/fix_includes.sh -k $(KERNEL_SOURCE) -t $(TARGET_ARCH)
19+#else
20+# @set -x; ./extra/scripts/fix_includes.sh -k $(KERNEL_SOURCE) -t $(TARGET_ARCH) -n
21+#endif
22 @cd include/bits; \
23 set -e; \
24 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 @@
1Index: uClibc-0.9.29/libc/sysdeps/linux/common/bits/termios.h
2===================================================================
3--- uClibc-0.9.29.orig/libc/sysdeps/linux/common/bits/termios.h 2006-02-13 09:41:37.000000000 +0100
4+++ uClibc-0.9.29/libc/sysdeps/linux/common/bits/termios.h 2007-07-03 00:41:27.000000000 +0200
5@@ -156,7 +156,6 @@
6 #endif
7 #define B57600 0010001
8 #define B115200 0010002
9-#if 0 /* limited on uClibc, keep in sync w/ cfsetspeed.c */
10 #define B230400 0010003
11 #define B460800 0010004
12 #define B500000 0010005
13@@ -171,9 +170,6 @@
14 #define B3500000 0010016
15 #define B4000000 0010017
16 #define __MAX_BAUD B4000000
17-#else
18-#define __MAX_BAUD B115200
19-#endif
20 #ifdef __USE_MISC
21 # define CIBAUD 002003600000 /* input baud rate (not used) */
22 # 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 @@
1# Default per-distro config
2# DO NOT CHANGE THIS
3# 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 @@
1From c190f738e1b0e87658ea5f86c057fb147dc19428 Mon Sep 17 00:00:00 2001
2From: Carmelo Amoroso <carmelo.amoroso@st.com>
3Date: Thu, 5 Mar 2009 13:28:55 +0000
4Subject: [PATCH] Use __always_inline instead of __inline__
5
6---
7 ldso/ldso/arm/dl-sysdep.h | 8 ++++----
8 ldso/ldso/bfin/dl-sysdep.h | 2 +-
9 ldso/ldso/cris/dl-sysdep.h | 6 +++---
10 ldso/ldso/i386/dl-sysdep.h | 10 +++++-----
11 ldso/ldso/m68k/dl-sysdep.h | 6 +++---
12 ldso/ldso/mips/dl-sysdep.h | 8 ++++----
13 ldso/ldso/powerpc/dl-sysdep.h | 8 ++++----
14 ldso/ldso/sh/dl-sysdep.h | 8 ++++----
15 ldso/ldso/sh64/dl-sysdep.h | 6 +++---
16 ldso/ldso/sparc/dl-sysdep.h | 8 ++++----
17 ldso/ldso/xtensa/dl-sysdep.h | 6 +++---
18 11 files changed, 38 insertions(+), 38 deletions(-)
19
20diff --git a/ldso/ldso/arm/dl-sysdep.h b/ldso/ldso/arm/dl-sysdep.h
21index eea3b98..5191dd7 100644
22--- a/ldso/ldso/arm/dl-sysdep.h
23+++ b/ldso/ldso/arm/dl-sysdep.h
24@@ -15,7 +15,7 @@
25 GOT_BASE[1] = (unsigned long) MODULE; \
26 }
27
28-static __inline__ unsigned long arm_modulus(unsigned long m, unsigned long p)
29+static __always_inline unsigned long arm_modulus(unsigned long m, unsigned long p)
30 {
31 unsigned long i,t,inc;
32 i=p; t=0;
33@@ -67,7 +67,7 @@ unsigned long _dl_linux_resolver(struct elf_resolve * tpnt, int reloc_entry);
34 first element of the GOT. We used to use the PIC register to do this
35 without a constant pool reference, but GCC 4.2 will use a pseudo-register
36 for the PIC base, so it may not be in r10. */
37-static __inline__ Elf32_Addr __attribute__ ((unused))
38+static __always_inline Elf32_Addr __attribute__ ((unused))
39 elf_machine_dynamic (void)
40 {
41 Elf32_Addr dynamic;
42@@ -99,7 +99,7 @@ elf_machine_dynamic (void)
43 }
44
45 /* Return the run-time load address of the shared object. */
46-static __inline__ Elf32_Addr __attribute__ ((unused))
47+static __always_inline Elf32_Addr __attribute__ ((unused))
48 elf_machine_load_address (void)
49 {
50 extern void __dl_start __asm__ ("_dl_start");
51@@ -123,7 +123,7 @@ elf_machine_load_address (void)
52 return pcrel_addr - got_addr;
53 }
54
55-static __inline__ void
56+static __always_inline void
57 elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
58 Elf32_Word relative_count)
59 {
60diff --git a/ldso/ldso/bfin/dl-sysdep.h b/ldso/ldso/bfin/dl-sysdep.h
61index 3c88da4..f0c5129 100644
62--- a/ldso/ldso/bfin/dl-sysdep.h
63+++ b/ldso/ldso/bfin/dl-sysdep.h
64@@ -210,7 +210,7 @@ while (0)
65 #endif
66
67 #include <elf.h>
68-static __inline__ void
69+static __always_inline void
70 elf_machine_relative (DL_LOADADDR_TYPE load_off, const Elf32_Addr rel_addr,
71 Elf32_Word relative_count)
72 {
73diff --git a/ldso/ldso/cris/dl-sysdep.h b/ldso/ldso/cris/dl-sysdep.h
74index ffb763a..e454c10 100644
75--- a/ldso/ldso/cris/dl-sysdep.h
76+++ b/ldso/ldso/cris/dl-sysdep.h
77@@ -37,7 +37,7 @@ extern unsigned long _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entr
78 || ((type) == R_CRIS_GLOB_DAT)) * ELF_RTYPE_CLASS_PLT) \
79 | (((type) == R_CRIS_COPY) * ELF_RTYPE_CLASS_COPY))
80
81-static __inline__ Elf32_Addr
82+static __always_inline Elf32_Addr
83 elf_machine_dynamic(void)
84 {
85 /* Don't just set this to an asm variable "r0" since that's not logical
86@@ -59,7 +59,7 @@ elf_machine_dynamic(void)
87 there's some other symbol we could use, that we don't *have* to force a
88 GOT entry for. */
89
90-static __inline__ Elf32_Addr
91+static __always_inline Elf32_Addr
92 elf_machine_load_address(void)
93 {
94 Elf32_Addr gotaddr_diff;
95@@ -93,7 +93,7 @@ elf_machine_load_address(void)
96 return gotaddr_diff;
97 }
98
99-static __inline__ void
100+static __always_inline void
101 elf_machine_relative(Elf32_Addr load_off, const Elf32_Addr rel_addr,
102 Elf32_Word relative_count)
103 {
104diff --git a/ldso/ldso/i386/dl-sysdep.h b/ldso/ldso/i386/dl-sysdep.h
105index 77fa372..6e84861 100644
106--- a/ldso/ldso/i386/dl-sysdep.h
107+++ b/ldso/ldso/i386/dl-sysdep.h
108@@ -37,8 +37,8 @@ extern unsigned long _dl_linux_resolver(struct elf_resolve * tpnt, int reloc_ent
109 /* Return the link-time address of _DYNAMIC. Conveniently, this is the
110 first element of the GOT. This must be inlined in a function which
111 uses global data. */
112-static __inline__ Elf32_Addr elf_machine_dynamic (void) attribute_unused;
113-static __inline__ Elf32_Addr
114+static __always_inline Elf32_Addr elf_machine_dynamic (void) attribute_unused;
115+static __always_inline Elf32_Addr
116 elf_machine_dynamic (void)
117 {
118 register Elf32_Addr *got __asm__ ("%ebx");
119@@ -47,8 +47,8 @@ elf_machine_dynamic (void)
120
121
122 /* Return the run-time load address of the shared object. */
123-static __inline__ Elf32_Addr elf_machine_load_address (void) attribute_unused;
124-static __inline__ Elf32_Addr
125+static __always_inline Elf32_Addr elf_machine_load_address (void) attribute_unused;
126+static __always_inline Elf32_Addr
127 elf_machine_load_address (void)
128 {
129 /* It doesn't matter what variable this is, the reference never makes
130@@ -61,7 +61,7 @@ elf_machine_load_address (void)
131 return addr;
132 }
133
134-static __inline__ void
135+static __always_inline void
136 elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
137 Elf32_Word relative_count)
138 {
139diff --git a/ldso/ldso/m68k/dl-sysdep.h b/ldso/ldso/m68k/dl-sysdep.h
140index 8e26e20..259cb84 100644
141--- a/ldso/ldso/m68k/dl-sysdep.h
142+++ b/ldso/ldso/m68k/dl-sysdep.h
143@@ -39,7 +39,7 @@ extern unsigned long _dl_linux_resolver (struct elf_resolve *, int);
144 /* Return the link-time address of _DYNAMIC. Conveniently, this is the
145 first element of the GOT. This must be inlined in a function which
146 uses global data. */
147-static __inline__ Elf32_Addr
148+static __always_inline Elf32_Addr
149 elf_machine_dynamic (void)
150 {
151 register Elf32_Addr *got __asm__ ("%a5");
152@@ -48,7 +48,7 @@ elf_machine_dynamic (void)
153
154
155 /* Return the run-time load address of the shared object. */
156-static __inline__ Elf32_Addr
157+static __always_inline Elf32_Addr
158 elf_machine_load_address (void)
159 {
160 Elf32_Addr addr;
161@@ -58,7 +58,7 @@ elf_machine_load_address (void)
162 return addr;
163 }
164
165-static __inline__ void
166+static __always_inline void
167 elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
168 Elf32_Word relative_count)
169 {
170diff --git a/ldso/ldso/mips/dl-sysdep.h b/ldso/ldso/mips/dl-sysdep.h
171index cf6b28b..30d84fb 100644
172--- a/ldso/ldso/mips/dl-sysdep.h
173+++ b/ldso/ldso/mips/dl-sysdep.h
174@@ -169,7 +169,7 @@ void _dl_perform_mips_global_got_relocations(struct elf_resolve *tpnt, int lazy)
175
176 #define OFFSET_GP_GOT 0x7ff0
177
178-static __inline__ ElfW(Addr) *
179+static __always_inline ElfW(Addr) *
180 elf_mips_got_from_gpreg (ElfW(Addr) gpreg)
181 {
182 /* FIXME: the offset of gp from GOT may be system-dependent. */
183@@ -179,7 +179,7 @@ elf_mips_got_from_gpreg (ElfW(Addr) gpreg)
184 /* Return the link-time address of _DYNAMIC. Conveniently, this is the
185 first element of the GOT. This must be inlined in a function which
186 uses global data. We assume its $gp points to the primary GOT. */
187-static __inline__ ElfW(Addr)
188+static __always_inline ElfW(Addr)
189 elf_machine_dynamic (void)
190 {
191 register ElfW(Addr) gp __asm__ ("$28");
192@@ -198,7 +198,7 @@ elf_machine_dynamic (void)
193 #endif
194
195 /* Return the run-time load address of the shared object. */
196-static __inline__ ElfW(Addr)
197+static __always_inline ElfW(Addr)
198 elf_machine_load_address (void)
199 {
200 ElfW(Addr) addr;
201@@ -214,7 +214,7 @@ elf_machine_load_address (void)
202 return addr;
203 }
204
205-static __inline__ void
206+static __always_inline void
207 elf_machine_relative (ElfW(Addr) load_off, const ElfW(Addr) rel_addr,
208 ElfW(Word) relative_count)
209 {
210diff --git a/ldso/ldso/powerpc/dl-sysdep.h b/ldso/ldso/powerpc/dl-sysdep.h
211index fdbf564..f33214c 100644
212--- a/ldso/ldso/powerpc/dl-sysdep.h
213+++ b/ldso/ldso/powerpc/dl-sysdep.h
214@@ -85,7 +85,7 @@ void _dl_init_got(unsigned long *lpnt,struct elf_resolve *tpnt);
215 #define ELF_MACHINE_PLTREL_OVERLAP 1
216
217 /* Return the value of the GOT pointer. */
218-static __inline__ Elf32_Addr * __attribute__ ((const))
219+static __always_inline Elf32_Addr * __attribute__ ((const))
220 ppc_got (void)
221 {
222 Elf32_Addr *got;
223@@ -104,14 +104,14 @@ ppc_got (void)
224
225 /* Return the link-time address of _DYNAMIC, stored as
226 the first value in the GOT. */
227-static __inline__ Elf32_Addr __attribute__ ((const))
228+static __always_inline Elf32_Addr __attribute__ ((const))
229 elf_machine_dynamic (void)
230 {
231 return *ppc_got();
232 }
233
234 /* Return the run-time load address of the shared object. */
235-static __inline__ Elf32_Addr __attribute__ ((const))
236+static __always_inline Elf32_Addr __attribute__ ((const))
237 elf_machine_load_address (void)
238 {
239 Elf32_Addr *branchaddr;
240@@ -159,7 +159,7 @@ elf_machine_load_address (void)
241 return runtime_dynamic - elf_machine_dynamic ();
242 }
243
244-static __inline__ void
245+static __always_inline void
246 elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
247 Elf32_Word relative_count)
248 {
249diff --git a/ldso/ldso/sh/dl-sysdep.h b/ldso/ldso/sh/dl-sysdep.h
250index daedda5..d4fc784 100644
251--- a/ldso/ldso/sh/dl-sysdep.h
252+++ b/ldso/ldso/sh/dl-sysdep.h
253@@ -25,7 +25,7 @@
254 struct elf_resolve;
255 extern unsigned long _dl_linux_resolver(struct elf_resolve * tpnt, int reloc_entry);
256
257-static __inline__ unsigned int
258+static __always_inline unsigned int
259 _dl_urem(unsigned int n, unsigned int base)
260 {
261 int res;
262@@ -95,7 +95,7 @@ _dl_urem(unsigned int n, unsigned int base)
263 /* Return the link-time address of _DYNAMIC. Conveniently, this is the
264 first element of the GOT. This must be inlined in a function which
265 uses global data. */
266-static __inline__ Elf32_Addr __attribute__ ((unused))
267+static __always_inline Elf32_Addr __attribute__ ((unused))
268 elf_machine_dynamic (void)
269 {
270 register Elf32_Addr *got;
271@@ -104,7 +104,7 @@ elf_machine_dynamic (void)
272 }
273
274 /* Return the run-time load address of the shared object. */
275-static __inline__ Elf32_Addr __attribute__ ((unused))
276+static __always_inline Elf32_Addr __attribute__ ((unused))
277 elf_machine_load_address (void)
278 {
279 Elf32_Addr addr;
280@@ -146,7 +146,7 @@ elf_machine_load_address (void)
281 } \
282 }
283
284-static __inline__ void
285+static __always_inline void
286 elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
287 Elf32_Word relative_count)
288 {
289diff --git a/ldso/ldso/sh64/dl-sysdep.h b/ldso/ldso/sh64/dl-sysdep.h
290index fc67b12..15d9b5e 100644
291--- a/ldso/ldso/sh64/dl-sysdep.h
292+++ b/ldso/ldso/sh64/dl-sysdep.h
293@@ -41,7 +41,7 @@ extern unsigned long _dl_linux_resolver(struct elf_resolve * tpnt, int reloc_ent
294 /* Return the link-time address of _DYNAMIC. Conveniently, this is the
295 first element of the GOT. This must be inlined in a function which
296 uses global data. */
297-static __inline__ Elf32_Addr elf_machine_dynamic(void)
298+static __always_inline Elf32_Addr elf_machine_dynamic(void)
299 {
300 register Elf32_Addr *got;
301
302@@ -69,7 +69,7 @@ static __inline__ Elf32_Addr elf_machine_dynamic(void)
303 }
304
305 /* Return the run-time load address of the shared object. */
306-static __inline__ Elf32_Addr elf_machine_load_address(void)
307+static __always_inline Elf32_Addr elf_machine_load_address(void)
308 {
309 Elf32_Addr addr;
310
311@@ -122,7 +122,7 @@ static __inline__ Elf32_Addr elf_machine_load_address(void)
312 } \
313 }
314
315-static __inline__ void
316+static __always_inline void
317 elf_machine_relative(Elf32_Addr load_off, const Elf32_Addr rel_addr,
318 Elf32_Word relative_count)
319 {
320diff --git a/ldso/ldso/sparc/dl-sysdep.h b/ldso/ldso/sparc/dl-sysdep.h
321index 7936517..ebfa268 100644
322--- a/ldso/ldso/sparc/dl-sysdep.h
323+++ b/ldso/ldso/sparc/dl-sysdep.h
324@@ -52,7 +52,7 @@ unsigned long _dl_linux_resolver(struct elf_resolve * tpnt, int reloc_entry);
325
326 #ifndef COMPILE_ASM
327 /* Cheap modulo implementation, taken from arm/ld_sysdep.h. */
328-static __inline__ unsigned long
329+static __always_inline unsigned long
330 sparc_mod(unsigned long m, unsigned long p)
331 {
332 unsigned long i, t, inc;
333@@ -118,7 +118,7 @@ do { register Elf32_Addr pc __asm__("o7"); \
334 /* Return the link-time address of _DYNAMIC. Conveniently, this is the
335 first element of the GOT. This must be inlined in a function which
336 uses global data. */
337-static __inline__ Elf32_Addr
338+static __always_inline Elf32_Addr
339 elf_machine_dynamic (void)
340 {
341 register Elf32_Addr *got __asm__ ("%l7");
342@@ -129,7 +129,7 @@ elf_machine_dynamic (void)
343 }
344
345 /* Return the run-time load address of the shared object. */
346-static __inline__ Elf32_Addr
347+static __always_inline Elf32_Addr
348 elf_machine_load_address (void)
349 {
350 register Elf32_Addr *pc __asm__ ("%o7"), *got __asm__ ("%l7");
351@@ -148,7 +148,7 @@ elf_machine_load_address (void)
352 return (Elf32_Addr) got - *got + (pc[2] - pc[3]) * 4 - 4;
353 }
354
355-static __inline__ void
356+static __always_inline void
357 elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
358 Elf32_Word relative_count)
359 {
360diff --git a/ldso/ldso/xtensa/dl-sysdep.h b/ldso/ldso/xtensa/dl-sysdep.h
361index daae428..07b9b79 100644
362--- a/ldso/ldso/xtensa/dl-sysdep.h
363+++ b/ldso/ldso/xtensa/dl-sysdep.h
364@@ -85,7 +85,7 @@ extern unsigned long _dl_linux_resolver (struct elf_resolve *, int);
365 (((type) == R_XTENSA_JMP_SLOT) * ELF_RTYPE_CLASS_PLT)
366
367 /* Return the link-time address of _DYNAMIC. */
368-static __inline__ Elf32_Addr
369+static __always_inline Elf32_Addr
370 elf_machine_dynamic (void)
371 {
372 /* This function is only used while bootstrapping the runtime linker.
373@@ -95,7 +95,7 @@ elf_machine_dynamic (void)
374 }
375
376 /* Return the run-time load address of the shared object. */
377-static __inline__ Elf32_Addr
378+static __always_inline Elf32_Addr
379 elf_machine_load_address (void)
380 {
381 Elf32_Addr addr, tmp;
382@@ -116,7 +116,7 @@ elf_machine_load_address (void)
383 return addr - 3;
384 }
385
386-static __inline__ void
387+static __always_inline void
388 elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
389 Elf32_Word relative_count)
390 {
391--
3921.6.3.3.444.g4ecbc
393
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 @@
1#
2# Automatically generated make config: don't edit
3# Sat May 12 23:18:41 2007
4#
5# TARGET_alpha is not set
6TARGET_arm=y
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13# TARGET_i386 is not set
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="arm"
33FORCE_OPTIONS_FOR_ARCH=y
34# CONFIG_ARM_OABI is not set
35CONFIG_ARM_EABI=y
36USE_BX=y
37# CONFIG_GENERIC_ARM is not set
38# CONFIG_ARM610 is not set
39# CONFIG_ARM710 is not set
40# CONFIG_ARM7TDMI is not set
41# CONFIG_ARM720T is not set
42# CONFIG_ARM920T is not set
43# CONFIG_ARM922T is not set
44# CONFIG_ARM926T is not set
45# CONFIG_ARM10T is not set
46# CONFIG_ARM1136JF_S is not set
47# CONFIG_ARM1176JZ_S is not set
48# CONFIG_ARM1176JZF_S is not set
49# CONFIG_ARM_SA110 is not set
50# CONFIG_ARM_SA1100 is not set
51# CONFIG_ARM_XSCALE is not set
52CONFIG_ARM_IWMMXT=y
53TARGET_SUBARCH=""
54
55#
56# Using ELF file format
57#
58ARCH_ANY_ENDIAN=y
59ARCH_LITTLE_ENDIAN=y
60# ARCH_WANTS_BIG_ENDIAN is not set
61ARCH_WANTS_LITTLE_ENDIAN=y
62ARCH_HAS_MMU=y
63ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y
65# UCLIBC_HAS_FPU is not set
66UCLIBC_HAS_SOFT_FLOAT=y
67DO_C99_MATH=y
68KERNEL_HEADERS="/usr/include"
69HAVE_DOT_CONFIG=y
70
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 @@
1Index: uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S
2===================================================================
3--- /dev/null 1970-01-01 00:00:00.000000000 +0000
4+++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S 2008-08-28 00:22:06.278340855 +0200
5@@ -0,0 +1,78 @@
6+/* Copyright (C) 1999, 2002, 2003, 2005 Free Software Foundation, Inc.
7+ This file is part of the GNU C Library.
8+ Contributed by Philip Blundell <philb@gnu.org>.
9+
10+ The GNU C Library is free software; you can redistribute it and/or
11+ modify it under the terms of the GNU Lesser General Public
12+ License as published by the Free Software Foundation; either
13+ version 2.1 of the License, or (at your option) any later version.
14+
15+ The GNU C Library is distributed in the hope that it will be useful,
16+ but WITHOUT ANY WARRANTY; without even the implied warranty of
17+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18+ Lesser General Public License for more details.
19+
20+ You should have received a copy of the GNU Lesser General Public
21+ License along with the GNU C Library; if not, write to the Free
22+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
23+ 02111-1307 USA. */
24+
25+#include <sysdep-cancel.h>
26+#define _ERRNO_H 1
27+#include <bits/errno.h>
28+#include <kernel-features.h>
29+
30+/* Clone the calling process, but without copying the whole address space.
31+ The calling process is suspended until the new process exits or is
32+ replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
33+ and the process ID of the new process to the old process. */
34+
35+ENTRY (__vfork)
36+
37+#ifdef __NR_vfork
38+
39+#ifdef SHARED
40+ ldr ip, 1f
41+ ldr r0, 2f
42+3: add ip, pc, ip
43+ ldr r0, [ip, r0]
44+#else
45+ ldr r0, 1f
46+#endif
47+ movs r0, r0
48+ bne HIDDEN_JUMPTARGET (__fork)
49+
50+ DO_CALL (vfork, 0)
51+ cmn a1, #4096
52+ RETINSTR(cc, lr)
53+
54+#ifndef __ASSUME_VFORK_SYSCALL
55+ /* Check if vfork syscall is known at all. */
56+ cmn a1, #ENOSYS
57+ bne PLTJMP(C_SYMBOL_NAME(__syscall_error))
58+#endif
59+
60+#endif
61+
62+#ifndef __ASSUME_VFORK_SYSCALL
63+ /* If we don't have vfork, fork is close enough. */
64+ DO_CALL (fork, 0)
65+ cmn a1, #4096
66+ RETINSTR(cc, lr)
67+#elif !defined __NR_vfork
68+# error "__NR_vfork not available and __ASSUME_VFORK_SYSCALL defined"
69+#endif
70+ b PLTJMP(C_SYMBOL_NAME(__syscall_error))
71+
72+#ifdef SHARED
73+1: .word _GLOBAL_OFFSET_TABLE_ - 3b - 8
74+2: .word __libc_pthread_functions(GOTOFF)
75+#else
76+ .weak pthread_create
77+1: .word pthread_create
78+#endif
79+
80+PSEUDO_END (__vfork)
81+libc_hidden_def (__vfork)
82+
83+weak_alias (__vfork, vfork)
84Index: uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h
85===================================================================
86--- /dev/null 1970-01-01 00:00:00.000000000 +0000
87+++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h 2008-08-28 00:28:04.301636993 +0200
88@@ -0,0 +1,130 @@
89+/* Copyright (C) 2003, 2005 Free Software Foundation, Inc.
90+ This file is part of the GNU C Library.
91+ Contributed by Phil Blundell <pb@nexus.co.uk>, 2003.
92+
93+ The GNU C Library is free software; you can redistribute it and/or
94+ modify it under the terms of the GNU Lesser General Public
95+ License as published by the Free Software Foundation; either
96+ version 2.1 of the License, or (at your option) any later version.
97+
98+ The GNU C Library is distributed in the hope that it will be useful,
99+ but WITHOUT ANY WARRANTY; without even the implied warranty of
100+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
101+ Lesser General Public License for more details.
102+
103+ You should have received a copy of the GNU Lesser General Public
104+ License along with the GNU C Library; if not, write to the Free
105+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
106+ 02111-1307 USA. */
107+
108+#include <tls.h>
109+#include <pt-machine.h>
110+#ifndef __ASSEMBLER__
111+# include <linuxthreads/internals.h>
112+#endif
113+
114+#if !defined NOT_IN_libc || defined IS_IN_libpthread
115+
116+/* We push lr onto the stack, so we have to use ldmib instead of ldmia
117+ to find the saved arguments. */
118+# ifdef PIC
119+# undef DOARGS_5
120+# undef DOARGS_6
121+# undef DOARGS_7
122+# define DOARGS_5 str r4, [sp, $-4]!; ldr r4, [sp, $8];
123+# define DOARGS_6 mov ip, sp; stmfd sp!, {r4, r5}; ldmib ip, {r4, r5};
124+# define DOARGS_7 mov ip, sp; stmfd sp!, {r4, r5, r6}; ldmib ip, {r4, r5, r6};
125+# endif
126+
127+# undef PSEUDO_RET
128+# define PSEUDO_RET \
129+ ldrcc pc, [sp], $4; \
130+ ldr lr, [sp], $4; \
131+ b PLTJMP(SYSCALL_ERROR)
132+
133+# undef PSEUDO
134+# define PSEUDO(name, syscall_name, args) \
135+ .section ".text"; \
136+ PSEUDO_PROLOGUE; \
137+ ENTRY (name); \
138+ SINGLE_THREAD_P; \
139+ bne .Lpseudo_cancel; \
140+ DO_CALL (syscall_name, args); \
141+ cmn r0, $4096; \
142+ RETINSTR(cc, lr); \
143+ b PLTJMP(SYSCALL_ERROR); \
144+ .Lpseudo_cancel: \
145+ str lr, [sp, $-4]!; \
146+ DOCARGS_##args; /* save syscall args around CENABLE. */ \
147+ CENABLE; \
148+ mov ip, r0; /* put mask in safe place. */ \
149+ UNDOCARGS_##args; /* restore syscall args. */ \
150+ swi SYS_ify (syscall_name); /* do the call. */ \
151+ str r0, [sp, $-4]!; /* save syscall return value. */ \
152+ mov r0, ip; /* get mask back. */ \
153+ CDISABLE; \
154+ ldr r0, [sp], $4; /* retrieve return value. */ \
155+ UNDOC2ARGS_##args; /* fix register damage. */ \
156+ cmn r0, $4096;
157+
158+# define DOCARGS_0
159+# define UNDOCARGS_0
160+# define UNDOC2ARGS_0
161+
162+# define DOCARGS_1 str r0, [sp, #-4]!;
163+# define UNDOCARGS_1 ldr r0, [sp], #4;
164+# define UNDOC2ARGS_1
165+
166+# define DOCARGS_2 str r1, [sp, #-4]!; str r0, [sp, #-4]!;
167+# define UNDOCARGS_2 ldr r0, [sp], #4; ldr r1, [sp], #4;
168+# define UNDOC2ARGS_2
169+
170+# define DOCARGS_3 str r2, [sp, #-4]!; str r1, [sp, #-4]!; str r0, [sp, #-4]!;
171+# define UNDOCARGS_3 ldr r0, [sp], #4; ldr r1, [sp], #4; ldr r2, [sp], #4
172+# define UNDOC2ARGS_3
173+
174+# define DOCARGS_4 stmfd sp!, {r0-r3}
175+# define UNDOCARGS_4 ldmfd sp!, {r0-r3}
176+# define UNDOC2ARGS_4
177+
178+# define DOCARGS_5 stmfd sp!, {r0-r3}
179+# define UNDOCARGS_5 ldmfd sp, {r0-r3}; str r4, [sp, #-4]!; ldr r4, [sp, #24]
180+# define UNDOC2ARGS_5 ldr r4, [sp], #20
181+
182+# ifdef IS_IN_libpthread
183+# define CENABLE bl PLTJMP(__pthread_enable_asynccancel)
184+# define CDISABLE bl PLTJMP(__pthread_disable_asynccancel)
185+# define __local_multiple_threads __pthread_multiple_threads
186+# else
187+# define CENABLE bl PLTJMP(__libc_enable_asynccancel)
188+# define CDISABLE bl PLTJMP(__libc_disable_asynccancel)
189+# define __local_multiple_threads __libc_multiple_threads
190+# endif
191+
192+# ifndef __ASSEMBLER__
193+extern int __local_multiple_threads attribute_hidden;
194+# define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1)
195+# else
196+# if !defined PIC
197+# define SINGLE_THREAD_P \
198+ ldr ip, =__local_multiple_threads; \
199+ ldr ip, [ip]; \
200+ teq ip, #0;
201+# define PSEUDO_PROLOGUE
202+# else
203+# define SINGLE_THREAD_P \
204+ ldr ip, 1b; \
205+2: \
206+ ldr ip, [pc, ip]; \
207+ teq ip, #0;
208+# define PSEUDO_PROLOGUE \
209+ 1: .word __local_multiple_threads - 2f - 8;
210+# endif
211+# endif
212+
213+#elif !defined __ASSEMBLER__
214+
215+/* This code should never be used but we define it anyhow. */
216+# define SINGLE_THREAD_P (1)
217+
218+#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 @@
1#
2# Automatically generated make config: don't edit
3# Mon May 14 10:23:14 2007
4#
5# TARGET_alpha is not set
6TARGET_arm=y
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13# TARGET_i386 is not set
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="arm"
33FORCE_OPTIONS_FOR_ARCH=y
34# CONFIG_ARM_OABI is not set
35CONFIG_ARM_EABI=y
36USE_BX=y
37# CONFIG_GENERIC_ARM is not set
38# CONFIG_ARM610 is not set
39# CONFIG_ARM710 is not set
40# CONFIG_ARM7TDMI is not set
41# CONFIG_ARM720T is not set
42CONFIG_ARM920T=y
43# CONFIG_ARM922T is not set
44# CONFIG_ARM926T is not set
45# CONFIG_ARM10T is not set
46# CONFIG_ARM1136JF_S is not set
47# CONFIG_ARM1176JZ_S is not set
48# CONFIG_ARM1176JZF_S is not set
49# CONFIG_ARM_SA110 is not set
50# CONFIG_ARM_SA1100 is not set
51# CONFIG_ARM_XSCALE is not set
52# CONFIG_ARM_IWMMXT is not set
53TARGET_SUBARCH=""
54
55#
56# Using ELF file format
57#
58ARCH_ANY_ENDIAN=y
59ARCH_LITTLE_ENDIAN=y
60# ARCH_WANTS_BIG_ENDIAN is not set
61ARCH_WANTS_LITTLE_ENDIAN=y
62ARCH_HAS_MMU=y
63ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y
65# UCLIBC_HAS_FPU is not set
66UCLIBC_HAS_SOFT_FLOAT=y
67KERNEL_HEADERS="/usr/include"
68HAVE_DOT_CONFIG=y
69
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 @@
1#
2# Automatically generated make config: don't edit
3# Sat May 12 22:07:03 2007
4#
5# TARGET_alpha is not set
6TARGET_arm=y
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13# TARGET_i386 is not set
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="arm"
33FORCE_OPTIONS_FOR_ARCH=y
34# CONFIG_ARM_OABI is not set
35CONFIG_ARM_EABI=y
36USE_BX=y
37# CONFIG_GENERIC_ARM is not set
38# CONFIG_ARM610 is not set
39# CONFIG_ARM710 is not set
40# CONFIG_ARM7TDMI is not set
41# CONFIG_ARM720T is not set
42# CONFIG_ARM920T is not set
43# CONFIG_ARM922T is not set
44# CONFIG_ARM926T is not set
45# CONFIG_ARM10T is not set
46# CONFIG_ARM1136JF_S is not set
47# CONFIG_ARM1176JZ_S is not set
48# CONFIG_ARM1176JZF_S is not set
49# CONFIG_ARM_SA110 is not set
50# CONFIG_ARM_SA1100 is not set
51CONFIG_ARM_XSCALE=y
52# CONFIG_ARM_IWMMXT is not set
53TARGET_SUBARCH=""
54
55#
56# Using ELF file format
57#
58ARCH_ANY_ENDIAN=y
59ARCH_BIG_ENDIAN=y
60ARCH_WANTS_BIG_ENDIAN=y
61# ARCH_WANTS_LITTLE_ENDIAN is not set
62ARCH_HAS_MMU=y
63ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y
65# UCLIBC_HAS_FPU is not set
66UCLIBC_HAS_SOFT_FLOAT=y
67DO_C99_MATH=y
68KERNEL_HEADERS="/usr/include"
69HAVE_DOT_CONFIG=y
70
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 @@
1#
2# Automatically generated make config: don't edit
3# Mon May 14 10:23:14 2007
4#
5# TARGET_alpha is not set
6TARGET_arm=y
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13# TARGET_i386 is not set
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="arm"
33FORCE_OPTIONS_FOR_ARCH=y
34# CONFIG_ARM_OABI is not set
35CONFIG_ARM_EABI=y
36USE_BX=y
37# CONFIG_GENERIC_ARM is not set
38# CONFIG_ARM610 is not set
39# CONFIG_ARM710 is not set
40# CONFIG_ARM7TDMI is not set
41# CONFIG_ARM720T is not set
42CONFIG_ARM920T=y
43# CONFIG_ARM922T is not set
44# CONFIG_ARM926T is not set
45# CONFIG_ARM10T is not set
46# CONFIG_ARM1136JF_S is not set
47# CONFIG_ARM1176JZ_S is not set
48# CONFIG_ARM1176JZF_S is not set
49# CONFIG_ARM_SA110 is not set
50# CONFIG_ARM_SA1100 is not set
51# CONFIG_ARM_XSCALE is not set
52# CONFIG_ARM_IWMMXT is not set
53TARGET_SUBARCH=""
54
55#
56# Using ELF file format
57#
58ARCH_ANY_ENDIAN=y
59ARCH_LITTLE_ENDIAN=y
60# ARCH_WANTS_BIG_ENDIAN is not set
61ARCH_WANTS_LITTLE_ENDIAN=y
62ARCH_HAS_MMU=y
63ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y
65# UCLIBC_HAS_FPU is not set
66UCLIBC_HAS_SOFT_FLOAT=y
67KERNEL_HEADERS="/usr/include"
68HAVE_DOT_CONFIG=y
69
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 @@
1#
2# Automatically generated make config: don't edit
3# Sun May 13 11:16:02 2007
4#
5# TARGET_alpha is not set
6TARGET_arm=y
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13# TARGET_i386 is not set
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="arm"
33FORCE_OPTIONS_FOR_ARCH=y
34# CONFIG_ARM_OABI is not set
35CONFIG_ARM_EABI=y
36USE_BX=y
37# CONFIG_GENERIC_ARM is not set
38# CONFIG_ARM610 is not set
39# CONFIG_ARM710 is not set
40# CONFIG_ARM7TDMI is not set
41# CONFIG_ARM720T is not set
42# CONFIG_ARM920T is not set
43# CONFIG_ARM922T is not set
44# CONFIG_ARM926T is not set
45# CONFIG_ARM10T is not set
46# CONFIG_ARM1136JF_S is not set
47# CONFIG_ARM1176JZ_S is not set
48# CONFIG_ARM1176JZF_S is not set
49# CONFIG_ARM_SA110 is not set
50# CONFIG_ARM_SA1100 is not set
51CONFIG_ARM_XSCALE=y
52# CONFIG_ARM_IWMMXT is not set
53TARGET_SUBARCH=""
54
55#
56# Using ELF file format
57#
58ARCH_ANY_ENDIAN=y
59ARCH_LITTLE_ENDIAN=y
60# ARCH_WANTS_BIG_ENDIAN is not set
61ARCH_WANTS_LITTLE_ENDIAN=y
62ARCH_HAS_MMU=y
63ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y
65# UCLIBC_HAS_FPU is not set
66UCLIBC_HAS_SOFT_FLOAT=y
67DO_C99_MATH=y
68KERNEL_HEADERS="/data/build/koen/OE/build/tmp/angstrom/cross/arm-angstrom-linux-uclibcgnueabi/include"
69HAVE_DOT_CONFIG=y
70
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 @@
1#
2# Automatically generated make config: don't edit
3# Sun May 13 11:16:02 2007
4#
5# TARGET_alpha is not set
6TARGET_arm=y
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13# TARGET_i386 is not set
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="arm"
33FORCE_OPTIONS_FOR_ARCH=y
34# CONFIG_ARM_OABI is not set
35CONFIG_ARM_EABI=y
36USE_BX=y
37# CONFIG_GENERIC_ARM is not set
38# CONFIG_ARM610 is not set
39# CONFIG_ARM710 is not set
40# CONFIG_ARM7TDMI is not set
41# CONFIG_ARM720T is not set
42# CONFIG_ARM920T is not set
43# CONFIG_ARM922T is not set
44# CONFIG_ARM926T is not set
45# CONFIG_ARM10T is not set
46# CONFIG_ARM1136JF_S is not set
47# CONFIG_ARM1176JZ_S is not set
48# CONFIG_ARM1176JZF_S is not set
49# CONFIG_ARM_SA110 is not set
50# CONFIG_ARM_SA1100 is not set
51CONFIG_ARM_XSCALE=y
52# CONFIG_ARM_IWMMXT is not set
53TARGET_SUBARCH=""
54
55#
56# Using ELF file format
57#
58ARCH_ANY_ENDIAN=y
59ARCH_LITTLE_ENDIAN=y
60# ARCH_WANTS_BIG_ENDIAN is not set
61ARCH_WANTS_LITTLE_ENDIAN=y
62ARCH_HAS_MMU=y
63ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y
65UCLIBC_HAS_FPU=y
66UCLIBC_HAS_SOFT_FLOAT=n
67DO_C99_MATH=y
68KERNEL_HEADERS="/data/build/koen/OE/build/tmp/angstrom/cross/arm-angstrom-linux-uclibcgnueabi/include"
69HAVE_DOT_CONFIG=y
70
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 @@
1#
2# Automatically generated make config: don't edit
3# Sun May 13 11:16:02 2007
4#
5# TARGET_alpha is not set
6TARGET_arm=y
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13# TARGET_i386 is not set
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="arm"
33FORCE_OPTIONS_FOR_ARCH=y
34# CONFIG_ARM_OABI is not set
35CONFIG_ARM_EABI=y
36USE_BX=y
37# CONFIG_GENERIC_ARM is not set
38# CONFIG_ARM610 is not set
39# CONFIG_ARM710 is not set
40# CONFIG_ARM7TDMI is not set
41# CONFIG_ARM720T is not set
42# CONFIG_ARM920T is not set
43# CONFIG_ARM922T is not set
44# CONFIG_ARM926T is not set
45# CONFIG_ARM10T is not set
46# CONFIG_ARM1136JF_S is not set
47# CONFIG_ARM1176JZ_S is not set
48# CONFIG_ARM1176JZF_S is not set
49# CONFIG_ARM_SA110 is not set
50# CONFIG_ARM_SA1100 is not set
51CONFIG_ARM_XSCALE=y
52# CONFIG_ARM_IWMMXT is not set
53TARGET_SUBARCH=""
54
55#
56# Using ELF file format
57#
58ARCH_ANY_ENDIAN=y
59ARCH_LITTLE_ENDIAN=y
60# ARCH_WANTS_BIG_ENDIAN is not set
61ARCH_WANTS_LITTLE_ENDIAN=y
62ARCH_HAS_MMU=y
63ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y
65UCLIBC_HAS_FPU=y
66UCLIBC_HAS_SOFT_FLOAT=n
67DO_C99_MATH=y
68KERNEL_HEADERS="/data/build/koen/OE/build/tmp/angstrom/cross/arm-angstrom-linux-uclibcgnueabi/include"
69HAVE_DOT_CONFIG=y
70
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 @@
1#
2# Automatically generated make config: don't edit
3# Sun May 13 11:16:02 2007
4#
5# TARGET_alpha is not set
6TARGET_arm=y
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13# TARGET_i386 is not set
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="arm"
33FORCE_OPTIONS_FOR_ARCH=y
34# CONFIG_ARM_OABI is not set
35CONFIG_ARM_EABI=y
36USE_BX=y
37# CONFIG_GENERIC_ARM is not set
38# CONFIG_ARM610 is not set
39# CONFIG_ARM710 is not set
40# CONFIG_ARM7TDMI is not set
41# CONFIG_ARM720T is not set
42# CONFIG_ARM920T is not set
43# CONFIG_ARM922T is not set
44# CONFIG_ARM926T is not set
45# CONFIG_ARM10T is not set
46# CONFIG_ARM1136JF_S is not set
47# CONFIG_ARM1176JZ_S is not set
48# CONFIG_ARM1176JZF_S is not set
49# CONFIG_ARM_SA110 is not set
50# CONFIG_ARM_SA1100 is not set
51CONFIG_ARM_XSCALE=y
52# CONFIG_ARM_IWMMXT is not set
53TARGET_SUBARCH=""
54
55#
56# Using ELF file format
57#
58ARCH_ANY_ENDIAN=y
59ARCH_LITTLE_ENDIAN=y
60# ARCH_WANTS_BIG_ENDIAN is not set
61ARCH_WANTS_LITTLE_ENDIAN=y
62ARCH_HAS_MMU=y
63ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y
65# UCLIBC_HAS_FPU is not set
66UCLIBC_HAS_SOFT_FLOAT=y
67DO_C99_MATH=y
68KERNEL_HEADERS="/data/build/koen/OE/build/tmp/angstrom/cross/arm-angstrom-linux-uclibcgnueabi/include"
69HAVE_DOT_CONFIG=y
70
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 @@
1#
2# Automatically generated make config: don't edit
3# Sat May 12 23:18:41 2007
4#
5# TARGET_alpha is not set
6TARGET_arm=y
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13# TARGET_i386 is not set
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="arm"
33FORCE_OPTIONS_FOR_ARCH=y
34# CONFIG_ARM_OABI is not set
35CONFIG_ARM_EABI=y
36USE_BX=y
37# CONFIG_GENERIC_ARM is not set
38# CONFIG_ARM610 is not set
39# CONFIG_ARM710 is not set
40# CONFIG_ARM7TDMI is not set
41# CONFIG_ARM720T is not set
42# CONFIG_ARM920T is not set
43# CONFIG_ARM922T is not set
44# CONFIG_ARM926T is not set
45# CONFIG_ARM10T is not set
46# CONFIG_ARM1136JF_S is not set
47# CONFIG_ARM1176JZ_S is not set
48# CONFIG_ARM1176JZF_S is not set
49# CONFIG_ARM_SA110 is not set
50# CONFIG_ARM_SA1100 is not set
51# CONFIG_ARM_XSCALE is not set
52CONFIG_ARM_IWMMXT=y
53TARGET_SUBARCH=""
54
55#
56# Using ELF file format
57#
58ARCH_ANY_ENDIAN=y
59ARCH_LITTLE_ENDIAN=y
60# ARCH_WANTS_BIG_ENDIAN is not set
61ARCH_WANTS_LITTLE_ENDIAN=y
62ARCH_HAS_MMU=y
63ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y
65# UCLIBC_HAS_FPU is not set
66UCLIBC_HAS_SOFT_FLOAT=y
67DO_C99_MATH=y
68KERNEL_HEADERS="/usr/include"
69HAVE_DOT_CONFIG=y
70
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 @@
1Index: uClibc-0.9.30.1/extra/scripts/unifdef.c
2===================================================================
3--- uClibc-0.9.30.1.orig/extra/scripts/unifdef.c 2009-08-09 11:55:23.000000000 +0200
4+++ uClibc-0.9.30.1/extra/scripts/unifdef.c 2009-08-09 11:55:46.000000000 +0200
5@@ -206,7 +206,7 @@
6 static void error(const char *);
7 static int findsym(const char *);
8 static void flushline(bool);
9-static Linetype getline(void);
10+static Linetype _getline(void);
11 static Linetype ifeval(const char **);
12 static void ignoreoff(void);
13 static void ignoreon(void);
14@@ -512,7 +512,7 @@
15
16 for (;;) {
17 linenum++;
18- lineval = getline();
19+ lineval = _getline();
20 trans_table[ifstate[depth]][lineval]();
21 debug("process %s -> %s depth %d",
22 linetype_name[lineval],
23@@ -526,7 +526,7 @@
24 * help from skipcomment().
25 */
26 static Linetype
27-getline(void)
28+_getline(void)
29 {
30 const char *cp;
31 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 @@
1#
2# Automatically generated make config: don't edit
3# Sat May 12 23:18:41 2007
4#
5# TARGET_alpha is not set
6TARGET_arm=y
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13# TARGET_i386 is not set
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="arm"
33FORCE_OPTIONS_FOR_ARCH=y
34# CONFIG_ARM_OABI is not set
35CONFIG_ARM_EABI=y
36USE_BX=y
37# CONFIG_GENERIC_ARM is not set
38# CONFIG_ARM610 is not set
39# CONFIG_ARM710 is not set
40# CONFIG_ARM7TDMI is not set
41# CONFIG_ARM720T is not set
42# CONFIG_ARM920T is not set
43# CONFIG_ARM922T is not set
44# CONFIG_ARM926T is not set
45# CONFIG_ARM10T is not set
46# CONFIG_ARM1136JF_S is not set
47# CONFIG_ARM1176JZ_S is not set
48# CONFIG_ARM1176JZF_S is not set
49# CONFIG_ARM_SA110 is not set
50# CONFIG_ARM_SA1100 is not set
51# CONFIG_ARM_XSCALE is not set
52CONFIG_ARM_IWMMXT=y
53TARGET_SUBARCH=""
54
55#
56# Using ELF file format
57#
58ARCH_ANY_ENDIAN=y
59ARCH_LITTLE_ENDIAN=y
60# ARCH_WANTS_BIG_ENDIAN is not set
61ARCH_WANTS_LITTLE_ENDIAN=y
62ARCH_HAS_MMU=y
63ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y
65# UCLIBC_HAS_FPU is not set
66UCLIBC_HAS_SOFT_FLOAT=y
67DO_C99_MATH=y
68KERNEL_HEADERS="/usr/include"
69HAVE_DOT_CONFIG=y
70
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 @@
1Index: uClibc/ldso/ldso/arm/resolve.S
2===================================================================
3--- uClibc.orig/ldso/ldso/arm/resolve.S 2009-03-20 12:03:32.000000000 -0700
4+++ uClibc/ldso/ldso/arm/resolve.S 2009-03-20 12:04:23.000000000 -0700
5@@ -97,7 +97,6 @@
6
7 .text
8 .align 4 @ 16 byte boundary and there are 32 bytes below (arm case)
9- #if !defined(__thumb__) || defined(__thumb2__)
10 .arm
11 .globl _dl_linux_resolve
12 .type _dl_linux_resolve,%function
13@@ -129,7 +128,7 @@
14 #else
15 mov pc,ip
16 #endif
17-#else
18+#if 0
19 @ In the thumb case _dl_linux_resolver is thumb. If a bl is used
20 @ from arm code the linker will insert a stub call which, with
21 @ 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 @@
1Index: uClibc/libpthread/linuxthreads/descr.h
2===================================================================
3--- uClibc.orig/libpthread/linuxthreads/descr.h 2008-08-27 23:59:46.171809044 +0200
4+++ uClibc/libpthread/linuxthreads/descr.h 2008-08-28 00:00:35.435134759 +0200
5@@ -123,9 +123,9 @@
6 union dtv *dtvp;
7 pthread_descr self; /* Pointer to this structure */
8 int multiple_threads;
9-# ifdef NEED_DL_SYSINFO
10 uintptr_t sysinfo;
11-# endif
12+ uintptr_t stack_guard;
13+ uintptr_t pointer_guard;
14 } data;
15 void *__padding[16];
16 } p_header;
17@@ -193,6 +193,13 @@
18 size_t p_alloca_cutoff; /* Maximum size which should be allocated
19 using alloca() instead of malloc(). */
20 /* New elements must be added at the end. */
21+
22+ /* This member must be last. */
23+ char end_padding[];
24+
25+#define PTHREAD_STRUCT_END_PADDING \
26+ (sizeof (struct _pthread_descr_struct) \
27+ - offsetof (struct _pthread_descr_struct, end_padding))
28 } __attribute__ ((aligned(32))); /* We need to align the structure so that
29 doubles are aligned properly. This is 8
30 bytes on MIPS and 16 bytes on MIPS64.
31Index: uClibc/libpthread/linuxthreads/manager.c
32===================================================================
33--- uClibc.orig/libpthread/linuxthreads/manager.c 2008-08-27 23:59:54.185140485 +0200
34+++ uClibc/libpthread/linuxthreads/manager.c 2008-08-28 00:00:35.435134759 +0200
35@@ -679,6 +679,17 @@
36 new_thread->p_inheritsched = attr ? attr->__inheritsched : 0;
37 new_thread->p_alloca_cutoff = stksize / 4 > __MAX_ALLOCA_CUTOFF
38 ? __MAX_ALLOCA_CUTOFF : stksize / 4;
39+
40+ /* Copy the stack guard canary. */
41+#ifdef THREAD_COPY_STACK_GUARD
42+ THREAD_COPY_STACK_GUARD (new_thread);
43+#endif
44+
45+ /* Copy the pointer guard value. */
46+#ifdef THREAD_COPY_POINTER_GUARD
47+ THREAD_COPY_POINTER_GUARD (new_thread);
48+#endif
49+
50 /* Initialize the thread handle */
51 __pthread_init_lock(&__pthread_handles[sseg].h_lock);
52 __pthread_handles[sseg].h_descr = new_thread;
53@@ -742,15 +753,15 @@
54 pid = __clone2(pthread_start_thread_event,
55 (void **)new_thread_bottom,
56 (char *)stack_addr - new_thread_bottom,
57- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND |
58+ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM |
59 __pthread_sig_cancel, new_thread);
60 #elif _STACK_GROWS_UP
61 pid = __clone(pthread_start_thread_event, (void *) new_thread_bottom,
62- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND |
63+ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM |
64 __pthread_sig_cancel, new_thread);
65 #else
66 pid = __clone(pthread_start_thread_event, stack_addr,
67- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND |
68+ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM |
69 __pthread_sig_cancel, new_thread);
70 #endif
71 saved_errno = errno;
72@@ -783,15 +794,15 @@
73 pid = __clone2(pthread_start_thread,
74 (void **)new_thread_bottom,
75 (char *)stack_addr - new_thread_bottom,
76- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND |
77+ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM |
78 __pthread_sig_cancel, new_thread);
79 #elif _STACK_GROWS_UP
80 pid = __clone(pthread_start_thread, (void *) new_thread_bottom,
81- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND |
82+ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM |
83 __pthread_sig_cancel, new_thread);
84 #else
85 pid = __clone(pthread_start_thread, stack_addr,
86- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND |
87+ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM |
88 __pthread_sig_cancel, new_thread);
89 #endif /* !NEED_SEPARATE_REGISTER_STACK */
90 saved_errno = errno;
91@@ -892,10 +903,11 @@
92 #ifdef _STACK_GROWS_UP
93 # ifdef USE_TLS
94 size_t stacksize = guardaddr - th->p_stackaddr;
95+ guardaddr = th->p_stackaddr;
96 # else
97 size_t stacksize = guardaddr - (char *)th;
98-# endif
99 guardaddr = (char *)th;
100+# endif
101 #else
102 /* Guardaddr is always set, even if guardsize is 0. This allows
103 us to compute everything else. */
104Index: uClibc/libpthread/linuxthreads/pthread.c
105===================================================================
106--- uClibc.orig/libpthread/linuxthreads/pthread.c 2008-08-28 00:00:00.825141935 +0200
107+++ uClibc/libpthread/linuxthreads/pthread.c 2008-08-28 00:00:35.438472147 +0200
108@@ -698,6 +698,16 @@
109 mgr = &__pthread_manager_thread;
110 #endif
111
112+ /* Copy the stack guard canary. */
113+#ifdef THREAD_COPY_STACK_GUARD
114+ THREAD_COPY_STACK_GUARD (mgr);
115+#endif
116+
117+ /* Copy the pointer guard value. */
118+#ifdef THREAD_COPY_POINTER_GUARD
119+ THREAD_COPY_POINTER_GUARD (mgr);
120+#endif
121+
122 __pthread_manager_request = manager_pipe[1]; /* writing end */
123 __pthread_manager_reader = manager_pipe[0]; /* reading end */
124
125@@ -738,17 +748,17 @@
126 pid = __clone2(__pthread_manager_event,
127 (void **) __pthread_manager_thread_bos,
128 THREAD_MANAGER_STACK_SIZE,
129- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND,
130+ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM,
131 mgr);
132 #elif _STACK_GROWS_UP
133 pid = __clone(__pthread_manager_event,
134 (void **) __pthread_manager_thread_bos,
135- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND,
136+ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM,
137 mgr);
138 #else
139 pid = __clone(__pthread_manager_event,
140 (void **) __pthread_manager_thread_tos,
141- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND,
142+ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM,
143 mgr);
144 #endif
145
146@@ -778,13 +788,13 @@
147 #ifdef NEED_SEPARATE_REGISTER_STACK
148 pid = __clone2(__pthread_manager, (void **) __pthread_manager_thread_bos,
149 THREAD_MANAGER_STACK_SIZE,
150- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND, mgr);
151+ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM, mgr);
152 #elif _STACK_GROWS_UP
153 pid = __clone(__pthread_manager, (void **) __pthread_manager_thread_bos,
154- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND, mgr);
155+ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM, mgr);
156 #else
157 pid = __clone(__pthread_manager, (void **) __pthread_manager_thread_tos,
158- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND, mgr);
159+ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM, mgr);
160 #endif
161 }
162 if (__builtin_expect (pid, 0) == -1) {
163@@ -971,6 +981,10 @@
164 struct pthread_request request;
165 pthread_descr self = thread_self();
166
167+ /* Make sure we come back here after suspend(), in case we entered
168+ from a signal handler. */
169+ THREAD_SETMEM(self, p_signal_jmp, NULL);
170+
171 request.req_thread = self;
172 request.req_kind = REQ_PROCESS_EXIT;
173 request.req_args.exit.code = retcode;
174@@ -1198,13 +1212,13 @@
175
176 void __pthread_restart_old(pthread_descr th)
177 {
178- if (atomic_increment(&th->p_resume_count) == -1)
179+ if (pthread_atomic_increment(&th->p_resume_count) == -1)
180 kill(th->p_pid, __pthread_sig_restart);
181 }
182
183 void __pthread_suspend_old(pthread_descr self)
184 {
185- if (atomic_decrement(&self->p_resume_count) <= 0)
186+ if (pthread_atomic_decrement(&self->p_resume_count) <= 0)
187 __pthread_wait_for_restart_signal(self);
188 }
189
190@@ -1215,7 +1229,7 @@
191 int was_signalled = 0;
192 sigjmp_buf jmpbuf;
193
194- if (atomic_decrement(&self->p_resume_count) == 0) {
195+ if (pthread_atomic_decrement(&self->p_resume_count) == 0) {
196 /* Set up a longjmp handler for the restart signal, unblock
197 the signal and sleep. */
198
199@@ -1272,9 +1286,9 @@
200 being delivered. */
201
202 if (!was_signalled) {
203- if (atomic_increment(&self->p_resume_count) != -1) {
204+ if (pthread_atomic_increment(&self->p_resume_count) != -1) {
205 __pthread_wait_for_restart_signal(self);
206- atomic_decrement(&self->p_resume_count); /* should be zero now! */
207+ pthread_atomic_decrement(&self->p_resume_count); /* should be zero now! */
208 /* woke spontaneously and consumed restart signal */
209 return 1;
210 }
211Index: uClibc/libpthread/linuxthreads/specific.c
212===================================================================
213--- uClibc.orig/libpthread/linuxthreads/specific.c 2008-08-28 00:00:07.595139286 +0200
214+++ uClibc/libpthread/linuxthreads/specific.c 2008-08-28 00:00:35.438472147 +0200
215@@ -104,13 +104,14 @@
216 that if the key is reallocated later by pthread_key_create, its
217 associated values will be NULL in all threads.
218
219- If no threads have been created yet, clear it just in the
220- current thread. */
221+ If no threads have been created yet, or if we are exiting, clear
222+ it just in the current thread. */
223
224 struct pthread_key_delete_helper_args args;
225 args.idx1st = key / PTHREAD_KEY_2NDLEVEL_SIZE;
226 args.idx2nd = key % PTHREAD_KEY_2NDLEVEL_SIZE;
227- if (__pthread_manager_request != -1)
228+ if (__pthread_manager_request != -1
229+ && !(__builtin_expect (__pthread_exit_requested, 0)))
230 {
231 struct pthread_request request;
232
233@@ -203,8 +204,9 @@
234 __pthread_lock(THREAD_GETMEM(self, p_lock), self);
235 for (i = 0; i < PTHREAD_KEY_1STLEVEL_SIZE; i++) {
236 if (THREAD_GETMEM_NC(self, p_specific[i]) != NULL) {
237- free(THREAD_GETMEM_NC(self, p_specific[i]));
238+ void *p = THREAD_GETMEM_NC(self, p_specific[i]);
239 THREAD_SETMEM_NC(self, p_specific[i], NULL);
240+ free(p);
241 }
242 }
243 __pthread_unlock(THREAD_GETMEM(self, p_lock));
244Index: uClibc/libpthread/linuxthreads/spinlock.c
245===================================================================
246--- uClibc.orig/libpthread/linuxthreads/spinlock.c 2008-08-28 00:00:17.805140454 +0200
247+++ uClibc/libpthread/linuxthreads/spinlock.c 2008-08-28 00:00:35.438472147 +0200
248@@ -637,8 +637,20 @@
249 #if defined HAS_COMPARE_AND_SWAP
250 wait_node_dequeue(pp_head, pp_max_prio, p_max_prio);
251 #endif
252+
253+ /* Release the spinlock before restarting. */
254+#if defined TEST_FOR_COMPARE_AND_SWAP
255+ if (!__pthread_has_cas)
256+#endif
257+#if !defined HAS_COMPARE_AND_SWAP || defined TEST_FOR_COMPARE_AND_SWAP
258+ {
259+ __pthread_release(&lock->__spinlock);
260+ }
261+#endif
262+
263 restart(p_max_prio->thr);
264- break;
265+
266+ return;
267 }
268 }
269
270Index: uClibc/libpthread/linuxthreads/spinlock.h
271===================================================================
272--- uClibc.orig/libpthread/linuxthreads/spinlock.h 2008-08-28 00:00:24.768471655 +0200
273+++ uClibc/libpthread/linuxthreads/spinlock.h 2008-08-28 00:02:42.971786951 +0200
274@@ -172,7 +172,7 @@
275
276 /* Operations on pthread_atomic, which is defined in internals.h */
277
278-static __inline__ long atomic_increment(struct pthread_atomic *pa)
279+static __inline__ long pthread_atomic_increment(struct pthread_atomic *pa)
280 {
281 long oldval;
282
283@@ -184,7 +184,7 @@
284 }
285
286
287-static __inline__ long atomic_decrement(struct pthread_atomic *pa)
288+static __inline__ long pthread_atomic_decrement(struct pthread_atomic *pa)
289 {
290 long oldval;
291
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 @@
1#
2# Automatically generated make config: don't edit
3# Fri Nov 23 15:49:33 2007
4#
5# TARGET_alpha is not set
6# TARGET_arm is not set
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13TARGET_i386=y
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="i386"
33FORCE_OPTIONS_FOR_ARCH=y
34CONFIG_GENERIC_386=y
35# CONFIG_386 is not set
36# CONFIG_486 is not set
37# CONFIG_586 is not set
38# CONFIG_586MMX is not set
39# CONFIG_686 is not set
40# CONFIG_PENTIUMII is not set
41# CONFIG_PENTIUMIII is not set
42# CONFIG_PENTIUM4 is not set
43# CONFIG_K6 is not set
44# CONFIG_K7 is not set
45# CONFIG_ELAN is not set
46# CONFIG_CRUSOE is not set
47# CONFIG_WINCHIPC6 is not set
48# CONFIG_WINCHIP2 is not set
49# CONFIG_CYRIXIII is not set
50# CONFIG_NEHEMIAH is not set
51TARGET_SUBARCH=""
52
53#
54# Using ELF file format
55#
56ARCH_LITTLE_ENDIAN=y
57
58#
59# Using Little Endian
60#
61ARCH_HAS_MMU=y
62ARCH_USE_MMU=y
63UCLIBC_HAS_FLOATS=y
64UCLIBC_HAS_FPU=y
65DO_C99_MATH=y
66KERNEL_HEADERS="/usr/include"
67HAVE_DOT_CONFIG=y
68
69UCLIBC_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 @@
1#
2# Automatically generated make config: don't edit
3# Mon May 14 10:23:14 2007
4#
5# TARGET_alpha is not set
6TARGET_arm=y
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13# TARGET_i386 is not set
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="arm"
33FORCE_OPTIONS_FOR_ARCH=y
34# CONFIG_ARM_OABI is not set
35CONFIG_ARM_EABI=y
36USE_BX=y
37# CONFIG_GENERIC_ARM is not set
38# CONFIG_ARM610 is not set
39# CONFIG_ARM710 is not set
40# CONFIG_ARM7TDMI is not set
41# CONFIG_ARM720T is not set
42CONFIG_ARM920T=y
43# CONFIG_ARM922T is not set
44# CONFIG_ARM926T is not set
45# CONFIG_ARM10T is not set
46# CONFIG_ARM1136JF_S is not set
47# CONFIG_ARM1176JZ_S is not set
48# CONFIG_ARM1176JZF_S is not set
49# CONFIG_ARM_SA110 is not set
50# CONFIG_ARM_SA1100 is not set
51# CONFIG_ARM_XSCALE is not set
52# CONFIG_ARM_IWMMXT is not set
53TARGET_SUBARCH=""
54
55#
56# Using ELF file format
57#
58ARCH_ANY_ENDIAN=y
59ARCH_LITTLE_ENDIAN=y
60# ARCH_WANTS_BIG_ENDIAN is not set
61ARCH_WANTS_LITTLE_ENDIAN=y
62ARCH_HAS_MMU=y
63ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y
65# UCLIBC_HAS_FPU is not set
66UCLIBC_HAS_SOFT_FLOAT=y
67KERNEL_HEADERS="/usr/include"
68HAVE_DOT_CONFIG=y
69
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 @@
1Index: uClibc-0.9.30/libpthread/linuxthreads/Makefile.in
2===================================================================
3--- uClibc-0.9.30.orig/libpthread/linuxthreads/Makefile.in 2009-01-11 01:09:27.008515954 +0100
4+++ uClibc-0.9.30/libpthread/linuxthreads/Makefile.in 2009-01-11 01:09:35.295181636 +0100
5@@ -45,7 +45,7 @@
6 pthread_SRC := \
7 attr barrier cancel condvar errno events join pthread \
8 lockfile manager mutex pt-machine ptcleanup \
9- ptclock_gettime ptclock_settime ptfork pthandles \
10+ ptclock_gettime ptclock_settime ptfork pthandles pthread_atfork \
11 pthread_setegid pthread_seteuid pthread_setgid pthread_setregid \
12 pthread_setresgid pthread_setresuid pthread_setreuid pthread_setuid \
13 rwlock semaphore sighandler signals specific spinlock
14Index: uClibc-0.9.30/libpthread/linuxthreads/pthread_atfork.c
15===================================================================
16--- uClibc-0.9.30.orig/libpthread/linuxthreads/pthread_atfork.c 2009-01-11 01:09:44.931848926 +0100
17+++ uClibc-0.9.30/libpthread/linuxthreads/pthread_atfork.c 2009-01-11 01:12:49.926539743 +0100
18@@ -43,12 +43,8 @@
19
20 /* Hide the symbol so that no definition but the one locally in the
21 executable or DSO is used. */
22-int
23-#ifndef __pthread_atfork
24-/* Don't mark the compatibility function as hidden. */
25-attribute_hidden
26-#endif
27-__pthread_atfork (prepare, parent, child)
28+
29+int attribute_hidden __pthread_atfork (prepare, parent, child)
30 void (*prepare) (void);
31 void (*parent) (void);
32 void (*child) (void);
33@@ -56,8 +52,5 @@
34 return __register_atfork (prepare, parent, child,
35 &__dso_handle == NULL ? NULL : __dso_handle);
36 }
37-#ifndef __pthread_atfork
38-extern int pthread_atfork (void (*prepare) (void), void (*parent) (void),
39- void (*child) (void)) attribute_hidden;
40+
41 strong_alias (__pthread_atfork, pthread_atfork)
42-#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 @@
1#
2# Automatically generated make config: don't edit
3# Sun May 13 11:16:02 2007
4#
5# TARGET_alpha is not set
6TARGET_arm=y
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13# TARGET_i386 is not set
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="arm"
33FORCE_OPTIONS_FOR_ARCH=y
34# CONFIG_ARM_OABI is not set
35CONFIG_ARM_EABI=y
36USE_BX=y
37# CONFIG_GENERIC_ARM is not set
38# CONFIG_ARM610 is not set
39# CONFIG_ARM710 is not set
40# CONFIG_ARM7TDMI is not set
41# CONFIG_ARM720T is not set
42# CONFIG_ARM920T is not set
43# CONFIG_ARM922T is not set
44CONFIG_ARM926T=y
45# CONFIG_ARM10T is not set
46# CONFIG_ARM1136JF_S is not set
47# CONFIG_ARM1176JZ_S is not set
48# CONFIG_ARM1176JZF_S is not set
49# CONFIG_ARM_SA110 is not set
50# CONFIG_ARM_SA1100 is not set
51# CONFIG_ARM_XSCALE is not set
52# CONFIG_ARM_IWMMXT is not set
53TARGET_SUBARCH=""
54
55#
56# Using ELF file format
57#
58ARCH_ANY_ENDIAN=y
59ARCH_LITTLE_ENDIAN=y
60# ARCH_WANTS_BIG_ENDIAN is not set
61ARCH_WANTS_LITTLE_ENDIAN=y
62ARCH_HAS_MMU=y
63ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y
65# UCLIBC_HAS_FPU is not set
66UCLIBC_HAS_SOFT_FLOAT=y
67DO_C99_MATH=y
68KERNEL_HEADERS="/bad/path/to/include"
69HAVE_DOT_CONFIG=y
70
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 @@
1#
2# Automatically generated make config: don't edit
3# Fri Nov 23 15:49:33 2007
4#
5# TARGET_alpha is not set
6# TARGET_arm is not set
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13TARGET_i386=y
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="i386"
33FORCE_OPTIONS_FOR_ARCH=y
34CONFIG_GENERIC_386=y
35# CONFIG_386 is not set
36# CONFIG_486 is not set
37# CONFIG_586 is not set
38# CONFIG_586MMX is not set
39# CONFIG_686 is not set
40# CONFIG_PENTIUMII is not set
41# CONFIG_PENTIUMIII is not set
42# CONFIG_PENTIUM4 is not set
43# CONFIG_K6 is not set
44# CONFIG_K7 is not set
45# CONFIG_ELAN is not set
46# CONFIG_CRUSOE is not set
47# CONFIG_WINCHIPC6 is not set
48# CONFIG_WINCHIP2 is not set
49# CONFIG_CYRIXIII is not set
50# CONFIG_NEHEMIAH is not set
51TARGET_SUBARCH=""
52
53#
54# Using ELF file format
55#
56ARCH_LITTLE_ENDIAN=y
57
58#
59# Using Little Endian
60#
61ARCH_HAS_MMU=y
62ARCH_USE_MMU=y
63UCLIBC_HAS_FLOATS=y
64UCLIBC_HAS_FPU=y
65DO_C99_MATH=y
66KERNEL_HEADERS="/usr/include"
67HAVE_DOT_CONFIG=y
68
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 @@
1#
2# Automatically generated make config: don't edit
3# Fri Nov 23 15:49:33 2007
4#
5# TARGET_alpha is not set
6# TARGET_arm is not set
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13TARGET_i386=y
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="i386"
33FORCE_OPTIONS_FOR_ARCH=y
34CONFIG_GENERIC_386=y
35# CONFIG_386 is not set
36# CONFIG_486 is not set
37# CONFIG_586 is not set
38# CONFIG_586MMX is not set
39# CONFIG_686 is not set
40# CONFIG_PENTIUMII is not set
41# CONFIG_PENTIUMIII is not set
42# CONFIG_PENTIUM4 is not set
43# CONFIG_K6 is not set
44# CONFIG_K7 is not set
45# CONFIG_ELAN is not set
46# CONFIG_CRUSOE is not set
47# CONFIG_WINCHIPC6 is not set
48# CONFIG_WINCHIP2 is not set
49# CONFIG_CYRIXIII is not set
50# CONFIG_NEHEMIAH is not set
51TARGET_SUBARCH=""
52
53#
54# Using ELF file format
55#
56ARCH_LITTLE_ENDIAN=y
57
58#
59# Using Little Endian
60#
61ARCH_HAS_MMU=y
62ARCH_USE_MMU=y
63UCLIBC_HAS_FLOATS=y
64UCLIBC_HAS_FPU=y
65DO_C99_MATH=y
66KERNEL_HEADERS="/usr/include"
67HAVE_DOT_CONFIG=y
68
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 @@
1#
2# Automatically generated make config: don't edit
3# Sat May 12 23:18:41 2007
4#
5# TARGET_alpha is not set
6TARGET_arm=y
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13# TARGET_i386 is not set
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="arm"
33FORCE_OPTIONS_FOR_ARCH=y
34# CONFIG_ARM_OABI is not set
35CONFIG_ARM_EABI=y
36USE_BX=y
37# CONFIG_GENERIC_ARM is not set
38# CONFIG_ARM610 is not set
39# CONFIG_ARM710 is not set
40# CONFIG_ARM7TDMI is not set
41# CONFIG_ARM720T is not set
42# CONFIG_ARM920T is not set
43# CONFIG_ARM922T is not set
44# CONFIG_ARM926T is not set
45# CONFIG_ARM10T is not set
46# CONFIG_ARM1136JF_S is not set
47# CONFIG_ARM1176JZ_S is not set
48# CONFIG_ARM1176JZF_S is not set
49# CONFIG_ARM_SA110 is not set
50# CONFIG_ARM_SA1100 is not set
51# CONFIG_ARM_XSCALE is not set
52CONFIG_ARM_IWMMXT=y
53TARGET_SUBARCH=""
54
55#
56# Using ELF file format
57#
58ARCH_ANY_ENDIAN=y
59ARCH_LITTLE_ENDIAN=y
60# ARCH_WANTS_BIG_ENDIAN is not set
61ARCH_WANTS_LITTLE_ENDIAN=y
62ARCH_HAS_MMU=y
63ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y
65# UCLIBC_HAS_FPU is not set
66UCLIBC_HAS_SOFT_FLOAT=y
67DO_C99_MATH=y
68KERNEL_HEADERS="/usr/include"
69HAVE_DOT_CONFIG=y
70
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 @@
1#
2# General Library Settings
3#
4# HAVE_NO_PIC is not set
5# DOPIC is not set
6# HAVE_NO_SHARED is not set
7# ARCH_HAS_NO_LDSO is not set
8HAVE_SHARED=y
9# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
10LDSO_LDD_SUPPORT=y
11LDSO_CACHE_SUPPORT=y
12# LDSO_PRELOAD_FILE_SUPPORT is not set
13LDSO_BASE_FILENAME="ld.so"
14# UCLIBC_STATIC_LDCONFIG is not set
15LDSO_RUNPATH=y
16UCLIBC_CTOR_DTOR=y
17LDSO_GNU_HASH_SUPPORT=y
18# HAS_NO_THREADS is not set
19UCLIBC_HAS_THREADS=y
20PTHREADS_DEBUG_SUPPORT=y
21LINUXTHREADS_OLD=y
22UCLIBC_HAS_LFS=y
23# MALLOC is not set
24# MALLOC_SIMPLE is not set
25MALLOC_STANDARD=y
26MALLOC_GLIBC_COMPAT=y
27UCLIBC_DYNAMIC_ATEXIT=y
28COMPAT_ATEXIT=y
29UCLIBC_SUSV3_LEGACY=y
30UCLIBC_SUSV3_LEGACY_MACROS=y
31UCLIBC_HAS_SHADOW=y
32UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
33UCLIBC_HAS___PROGNAME=y
34UNIX98PTY_ONLY=y
35UCLIBC_HAS_GETPT=y
36ASSUME_DEVPTS=y
37UCLIBC_HAS_TM_EXTENSIONS=y
38UCLIBC_HAS_TZ_CACHING=y
39UCLIBC_HAS_TZ_FILE=y
40UCLIBC_HAS_TZ_FILE_READ_MANY=y
41UCLIBC_TZ_FILE_PATH="/etc/TZ"
42
43#
44# Advanced Library Settings
45#
46UCLIBC_PWD_BUFFER_SIZE=256
47UCLIBC_GRP_BUFFER_SIZE=256
48
49#
50# Networking Support
51#
52UCLIBC_HAS_IPV6=y
53UCLIBC_HAS_RPC=y
54UCLIBC_HAS_FULL_RPC=y
55# UCLIBC_HAS_REENTRANT_RPC is not set
56# UCLIBC_USE_NETLINK is not set
57# UCLIBC_HAS_BSD_RES_CLOSE is not set
58
59#
60# String and Stdio Support
61#
62UCLIBC_HAS_STRING_GENERIC_OPT=y
63UCLIBC_HAS_STRING_ARCH_OPT=y
64UCLIBC_HAS_CTYPE_TABLES=y
65UCLIBC_HAS_CTYPE_SIGNED=y
66# UCLIBC_HAS_CTYPE_UNSAFE is not set
67UCLIBC_HAS_CTYPE_CHECKED=y
68# UCLIBC_HAS_CTYPE_ENFORCED is not set
69UCLIBC_HAS_WCHAR=y
70# UCLIBC_HAS_LOCALE is not set
71UCLIBC_HAS_HEXADECIMAL_FLOATS=y
72UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
73UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
74UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
75# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
76UCLIBC_HAS_STDIO_BUFSIZ_256=y
77# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
78# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
79# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
80# UCLIBC_HAS_STDIO_BUFSIZ_4096 is not set
81# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
82UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
83# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
84# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
85# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
86# UCLIBC_HAS_STDIO_GETC_MACRO is not set
87# UCLIBC_HAS_STDIO_PUTC_MACRO is not set
88UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
89# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
90UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
91UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
92UCLIBC_HAS_PRINTF_M_SPEC=y
93UCLIBC_HAS_ERRNO_MESSAGES=y
94# UCLIBC_HAS_SYS_ERRLIST is not set
95UCLIBC_HAS_SIGNUM_MESSAGES=y
96# UCLIBC_HAS_SYS_SIGLIST is not set
97UCLIBC_HAS_GNU_GETOPT=y
98UCLIBC_HAS_GNU_GETSUBOPT=y
99
100#
101# Big and Tall
102#
103UCLIBC_HAS_REGEX=y
104# UCLIBC_HAS_REGEX_OLD is not set
105UCLIBC_HAS_FNMATCH=y
106# UCLIBC_HAS_FNMATCH_OLD is not set
107UCLIBC_HAS_WORDEXP=y
108UCLIBC_HAS_FTW=y
109UCLIBC_HAS_GLOB=y
110UCLIBC_HAS_GNU_GLOB=y
111
112#
113# Library Installation Options
114#
115SHARED_LIB_LOADER_PREFIX="/lib"
116RUNTIME_PREFIX="/"
117DEVEL_PREFIX="//usr"
118
119#
120# Security options
121#
122# UCLIBC_BUILD_PIE is not set
123# UCLIBC_HAS_ARC4RANDOM is not set
124# HAVE_NO_SSP is not set
125# UCLIBC_HAS_SSP is not set
126UCLIBC_BUILD_RELRO=y
127UCLIBC_BUILD_NOW=y
128UCLIBC_BUILD_NOEXECSTACK=y
129
130#
131# uClibc development/debugging options
132#
133CROSS_COMPILER_PREFIX=""
134UCLIBC_EXTRA_CFLAGS=""
135# DODEBUG is not set
136# DODEBUG_PT is not set
137DOSTRIP=n
138# DOASSERTS is not set
139# SUPPORT_LD_DEBUG is not set
140# SUPPORT_LD_DEBUG_EARLY is not set
141# UCLIBC_MALLOC_DEBUGGING is not set
142WARNINGS="-Wall"
143# EXTRA_WARNINGS is not set
144# DOMULTI is not set
145# UCLIBC_MJN3_ONLY is not set
146
147# math stuff for perl
148DO_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 @@
1#
2# Automatically generated make config: don't edit
3# Mon May 14 10:23:14 2007
4#
5# TARGET_alpha is not set
6TARGET_arm=y
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13# TARGET_i386 is not set
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="arm"
33FORCE_OPTIONS_FOR_ARCH=y
34# CONFIG_ARM_OABI is not set
35CONFIG_ARM_EABI=y
36USE_BX=y
37# CONFIG_GENERIC_ARM is not set
38# CONFIG_ARM610 is not set
39# CONFIG_ARM710 is not set
40# CONFIG_ARM7TDMI is not set
41# CONFIG_ARM720T is not set
42CONFIG_ARM920T=y
43# CONFIG_ARM922T is not set
44# CONFIG_ARM926T is not set
45# CONFIG_ARM10T is not set
46# CONFIG_ARM1136JF_S is not set
47# CONFIG_ARM1176JZ_S is not set
48# CONFIG_ARM1176JZF_S is not set
49# CONFIG_ARM_SA110 is not set
50# CONFIG_ARM_SA1100 is not set
51# CONFIG_ARM_XSCALE is not set
52# CONFIG_ARM_IWMMXT is not set
53TARGET_SUBARCH=""
54
55#
56# Using ELF file format
57#
58ARCH_ANY_ENDIAN=y
59ARCH_LITTLE_ENDIAN=y
60# ARCH_WANTS_BIG_ENDIAN is not set
61ARCH_WANTS_LITTLE_ENDIAN=y
62ARCH_HAS_MMU=y
63ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y
65# UCLIBC_HAS_FPU is not set
66UCLIBC_HAS_SOFT_FLOAT=y
67KERNEL_HEADERS="/usr/include"
68HAVE_DOT_CONFIG=y
69
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 @@
1#
2# Automatically generated make config: don't edit
3# Sun May 13 11:16:02 2007
4#
5# TARGET_alpha is not set
6TARGET_arm=y
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13# TARGET_i386 is not set
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="arm"
33FORCE_OPTIONS_FOR_ARCH=y
34# CONFIG_ARM_OABI is not set
35CONFIG_ARM_EABI=y
36USE_BX=y
37# CONFIG_GENERIC_ARM is not set
38# CONFIG_ARM610 is not set
39# CONFIG_ARM710 is not set
40# CONFIG_ARM7TDMI is not set
41# CONFIG_ARM720T is not set
42# CONFIG_ARM920T is not set
43# CONFIG_ARM922T is not set
44# CONFIG_ARM926T is not set
45# CONFIG_ARM10T is not set
46# CONFIG_ARM1136JF_S is not set
47# CONFIG_ARM1176JZ_S is not set
48# CONFIG_ARM1176JZF_S is not set
49# CONFIG_ARM_SA110 is not set
50# CONFIG_ARM_SA1100 is not set
51CONFIG_ARM_XSCALE=y
52# CONFIG_ARM_IWMMXT is not set
53TARGET_SUBARCH=""
54
55#
56# Using ELF file format
57#
58ARCH_ANY_ENDIAN=y
59ARCH_LITTLE_ENDIAN=y
60# ARCH_WANTS_BIG_ENDIAN is not set
61ARCH_WANTS_LITTLE_ENDIAN=y
62ARCH_HAS_MMU=y
63ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y
65# UCLIBC_HAS_FPU is not set
66UCLIBC_HAS_SOFT_FLOAT=y
67DO_C99_MATH=y
68KERNEL_HEADERS="/data/build/koen/OE/build/tmp/angstrom/cross/arm-angstrom-linux-uclibcgnueabi/include"
69HAVE_DOT_CONFIG=y
70
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 @@
1#
2# Automatically generated make config: don't edit
3# Sat May 12 23:18:41 2007
4#
5# TARGET_alpha is not set
6TARGET_arm=y
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13# TARGET_i386 is not set
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="arm"
33FORCE_OPTIONS_FOR_ARCH=y
34# CONFIG_ARM_OABI is not set
35CONFIG_ARM_EABI=y
36USE_BX=y
37# CONFIG_GENERIC_ARM is not set
38# CONFIG_ARM610 is not set
39# CONFIG_ARM710 is not set
40# CONFIG_ARM7TDMI is not set
41# CONFIG_ARM720T is not set
42# CONFIG_ARM920T is not set
43# CONFIG_ARM922T is not set
44# CONFIG_ARM926T is not set
45# CONFIG_ARM10T is not set
46# CONFIG_ARM1136JF_S is not set
47# CONFIG_ARM1176JZ_S is not set
48# CONFIG_ARM1176JZF_S is not set
49# CONFIG_ARM_SA110 is not set
50# CONFIG_ARM_SA1100 is not set
51# CONFIG_ARM_XSCALE is not set
52CONFIG_ARM_IWMMXT=y
53TARGET_SUBARCH=""
54
55#
56# Using ELF file format
57#
58ARCH_ANY_ENDIAN=y
59ARCH_LITTLE_ENDIAN=y
60# ARCH_WANTS_BIG_ENDIAN is not set
61ARCH_WANTS_LITTLE_ENDIAN=y
62ARCH_HAS_MMU=y
63ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y
65# UCLIBC_HAS_FPU is not set
66UCLIBC_HAS_SOFT_FLOAT=y
67DO_C99_MATH=y
68KERNEL_HEADERS="/usr/include"
69HAVE_DOT_CONFIG=y
70
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 @@
1#
2# Automatically generated make config: don't edit
3# Sun May 13 11:29:51 2007
4#
5# TARGET_alpha is not set
6TARGET_arm=y
7# TARGET_bfin is not set
8# TARGET_cris is not set
9# TARGET_e1 is not set
10# TARGET_frv is not set
11# TARGET_h8300 is not set
12# TARGET_hppa is not set
13# TARGET_i386 is not set
14# TARGET_i960 is not set
15# TARGET_ia64 is not set
16# TARGET_m68k is not set
17# TARGET_microblaze is not set
18# TARGET_mips is not set
19# TARGET_nios is not set
20# TARGET_nios2 is not set
21# TARGET_powerpc is not set
22# TARGET_sh is not set
23# TARGET_sh64 is not set
24# TARGET_sparc is not set
25# TARGET_v850 is not set
26# TARGET_vax is not set
27# TARGET_x86_64 is not set
28
29#
30# Target Architecture Features and Options
31#
32TARGET_ARCH="arm"
33FORCE_OPTIONS_FOR_ARCH=y
34CONFIG_ARM_OABI=y
35# CONFIG_ARM_EABI is not set
36# USE_BX is not set
37# CONFIG_GENERIC_ARM is not set
38# CONFIG_ARM610 is not set
39# CONFIG_ARM710 is not set
40# CONFIG_ARM7TDMI is not set
41# CONFIG_ARM720T is not set
42# CONFIG_ARM920T is not set
43# CONFIG_ARM922T is not set
44# CONFIG_ARM926T is not set
45# CONFIG_ARM10T is not set
46# CONFIG_ARM1136JF_S is not set
47# CONFIG_ARM1176JZ_S is not set
48# CONFIG_ARM1176JZF_S is not set
49# CONFIG_ARM_SA110 is not set
50CONFIG_ARM_SA1100=y
51# CONFIG_ARM_XSCALE is not set
52# CONFIG_ARM_IWMMXT is not set
53TARGET_SUBARCH=""
54
55#
56# Using ELF file format
57#
58ARCH_ANY_ENDIAN=y
59ARCH_LITTLE_ENDIAN=y
60# ARCH_WANTS_BIG_ENDIAN is not set
61ARCH_WANTS_LITTLE_ENDIAN=y
62ARCH_HAS_MMU=y
63ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y
65# UCLIBC_HAS_FPU is not set
66UCLIBC_HAS_SOFT_FLOAT=y
67DO_C99_MATH=y
68KERNEL_HEADERS="/usr/include"
69HAVE_DOT_CONFIG=y
70
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 @@
1Index: uClibc-0.9.30.1/libm/ldouble_wrappers.c
2===================================================================
3--- uClibc-0.9.30.1/libm/ldouble_wrappers.c (revision 25552)
4+++ uClibc-0.9.30.1/libm/ldouble_wrappers.c (working copy)
5@@ -13,6 +13,16 @@
6 #include "math.h"
7 #include <complex.h>
8
9+#if defined __NO_LONG_DOUBLE_MATH
10+# define int_WRAPPER_C99(func) /* not needed */
11+# else
12+# define int_WRAPPER_C99(func) \
13+int func##l(long double x) \
14+{ \
15+ return func((double) x); \
16+} \
17+libm_hidden_def(func##l)
18+#endif
19
20 /* Implement the following, as defined by SuSv3 */
21 #if 0
22@@ -543,46 +553,28 @@ long double truncl (long double x)
23 #endif
24
25
26-#ifdef __DO_C99_MATH__
27+#if defined __DO_C99_MATH__
28
29 #ifdef L_fpclassifyl
30-int __fpclassifyl (long double x)
31-{
32- return __fpclassify ( (double) x );
33-}
34-libm_hidden_def(__fpclassifyl)
35+int_WRAPPER_C99(__fpclassify)
36 #endif
37
38 #ifdef L_finitel
39-int __finitel (long double x)
40-{
41- return __finite ( (double)x );
42-}
43-libm_hidden_def(__finitel)
44+int_WRAPPER_C99(__finite)
45 #endif
46
47 #ifdef L_signbitl
48-int __signbitl (long double x)
49-{
50- return __signbitl ( (double)x );
51-}
52-libm_hidden_def(__signbitl)
53+int_WRAPPER_C99(__signbit)
54 #endif
55
56 #ifdef L_isnanl
57-int __isnanl (long double x)
58-{
59- return __isnan ( (double)x );
60-}
61-libm_hidden_def(__isnanl)
62+int_WRAPPER_C99(__isnan)
63 #endif
64
65 #ifdef L_isinfl
66-int __isinfl (long double x)
67-{
68- return __isinf ( (double)x );
69-}
70-libm_hidden_def(__isinfl)
71+int_WRAPPER_C99(__isinf)
72 #endif
73
74-#endif
75+#endif /* DO_C99_MATH */
76+
77+#undef int_WRAPPER_C99
78Index: uClibc-0.9.30.1/libm/nan.c
79===================================================================
80--- uClibc-0.9.30.1/libm/nan.c (revision 25552)
81+++ uClibc-0.9.30.1/libm/nan.c (working copy)
82@@ -45,7 +45,7 @@ float nanf (const char *tagp)
83 }
84 libm_hidden_def(nanf)
85
86-#if defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
87+#if defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ && !defined __NO_LONG_DOUBLE_MATH
88 libm_hidden_proto(nanl)
89 long double nanl (const char *tagp)
90 {
91Index: uClibc-0.9.30.1/include/math.h
92===================================================================
93--- uClibc-0.9.30.1/include/math.h (revision 25552)
94+++ uClibc-0.9.30.1/include/math.h (working copy)
95@@ -118,7 +118,7 @@ __BEGIN_DECLS
96 # undef __MATH_PRECNAME
97
98 # if (__STDC__ - 0 || __GNUC__ - 0) \
99- && (defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ || defined __LDBL_COMPAT)
100+ && (!defined __NO_LONG_DOUBLE_MATH || defined __LDBL_COMPAT)
101 # ifdef __LDBL_COMPAT
102
103 # ifdef __USE_ISOC99
104@@ -230,7 +230,7 @@ enum
105 };
106
107 /* Return number of classification appropriate for X. */
108-# ifndef __UCLIBC_HAS_LONG_DOUBLE_MATH__
109+# ifdef __NO_LONG_DOUBLE_MATH
110 # define fpclassify(x) \
111 (sizeof (x) == sizeof (float) ? __fpclassifyf (x) : __fpclassify (x))
112 # else
113@@ -242,7 +242,7 @@ enum
114 # endif
115
116 /* Return nonzero value if sign of X is negative. */
117-# ifndef __UCLIBC_HAS_LONG_DOUBLE_MATH__
118+# ifdef __NO_LONG_DOUBLE_MATH
119 # define signbit(x) \
120 (sizeof (x) == sizeof (float) ? __signbitf (x) : __signbit (x))
121 # else
122@@ -254,7 +254,7 @@ enum
123 # endif
124
125 /* Return nonzero value if X is not +-Inf or NaN. */
126-# ifndef __UCLIBC_HAS_LONG_DOUBLE_MATH__
127+# ifdef __NO_LONG_DOUBLE_MATH
128 # define isfinite(x) \
129 (sizeof (x) == sizeof (float) ? __finitef (x) : __finite (x))
130 # else
131@@ -270,7 +270,7 @@ enum
132
133 /* Return nonzero value if X is a NaN. We could use `fpclassify' but
134 we already have this functions `__isnan' and it is faster. */
135-# ifndef __UCLIBC_HAS_LONG_DOUBLE_MATH__
136+# ifdef __NO_LONG_DOUBLE_MATH
137 # define isnan(x) \
138 (sizeof (x) == sizeof (float) ? __isnanf (x) : __isnan (x))
139 # else
140@@ -282,7 +282,7 @@ enum
141 # endif
142
143 /* Return nonzero value is X is positive or negative infinity. */
144-# ifndef __UCLIBC_HAS_LONG_DOUBLE_MATH__
145+# ifdef __NO_LONG_DOUBLE_MATH
146 # define isinf(x) \
147 (sizeof (x) == sizeof (float) ? __isinff (x) : __isinf (x))
148 # else
149Index: uClibc-0.9.30.1/include/tgmath.h
150===================================================================
151--- uClibc-0.9.30.1/include/tgmath.h (revision 25552)
152+++ uClibc-0.9.30.1/include/tgmath.h (working copy)
153@@ -36,7 +36,7 @@
154
155 #if __GNUC_PREREQ (2, 7)
156
157-# ifndef __UCLIBC_HAS_LONG_DOUBLE_MATH__
158+# ifdef __NO_LONG_DOUBLE_MATH
159 # define __tgml(fct) fct
160 # else
161 # define __tgml(fct) fct ## l
162Index: uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/wordsize.h
163===================================================================
164--- uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/wordsize.h (revision 25552)
165+++ uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/wordsize.h (working copy)
166@@ -7,13 +7,13 @@
167 # define __WORDSIZE 32
168 #endif
169
170-#if defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ && !defined __LONG_DOUBLE_MATH_OPTIONAL
171+#if !defined __NO_LONG_DOUBLE_MATH && !defined __LONG_DOUBLE_MATH_OPTIONAL
172
173 /* Signal the glibc ABI didn't used to have a `long double'.
174 The changes all the `long double' function variants to be redirects
175 to the double functions. */
176 # define __LONG_DOUBLE_MATH_OPTIONAL 1
177 # ifndef __LONG_DOUBLE_128__
178-# undef __UCLIBC_HAS_LONG_DOUBLE_MATH__
179+# define __NO_LONG_DOUBLE_MATH 1
180 # endif
181 #endif
182Index: uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/mathdef.h
183===================================================================
184--- uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/mathdef.h (revision 25552)
185+++ uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/mathdef.h (working copy)
186@@ -65,11 +65,13 @@ typedef double double_t;
187
188 #endif /* ISO C99 */
189
190-#ifdef __UCLIBC_HAS_LONG_DOUBLE_MATH__
191+#ifndef __NO_LONG_DOUBLE_MATH
192 #include <bits/wordsize.h>
193 /* Signal that we do not really have a `long double'. The disables the
194 declaration of all the `long double' function variants. */
195 # if __WORDSIZE == 32
196-# undef __UCLIBC_HAS_LONG_DOUBLE_MATH__
197+# define __NO_LONG_DOUBLE_MATH 1
198+# elif !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
199+# define __NO_LONG_DOUBLE_MATH 1
200 # endif /* __WORDSIZE == 32 */
201-#endif /* __UCLIBC_HAS_LONG_DOUBLE_MATH__ */
202+#endif /* __NO_LONG_DOUBLE_MATH */
203Index: uClibc-0.9.30.1/libc/sysdeps/linux/arm/bits/mathdef.h
204===================================================================
205--- uClibc-0.9.30.1/libc/sysdeps/linux/arm/bits/mathdef.h (revision 25552)
206+++ uClibc-0.9.30.1/libc/sysdeps/linux/arm/bits/mathdef.h (working copy)
207@@ -34,3 +34,11 @@ typedef double double_t; /* `double' exp
208 # define FP_ILOGBNAN (2147483647)
209
210 #endif /* ISO C99 */
211+
212+#ifndef __NO_LONG_DOUBLE_MATH
213+/* Signal that we do not really have a `long double'. This disables the
214+ declaration of all the `long double' function variants. */
215+/* XXX The FPA does support this but the patterns in GCC are currently
216+ turned off. */
217+# define __NO_LONG_DOUBLE_MATH 1
218+#endif
219Index: uClibc-0.9.30.1/libc/sysdeps/linux/m68k/bits/mathdef.h
220===================================================================
221--- uClibc-0.9.30.1/libc/sysdeps/linux/m68k/bits/mathdef.h (revision 25552)
222+++ uClibc-0.9.30.1/libc/sysdeps/linux/m68k/bits/mathdef.h (working copy)
223@@ -36,3 +36,7 @@ typedef long double double_t; /* `double
224 # define FP_ILOGBNAN (2147483647)
225
226 #endif /* ISO C99 */
227+
228+#if !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
229+# define __NO_LONG_DOUBLE_MATH 1
230+#endif
231Index: uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/wordsize.h
232===================================================================
233--- uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/wordsize.h (revision 25552)
234+++ uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/wordsize.h (working copy)
235@@ -18,13 +18,13 @@
236
237 #define __WORDSIZE 64
238
239-#if defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ && !defined __LONG_DOUBLE_MATH_OPTIONAL
240+#if !defined __NO_LONG_DOUBLE_MATH && !defined __LONG_DOUBLE_MATH_OPTIONAL
241
242 /* Signal that we didn't used to have a `long double'. The changes all
243 the `long double' function variants to be redirects to the double
244 functions. */
245 # define __LONG_DOUBLE_MATH_OPTIONAL 1
246 # ifndef __LONG_DOUBLE_128__
247-# undef __UCLIBC_HAS_LONG_DOUBLE_MATH__
248+# define __NO_LONG_DOUBLE_MATH 1
249 # endif
250 #endif
251Index: uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/mathdef.h
252===================================================================
253--- uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/mathdef.h (revision 25552)
254+++ uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/mathdef.h (working copy)
255@@ -78,3 +78,7 @@ typedef double double_t;
256
257 # endif /* GNUC before 3.4 */
258 #endif /* COMPLEX_H */
259+
260+#if !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
261+# define __NO_LONG_DOUBLE_MATH 1
262+#endif
263Index: uClibc-0.9.30.1/libc/sysdeps/linux/common/bits/mathdef.h
264===================================================================
265--- uClibc-0.9.30.1/libc/sysdeps/linux/common/bits/mathdef.h (revision 25552)
266+++ uClibc-0.9.30.1/libc/sysdeps/linux/common/bits/mathdef.h (working copy)
267@@ -35,3 +35,9 @@ typedef double double_t; /* `double' exp
268 # define FP_ILOGBNAN 2147483647
269
270 #endif /* ISO C99 */
271+
272+#ifndef __NO_LONG_DOUBLE_MATH
273+/* Signal that we do not really have a `long double'. The disables the
274+ declaration of all the `long double' function variants. */
275+# define __NO_LONG_DOUBLE_MATH 1
276+#endif
277Index: uClibc-0.9.30.1/libc/sysdeps/linux/i386/bits/mathdef.h
278===================================================================
279--- uClibc-0.9.30.1/libc/sysdeps/linux/i386/bits/mathdef.h (revision 25552)
280+++ uClibc-0.9.30.1/libc/sysdeps/linux/i386/bits/mathdef.h (working copy)
281@@ -44,3 +44,7 @@ typedef long double double_t; /* `double
282 # define FP_ILOGBNAN (-2147483647 - 1)
283
284 #endif /* ISO C99 */
285+
286+#if !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
287+# define __NO_LONG_DOUBLE_MATH 1
288+#endif
289Index: uClibc-0.9.30.1/libc/sysdeps/linux/nios2/bits/mathdef.h
290===================================================================
291--- uClibc-0.9.30.1/libc/sysdeps/linux/nios2/bits/mathdef.h (revision 25552)
292+++ uClibc-0.9.30.1/libc/sysdeps/linux/nios2/bits/mathdef.h (working copy)
293@@ -34,3 +34,11 @@ typedef double double_t; /* `double' exp
294 # define FP_ILOGBNAN (2147483647)
295
296 #endif /* ISO C99 */
297+
298+#ifndef __NO_LONG_DOUBLE_MATH
299+/* Signal that we do not really have a `long double'. This disables the
300+ declaration of all the `long double' function variants. */
301+/* XXX The FPA does support this but the patterns in GCC are currently
302+ turned off. */
303+# define __NO_LONG_DOUBLE_MATH 1
304+#endif
305Index: uClibc-0.9.30.1/libc/sysdeps/linux/x86_64/bits/mathdef.h
306===================================================================
307--- uClibc-0.9.30.1/libc/sysdeps/linux/x86_64/bits/mathdef.h (revision 25552)
308+++ uClibc-0.9.30.1/libc/sysdeps/linux/x86_64/bits/mathdef.h (working copy)
309@@ -46,3 +46,7 @@ typedef long double double_t; /* `double
310 # define FP_ILOGBNAN (-2147483647 - 1)
311
312 #endif /* ISO C99 */
313+
314+#if !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
315+# define __NO_LONG_DOUBLE_MATH 1
316+#endif
317Index: uClibc-0.9.30.1/libc/sysdeps/linux/xtensa/bits/mathdef.h
318===================================================================
319--- uClibc-0.9.30.1/libc/sysdeps/linux/xtensa/bits/mathdef.h (revision 25552)
320+++ uClibc-0.9.30.1/libc/sysdeps/linux/xtensa/bits/mathdef.h (working copy)
321@@ -36,8 +36,8 @@ typedef double double_t; /* `double' exp
322
323 #endif /* ISO C99 */
324
325-#if defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
326+#ifndef __NO_LONG_DOUBLE_MATH
327 /* Signal that we do not really have a `long double'. The disables the
328 declaration of all the `long double' function variants. */
329-# undef __UCLIBC_HAS_LONG_DOUBLE_MATH__
330+# define __NO_LONG_DOUBLE_MATH 1
331 #endif
332Index: uClibc-0.9.30.1/libc/sysdeps/linux/ia64/bits/mathdef.h
333===================================================================
334--- uClibc-0.9.30.1/libc/sysdeps/linux/ia64/bits/mathdef.h (revision 25552)
335+++ uClibc-0.9.30.1/libc/sysdeps/linux/ia64/bits/mathdef.h (working copy)
336@@ -35,3 +35,7 @@ typedef double double_t; /* `double' exp
337 # define FP_ILOGBNAN 2147483647
338
339 #endif /* ISO C99 */
340+
341+#if !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
342+# define __NO_LONG_DOUBLE_MATH 1
343+#endif
344Index: uClibc-0.9.30.1/libc/sysdeps/linux/mips/bits/mathdef.h
345===================================================================
346--- uClibc-0.9.30.1/libc/sysdeps/linux/mips/bits/mathdef.h (revision 25552)
347+++ uClibc-0.9.30.1/libc/sysdeps/linux/mips/bits/mathdef.h (working copy)
348@@ -39,8 +39,10 @@ typedef double double_t; /* `double' exp
349
350 #endif /* ISO C99 */
351
352-#if defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ && _MIPS_SIM == _ABIO32
353+#if ! defined __NO_LONG_DOUBLE_MATH && _MIPS_SIM == _ABIO32
354 /* Signal that we do not really have a `long double'. This disables the
355 declaration of all the `long double' function variants. */
356-# error defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ and _MIPS_SIM == _ABIO32
357+# define __NO_LONG_DOUBLE_MATH 1
358+#elif !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
359+# define __NO_LONG_DOUBLE_MATH 1
360 #endif
361Index: uClibc-0.9.30.1/libc/sysdeps/linux/nios/bits/mathdef.h
362===================================================================
363--- uClibc-0.9.30.1/libc/sysdeps/linux/nios/bits/mathdef.h (revision 25552)
364+++ uClibc-0.9.30.1/libc/sysdeps/linux/nios/bits/mathdef.h (working copy)
365@@ -34,3 +34,11 @@ typedef double double_t; /* `double' exp
366 # define FP_ILOGBNAN (2147483647)
367
368 #endif /* ISO C99 */
369+
370+#ifndef __NO_LONG_DOUBLE_MATH
371+/* Signal that we do not really have a `long double'. This disables the
372+ declaration of all the `long double' function variants. */
373+/* XXX The FPA does support this but the patterns in GCC are currently
374+ turned off. */
375+# define __NO_LONG_DOUBLE_MATH 1
376+#endif
377Index: uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/wordsize.h
378===================================================================
379--- uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/wordsize.h (revision 25552)
380+++ uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/wordsize.h (working copy)
381@@ -6,7 +6,7 @@
382 # define __WORDSIZE 32
383 #endif
384
385-#if 0 /* uClibc: done in mathdefs.h: defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ && !defined __LONG_DOUBLE_MATH_OPTIONAL*/
386+#if 0 /* uClibc: done in mathdefs.h: !defined __NO_LONG_DOUBLE_MATH && !defined __LONG_DOUBLE_MATH_OPTIONAL*/
387
388 # if __WORDSIZE == 32
389 /* Signal that in 32bit ABI we didn't used to have a `long double'.
390@@ -14,7 +14,7 @@
391 to the double functions. */
392 # define __LONG_DOUBLE_MATH_OPTIONAL 1
393 # ifndef __LONG_DOUBLE_128__
394-# undef __UCLIBC_HAS_LONG_DOUBLE_MATH__
395+# define __NO_LONG_DOUBLE_MATH 1
396 # endif
397 # endif
398 #endif
399Index: uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathdef.h
400===================================================================
401--- uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathdef.h (revision 25552)
402+++ uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathdef.h (working copy)
403@@ -57,13 +57,15 @@ typedef double double_t;
404
405 #endif /* ISO C99 */
406
407-#ifdef __UCLIBC_HAS_LONG_DOUBLE_MATH__
408+#ifndef __NO_LONG_DOUBLE_MATH
409
410 # if __WORDSIZE == 32
411 /* Signal that in 32bit ABI we do not really have a `long double'.
412 The disables the declaration of all the `long double' function
413 variants. */
414-# undef __UCLIBC_HAS_LONG_DOUBLE_MATH__
415+# define __NO_LONG_DOUBLE_MATH 1
416+# elif !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
417+# define __NO_LONG_DOUBLE_MATH 1
418 # endif
419
420 #endif
421Index: uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathinline.h
422===================================================================
423--- uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathinline.h (revision 25552)
424+++ uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathinline.h (working copy)
425@@ -37,7 +37,7 @@
426
427 # if __WORDSIZE == 32
428
429-# ifdef __UCLIBC_HAS_LONG_DOUBLE_MATH__
430+# ifndef __NO_LONG_DOUBLE_MATH
431
432 # define __unordered_cmp(x, y) \
433 (__extension__ \
434@@ -157,7 +157,7 @@ __NTH (__signbit (double __x))
435 return __u.__i[0] < 0;
436 }
437
438-# ifdef __UCLIBC_HAS_LONG_DOUBLE_MATH__
439+# ifndef __NO_LONG_DOUBLE_MATH
440 __MATH_INLINE int
441 __NTH (__signbitl (long double __x))
442 {
443@@ -219,7 +219,7 @@ __NTH (sqrtl (long double __x))
444 _Qp_sqrt (&__r, &__x);
445 return __r;
446 }
447-# elif defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
448+# elif !defined __NO_LONG_DOUBLE_MATH
449 __MATH_INLINE long double
450 sqrtl (long double __x) __THROW
451 {
452@@ -257,7 +257,7 @@ __ieee754_sqrtl (long double __x)
453 _Qp_sqrt(&__r, &__x);
454 return __r;
455 }
456-# elif defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
457+# elif !defined __NO_LONG_DOUBLE_MATH
458 __MATH_INLINE long double
459 __ieee754_sqrtl (long double __x)
460 {
461Index: uClibc-0.9.30.1/libc/sysdeps/linux/sh/bits/mathdef.h
462===================================================================
463--- uClibc-0.9.30.1/libc/sysdeps/linux/sh/bits/mathdef.h (revision 25552)
464+++ uClibc-0.9.30.1/libc/sysdeps/linux/sh/bits/mathdef.h (working copy)
465@@ -61,3 +61,9 @@ typedef double double_t;
466 # define FP_ILOGBNAN 0x7fffffff
467
468 #endif /* ISO C99 */
469+
470+#ifndef __NO_LONG_DOUBLE_MATH
471+/* Signal that we do not really have a `long double'. The disables the
472+ declaration of all the `long double' function variants. */
473+# define __NO_LONG_DOUBLE_MATH 1
474+#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 @@
1Index: uClibc/ldso/ldso/Makefile.in
2===================================================================
3--- uClibc.orig/ldso/ldso/Makefile.in 2009-02-03 17:27:55.000000000 -0800
4+++ uClibc/ldso/ldso/Makefile.in 2009-02-03 17:28:11.000000000 -0800
5@@ -8,7 +8,7 @@
6 CFLAGS-ldso := -DNOT_IN_libc -DIS_IN_rtld $(SSP_DISABLE_FLAGS)
7
8 # This stuff will not work with -fomit-frame-pointer
9-CFLAGS-ldso += -fno-omit-frame-pointer
10+CFLAGS-ldso += -O0 -fno-omit-frame-pointer
11
12 CFLAGS-ldso += -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) -I$(top_srcdir)ldso/include -I$(top_srcdir)ldso/ldso
13 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 @@
1#
2# Automatically generated make config: don't edit
3# Version: 0.9.30.1
4# Wed Jul 1 17:04:32 2009
5#
6# TARGET_alpha is not set
7# TARGET_arm is not set
8# TARGET_avr32 is not set
9# TARGET_bfin is not set
10# TARGET_cris is not set
11# TARGET_e1 is not set
12# TARGET_frv is not set
13# TARGET_h8300 is not set
14# TARGET_hppa is not set
15TARGET_i386=y
16# TARGET_i960 is not set
17# TARGET_ia64 is not set
18# TARGET_m68k is not set
19# TARGET_microblaze is not set
20# TARGET_mips is not set
21# TARGET_nios is not set
22# TARGET_nios2 is not set
23# TARGET_powerpc is not set
24# TARGET_sh is not set
25# TARGET_sh64 is not set
26# TARGET_sparc is not set
27# TARGET_v850 is not set
28# TARGET_vax is not set
29# TARGET_x86_64 is not set
30# TARGET_xtensa is not set
31
32#
33# Target Architecture Features and Options
34#
35TARGET_ARCH="i386"
36FORCE_OPTIONS_FOR_ARCH=y
37CONFIG_GENERIC_386=y
38# CONFIG_386 is not set
39# CONFIG_486 is not set
40# CONFIG_586 is not set
41# CONFIG_586MMX is not set
42# CONFIG_686 is not set
43# CONFIG_PENTIUMII is not set
44# CONFIG_PENTIUMIII is not set
45# CONFIG_PENTIUM4 is not set
46# CONFIG_K6 is not set
47# CONFIG_K7 is not set
48# CONFIG_ELAN is not set
49# CONFIG_CRUSOE is not set
50# CONFIG_WINCHIPC6 is not set
51# CONFIG_WINCHIP2 is not set
52# CONFIG_CYRIXIII is not set
53# CONFIG_NEHEMIAH is not set
54TARGET_SUBARCH=""
55
56#
57# Using ELF file format
58#
59ARCH_LITTLE_ENDIAN=y
60
61#
62# Using Little Endian
63#
64ARCH_HAS_MMU=y
65ARCH_USE_MMU=y
66UCLIBC_HAS_FLOATS=y
67UCLIBC_HAS_FPU=y
68DO_C99_MATH=y
69# UCLIBC_HAS_FENV is not set
70UCLIBC_HAS_LONG_DOUBLE_MATH=y
71KERNEL_HEADERS="/bla"
72HAVE_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 @@
1SECTION = "base"
2require uclibc_${PV}.bb
3
4DEPENDS = "linux-libc-headers ncurses-native virtual/${TARGET_PREFIX}gcc-initial"
5PROVIDES = "virtual/${TARGET_PREFIX}libc-initial"
6PACKAGES = ""
7
8do_install() {
9 # Install initial headers into the cross dir
10 make V=1 CC="${CC}" PREFIX=${D} DEVEL_PREFIX=${prefix}/ RUNTIME_PREFIX=/ \
11 install_headers
12 #ln -sf include ${STAGING_DIR_NATIVE}${prefix_native}/${TARGET_SYS}/sys-include
13
14 # This conflicts with the c++ version of this header
15 rm -f ${D}${includedir}/bits/atomicity.h
16 install -d ${D}${libdir}/
17 install -m 644 lib/crt[1in].o ${D}${libdir}/
18 install -d ${D}${libdir}/
19 install -m 644 lib/libc.so ${D}${libdir}/
20}
21
22do_compile () {
23 make V=1 CC="${CC}" PREFIX=${D} DEVEL_PREFIX=${prefix}/ RUNTIME_PREFIX=/ \
24 lib/crt1.o lib/crti.o lib/crtn.o
25 ${CC} -nostdlib -nostartfiles -shared -x c /dev/null \
26 -o lib/libc.so
27}
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 @@
1DESCRIPTION = "C library for embedded systems"
2LICENSE = "LGPL"
3SECTION = "libs"
4PRIORITY = "required"
5
6#
7# For now, we will skip building of a gcc package if it is a uclibc one
8# and our build is not a uclibc one, and we skip a glibc one if our build
9# is a uclibc build.
10#
11# See the note in gcc/gcc_3.4.0.oe
12#
13
14python __anonymous () {
15 import bb, re
16 uc_os = (re.match('.*uclibc*', bb.data.getVar('TARGET_OS', d, 1)) != None)
17 if not uc_os:
18 raise bb.parse.SkipPackage("incompatible with target %s" %
19 bb.data.getVar('TARGET_OS', d, 1))
20}
21
22PROVIDES += "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc"
23PROVIDES += "${@['virtual/libiconv', ''][bb.data.getVar('USE_NLS', d, 1) != 'yes']}"
24DEPENDS = "virtual/${TARGET_PREFIX}binutils \
25 virtual/${TARGET_PREFIX}gcc-intermediate linux-libc-headers ncurses-native pax-utils-native"
26RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
27
28# Blackfin needs a wrapper around ld
29#DEPENDS_append_bfin = " elf2flt "
30
31INHIBIT_DEFAULT_DEPS = "1"
32PARALLEL_MAKE = ""
33
34PACKAGES =+ "ldd uclibc-utils-dbg uclibc-utils uclibc-gconv uclibc-thread-db"
35
36LEAD_SONAME = "libc.so"
37
38# The last line (gdb and lib1) is for uclinux-uclibc builds
39uclibc_baselibs = "${base_libdir}/libcrypt*.so.* ${base_libdir}/libcrypt-*.so \
40 ${base_libdir}/libintl*.so.* ${base_libdir}/libintl-*.so \
41 ${base_libdir}/libnsl*.so.* ${base_libdir}/libnsl-*.so \
42 ${base_libdir}/libresolv*.so.* ${base_libdir}/libresolv-*.so \
43 ${base_libdir}/ld*.so.* ${base_libdir}/ld-*.so \
44 ${base_libdir}/libc*.so.* ${base_libdir}/libuClibc-*.so \
45 ${base_libdir}/libdl*.so.* ${base_libdir}/libdl-*.so \
46 ${base_libdir}/libm*.so.* ${base_libdir}/libm-*.so \
47 ${base_libdir}/libutil*.so.* ${base_libdir}/libutil-*.so \
48 ${base_libdir}/libpthread*.so.* ${base_libdir}/libpthread-*.so \
49 ${base_libdir}/librt*.so.* ${base_libdir}/librt-*.so \
50 ${libdir}/libc.gdb ${libdir}/libc ${base_libdir}/lib1.so \
51 "
52FILES_${PN} = "${sysconfdir} ${uclibc_baselibs} /sbin/ldconfig \
53 ${libexecdir} ${datadir}/zoneinfo ${libdir}/locale"
54FILES_ldd = "${bindir}/ldd"
55FILES_uclibc-dev += "${libdir}/*.o"
56FILES_uclibc-utils = "${bindir} ${sbindir}"
57FILES_uclibc-utils-dbg += "${bindir}/.debug ${sbindir}/.debug"
58FILES_uclibc-gconv = "${libdir}/gconv"
59FILES_uclibc-thread-db = "/lib/libthread_db*"
60RPROVIDES_uclibc-dev += "libc-dev"
61
62#
63# This locale file gets copied into uClibc-${PV}/extra/locale/ prior to
64# build, it does not need to be unpacked, but we can't inhibit the unpacking
65# in the current build system.
66#
67UCLIBC_LOCALE_FILE = "uClibc-locale-030818.tgz"
68UCLIBC_LOCALE_FILE_arm = "uClibc-locale-030818.arm.tgz"
69UCLIBC_LOCALE_URI = "http://www.uclibc.org/downloads/${UCLIBC_LOCALE_FILE}"
70UCLIBC_LOCALE_URI_arm = "http://wiki.openembedded.net/dl/uclibc-locale/${UCLIBC_LOCALE_FILE}"
71
72SRC_URI = "${@['${UCLIBC_LOCALE_URI}', ''][bb.data.getVar('USE_NLS', d, 1) != 'yes']} \
73 file://uClibc.config \
74 http://www.uclibc.org/downloads/uClibc-${PV}.tar.bz2 \
75 "
76
77# do_stage barfs on a CC with whitepspace, therefore put the 'HOST_CC_ARCH' in
78# the CFLAGS (for when building the utils).
79OEMAKE_NO_CC = "'STRIPTOOL=true' 'LD=${LD}' \
80 'LOCALE_DATA_FILENAME=${UCLIBC_LOCALE_FILE}'"
81EXTRA_OEMAKE = "${OEMAKE_NO_CC} 'CC=${CC}' \
82 'HOSTCFLAGS=-I${STAGING_INCDIR_NATIVE}' \
83 ARCH=`grep TARGET_ARCH ${S}/.config|sed -e 's/TARGET_ARCH=//g'`"
84EXTRA_OEMAKE_task_do_package = "${OEMAKE_NO_CC}"
85
86KERNEL_SOURCE = "${STAGING_INCDIR}"
87KERNEL_HEADERS = "${STAGING_INCDIR}"
88
89# Lets munge this via siteinfo.bbclass as well:
90# ARCH_BIG_ENDIAN=y
91# ARCH_WANTS_BIG_ENDIAN=y
92# ARCH_WANTS_LITTLE_ENDIAN is not set
93
94# How to enable verbose logs:
95#export VERBOSE="1"
96
97configmangle = 's,^KERNEL_SOURCE=.*,KERNEL_SOURCE="${KERNEL_SOURCE}",g; \
98 s,^KERNEL_HEADERS=.*,KERNEL_HEADERS="${KERNEL_HEADERS}",g; \
99 s,^RUNTIME_PREFIX=.*,RUNTIME_PREFIX="/",g; \
100 s,^DEVEL_PREFIX=.*,DEVEL_PREFIX="/${prefix}",g; \
101 s,^SHARED_LIB_LOADER_PATH=.*,SHARED_LIB_LOADER_PATH="/lib",; \
102 s,^SHARED_LIB_LOADER_PREFIX=.*,SHARED_LIB_LOADER_PREFIX="/lib",; \
103 s,.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y,g; \
104 ${@["","s,.*UCLIBC_HAS_LOCALE.*,UCLIBC_HAS_LOCALE=y,;"][bb.data.getVar("USE_NLS", d, 1) == "yes"]} \
105 ${@["","s,.*LDSO_GNU_HASH_SUPPORT.*,# LDSO_GNU_HASH_SUPPORT is not set,;"][bb.data.getVar("TARGET_ARCH", d, 1) in ['mips', 'mipsel', 'avr32']]} \
106 '
107
108CFLAGS := "${@oe_filter_out('-I\S+', '${CFLAGS}', d)}"
109
110python () {
111 if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]:
112 bb.data.setVar('configmangle_append', ' s,^HAS_FPU=y,# HAS_FPU is not set,;', d)
113}
114
115uclibcbuild_do_patch() {
116 ln -sf ${STAGING_INCDIR}/linux ${S}/include/linux
117 ln -sf ${STAGING_INCDIR}/asm ${S}/include/asm
118
119 ${@['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']}
120}
121
122python do_patch () {
123 bb.build.exec_func('base_do_patch', d)
124 bb.build.exec_func('uclibcbuild_do_patch', d)
125}
126
127do_configure() {
128 rm -f ${S}/.config
129
130 # For uClibc 0.9.29, OpenEmbedded splits the uClibc.config in two parts:
131 # uClibc.machine and uClibc.distro. So, if they exist use them, otherwise
132 # use a uClibc.config
133 if [ -f ${WORKDIR}/uClibc.machine -a -f ${WORKDIR}/uClibc.distro ]; then
134 echo "### uClibc.machine ###" >${S}/merged.config
135 cat ${WORKDIR}/uClibc.machine >>${S}/merged.config
136 echo "### uClibc.distro ###" >>${S}/merged.config
137 cat ${WORKDIR}/uClibc.distro >>${S}/merged.config
138 else
139 echo "### uClibc.config ###" >${S}/merged.config
140 cat ${WORKDIR}/uClibc.config >>${S}/merged.config
141 fi
142 cp ${S}/merged.config ${S}/.config
143
144 # Mangle the resulting .config depending on OE variables
145 perl -i -p -e 's,^CROSS=.*,TARGET_ARCH=${TARGET_ARCH}\nCROSS=${TARGET_PREFIX},g' ${S}/Rules.mak
146 sed -i -e s:'$(CROSS)strip':true: ${S}/Rules.mak
147 perl -i -p -e '${configmangle}' ${S}/.config
148
149 sed -i -e '/CONFIG_ARM_EABI/d' ${S}/.config
150
151 if [ `echo ${TARGET_ARCH} | grep -e '^arm'` ]; then
152 if [ `echo ${TARGET_OS} | grep -e 'eabi$'` ]; then
153 echo "CONFIG_ARM_EABI=y" >> ${S}/.config
154 else
155 echo "# CONFIG_ARM_EABI is not set" >> ${S}/.config
156 fi
157 fi
158 yes '' | oe_runmake oldconfig
159}
160
161do_install() {
162 oe_runmake PREFIX=${D} DEVEL_PREFIX=${prefix}/ RUNTIME_PREFIX=/ \
163 install_dev install_runtime
164
165 # Need to overwrite the version from -initial
166 if [ ! -e ${D}${libdir}/libc.so ]; then
167 ln -s ../../lib/libc.so.0 ${D}${libdir}/libc.so
168 fi
169
170 # We don't really need this in ${includedir}
171 rm -f ${D}${prefix}/include/.cvsignore
172
173 # This conflicts with the c++ version of this header
174 rm -f ${D}${prefix}/include/bits/atomicity.h
175
176 oe_runmake "SSP_ALL_CFLAGS=${TARGET_LINK_HASH_STYLE}" utils
177 oe_runmake STRIPTOOL=true PREFIX=${D} DEVEL_PREFIX=${prefix}/ RUNTIME_PREFIX=/ \
178 install_utils
179
180 # oe_runstrip needs +x on files
181 chmod +x ${D}/${base_libdir}/*
182}
183
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 @@
1# UCLIBC_BASE should be the latest released revision of uclibc (that way
2# the config files will typically be correct!) uclibc-cvs takes precedence
3# over uclibc-${UCLIBC_BASE}, if a config file in uclibc-cvs is out of date
4# try removing it
5#
6# UCLIBC_BASE can be set in a distro file, but whether this works depends
7# on whether the base patches apply to the selected (SRCDATE) svn release.
8#
9UCLIBC_BASE ?= "0.9.30.1"
10
11require uclibc.inc
12PR = "r1"
13
14PROVIDES += "virtual/${TARGET_PREFIX}libc-for-gcc"
15
16SRC_URI += "file://uClibc.machine file://uClibc.distro \
17 file://arm-linuxthreads.patch;patch=1 \
18 file://linuxthreads-changes.patch;patch=1 \
19 file://pthread_atfork.patch;patch=1 \
20 file://uclibc_ldso_use_O0.patch;patch=1 \
21 file://ldso_use_arm_dl_linux_resolve_in_thumb_mode.patch;patch=1 \
22 file://gcc-4.4-fixlet.patch;patch=1 \
23 file://uclibc-c99-ldbl-math.patch;patch=1 \
24 file://Use-__always_inline-instead-of-__inline__.patch;patch=1 \
25 "
26#recent versions uclibc require real kernel headers
27PACKAGE_ARCH = "${MACHINE_ARCH}"
28
29#as stated above, uclibc needs real kernel-headers
30#however: we can't depend on virtual/kernel when nptl hits due to depends deadlocking ....
31KERNEL_SOURCE = "${STAGING_DIR_HOST}/${exec_prefix}"
32
33S = "${WORKDIR}/uClibc-${UCLIBC_BASE}"