summaryrefslogtreecommitdiffstats
path: root/meta/packages/uclibc
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2009-11-17 16:00:20 +0000
committerRichard Purdie <rpurdie@linux.intel.com>2009-11-17 16:00:20 +0000
commit0d816ac9865eb8b4950660d42ae8c2c653412d6f (patch)
tree562161046a2063aeed4e1c62cc9b86aeb5b45fe2 /meta/packages/uclibc
parent2ce975dba2a3f433e3f0668104c9d3630eca1b16 (diff)
downloadpoky-0d816ac9865eb8b4950660d42ae8c2c653412d6f.tar.gz
uclibc: Upgrade 0.9.29 -> 0.9.30.1 (from OE.dev) and massively cleanup the recipes, using install step for staging
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta/packages/uclibc')
-rw-r--r--meta/packages/uclibc/uclibc-0.9.29/arm_fix_alignment.patch19
-rw-r--r--meta/packages/uclibc/uclibc-0.9.29/h3900/uClibc.machine70
-rw-r--r--meta/packages/uclibc/uclibc-0.9.29/h5000/uClibc.machine70
-rw-r--r--meta/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-001-fix-mmap.patch91
-rw-r--r--meta/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-conditional-sched_affinity.patch53
-rw-r--r--meta/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-fix-gethostent_r-failure-retval.patch12
-rw-r--r--meta/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-fix-internal_function-definition.patch51
-rw-r--r--meta/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-rm-whitespace.patch86
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/Use-__always_inline-instead-of-__inline__.patch393
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/akita/uClibc.machine (renamed from meta/packages/uclibc/uclibc-0.9.29/a780/uClibc.machine)0
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/arm-linuxthreads.patch218
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/arm/uClibc.machine (renamed from meta/packages/uclibc/uclibc-0.9.29/ep93xx/uClibc.machine)0
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/armeb/uClibc.machine (renamed from meta/packages/uclibc/uclibc-0.9.29/ixp4xxbe/uClibc.machine)0
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/armv4t/uClibc.machine (renamed from meta/packages/uclibc/uclibc-0.9.29/om-gta01/uClibc.machine)0
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/armv5te/uClibc.machine (renamed from meta/packages/uclibc/uclibc-0.9.29/c7x0/uClibc.machine)0
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/armv6/uClibc.machine (renamed from meta/packages/uclibc/uclibc-0.9.29/h4000/uClibc.machine)4
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/armv7a/uClibc.machine (renamed from meta/packages/uclibc/uclibc-0.9.29/poodle/uClibc.machine)4
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/c7x0/uClibc.machine (renamed from meta/packages/uclibc/uclibc-0.9.29/h2200/uClibc.machine)0
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/cm-x270/uClibc.machine (renamed from meta/packages/uclibc/uclibc-0.9.29/akita/uClibc.machine)0
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/gcc-4.4-fixlet.patch31
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/iwmmxt/uClibc.machine (renamed from meta/packages/uclibc/uclibc-0.9.29/cm-x270/uClibc.machine)0
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/ldso_use_arm_dl_linux_resolve_in_thumb_mode.patch21
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/linuxthreads-changes.patch291
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/netbook/uClibc.machine (renamed from meta/packages/uclibc/uclibc-0.9.29/collie/uClibc.machine)55
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/om-gta01/uClibc.machine (renamed from meta/packages/uclibc/uclibc-0.9.29/uClibc.machine.armv4t)0
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/pthread_atfork.patch42
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/qemuarm/uClibc.machine (renamed from meta/packages/uclibc/uclibc-0.9.29/qemuarm/uClibc.machine)0
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/qemumips/uClibc.machine (renamed from meta/packages/uclibc/uclibc-0.9.29/titan/uClibc.machine)38
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/qemux86/uClibc.machine (renamed from meta/packages/uclibc/uclibc-0.9.29/efika/uClibc.machine)35
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/spitz/uClibc.machine (renamed from meta/packages/uclibc/uclibc-0.9.29/hx4700/uClibc.machine)0
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/uClibc.config (renamed from meta/packages/uclibc/uclibc-0.9.29/uClibc.config)0
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/uClibc.distro (renamed from meta/packages/uclibc/uclibc-0.9.29/uClibc.distro)12
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/uClibc.machine.armv4t (renamed from meta/packages/uclibc/uclibc-0.9.29/spitz/uClibc.machine)7
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/uClibc.machine.armv5te (renamed from meta/packages/uclibc/uclibc-0.9.29/uClibc.machine.armv5te)0
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/uClibc.machine.iwmmxt (renamed from meta/packages/uclibc/uclibc-0.9.29/uClibc.machine.iwmmxt)0
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/uClibc.machine.strongarm (renamed from meta/packages/uclibc/uclibc-0.9.29/uClibc.machine.strongarm)0
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/uclibc-c99-ldbl-math.patch474
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/uclibc_ldso_use_O0.patch13
-rw-r--r--meta/packages/uclibc/uclibc-0.9.30.1/x86/uClibc.machine72
-rw-r--r--meta/packages/uclibc/uclibc-initial_0.9.29.bb34
-rw-r--r--meta/packages/uclibc/uclibc-initial_0.9.30.1.bb27
-rw-r--r--meta/packages/uclibc/uclibc.inc125
-rw-r--r--meta/packages/uclibc/uclibc_0.9.30.1.bb (renamed from meta/packages/uclibc/uclibc_0.9.29.bb)35
43 files changed, 1733 insertions, 650 deletions
diff --git a/meta/packages/uclibc/uclibc-0.9.29/arm_fix_alignment.patch b/meta/packages/uclibc/uclibc-0.9.29/arm_fix_alignment.patch
deleted file mode 100644
index 3a059021a7..0000000000
--- a/meta/packages/uclibc/uclibc-0.9.29/arm_fix_alignment.patch
+++ /dev/null
@@ -1,19 +0,0 @@
1ARMV5 can use STRD and LDRD access instructions but these accesses need to be
28 byte aligned. The dynamic linker's malloc needs to match this so structures
3become 8 byte aligned to void unaligned accesses.
4
5RP - 14/02/2008
6
7Index: uClibc-0.9.29/ldso/ldso/arm/dl-sysdep.h
8===================================================================
9--- uClibc-0.9.29.orig/ldso/ldso/arm/dl-sysdep.h 2008-02-14 00:58:12.000000000 +0000
10+++ uClibc-0.9.29/ldso/ldso/arm/dl-sysdep.h 2008-02-14 00:59:19.000000000 +0000
11@@ -15,6 +15,8 @@
12 GOT_BASE[1] = (unsigned long) MODULE; \
13 }
14
15+#define DL_MALLOC_ALIGN 8 /* EABI needs 8 byte alignment for STRD LDRD*/
16+
17 static inline unsigned long arm_modulus(unsigned long m, unsigned long p)
18 {
19 unsigned long i,t,inc;
diff --git a/meta/packages/uclibc/uclibc-0.9.29/h3900/uClibc.machine b/meta/packages/uclibc/uclibc-0.9.29/h3900/uClibc.machine
deleted file mode 100644
index ec0385bc0f..0000000000
--- a/meta/packages/uclibc/uclibc-0.9.29/h3900/uClibc.machine
+++ /dev/null
@@ -1,70 +0,0 @@
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/packages/uclibc/uclibc-0.9.29/h5000/uClibc.machine b/meta/packages/uclibc/uclibc-0.9.29/h5000/uClibc.machine
deleted file mode 100644
index ec0385bc0f..0000000000
--- a/meta/packages/uclibc/uclibc-0.9.29/h5000/uClibc.machine
+++ /dev/null
@@ -1,70 +0,0 @@
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/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-001-fix-mmap.patch b/meta/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-001-fix-mmap.patch
deleted file mode 100644
index 4775e8c332..0000000000
--- a/meta/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-001-fix-mmap.patch
+++ /dev/null
@@ -1,91 +0,0 @@
1--- uClibc-0.9.29.oorig/test/mmap/mmap2.c (revision 0)
2+++ uClibc-0.9.29/test/mmap/mmap2.c (revision 18616)
3@@ -0,0 +1,41 @@
4+/* When trying to map /dev/mem with offset 0xFFFFF000 on the ARM platform, mmap
5+ * returns -EOVERFLOW.
6+ *
7+ * Since off_t is defined as a long int and the sign bit is set in the address,
8+ * the shift operation shifts in ones instead of zeroes
9+ * from the left. This results the offset sent to the kernel function becomes
10+ * 0xFFFFFFFF instead of 0x000FFFFF with MMAP2_PAGE_SHIFT set to 12.
11+ */
12+
13+#include <unistd.h>
14+#include <stdio.h>
15+#include <stdlib.h>
16+#include <string.h>
17+#include <errno.h>
18+#include <fcntl.h>
19+#include <sys/mman.h>
20+
21+#define FATAL do { fprintf(stderr, "Error at line %d, file %s (%d) [%s]\n", \
22+ __LINE__, __FILE__, errno, strerror(errno)); exit(1); } while(0)
23+
24+#define MAP_SIZE 4096UL
25+#define MAP_MASK (MAP_SIZE - 1)
26+
27+int main(int argc, char **argv) {
28+ void* map_base = 0;
29+ int fd;
30+ off_t target = 0xfffff000;
31+ if((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1) FATAL;
32+ printf("/dev/mem opened.\n");
33+ fflush(stdout);
34+
35+ /* Map one page */
36+ map_base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED,
37+ fd, target & ~MAP_MASK);
38+ if(map_base == (void *) -1) FATAL;
39+ printf("Memory mapped at address %p.\n", map_base);
40+ fflush(stdout);
41+ if(munmap(map_base, MAP_SIZE) == -1) FATAL;
42+ close(fd);
43+ return 0;
44+}
45--- uClibc-0.9.29.oorig/libc/sysdeps/linux/arm/mmap.c (revision 18615)
46+++ uClibc-0.9.29/libc/sysdeps/linux/arm/mmap.c (revision 18616)
47@@ -27,7 +27,6 @@ __ptr_t mmap(__ptr_t addr, size_t len, i
48
49 #elif defined (__NR_mmap2)
50 #define __NR__mmap __NR_mmap2
51-
52 #ifndef MMAP2_PAGE_SHIFT
53 # define MMAP2_PAGE_SHIFT 12
54 #endif
55@@ -39,9 +38,17 @@ __ptr_t mmap(__ptr_t addr, size_t len, i
56 {
57 /* check if offset is page aligned */
58 if (offset & ((1 << MMAP2_PAGE_SHIFT) - 1))
59+ {
60+ __set_errno(EINVAL);
61 return MAP_FAILED;
62+ }
63+#ifdef __USE_FILE_OFFSET64
64+ return (__ptr_t) _mmap (addr, len, prot, flags,
65+ fd,((__u_quad_t) offset >> MMAP2_PAGE_SHIFT));
66+#else
67 return (__ptr_t) _mmap (addr, len, prot, flags,
68- fd,(off_t) (offset >> MMAP2_PAGE_SHIFT));
69+ fd,((__u_long) offset >> MMAP2_PAGE_SHIFT));
70+#endif
71 }
72 #elif defined (__NR_mmap)
73 # define __NR__mmap __NR_mmap
74--- uClibc-0.9.29.oorig/libc/sysdeps/linux/common/mmap64.c (revision 18615)
75+++ uClibc-0.9.29/libc/sysdeps/linux/common/mmap64.c (revision 18616)
76@@ -58,8 +58,13 @@ __ptr_t mmap64(__ptr_t addr, size_t len,
77 __set_errno(EINVAL);
78 return MAP_FAILED;
79 }
80-
81- return __syscall_mmap2(addr, len, prot, flags, fd, (off_t) (offset >> MMAP2_PAGE_SHIFT));
82+#ifdef __USE_FILE_OFFSET64
83+ return __syscall_mmap2(addr, len, prot, flags,
84+ fd,((__u_quad_t)offset >> MMAP2_PAGE_SHIFT));
85+#else
86+ return __syscall_mmap2(addr, len, prot, flags,
87+ fd,((__u_long)offset >> MMAP2_PAGE_SHIFT));
88+#endif
89 }
90
91 # endif
diff --git a/meta/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-conditional-sched_affinity.patch b/meta/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-conditional-sched_affinity.patch
deleted file mode 100644
index 509c42af52..0000000000
--- a/meta/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-conditional-sched_affinity.patch
+++ /dev/null
@@ -1,53 +0,0 @@
1diff -ur uClibc-0.9.29/libc/sysdeps/linux/common/sched_getaffinity.c uClibc-0.9.29-patched/libc/sysdeps/linux/common/sched_getaffinity.c
2--- uClibc-0.9.29/libc/sysdeps/linux/common/sched_getaffinity.c 2007-02-12 16:52:32.000000000 -0600
3+++ uClibc-0.9.29-patched/libc/sysdeps/linux/common/sched_getaffinity.c 2007-05-09 18:05:09.397411811 -0500
4@@ -29,6 +29,7 @@
5 #include <sys/param.h>
6 #include <sys/types.h>
7
8+#ifdef __NR_sched_getaffinity
9 libc_hidden_proto(memset)
10
11 #define __NR___syscall_sched_getaffinity __NR_sched_getaffinity
12@@ -48,5 +49,15 @@
13 }
14 return res;
15 }
16+#else
17+/*
18+int sched_getaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *cpuset)
19+{
20+ __set_errno(ENOSYS);
21+ return -1;
22+}
23+*/
24 #endif
25 #endif
26+
27+#endif
28diff -ur uClibc-0.9.29/libc/sysdeps/linux/common/sched_setaffinity.c uClibc-0.9.29-patched/libc/sysdeps/linux/common/sched_setaffinity.c
29--- uClibc-0.9.29/libc/sysdeps/linux/common/sched_setaffinity.c 2007-02-12 16:52:32.000000000 -0600
30+++ uClibc-0.9.29-patched/libc/sysdeps/linux/common/sched_setaffinity.c 2007-05-09 18:05:09.397411811 -0500
31@@ -31,6 +31,7 @@
32 #include <sys/types.h>
33 #include <alloca.h>
34
35+#ifdef __NR_sched_setaffinity
36 libc_hidden_proto(getpid)
37
38 #define __NR___syscall_sched_setaffinity __NR_sched_setaffinity
39@@ -74,5 +75,14 @@
40
41 return INLINE_SYSCALL (sched_setaffinity, 3, pid, cpusetsize, cpuset);
42 }
43+#else
44+/*
45+int sched_setaffinity(pid_t pid, size_t cpusetsize, const cpu_set_t *cpuset)
46+{
47+ __set_errno(ENOSYS);
48+ return -1;
49+}
50+*/
51+#endif
52 #endif
53 #endif
diff --git a/meta/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-fix-gethostent_r-failure-retval.patch b/meta/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-fix-gethostent_r-failure-retval.patch
deleted file mode 100644
index 7b246c1ad7..0000000000
--- a/meta/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-fix-gethostent_r-failure-retval.patch
+++ /dev/null
@@ -1,12 +0,0 @@
1diff -ur uClibc-0.9.29/libc/inet/resolv.c uClibc-0.9.29-patched/libc/inet/resolv.c
2--- uClibc-0.9.29/libc/inet/resolv.c 2007-04-23 12:01:05.000000000 -0500
3+++ uClibc-0.9.29-patched/libc/inet/resolv.c 2007-05-09 18:05:33.563404419 -0500
4@@ -1700,7 +1700,7 @@
5 int gethostent_r(struct hostent *result_buf, char *buf, size_t buflen,
6 struct hostent **result, int *h_errnop)
7 {
8- int ret;
9+ int ret = HOST_NOT_FOUND;
10
11 __UCLIBC_MUTEX_LOCK(mylock);
12 if (__gethostent_fp == NULL) {
diff --git a/meta/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-fix-internal_function-definition.patch b/meta/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-fix-internal_function-definition.patch
deleted file mode 100644
index 9b88d826f1..0000000000
--- a/meta/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-fix-internal_function-definition.patch
+++ /dev/null
@@ -1,51 +0,0 @@
1Index: uClibc/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h
2===================================================================
3--- uClibc/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h (revision 18898)
4+++ uClibc/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h (working copy)
5@@ -42,6 +42,8 @@
6 /* define if target supports IEEE signed zero floats */
7 #define __UCLIBC_HAVE_SIGNED_ZERO__
8
9+#if defined _LIBC
10 #define internal_function __attribute__ ((regparm (3), stdcall))
11+#endif
12
13 #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
14Index: uClibc/include/libc-symbols.h
15===================================================================
16--- uClibc/include/libc-symbols.h (revision 18898)
17+++ uClibc/include/libc-symbols.h (working copy)
18@@ -22,6 +22,16 @@
19 #ifndef _LIBC_SYMBOLS_H
20 #define _LIBC_SYMBOLS_H 1
21
22+/* This is defined for the compilation of all C library code. features.h
23+ tests this to avoid inclusion of stubs.h while compiling the library,
24+ before stubs.h has been generated. Some library code that is shared
25+ with other packages also tests this symbol to see if it is being
26+ compiled as part of the C library. We must define this before including
27+ config.h, because it makes some definitions conditional on whether libc
28+ itself is being compiled, or just some generator program. */
29+#define _LIBC 1
30+
31+
32 /* This file's macros are included implicitly in the compilation of every
33 file in the C library by -imacros.
34
35@@ -40,16 +50,6 @@
36
37 #include <bits/uClibc_arch_features.h>
38
39-
40-/* This is defined for the compilation of all C library code. features.h
41- tests this to avoid inclusion of stubs.h while compiling the library,
42- before stubs.h has been generated. Some library code that is shared
43- with other packages also tests this symbol to see if it is being
44- compiled as part of the C library. We must define this before including
45- config.h, because it makes some definitions conditional on whether libc
46- itself is being compiled, or just some generator program. */
47-#define _LIBC 1
48-
49 /* Enable declarations of GNU extensions, since we are compiling them. */
50 #define _GNU_SOURCE 1
51
diff --git a/meta/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-rm-whitespace.patch b/meta/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-rm-whitespace.patch
deleted file mode 100644
index 6004f91e32..0000000000
--- a/meta/packages/uclibc/uclibc-0.9.29/uClibc-0.9.29-rm-whitespace.patch
+++ /dev/null
@@ -1,86 +0,0 @@
1diff -urN uClibc-0.9.29-0rig/include/assert.h uClibc-0.9.29/include/assert.h
2--- uClibc-0.9.29-0rig/include/assert.h 2005-11-03 23:42:46.000000000 +0100
3+++ uClibc-0.9.29/include/assert.h 2007-08-13 19:10:57.000000000 +0200
4@@ -31,7 +31,7 @@
5 #define _ASSERT_H 1
6 #include <features.h>
7
8-#if defined __cplusplus && __GNUC_PREREQ (2,95)
9+#if defined __cplusplus && __GNUC_PREREQ(2,95)
10 # define __ASSERT_VOID_CAST static_cast<void>
11 #else
12 # define __ASSERT_VOID_CAST (void)
13@@ -59,13 +59,17 @@
14 (__ASSERT_VOID_CAST ((expr) ? 0 : \
15 (__assert (__STRING(expr), __FILE__, __LINE__, \
16 __ASSERT_FUNCTION), 0)))
17-
18+
19+/* Define some temporaries to workaround tinyx makedepend bug */
20+#define __GNUC_PREREQ_2_6 __GNUC_PREREQ(2, 6)
21+#define __GNUC_PREREQ_2_4 __GNUC_PREREQ(2, 4)
22 /* Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__'
23 which contains the name of the function currently being defined.
24 This is broken in G++ before version 2.6.
25 C9x has a similar variable called __func__, but prefer the GCC one since
26 it demangles C++ function names. */
27-# if defined __cplusplus ? __GNUC_PREREQ (2, 6) : __GNUC_PREREQ (2, 4)
28+
29+# if defined __cplusplus ? __GNUC_PREREQ_2_6 : __GNUC_PREREQ_2_4
30 # define __ASSERT_FUNCTION __PRETTY_FUNCTION__
31 # else
32 # if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
33diff -urN uClibc-0.9.29-0rig/include/complex.h uClibc-0.9.29/include/complex.h
34--- uClibc-0.9.29-0rig/include/complex.h 2002-05-09 10:15:21.000000000 +0200
35+++ uClibc-0.9.29/include/complex.h 2007-08-13 17:55:29.000000000 +0200
36@@ -33,7 +33,7 @@
37 /* We might need to add support for more compilers here. But since ISO
38 C99 is out hopefully all maintained compilers will soon provide the data
39 types `float complex' and `double complex'. */
40-#if __GNUC_PREREQ (2, 7) && !__GNUC_PREREQ (2, 97)
41+#if __GNUC_PREREQ(2, 7) && !__GNUC_PREREQ(2, 97)
42 # define _Complex __complex__
43 #endif
44
45diff -urN uClibc-0.9.29-0rig/include/features.h uClibc-0.9.29/include/features.h
46--- uClibc-0.9.29-0rig/include/features.h 2006-11-29 22:10:04.000000000 +0100
47+++ uClibc-0.9.29/include/features.h 2007-08-13 17:55:51.000000000 +0200
48@@ -143,7 +143,7 @@
49
50 /* Convenience macros to test the versions of glibc and gcc.
51 Use them like this:
52- #if __GNUC_PREREQ (2,8)
53+ #if __GNUC_PREREQ(2,8)
54 ... code requiring gcc 2.8 or later ...
55 #endif
56 Note - they won't work for gcc1 or glibc1, since the _MINOR macros
57@@ -297,7 +297,7 @@
58 /* uClibc does not support _FORTIFY_SOURCE */
59 #undef _FORTIFY_SOURCE
60 #if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 \
61- && __GNUC_PREREQ (4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0
62+ && __GNUC_PREREQ(4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0
63 # if _FORTIFY_SOURCE > 1
64 # define __USE_FORTIFY_LEVEL 2
65 # else
66@@ -366,7 +366,7 @@
67 #endif /* !ASSEMBLER */
68
69 /* Decide whether we can define 'extern inline' functions in headers. */
70-#if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \
71+#if __GNUC_PREREQ(2, 7) && defined __OPTIMIZE__ \
72 && !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__
73 # define __USE_EXTERN_INLINES 1
74 #endif
75diff -urN uClibc-0.9.29-0rig/include/tgmath.h uClibc-0.9.29/include/tgmath.h
76--- uClibc-0.9.29-0rig/include/tgmath.h 2002-05-09 10:15:21.000000000 +0200
77+++ uClibc-0.9.29/include/tgmath.h 2007-08-13 17:56:17.000000000 +0200
78@@ -34,7 +34,7 @@
79 do not try this for now and instead concentrate only on GNU CC. Once
80 we have more information support for other compilers might follow. */
81
82-#if __GNUC_PREREQ (2, 7)
83+#if __GNUC_PREREQ(2, 7)
84
85 # ifdef __NO_LONG_DOUBLE_MATH
86 # define __tgml(fct) fct
diff --git a/meta/packages/uclibc/uclibc-0.9.30.1/Use-__always_inline-instead-of-__inline__.patch b/meta/packages/uclibc/uclibc-0.9.30.1/Use-__always_inline-instead-of-__inline__.patch
new file mode 100644
index 0000000000..a9c7a4fb10
--- /dev/null
+++ b/meta/packages/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/packages/uclibc/uclibc-0.9.29/a780/uClibc.machine b/meta/packages/uclibc/uclibc-0.9.30.1/akita/uClibc.machine
index e27931cf6b..e27931cf6b 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/a780/uClibc.machine
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/akita/uClibc.machine
diff --git a/meta/packages/uclibc/uclibc-0.9.30.1/arm-linuxthreads.patch b/meta/packages/uclibc/uclibc-0.9.30.1/arm-linuxthreads.patch
new file mode 100644
index 0000000000..e222668a66
--- /dev/null
+++ b/meta/packages/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/packages/uclibc/uclibc-0.9.29/ep93xx/uClibc.machine b/meta/packages/uclibc/uclibc-0.9.30.1/arm/uClibc.machine
index 898b73a33b..898b73a33b 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/ep93xx/uClibc.machine
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/arm/uClibc.machine
diff --git a/meta/packages/uclibc/uclibc-0.9.29/ixp4xxbe/uClibc.machine b/meta/packages/uclibc/uclibc-0.9.30.1/armeb/uClibc.machine
index 2d9f63e531..2d9f63e531 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/ixp4xxbe/uClibc.machine
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/armeb/uClibc.machine
diff --git a/meta/packages/uclibc/uclibc-0.9.29/om-gta01/uClibc.machine b/meta/packages/uclibc/uclibc-0.9.30.1/armv4t/uClibc.machine
index 898b73a33b..898b73a33b 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/om-gta01/uClibc.machine
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/armv4t/uClibc.machine
diff --git a/meta/packages/uclibc/uclibc-0.9.29/c7x0/uClibc.machine b/meta/packages/uclibc/uclibc-0.9.30.1/armv5te/uClibc.machine
index ec0385bc0f..ec0385bc0f 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/c7x0/uClibc.machine
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/armv5te/uClibc.machine
diff --git a/meta/packages/uclibc/uclibc-0.9.29/h4000/uClibc.machine b/meta/packages/uclibc/uclibc-0.9.30.1/armv6/uClibc.machine
index ec0385bc0f..85f70f70c7 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/h4000/uClibc.machine
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/armv6/uClibc.machine
@@ -62,8 +62,8 @@ ARCH_WANTS_LITTLE_ENDIAN=y
62ARCH_HAS_MMU=y 62ARCH_HAS_MMU=y
63ARCH_USE_MMU=y 63ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y 64UCLIBC_HAS_FLOATS=y
65# UCLIBC_HAS_FPU is not set 65UCLIBC_HAS_FPU=y
66UCLIBC_HAS_SOFT_FLOAT=y 66UCLIBC_HAS_SOFT_FLOAT=n
67DO_C99_MATH=y 67DO_C99_MATH=y
68KERNEL_HEADERS="/data/build/koen/OE/build/tmp/angstrom/cross/arm-angstrom-linux-uclibcgnueabi/include" 68KERNEL_HEADERS="/data/build/koen/OE/build/tmp/angstrom/cross/arm-angstrom-linux-uclibcgnueabi/include"
69HAVE_DOT_CONFIG=y 69HAVE_DOT_CONFIG=y
diff --git a/meta/packages/uclibc/uclibc-0.9.29/poodle/uClibc.machine b/meta/packages/uclibc/uclibc-0.9.30.1/armv7a/uClibc.machine
index ec0385bc0f..85f70f70c7 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/poodle/uClibc.machine
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/armv7a/uClibc.machine
@@ -62,8 +62,8 @@ ARCH_WANTS_LITTLE_ENDIAN=y
62ARCH_HAS_MMU=y 62ARCH_HAS_MMU=y
63ARCH_USE_MMU=y 63ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y 64UCLIBC_HAS_FLOATS=y
65# UCLIBC_HAS_FPU is not set 65UCLIBC_HAS_FPU=y
66UCLIBC_HAS_SOFT_FLOAT=y 66UCLIBC_HAS_SOFT_FLOAT=n
67DO_C99_MATH=y 67DO_C99_MATH=y
68KERNEL_HEADERS="/data/build/koen/OE/build/tmp/angstrom/cross/arm-angstrom-linux-uclibcgnueabi/include" 68KERNEL_HEADERS="/data/build/koen/OE/build/tmp/angstrom/cross/arm-angstrom-linux-uclibcgnueabi/include"
69HAVE_DOT_CONFIG=y 69HAVE_DOT_CONFIG=y
diff --git a/meta/packages/uclibc/uclibc-0.9.29/h2200/uClibc.machine b/meta/packages/uclibc/uclibc-0.9.30.1/c7x0/uClibc.machine
index ec0385bc0f..ec0385bc0f 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/h2200/uClibc.machine
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/c7x0/uClibc.machine
diff --git a/meta/packages/uclibc/uclibc-0.9.29/akita/uClibc.machine b/meta/packages/uclibc/uclibc-0.9.30.1/cm-x270/uClibc.machine
index e27931cf6b..e27931cf6b 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/akita/uClibc.machine
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/cm-x270/uClibc.machine
diff --git a/meta/packages/uclibc/uclibc-0.9.30.1/gcc-4.4-fixlet.patch b/meta/packages/uclibc/uclibc-0.9.30.1/gcc-4.4-fixlet.patch
new file mode 100644
index 0000000000..b9ff6710bc
--- /dev/null
+++ b/meta/packages/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/packages/uclibc/uclibc-0.9.29/cm-x270/uClibc.machine b/meta/packages/uclibc/uclibc-0.9.30.1/iwmmxt/uClibc.machine
index e27931cf6b..e27931cf6b 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/cm-x270/uClibc.machine
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/iwmmxt/uClibc.machine
diff --git a/meta/packages/uclibc/uclibc-0.9.30.1/ldso_use_arm_dl_linux_resolve_in_thumb_mode.patch b/meta/packages/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/packages/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/packages/uclibc/uclibc-0.9.30.1/linuxthreads-changes.patch b/meta/packages/uclibc/uclibc-0.9.30.1/linuxthreads-changes.patch
new file mode 100644
index 0000000000..f6f32cdd29
--- /dev/null
+++ b/meta/packages/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/packages/uclibc/uclibc-0.9.29/collie/uClibc.machine b/meta/packages/uclibc/uclibc-0.9.30.1/netbook/uClibc.machine
index 6e89444a64..5df15f94cb 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/collie/uClibc.machine
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/netbook/uClibc.machine
@@ -1,16 +1,16 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Sun May 13 11:29:51 2007 3# Fri Nov 23 15:49:33 2007
4# 4#
5# TARGET_alpha is not set 5# TARGET_alpha is not set
6TARGET_arm=y 6# TARGET_arm is not set
7# TARGET_bfin is not set 7# TARGET_bfin is not set
8# TARGET_cris is not set 8# TARGET_cris is not set
9# TARGET_e1 is not set 9# TARGET_e1 is not set
10# TARGET_frv is not set 10# TARGET_frv is not set
11# TARGET_h8300 is not set 11# TARGET_h8300 is not set
12# TARGET_hppa is not set 12# TARGET_hppa is not set
13# TARGET_i386 is not set 13TARGET_i386=y
14# TARGET_i960 is not set 14# TARGET_i960 is not set
15# TARGET_ia64 is not set 15# TARGET_ia64 is not set
16# TARGET_m68k is not set 16# TARGET_m68k is not set
@@ -29,42 +29,41 @@ TARGET_arm=y
29# 29#
30# Target Architecture Features and Options 30# Target Architecture Features and Options
31# 31#
32TARGET_ARCH="arm" 32TARGET_ARCH="i386"
33FORCE_OPTIONS_FOR_ARCH=y 33FORCE_OPTIONS_FOR_ARCH=y
34CONFIG_ARM_OABI=y 34CONFIG_GENERIC_386=y
35# CONFIG_ARM_EABI is not set 35# CONFIG_386 is not set
36# USE_BX is not set 36# CONFIG_486 is not set
37# CONFIG_GENERIC_ARM is not set 37# CONFIG_586 is not set
38# CONFIG_ARM610 is not set 38# CONFIG_586MMX is not set
39# CONFIG_ARM710 is not set 39# CONFIG_686 is not set
40# CONFIG_ARM7TDMI is not set 40# CONFIG_PENTIUMII is not set
41# CONFIG_ARM720T is not set 41# CONFIG_PENTIUMIII is not set
42# CONFIG_ARM920T is not set 42# CONFIG_PENTIUM4 is not set
43# CONFIG_ARM922T is not set 43# CONFIG_K6 is not set
44# CONFIG_ARM926T is not set 44# CONFIG_K7 is not set
45# CONFIG_ARM10T is not set 45# CONFIG_ELAN is not set
46# CONFIG_ARM1136JF_S is not set 46# CONFIG_CRUSOE is not set
47# CONFIG_ARM1176JZ_S is not set 47# CONFIG_WINCHIPC6 is not set
48# CONFIG_ARM1176JZF_S is not set 48# CONFIG_WINCHIP2 is not set
49# CONFIG_ARM_SA110 is not set 49# CONFIG_CYRIXIII is not set
50CONFIG_ARM_SA1100=y 50# CONFIG_NEHEMIAH is not set
51# CONFIG_ARM_XSCALE is not set
52# CONFIG_ARM_IWMMXT is not set
53TARGET_SUBARCH="" 51TARGET_SUBARCH=""
54 52
55# 53#
56# Using ELF file format 54# Using ELF file format
57# 55#
58ARCH_ANY_ENDIAN=y
59ARCH_LITTLE_ENDIAN=y 56ARCH_LITTLE_ENDIAN=y
60# ARCH_WANTS_BIG_ENDIAN is not set 57
61ARCH_WANTS_LITTLE_ENDIAN=y 58#
59# Using Little Endian
60#
62ARCH_HAS_MMU=y 61ARCH_HAS_MMU=y
63ARCH_USE_MMU=y 62ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y 63UCLIBC_HAS_FLOATS=y
65# UCLIBC_HAS_FPU is not set 64UCLIBC_HAS_FPU=y
66UCLIBC_HAS_SOFT_FLOAT=y
67DO_C99_MATH=y 65DO_C99_MATH=y
68KERNEL_HEADERS="/usr/include" 66KERNEL_HEADERS="/usr/include"
69HAVE_DOT_CONFIG=y 67HAVE_DOT_CONFIG=y
70 68
69UCLIBC_HAS_FENV=y
diff --git a/meta/packages/uclibc/uclibc-0.9.29/uClibc.machine.armv4t b/meta/packages/uclibc/uclibc-0.9.30.1/om-gta01/uClibc.machine
index 898b73a33b..898b73a33b 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/uClibc.machine.armv4t
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/om-gta01/uClibc.machine
diff --git a/meta/packages/uclibc/uclibc-0.9.30.1/pthread_atfork.patch b/meta/packages/uclibc/uclibc-0.9.30.1/pthread_atfork.patch
new file mode 100644
index 0000000000..92accc2a1a
--- /dev/null
+++ b/meta/packages/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/packages/uclibc/uclibc-0.9.29/qemuarm/uClibc.machine b/meta/packages/uclibc/uclibc-0.9.30.1/qemuarm/uClibc.machine
index fafdd7584e..fafdd7584e 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/qemuarm/uClibc.machine
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/qemuarm/uClibc.machine
diff --git a/meta/packages/uclibc/uclibc-0.9.29/titan/uClibc.machine b/meta/packages/uclibc/uclibc-0.9.30.1/qemumips/uClibc.machine
index 75c5328056..44fec169c8 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/titan/uClibc.machine
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/qemumips/uClibc.machine
@@ -1,6 +1,6 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Wed May 16 12:03:09 2007 3# Fri Nov 23 15:49:33 2007
4# 4#
5# TARGET_alpha is not set 5# TARGET_alpha is not set
6# TARGET_arm is not set 6# TARGET_arm is not set
@@ -10,7 +10,7 @@
10# TARGET_frv is not set 10# TARGET_frv is not set
11# TARGET_h8300 is not set 11# TARGET_h8300 is not set
12# TARGET_hppa is not set 12# TARGET_hppa is not set
13# TARGET_i386 is not set 13TARGET_i386=y
14# TARGET_i960 is not set 14# TARGET_i960 is not set
15# TARGET_ia64 is not set 15# TARGET_ia64 is not set
16# TARGET_m68k is not set 16# TARGET_m68k is not set
@@ -19,7 +19,7 @@
19# TARGET_nios is not set 19# TARGET_nios is not set
20# TARGET_nios2 is not set 20# TARGET_nios2 is not set
21# TARGET_powerpc is not set 21# TARGET_powerpc is not set
22TARGET_sh=y 22# TARGET_sh is not set
23# TARGET_sh64 is not set 23# TARGET_sh64 is not set
24# TARGET_sparc is not set 24# TARGET_sparc is not set
25# TARGET_v850 is not set 25# TARGET_v850 is not set
@@ -29,24 +29,40 @@ TARGET_sh=y
29# 29#
30# Target Architecture Features and Options 30# Target Architecture Features and Options
31# 31#
32TARGET_ARCH="sh" 32TARGET_ARCH="i386"
33FORCE_OPTIONS_FOR_ARCH=y 33FORCE_OPTIONS_FOR_ARCH=y
34# CONFIG_SH2A is not set 34CONFIG_GENERIC_386=y
35# CONFIG_SH2 is not set 35# CONFIG_386 is not set
36# CONFIG_SH3 is not set 36# CONFIG_486 is not set
37CONFIG_SH4=y 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
38TARGET_SUBARCH="" 51TARGET_SUBARCH=""
39 52
40# 53#
41# Using ELF file format 54# Using ELF file format
42# 55#
43ARCH_ANY_ENDIAN=y
44ARCH_LITTLE_ENDIAN=y 56ARCH_LITTLE_ENDIAN=y
45# ARCH_WANTS_BIG_ENDIAN is not set 57
46ARCH_WANTS_LITTLE_ENDIAN=y 58#
59# Using Little Endian
60#
47ARCH_HAS_MMU=y 61ARCH_HAS_MMU=y
48ARCH_USE_MMU=y 62ARCH_USE_MMU=y
49UCLIBC_HAS_FLOATS=y 63UCLIBC_HAS_FLOATS=y
50UCLIBC_HAS_FPU=y 64UCLIBC_HAS_FPU=y
65DO_C99_MATH=y
51KERNEL_HEADERS="/usr/include" 66KERNEL_HEADERS="/usr/include"
52HAVE_DOT_CONFIG=y 67HAVE_DOT_CONFIG=y
68
diff --git a/meta/packages/uclibc/uclibc-0.9.29/efika/uClibc.machine b/meta/packages/uclibc/uclibc-0.9.30.1/qemux86/uClibc.machine
index e059257c09..44fec169c8 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/efika/uClibc.machine
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/qemux86/uClibc.machine
@@ -1,6 +1,6 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Sun May 13 11:25:50 2007 3# Fri Nov 23 15:49:33 2007
4# 4#
5# TARGET_alpha is not set 5# TARGET_alpha is not set
6# TARGET_arm is not set 6# TARGET_arm is not set
@@ -10,7 +10,7 @@
10# TARGET_frv is not set 10# TARGET_frv is not set
11# TARGET_h8300 is not set 11# TARGET_h8300 is not set
12# TARGET_hppa is not set 12# TARGET_hppa is not set
13# TARGET_i386 is not set 13TARGET_i386=y
14# TARGET_i960 is not set 14# TARGET_i960 is not set
15# TARGET_ia64 is not set 15# TARGET_ia64 is not set
16# TARGET_m68k is not set 16# TARGET_m68k is not set
@@ -18,7 +18,7 @@
18# TARGET_mips is not set 18# TARGET_mips is not set
19# TARGET_nios is not set 19# TARGET_nios is not set
20# TARGET_nios2 is not set 20# TARGET_nios2 is not set
21TARGET_powerpc=y 21# TARGET_powerpc is not set
22# TARGET_sh is not set 22# TARGET_sh is not set
23# TARGET_sh64 is not set 23# TARGET_sh64 is not set
24# TARGET_sparc is not set 24# TARGET_sparc is not set
@@ -29,25 +29,40 @@ TARGET_powerpc=y
29# 29#
30# Target Architecture Features and Options 30# Target Architecture Features and Options
31# 31#
32TARGET_ARCH="powerpc" 32TARGET_ARCH="i386"
33FORCE_OPTIONS_FOR_ARCH=y 33FORCE_OPTIONS_FOR_ARCH=y
34CONFIG_CLASSIC=y 34CONFIG_GENERIC_386=y
35# CONFIG_E500 is not set 35# CONFIG_386 is not set
36TARGET_SUBARCH="classic" 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=""
37 52
38# 53#
39# Using ELF file format 54# Using ELF file format
40# 55#
41ARCH_BIG_ENDIAN=y 56ARCH_LITTLE_ENDIAN=y
42 57
43# 58#
44# Using Big Endian 59# Using Little Endian
45# 60#
46ARCH_HAS_MMU=y 61ARCH_HAS_MMU=y
47ARCH_USE_MMU=y 62ARCH_USE_MMU=y
48UCLIBC_HAS_FLOATS=y 63UCLIBC_HAS_FLOATS=y
49UCLIBC_HAS_FPU=y 64UCLIBC_HAS_FPU=y
50DO_C99_MATH=y 65DO_C99_MATH=y
51KERNEL_HEADERS="/data/build/koen/OE/build/tmp/angstrom/cross/powerpc-angstrom-linux-uclibc/include" 66KERNEL_HEADERS="/usr/include"
52HAVE_DOT_CONFIG=y 67HAVE_DOT_CONFIG=y
53 68
diff --git a/meta/packages/uclibc/uclibc-0.9.29/hx4700/uClibc.machine b/meta/packages/uclibc/uclibc-0.9.30.1/spitz/uClibc.machine
index e27931cf6b..e27931cf6b 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/hx4700/uClibc.machine
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/spitz/uClibc.machine
diff --git a/meta/packages/uclibc/uclibc-0.9.29/uClibc.config b/meta/packages/uclibc/uclibc-0.9.30.1/uClibc.config
index e69de29bb2..e69de29bb2 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/uClibc.config
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/uClibc.config
diff --git a/meta/packages/uclibc/uclibc-0.9.29/uClibc.distro b/meta/packages/uclibc/uclibc-0.9.30.1/uClibc.distro
index ec9424d5a2..042ea4c547 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/uClibc.distro
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/uClibc.distro
@@ -14,6 +14,7 @@ LDSO_BASE_FILENAME="ld.so"
14# UCLIBC_STATIC_LDCONFIG is not set 14# UCLIBC_STATIC_LDCONFIG is not set
15LDSO_RUNPATH=y 15LDSO_RUNPATH=y
16UCLIBC_CTOR_DTOR=y 16UCLIBC_CTOR_DTOR=y
17LDSO_GNU_HASH_SUPPORT=y
17# HAS_NO_THREADS is not set 18# HAS_NO_THREADS is not set
18UCLIBC_HAS_THREADS=y 19UCLIBC_HAS_THREADS=y
19PTHREADS_DEBUG_SUPPORT=y 20PTHREADS_DEBUG_SUPPORT=y
@@ -28,9 +29,10 @@ COMPAT_ATEXIT=y
28UCLIBC_SUSV3_LEGACY=y 29UCLIBC_SUSV3_LEGACY=y
29UCLIBC_SUSV3_LEGACY_MACROS=y 30UCLIBC_SUSV3_LEGACY_MACROS=y
30UCLIBC_HAS_SHADOW=y 31UCLIBC_HAS_SHADOW=y
31# UCLIBC_HAS_PROGRAM_INVOCATION_NAME is not set 32UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
32UCLIBC_HAS___PROGNAME=y 33UCLIBC_HAS___PROGNAME=y
33UNIX98PTY_ONLY=y 34UNIX98PTY_ONLY=y
35UCLIBC_HAS_GETPT=y
34ASSUME_DEVPTS=y 36ASSUME_DEVPTS=y
35UCLIBC_HAS_TM_EXTENSIONS=y 37UCLIBC_HAS_TM_EXTENSIONS=y
36UCLIBC_HAS_TZ_CACHING=y 38UCLIBC_HAS_TZ_CACHING=y
@@ -81,8 +83,8 @@ UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
81# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set 83# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
82# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set 84# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
83# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set 85# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
84UCLIBC_HAS_STDIO_GETC_MACRO=y 86# UCLIBC_HAS_STDIO_GETC_MACRO is not set
85UCLIBC_HAS_STDIO_PUTC_MACRO=y 87# UCLIBC_HAS_STDIO_PUTC_MACRO is not set
86UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y 88UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
87# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set 89# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
88UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y 90UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
@@ -105,7 +107,7 @@ UCLIBC_HAS_FNMATCH=y
105UCLIBC_HAS_WORDEXP=y 107UCLIBC_HAS_WORDEXP=y
106UCLIBC_HAS_FTW=y 108UCLIBC_HAS_FTW=y
107UCLIBC_HAS_GLOB=y 109UCLIBC_HAS_GLOB=y
108# UCLIBC_HAS_GNU_GLOB is not set 110UCLIBC_HAS_GNU_GLOB=y
109 111
110# 112#
111# Library Installation Options 113# Library Installation Options
@@ -132,7 +134,7 @@ CROSS_COMPILER_PREFIX=""
132UCLIBC_EXTRA_CFLAGS="" 134UCLIBC_EXTRA_CFLAGS=""
133# DODEBUG is not set 135# DODEBUG is not set
134# DODEBUG_PT is not set 136# DODEBUG_PT is not set
135# DOSTRIP is not set 137DOSTRIP=n
136# DOASSERTS is not set 138# DOASSERTS is not set
137# SUPPORT_LD_DEBUG is not set 139# SUPPORT_LD_DEBUG is not set
138# SUPPORT_LD_DEBUG_EARLY is not set 140# SUPPORT_LD_DEBUG_EARLY is not set
diff --git a/meta/packages/uclibc/uclibc-0.9.29/spitz/uClibc.machine b/meta/packages/uclibc/uclibc-0.9.30.1/uClibc.machine.armv4t
index e27931cf6b..898b73a33b 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/spitz/uClibc.machine
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/uClibc.machine.armv4t
@@ -1,6 +1,6 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Sat May 12 23:18:41 2007 3# Mon May 14 10:23:14 2007
4# 4#
5# TARGET_alpha is not set 5# TARGET_alpha is not set
6TARGET_arm=y 6TARGET_arm=y
@@ -39,7 +39,7 @@ USE_BX=y
39# CONFIG_ARM710 is not set 39# CONFIG_ARM710 is not set
40# CONFIG_ARM7TDMI is not set 40# CONFIG_ARM7TDMI is not set
41# CONFIG_ARM720T is not set 41# CONFIG_ARM720T is not set
42# CONFIG_ARM920T is not set 42CONFIG_ARM920T=y
43# CONFIG_ARM922T is not set 43# CONFIG_ARM922T is not set
44# CONFIG_ARM926T is not set 44# CONFIG_ARM926T is not set
45# CONFIG_ARM10T is not set 45# CONFIG_ARM10T is not set
@@ -49,7 +49,7 @@ USE_BX=y
49# CONFIG_ARM_SA110 is not set 49# CONFIG_ARM_SA110 is not set
50# CONFIG_ARM_SA1100 is not set 50# CONFIG_ARM_SA1100 is not set
51# CONFIG_ARM_XSCALE is not set 51# CONFIG_ARM_XSCALE is not set
52CONFIG_ARM_IWMMXT=y 52# CONFIG_ARM_IWMMXT is not set
53TARGET_SUBARCH="" 53TARGET_SUBARCH=""
54 54
55# 55#
@@ -64,7 +64,6 @@ ARCH_USE_MMU=y
64UCLIBC_HAS_FLOATS=y 64UCLIBC_HAS_FLOATS=y
65# UCLIBC_HAS_FPU is not set 65# UCLIBC_HAS_FPU is not set
66UCLIBC_HAS_SOFT_FLOAT=y 66UCLIBC_HAS_SOFT_FLOAT=y
67DO_C99_MATH=y
68KERNEL_HEADERS="/usr/include" 67KERNEL_HEADERS="/usr/include"
69HAVE_DOT_CONFIG=y 68HAVE_DOT_CONFIG=y
70 69
diff --git a/meta/packages/uclibc/uclibc-0.9.29/uClibc.machine.armv5te b/meta/packages/uclibc/uclibc-0.9.30.1/uClibc.machine.armv5te
index ec0385bc0f..ec0385bc0f 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/uClibc.machine.armv5te
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/uClibc.machine.armv5te
diff --git a/meta/packages/uclibc/uclibc-0.9.29/uClibc.machine.iwmmxt b/meta/packages/uclibc/uclibc-0.9.30.1/uClibc.machine.iwmmxt
index e27931cf6b..e27931cf6b 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/uClibc.machine.iwmmxt
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/uClibc.machine.iwmmxt
diff --git a/meta/packages/uclibc/uclibc-0.9.29/uClibc.machine.strongarm b/meta/packages/uclibc/uclibc-0.9.30.1/uClibc.machine.strongarm
index 6e89444a64..6e89444a64 100644
--- a/meta/packages/uclibc/uclibc-0.9.29/uClibc.machine.strongarm
+++ b/meta/packages/uclibc/uclibc-0.9.30.1/uClibc.machine.strongarm
diff --git a/meta/packages/uclibc/uclibc-0.9.30.1/uclibc-c99-ldbl-math.patch b/meta/packages/uclibc/uclibc-0.9.30.1/uclibc-c99-ldbl-math.patch
new file mode 100644
index 0000000000..f3718431ea
--- /dev/null
+++ b/meta/packages/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/packages/uclibc/uclibc-0.9.30.1/uclibc_ldso_use_O0.patch b/meta/packages/uclibc/uclibc-0.9.30.1/uclibc_ldso_use_O0.patch
new file mode 100644
index 0000000000..7a89e66621
--- /dev/null
+++ b/meta/packages/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/packages/uclibc/uclibc-0.9.30.1/x86/uClibc.machine b/meta/packages/uclibc/uclibc-0.9.30.1/x86/uClibc.machine
new file mode 100644
index 0000000000..6cd19e851e
--- /dev/null
+++ b/meta/packages/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/packages/uclibc/uclibc-initial_0.9.29.bb b/meta/packages/uclibc/uclibc-initial_0.9.29.bb
deleted file mode 100644
index ee0631d453..0000000000
--- a/meta/packages/uclibc/uclibc-initial_0.9.29.bb
+++ /dev/null
@@ -1,34 +0,0 @@
1SECTION = "base"
2require uclibc_${PV}.bb
3
4FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/uclibc-${PV}', '${FILE_DIRNAME}/uclibc', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
5
6DEPENDS = "linux-libc-headers ncurses-native virtual/${TARGET_PREFIX}gcc-initial"
7PROVIDES = "virtual/${TARGET_PREFIX}libc-initial"
8PACKAGES = ""
9
10do_stage() {
11 # Install initial headers into the cross dir
12 make PREFIX= DEVEL_PREFIX=${UCLIBC_STAGE_PREFIX}/ \
13 RUNTIME_PREFIX=${UCLIBC_STAGE_PREFIX}/ \
14 pregen install_dev
15 make PREFIX= DEVEL_PREFIX=${UCLIBC_STAGE_PREFIX}/ \
16 RUNTIME_PREFIX=${UCLIBC_STAGE_PREFIX}/ \
17 lib/crt1.o lib/crti.o lib/crtn.o
18
19 ln -sf include ${CROSS_DIR}/${TARGET_SYS}/sys-include
20
21 # This conflicts with the c++ version of this header
22 rm -f ${UCLIBC_STAGE_PREFIX}/include/bits/atomicity.h
23 install -m 644 lib/crt[1in].o ${UCLIBC_STAGE_PREFIX}/lib
24 ${CC} -nostdlib -nostartfiles -shared -x c /dev/null \
25 -o ${UCLIBC_STAGE_PREFIX}/lib/libc.so
26}
27
28do_install() {
29 :
30}
31
32do_compile () {
33 :
34}
diff --git a/meta/packages/uclibc/uclibc-initial_0.9.30.1.bb b/meta/packages/uclibc/uclibc-initial_0.9.30.1.bb
new file mode 100644
index 0000000000..d0491fcc67
--- /dev/null
+++ b/meta/packages/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 ${CROSS_DIR}/${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/packages/uclibc/uclibc.inc b/meta/packages/uclibc/uclibc.inc
index bb0b3643bc..18392b5c17 100644
--- a/meta/packages/uclibc/uclibc.inc
+++ b/meta/packages/uclibc/uclibc.inc
@@ -22,26 +22,32 @@ python __anonymous () {
22PROVIDES += "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc" 22PROVIDES += "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc"
23PROVIDES += "${@['virtual/libiconv', ''][bb.data.getVar('USE_NLS', d, 1) != 'yes']}" 23PROVIDES += "${@['virtual/libiconv', ''][bb.data.getVar('USE_NLS', d, 1) != 'yes']}"
24DEPENDS = "virtual/${TARGET_PREFIX}binutils \ 24DEPENDS = "virtual/${TARGET_PREFIX}binutils \
25 virtual/${TARGET_PREFIX}gcc-intermediate linux-libc-headers ncurses-native pax-utils-native" 25 virtual/${TARGET_PREFIX}gcc-intermediate linux-libc-headers ncurses-native pax-utils-native"
26RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
26 27
27# Blackfin needs a wrapper around ld 28# Blackfin needs a wrapper around ld
28DEPENDS_append_bfin = " elf2flt " 29#DEPENDS_append_bfin = " elf2flt "
29 30
30INHIBIT_DEFAULT_DEPS = "1" 31INHIBIT_DEFAULT_DEPS = "1"
31PARALLEL_MAKE = "" 32PARALLEL_MAKE = ""
32 33
33PACKAGES =+ "ldd uclibc-utils-dbg uclibc-utils uclibc-gconv uclibc-thread-db" 34PACKAGES =+ "ldd uclibc-utils-dbg uclibc-utils uclibc-gconv uclibc-thread-db"
34 35
36LEAD_SONAME = "libc.so"
37
35# The last line (gdb and lib1) is for uclinux-uclibc builds 38# The last line (gdb and lib1) is for uclinux-uclibc builds
36uclibc_baselibs = "/lib/libcrypt*.so* /lib/libdl*.so \ 39uclibc_baselibs = "${base_libdir}/libcrypt*.so.* ${base_libdir}/libcrypt-*.so \
37 /lib/libintl*.so* /lib/libm*.so \ 40 ${base_libdir}/libintl*.so.* ${base_libdir}/libintl-*.so \
38 /lib/libnsl*.so* /lib/libpthread*.so \ 41 ${base_libdir}/libnsl*.so.* ${base_libdir}/libnsl-*.so \
39 /lib/libresolv*.so* /lib/libutil*.so \ 42 ${base_libdir}/libresolv*.so.* ${base_libdir}/libresolv-*.so \
40 /lib/libuClibc*.so* /lib/ld*.so* \ 43 ${base_libdir}/ld*.so.* ${base_libdir}/ld-*.so \
41 /lib/libc*.so* /lib/libdl*.so* \ 44 ${base_libdir}/libc*.so.* ${base_libdir}/libuClibc-*.so \
42 /lib/libm*.so* /lib/libutil*.so* \ 45 ${base_libdir}/libdl*.so.* ${base_libdir}/libdl-*.so \
43 /lib/libpthread*.so* /lib/librt*.so* \ 46 ${base_libdir}/libm*.so.* ${base_libdir}/libm-*.so \
44 /usr/lib/libc.gdb /usr/lib/libc /lib/lib1.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 \
45 " 51 "
46FILES_${PN} = "${sysconfdir} ${uclibc_baselibs} /sbin/ldconfig \ 52FILES_${PN} = "${sysconfdir} ${uclibc_baselibs} /sbin/ldconfig \
47 ${libexecdir} ${datadir}/zoneinfo ${libdir}/locale" 53 ${libexecdir} ${datadir}/zoneinfo ${libdir}/locale"
@@ -61,19 +67,20 @@ RPROVIDES_uclibc-dev += "libc-dev"
61UCLIBC_LOCALE_FILE = "uClibc-locale-030818.tgz" 67UCLIBC_LOCALE_FILE = "uClibc-locale-030818.tgz"
62UCLIBC_LOCALE_FILE_arm = "uClibc-locale-030818.arm.tgz" 68UCLIBC_LOCALE_FILE_arm = "uClibc-locale-030818.arm.tgz"
63UCLIBC_LOCALE_URI = "http://www.uclibc.org/downloads/${UCLIBC_LOCALE_FILE}" 69UCLIBC_LOCALE_URI = "http://www.uclibc.org/downloads/${UCLIBC_LOCALE_FILE}"
64UCLIBC_LOCALE_URI_arm = "http://openembedded.org/dl/uclibc-locale/${UCLIBC_LOCALE_FILE}" 70UCLIBC_LOCALE_URI_arm = "http://wiki.openembedded.net/dl/uclibc-locale/${UCLIBC_LOCALE_FILE}"
65 71
66SRC_URI = "${@['${UCLIBC_LOCALE_URI}', ''][bb.data.getVar('USE_NLS', d, 1) != 'yes']} \ 72SRC_URI = "${@['${UCLIBC_LOCALE_URI}', ''][bb.data.getVar('USE_NLS', d, 1) != 'yes']} \
67 file://uClibc.config" 73 file://uClibc.config \
68 74 http://www.uclibc.org/downloads/uClibc-${PV}.tar.bz2 \
69UCLIBC_STAGE_PREFIX = "${STAGING_DIR_HOST}${prefix}" 75 "
70 76
71# do_stage barfs on a CC with whitepspace, therefore put the 'HOST_CC_ARCH' in 77# do_stage barfs on a CC with whitepspace, therefore put the 'HOST_CC_ARCH' in
72# the CFLAGS (for when building the utils). 78# the CFLAGS (for when building the utils).
73OEMAKE_NO_CC = "'OPTIMIZATION=' 'CPU_CFLAGS=${CFLAGS}' 'STRIPTOOL=true' 'LD=${LD}' \ 79OEMAKE_NO_CC = "'STRIPTOOL=true' 'LD=${LD}' \
74 'LOCALE_DATA_FILENAME=${UCLIBC_LOCALE_FILE}'" 80 'LOCALE_DATA_FILENAME=${UCLIBC_LOCALE_FILE}'"
75EXTRA_OEMAKE = "${OEMAKE_NO_CC} 'CC=${CC}' HOSTCFLAGS='-I${STAGING_INCDIR_NATIVE}'" 81EXTRA_OEMAKE = "${OEMAKE_NO_CC} 'CC=${CC}' \
76EXTRA_OEMAKE_task_do_populate_sysroot = "${OEMAKE_NO_CC}" 82 'HOSTCFLAGS=-I${STAGING_INCDIR_NATIVE}' \
83 ARCH=`grep TARGET_ARCH ${S}/.config|sed -e 's/TARGET_ARCH=//g'`"
77EXTRA_OEMAKE_task_do_package = "${OEMAKE_NO_CC}" 84EXTRA_OEMAKE_task_do_package = "${OEMAKE_NO_CC}"
78 85
79KERNEL_SOURCE = "${STAGING_INCDIR}" 86KERNEL_SOURCE = "${STAGING_INCDIR}"
@@ -94,7 +101,10 @@ configmangle = 's,^KERNEL_SOURCE=.*,KERNEL_SOURCE="${KERNEL_SOURCE}",g; \
94 s,^SHARED_LIB_LOADER_PATH=.*,SHARED_LIB_LOADER_PATH="/lib",; \ 101 s,^SHARED_LIB_LOADER_PATH=.*,SHARED_LIB_LOADER_PATH="/lib",; \
95 s,^SHARED_LIB_LOADER_PREFIX=.*,SHARED_LIB_LOADER_PREFIX="/lib",; \ 102 s,^SHARED_LIB_LOADER_PREFIX=.*,SHARED_LIB_LOADER_PREFIX="/lib",; \
96 s,.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y,g; \ 103 s,.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y,g; \
97 ${@["s,.*UCLIBC_HAS_LOCALE.*,# UCLIBC_HAS_LOCALE is not set,;", ""][bb.data.getVar("USE_NLS", d, 1) == "yes"]}' 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
98CFLAGS := "${@oe_filter_out('-I\S+', '${CFLAGS}', d)}" 108CFLAGS := "${@oe_filter_out('-I\S+', '${CFLAGS}', d)}"
99 109
100python () { 110python () {
@@ -133,84 +143,41 @@ do_configure() {
133 143
134 # Mangle the resulting .config depending on OE variables 144 # Mangle the resulting .config depending on OE variables
135 perl -i -p -e 's,^CROSS=.*,TARGET_ARCH=${TARGET_ARCH}\nCROSS=${TARGET_PREFIX},g' ${S}/Rules.mak 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
136 perl -i -p -e '${configmangle}' ${S}/.config 147 perl -i -p -e '${configmangle}' ${S}/.config
137 148
138 sed -i -e '/CONFIG_ARM_EABI/d' ${S}/.config 149 sed -i -e '/CONFIG_ARM_EABI/d' ${S}/.config
139 150
140 if [ "${TARGET_OS}" = "linux-gnueabi" -o "${TARGET_OS}" = "linux-uclibcgnueabi" ]; then 151 if [ `echo ${TARGET_ARCH} | grep -e '^arm'` ]; then
141 echo "CONFIG_ARM_EABI=y" >> ${S}/.config 152 if [ `echo ${TARGET_OS} | grep -e 'eabi$'` ]; then
142 else 153 echo "CONFIG_ARM_EABI=y" >> ${S}/.config
143 echo "# CONFIG_ARM_EABI is not set" >> ${S}/.config 154 else
155 echo "# CONFIG_ARM_EABI is not set" >> ${S}/.config
156 fi
144 fi 157 fi
145
146 yes '' | oe_runmake oldconfig 158 yes '' | oe_runmake oldconfig
147} 159}
148 160
149do_stage() {
150 # This MUST be done first because we
151 # will install crt1.o in the install_dev stage and gcc needs it
152
153 # Install into the staging dir
154 oe_runmake PREFIX= DEVEL_PREFIX=${UCLIBC_STAGE_PREFIX}/ \
155 RUNTIME_PREFIX=${UCLIBC_STAGE_PREFIX}/ \
156 install_dev install_runtime
157
158 # Install into the staging dir
159 oe_runmake PREFIX= DEVEL_PREFIX=${UCLIBC_STAGE_PREFIX}/ \
160 RUNTIME_PREFIX=${UCLIBC_STAGE_PREFIX}/ \
161 install_utils
162
163 # We don't really need this
164 rm -f ${UCLIBC_STAGE_PREFIX}/include/.cvsignore
165
166 # Fixup shared lib symlinks
167 ( cd ${UCLIBC_STAGE_PREFIX}/lib
168 for f in c crypt dl m nsl pthread resolv thread_db util; do
169 ln -sf lib${f}.so.? lib${f}.so
170 done
171 )
172
173 # This conflicts with the c++ version of this header
174 rm -f ${UCLIBC_STAGE_PREFIX}/include/bits/atomicity.h
175}
176
177do_install() { 161do_install() {
178 # Tis MUST be done first because we
179 # will install crt1.o in the install_dev stage and gcc needs it)
180 oe_runmake PREFIX= DEVEL_PREFIX=${UCLIBC_STAGE_PREFIX}/ \
181 RUNTIME_PREFIX=${UCLIBC_STAGE_PREFIX}/ \
182 install_dev install_runtime
183
184 oe_runmake PREFIX=${D} DEVEL_PREFIX=${prefix}/ RUNTIME_PREFIX=/ \ 162 oe_runmake PREFIX=${D} DEVEL_PREFIX=${prefix}/ RUNTIME_PREFIX=/ \
185 install_dev install_runtime 163 install_dev install_runtime
186 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
187 # We don't really need this in ${includedir} 170 # We don't really need this in ${includedir}
188 rm -f ${D}${prefix}/include/.cvsignore 171 rm -f ${D}${prefix}/include/.cvsignore
189 172
190 # This conflicts with the c++ version of this header 173 # This conflicts with the c++ version of this header
191 rm -f ${D}${prefix}/include/bits/atomicity.h 174 rm -f ${D}${prefix}/include/bits/atomicity.h
192 175
193 # ugh.. uclibc doesn't like obeying our path variables. 176 oe_runmake "SSP_ALL_CFLAGS=${TARGET_LINK_HASH_STYLE}" utils
194 if [ "${includedir}" != "${prefix}/include" ]; then 177 oe_runmake STRIPTOOL=true PREFIX=${D} DEVEL_PREFIX=${prefix}/ RUNTIME_PREFIX=/ \
195 install -d ${D}${includedir}
196 mv ${D}${prefix}/include/* ${D}${includedir}/
197 rmdir ${D}${prefix}/include
198 fi
199
200 if [ "${libdir}" != "${prefix}/lib" ]; then
201 install -d ${D}${libdir}
202 mv ${D}${prefix}/lib/* ${D}${libdir}/
203 rmdir ${D}${prefix}/lib
204 fi
205
206 if [ "${bindir}" != "/usr/bin" ]; then
207 install -d ${D}${bindir}
208 mv ${D}/usr/bin/* ${D}${bindir}/
209 rmdir ${D}/usr/bin
210 fi
211
212 oe_runmake utils
213 oe_runmake PREFIX=${D} DEVEL_PREFIX=${prefix}/ RUNTIME_PREFIX=/ \
214 install_utils 178 install_utils
179
180 # oe_runstrip needs +x on files
181 chmod +x ${D}/${base_libdir}/*
215} 182}
216 183
diff --git a/meta/packages/uclibc/uclibc_0.9.29.bb b/meta/packages/uclibc/uclibc_0.9.30.1.bb
index 6e3c8b0d1c..14b59b74e3 100644
--- a/meta/packages/uclibc/uclibc_0.9.29.bb
+++ b/meta/packages/uclibc/uclibc_0.9.30.1.bb
@@ -6,39 +6,28 @@
6# UCLIBC_BASE can be set in a distro file, but whether this works depends 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. 7# on whether the base patches apply to the selected (SRCDATE) svn release.
8# 8#
9UCLIBC_BASE ?= "0.9.29" 9UCLIBC_BASE ?= "0.9.30.1"
10PR = "r9"
11 10
12require uclibc.inc 11require uclibc.inc
12PR = "r0"
13 13
14PROVIDES += "virtual/${TARGET_PREFIX}libc-for-gcc" 14PROVIDES += "virtual/${TARGET_PREFIX}libc-for-gcc"
15 15
16DEPENDS += "ncurses-native"
17
18SRC_URI += "file://uClibc.machine file://uClibc.distro \ 16SRC_URI += "file://uClibc.machine file://uClibc.distro \
19 file://errno_values.h.patch;patch=1 \ 17 file://arm-linuxthreads.patch;patch=1 \
20 file://termios.h.patch;patch=1 \ 18 file://linuxthreads-changes.patch;patch=1 \
21 file://uClibc-0.9.29-001-fix-mmap.patch;patch=1 \ 19 file://pthread_atfork.patch;patch=1 \
22 file://uClibc-0.9.29-conditional-sched_affinity.patch;patch=1 \ 20 file://uclibc_ldso_use_O0.patch;patch=1 \
23 file://uClibc-0.9.29-fix-gethostent_r-failure-retval.patch;patch=1 \ 21 file://ldso_use_arm_dl_linux_resolve_in_thumb_mode.patch;patch=1 \
24 file://uClibc-0.9.29-fix-internal_function-definition.patch;patch=1 \ 22 file://gcc-4.4-fixlet.patch;patch=1 \
25 file://uClibc-0.9.29-rm-whitespace.patch;patch=1 \ 23 file://uclibc-c99-ldbl-math.patch;patch=1 \
26 file://arm_fix_alignment.patch;patch=1 \ 24 file://Use-__always_inline-instead-of-__inline__.patch;patch=1 \
27 " 25 "
28
29# mmap-unsigned-shift_bugid1303.patch
30# http://uclibc.org/lists/uclibc-cvs/2007-May/011360.html;patch=1"
31
32#recent versions uclibc require real kernel headers 26#recent versions uclibc require real kernel headers
33PACKAGE_ARCH = "${MACHINE_ARCH}" 27PACKAGE_ARCH = "${MACHINE_ARCH}"
34 28
35#as stated above, uclibc needs real kernel-headers 29#as stated above, uclibc needs real kernel-headers
36#however: we can't depend on virtual/kernel when nptl hits due to depends deadlocking .... 30#however: we can't depend on virtual/kernel when nptl hits due to depends deadlocking ....
37KERNEL_SOURCE = "${CROSS_DIR}/${TARGET_SYS}" 31KERNEL_SOURCE = "${STAGING_DIR_HOST}/${exec_prefix}"
38
39SRC_URI += "http://www.uclibc.org/downloads/uClibc-${PV}.tar.bz2"
40 32
41S = "${WORKDIR}/uClibc-${UCLIBC_BASE}" 33S = "${WORKDIR}/uClibc-${UCLIBC_BASE}"
42
43LEAD_SONAME = "libc.so"
44