From bf5cbe6a5ad0d031d00e10ecbf8615a52eb65342 Mon Sep 17 00:00:00 2001
From: Waldemar Brodkorb <mail@waldemar-brodkorb.de>
Date: Fri, 21 Sep 2012 10:45:38 +0200
Subject: update uClibc to 0.9.33.2

---
 toolchain/uClibc/Makefile                          |   2 +-
 toolchain/uClibc/Makefile.inc                      |   4 +-
 .../uClibc/patches/0.9.32.1/avr32_atomic_fix.patch |  10 +
 toolchain/uClibc/patches/0.9.32.1/epoll.patch      |  19 ++
 .../uClibc/patches/0.9.32.1/gnutar-problem.patch   |  18 ++
 .../uClibc/patches/0.9.32.1/rpath-origin.patch     | 174 +++++++++++++++
 .../patches/0.9.32.1/uClibc-0.9.32.1-unshare.patch |  82 +++++++
 .../uClibc/patches/0.9.32.1/uClibc-sigaction.patch | 155 +++++++++++++
 .../patches/0.9.32.1/uClibc-sigaction2.patch       | 247 +++++++++++++++++++++
 .../patches/0.9.32.1/uClibc-weak-sigprocmask.patch |  21 ++
 toolchain/uClibc/patches/avr32_atomic_fix.patch    |  10 -
 toolchain/uClibc/patches/epoll.patch               |  19 --
 toolchain/uClibc/patches/gnutar-problem.patch      |  18 --
 toolchain/uClibc/patches/rpath-origin.patch        | 174 ---------------
 .../uClibc/patches/uClibc-0.9.32.1-unshare.patch   |  82 -------
 toolchain/uClibc/patches/uClibc-sigaction.patch    | 155 -------------
 toolchain/uClibc/patches/uClibc-sigaction2.patch   | 247 ---------------------
 .../uClibc/patches/uClibc-weak-sigprocmask.patch   |  21 --
 18 files changed, 729 insertions(+), 729 deletions(-)
 create mode 100644 toolchain/uClibc/patches/0.9.32.1/avr32_atomic_fix.patch
 create mode 100644 toolchain/uClibc/patches/0.9.32.1/epoll.patch
 create mode 100644 toolchain/uClibc/patches/0.9.32.1/gnutar-problem.patch
 create mode 100644 toolchain/uClibc/patches/0.9.32.1/rpath-origin.patch
 create mode 100644 toolchain/uClibc/patches/0.9.32.1/uClibc-0.9.32.1-unshare.patch
 create mode 100644 toolchain/uClibc/patches/0.9.32.1/uClibc-sigaction.patch
 create mode 100644 toolchain/uClibc/patches/0.9.32.1/uClibc-sigaction2.patch
 create mode 100644 toolchain/uClibc/patches/0.9.32.1/uClibc-weak-sigprocmask.patch
 delete mode 100644 toolchain/uClibc/patches/avr32_atomic_fix.patch
 delete mode 100644 toolchain/uClibc/patches/epoll.patch
 delete mode 100644 toolchain/uClibc/patches/gnutar-problem.patch
 delete mode 100644 toolchain/uClibc/patches/rpath-origin.patch
 delete mode 100644 toolchain/uClibc/patches/uClibc-0.9.32.1-unshare.patch
 delete mode 100644 toolchain/uClibc/patches/uClibc-sigaction.patch
 delete mode 100644 toolchain/uClibc/patches/uClibc-sigaction2.patch
 delete mode 100644 toolchain/uClibc/patches/uClibc-weak-sigprocmask.patch

(limited to 'toolchain')

diff --git a/toolchain/uClibc/Makefile b/toolchain/uClibc/Makefile
index 5d3638cbd..91e3fb654 100644
--- a/toolchain/uClibc/Makefile
+++ b/toolchain/uClibc/Makefile
@@ -39,7 +39,7 @@ UCLIBCCFG=uclibc.config.little.mips64
 endif
 
 $(WRKBUILD)/.headers:
-	$(SED) 's,^CROSS=.*,CROSS=$(TARGET_CROSS),g' $(WRKBUILD)/Rules.mak
+	$(SED) 's,^CROSS_COMPILE=.*,CROSS_COMPILE=$(TARGET_CROSS),g' $(WRKBUILD)/Rules.mak
 	sed -e 's^KERNEL_HEADERS.*$$KERNEL_HEADERS=\"${STAGING_TARGET_DIR}/usr/include\"' \
 	    $(TOPDIR)/target/$(ADK_TARGET_ARCH)/$(UCLIBCCFG) >${WRKBUILD}/.config
 ifneq ($(ADK_DEBUG),)
diff --git a/toolchain/uClibc/Makefile.inc b/toolchain/uClibc/Makefile.inc
index 73a89f91f..cdafb2c9d 100644
--- a/toolchain/uClibc/Makefile.inc
+++ b/toolchain/uClibc/Makefile.inc
@@ -2,8 +2,8 @@
 # material, please see the LICENCE file in the top-level directory.
 
 PKG_NAME:=		uClibc
-PKG_VERSION:=		0.9.32.1
+PKG_VERSION:=		0.9.33.2
 PKG_RELEASE:=		1
-PKG_MD5SUM:=		ade6e441242be5cdd735fec97954a54a
+PKG_MD5SUM:=		a338aaffc56f0f5040e6d9fa8a12eda1
 PKG_SITES:=		http://uclibc.org/downloads/
 DISTFILES:=		$(PKG_NAME)-$(PKG_VERSION).tar.bz2
diff --git a/toolchain/uClibc/patches/0.9.32.1/avr32_atomic_fix.patch b/toolchain/uClibc/patches/0.9.32.1/avr32_atomic_fix.patch
new file mode 100644
index 000000000..5e5460a3d
--- /dev/null
+++ b/toolchain/uClibc/patches/0.9.32.1/avr32_atomic_fix.patch
@@ -0,0 +1,10 @@
+--- a/libc/sysdeps/linux/avr32/bits/atomic.h
++++ b/libc/sysdeps/linux/avr32/bits/atomic.h
+@@ -28,6 +28,7 @@ typedef uintmax_t uatomic_max_t;
+ 
+ #define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval)	\
+ 	({								\
++		__uint32_t __result;					\
+ 		__typeof__(*(mem)) __prev;				\
+ 		__asm__ __volatile__(					\
+ 			"/* __arch_compare_and_exchange_val_32_acq */\n" \
diff --git a/toolchain/uClibc/patches/0.9.32.1/epoll.patch b/toolchain/uClibc/patches/0.9.32.1/epoll.patch
new file mode 100644
index 000000000..4d9cc38cd
--- /dev/null
+++ b/toolchain/uClibc/patches/0.9.32.1/epoll.patch
@@ -0,0 +1,19 @@
+diff -Nur uClibc-0.9.32.orig/libc/sysdeps/linux/common/epoll.c uClibc-0.9.32/libc/sysdeps/linux/common/epoll.c
+--- uClibc-0.9.32.orig/libc/sysdeps/linux/common/epoll.c	2011-06-08 21:35:20.000000000 +0200
++++ uClibc-0.9.32/libc/sysdeps/linux/common/epoll.c	2011-06-15 14:18:06.798202250 +0200
+@@ -67,12 +67,13 @@
+ int __libc_epoll_pwait(int epfd, struct epoll_event *events, int maxevents,
+ 						int timeout, const sigset_t *set)
+ {
++	int nsig = _NSIG / 8;
+ 	if (SINGLE_THREAD_P)
+-		return INLINE_SYSCALL(epoll_pwait, 6, epfd, events, maxevents, timeout, set, _NSIG / 8);
++		return INLINE_SYSCALL(epoll_pwait, 6, epfd, events, maxevents, timeout, set, nsig);
+ # ifdef __UCLIBC_HAS_THREADS_NATIVE__
+ 	else {
+ 		int oldtype = LIBC_CANCEL_ASYNC ();
+-		int result = INLINE_SYSCALL(epoll_pwait, 6, epfd, events, maxevents, timeout, set, _NSIG / 8);
++		int result = INLINE_SYSCALL(epoll_pwait, 6, epfd, events, maxevents, timeout, set, nsig);
+ 		LIBC_CANCEL_RESET (oldtype);
+ 		return result;
+ 	}
diff --git a/toolchain/uClibc/patches/0.9.32.1/gnutar-problem.patch b/toolchain/uClibc/patches/0.9.32.1/gnutar-problem.patch
new file mode 100644
index 000000000..a3d71131a
--- /dev/null
+++ b/toolchain/uClibc/patches/0.9.32.1/gnutar-problem.patch
@@ -0,0 +1,18 @@
+diff -Nur uClibc-0.9.32-rc3.orig/Makefile.in uClibc-0.9.32-rc3/Makefile.in
+--- uClibc-0.9.32-rc3.orig/Makefile.in	2011-03-16 20:11:13.000000000 +0100
++++ uClibc-0.9.32-rc3/Makefile.in	2011-05-20 11:16:00.000000000 +0200
+@@ -385,13 +385,13 @@
+ ifeq ($(HAVE_SHARED),y)
+ 	$(INSTALL) -m 755 $(top_builddir)lib/lib*-$(VERSION).so \
+ 		$(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)
+-	(cd $(top_builddir)lib && $(TAR) -cf - *.so.*) | $(TAR) -xf - -C $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)
+ 	@if [ -x $(top_builddir)lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so ] ; then \
+ 		set -e; \
+ 		$(SHELL_SET_X); \
+ 		$(INSTALL) -m 755 $(top_builddir)lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so \
+ 			$(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR); \
+ 	fi
++	(cd $(top_builddir)lib && $(TAR) -cf - *.so.*) | $(TAR) -xf - -C $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)
+ endif
+ 
+ utils: | pregen
diff --git a/toolchain/uClibc/patches/0.9.32.1/rpath-origin.patch b/toolchain/uClibc/patches/0.9.32.1/rpath-origin.patch
new file mode 100644
index 000000000..c2bd2e8ab
--- /dev/null
+++ b/toolchain/uClibc/patches/0.9.32.1/rpath-origin.patch
@@ -0,0 +1,174 @@
+diff -Nur uClibc-0.9.32.orig//ldso/ldso/dl-elf.c uClibc-0.9.32/ldso/ldso/dl-elf.c
+--- uClibc-0.9.32.orig//ldso/ldso/dl-elf.c	2011-06-08 21:35:20.000000000 +0200
++++ uClibc-0.9.32/ldso/ldso/dl-elf.c	2011-08-09 11:19:18.325314589 +0200
+@@ -133,53 +133,59 @@
+  * in uClibc/ldso/util/ldd.c */
+ static struct elf_resolve *
+ search_for_named_library(const char *name, int secure, const char *path_list,
+-	struct dyn_elf **rpnt)
++	struct dyn_elf **rpnt, const char *origin)
+ {
+-	char *path, *path_n, *mylibname;
++	char *mylibname;
++	const char *p, *pn;
+ 	struct elf_resolve *tpnt;
+-	int done;
++	int plen;
+ 
+ 	if (path_list==NULL)
+ 		return NULL;
+ 
+-	/* We need a writable copy of this string, but we don't
+-	 * need this allocated permanently since we don't want
+-	 * to leak memory, so use alloca to put path on the stack */
+-	done = _dl_strlen(path_list);
+-	path = alloca(done + 1);
+-
+ 	/* another bit of local storage */
+ 	mylibname = alloca(2050);
+ 
+-	_dl_memcpy(path, path_list, done+1);
+-
+ 	/* Unlike ldd.c, don't bother to eliminate double //s */
+ 
+ 	/* Replace colons with zeros in path_list */
+ 	/* : at the beginning or end of path maps to CWD */
+ 	/* :: anywhere maps CWD */
+ 	/* "" maps to CWD */
+-	done = 0;
+-	path_n = path;
+-	do {
+-		if (*path == 0) {
+-			*path = ':';
+-			done = 1;
++	for (p = path_list; p != NULL; p = pn) { 
++		pn = _dl_strchr(p + 1, ':');
++		if (pn != NULL) {
++			plen = pn - p;
++			pn++;
++		} else
++			plen = _dl_strlen(p);
++
++		if (plen >= 7 && _dl_memcmp(p, "$ORIGIN", 7) == 0) {
++			int olen;
++			if (secure && plen != 7)
++				continue;
++			if (origin == NULL)
++				continue;
++			for (olen = _dl_strlen(origin) - 1; olen >= 0 && origin[olen] != '/'; olen--)
++				;
++			if (olen <= 0)
++				continue;
++			_dl_memcpy(&mylibname[0], origin, olen);
++			_dl_memcpy(&mylibname[olen], p + 7, plen - 7);
++			mylibname[olen + plen - 7] = 0;
++		} else if (plen != 0) {
++			_dl_memcpy(mylibname, p, plen);
++			mylibname[plen] = 0; 
++		} else {
++			_dl_strcpy(mylibname, ".");
+ 		}
+-		if (*path == ':') {
+-			*path = 0;
+-			if (*path_n)
+-				_dl_strcpy(mylibname, path_n);
+-			else
+-				_dl_strcpy(mylibname, "."); /* Assume current dir if empty path */
+-			_dl_strcat(mylibname, "/");
+-			_dl_strcat(mylibname, name);
+-			if ((tpnt = _dl_load_elf_shared_library(secure, rpnt, mylibname)) != NULL)
+-				return tpnt;
+-			path_n = path+1;
+-		}
+-		path++;
+-	} while (!done);
++		_dl_strcat(mylibname, "/");
++		_dl_strcat(mylibname, name); 
++		
++		tpnt = _dl_load_elf_shared_library(secure, rpnt, mylibname);
++		if (tpnt != NULL)
++			return tpnt;
++	}
+ 	return NULL;
+ }
+ 
+@@ -231,7 +237,7 @@
+ 	if (pnt) {
+ 		pnt += (unsigned long) tpnt->dynamic_info[DT_STRTAB];
+ 		_dl_if_debug_dprint("\tsearching RPATH='%s'\n", pnt);
+-		if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt)) != NULL)
++		if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt, tpnt->libname)) != NULL)
+ 			return tpnt1;
+ 	}
+ #endif
+@@ -239,7 +245,7 @@
+ 	/* Check in LD_{ELF_}LIBRARY_PATH, if specified and allowed */
+ 	if (_dl_library_path) {
+ 		_dl_if_debug_dprint("\tsearching LD_LIBRARY_PATH='%s'\n", _dl_library_path);
+-		if ((tpnt1 = search_for_named_library(libname, secure, _dl_library_path, rpnt)) != NULL)
++		if ((tpnt1 = search_for_named_library(libname, secure, _dl_library_path, rpnt, NULL)) != NULL)
+ 		{
+ 			return tpnt1;
+ 		}
+@@ -253,7 +259,7 @@
+ 	if (pnt) {
+ 		pnt += (unsigned long) tpnt->dynamic_info[DT_STRTAB];
+ 		_dl_if_debug_dprint("\tsearching RUNPATH='%s'\n", pnt);
+-		if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt)) != NULL)
++		if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt, NULL)) != NULL)
+ 			return tpnt1;
+ 	}
+ #endif
+@@ -287,7 +293,7 @@
+ 	/* Look for libraries wherever the shared library loader
+ 	 * was installed */
+ 	_dl_if_debug_dprint("\tsearching ldso dir='%s'\n", _dl_ldsopath);
+-	tpnt1 = search_for_named_library(libname, secure, _dl_ldsopath, rpnt);
++	tpnt1 = search_for_named_library(libname, secure, _dl_ldsopath, rpnt, NULL);
+ 	if (tpnt1 != NULL)
+ 		return tpnt1;
+ 
+@@ -300,7 +306,7 @@
+ #ifndef __LDSO_CACHE_SUPPORT__
+ 					":" UCLIBC_RUNTIME_PREFIX "usr/X11R6/lib"
+ #endif
+-					, rpnt);
++					, rpnt, NULL);
+ 	if (tpnt1 != NULL)
+ 		return tpnt1;
+ 
+diff -Nur uClibc-0.9.32.orig//ldso/ldso/ldso.c uClibc-0.9.32/ldso/ldso/ldso.c
+--- uClibc-0.9.32.orig//ldso/ldso/ldso.c	2011-06-08 21:35:20.000000000 +0200
++++ uClibc-0.9.32/ldso/ldso/ldso.c	2011-08-09 11:15:04.135386129 +0200
+@@ -272,6 +272,20 @@
+ 	}
+ }
+ 
++static void _dl_setup_progname(const char *argv0)
++{
++	char image[PATH_MAX];
++	ssize_t s;
++
++	s = _dl_readlink("/proc/self/exe", image, sizeof(image));
++	if (s > 0 && image[0] == '/') {
++	 image[s] = 0;
++	 _dl_progname = _dl_strdup(image);
++	} else if (argv0) {
++	 _dl_progname = argv0;
++	}
++}
++
+ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
+ 			  ElfW(auxv_t) auxvt[AT_EGID + 1], char **envp,
+ 			  char **argv
+@@ -321,9 +335,7 @@
+ 	 * been fixed up by now.  Still no function calls outside of this
+ 	 * library, since the dynamic resolver is not yet ready.
+ 	 */
+-	if (argv[0]) {
+-		_dl_progname = argv[0];
+-	}
++	_dl_setup_progname(argv[0]);
+ 
+ 	if (_start == (void *) auxvt[AT_ENTRY].a_un.a_val) {
+ 		_dl_dprintf(_dl_debug_file, "Standalone execution is not supported yet\n");
diff --git a/toolchain/uClibc/patches/0.9.32.1/uClibc-0.9.32.1-unshare.patch b/toolchain/uClibc/patches/0.9.32.1/uClibc-0.9.32.1-unshare.patch
new file mode 100644
index 000000000..5820e15bb
--- /dev/null
+++ b/toolchain/uClibc/patches/0.9.32.1/uClibc-0.9.32.1-unshare.patch
@@ -0,0 +1,82 @@
+Backport of unshare() syscall.
+From uClibc git 19dd090a0f68765db87990ef8eda9bf77bb29581
+
+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
+
+---
+diff -Nura uClibc-0.9.32.orig/libc/sysdeps/linux/common/bits/sched.h uClibc-0.9.32/libc/sysdeps/linux/common/bits/sched.h
+--- uClibc-0.9.32.orig/libc/sysdeps/linux/common/bits/sched.h	2011-12-02 23:54:30.571841170 -0300
++++ uClibc-0.9.32/libc/sysdeps/linux/common/bits/sched.h	2011-12-02 23:57:45.874205079 -0300
+@@ -58,7 +58,13 @@
+ 				      force CLONE_PTRACE on this clone.  */
+ # define CLONE_CHILD_SETTID 0x01000000 /* Store TID in userlevel buffer in
+ 					  the child.  */
+-# define CLONE_STOPPED	0x02000000 /* Start in stopped state.  */
++# define CLONE_STOPPED 0x02000000 /* Start in stopped state.  */
++# define CLONE_NEWUTS  0x04000000      /* New utsname group.  */
++# define CLONE_NEWIPC  0x08000000      /* New ipcs.  */
++# define CLONE_NEWUSER 0x10000000      /* New user namespace.  */
++# define CLONE_NEWPID  0x20000000      /* New pid namespace.  */
++# define CLONE_NEWNET  0x40000000      /* New network namespace.  */
++# define CLONE_IO      0x80000000      /* Clone I/O context.  */
+ #endif
+ 
+ /* The official definition.  */
+@@ -74,11 +80,9 @@
+ extern int clone (int (*__fn) (void *__arg), void *__child_stack,
+ 		  int __flags, void *__arg, ...) __THROW;
+ 
+-#if 0
+ /* Unshare the specified resources.  */
+ extern int unshare (int __flags) __THROW;
+ #endif
+-#endif
+ 
+ __END_DECLS
+ 
+diff -Nura uClibc-0.9.32.orig/libc/sysdeps/linux/common/Makefile.in uClibc-0.9.32/libc/sysdeps/linux/common/Makefile.in
+--- uClibc-0.9.32.orig/libc/sysdeps/linux/common/Makefile.in	2011-12-02 23:54:30.577841215 -0300
++++ uClibc-0.9.32/libc/sysdeps/linux/common/Makefile.in	2011-12-02 23:56:08.801527166 -0300
+@@ -24,7 +24,8 @@
+ 	remap_file_pages.c sched_getaffinity.c sched_setaffinity.c \
+ 	sendfile64.c sendfile.c setfsgid.c setfsuid.c setresuid.c \
+ 	splice.c vmsplice.c tee.c signalfd.c swapoff.c swapon.c \
+-	sync_file_range.c sysctl.c sysinfo.c timerfd.c uselib.c vhangup.c
++	sync_file_range.c sysctl.c sysinfo.c timerfd.c unshare.c uselib.c \
++	vhangup.c
+ # NPTL needs these internally: madvise.c
+ CSRC-$(findstring y,$(UCLIBC_LINUX_SPECIFIC)$(UCLIBC_HAS_THREADS_NATIVE)) += madvise.c
+ ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
+diff -Nura uClibc-0.9.32.orig/libc/sysdeps/linux/common/stubs.c uClibc-0.9.32/libc/sysdeps/linux/common/stubs.c
+--- uClibc-0.9.32.orig/libc/sysdeps/linux/common/stubs.c	2011-12-02 23:54:30.577841215 -0300
++++ uClibc-0.9.32/libc/sysdeps/linux/common/stubs.c	2011-12-02 23:58:18.803435042 -0300
+@@ -278,6 +278,10 @@
+ make_stub(umount2)
+ #endif
+ 
++#if !defined __NR_unshare && defined __UCLIBC_LINUX_SPECIFIC__
++make_stub(unshare)
++#endif
++
+ #ifndef __NR_utimensat
+ make_stub(futimens)
+ make_stub(utimensat)
+diff -Nura uClibc-0.9.32.orig/libc/sysdeps/linux/common/unshare.c uClibc-0.9.32/libc/sysdeps/linux/common/unshare.c
+--- uClibc-0.9.32.orig/libc/sysdeps/linux/common/unshare.c	1969-12-31 21:00:00.000000000 -0300
++++ uClibc-0.9.32/libc/sysdeps/linux/common/unshare.c	2011-12-02 23:58:42.693601880 -0300
+@@ -0,0 +1,15 @@
++/* vi: set sw=4 ts=4: */
++/*
++ * unshare() for uClibc
++ *
++ * Copyright (C) 2011 Henning Heinold <heinold@inf.fu-berlin.de>
++ *
++ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
++ */
++
++#include <sys/syscall.h>
++#include <sched.h>
++
++#if defined __NR_unshare
++_syscall1(int, unshare, int, flags)
++#endif
diff --git a/toolchain/uClibc/patches/0.9.32.1/uClibc-sigaction.patch b/toolchain/uClibc/patches/0.9.32.1/uClibc-sigaction.patch
new file mode 100644
index 000000000..0077191e5
--- /dev/null
+++ b/toolchain/uClibc/patches/0.9.32.1/uClibc-sigaction.patch
@@ -0,0 +1,155 @@
+diff -Nur uClibc-0.9.32.1/libc/signal/sigaction.c uClibc.new/libc/signal/sigaction.c
+--- uClibc-0.9.32.1/libc/signal/sigaction.c	2011-12-30 12:11:07.000000000 +0100
++++ uClibc.new/libc/signal/sigaction.c	2012-02-17 14:49:51.000000000 +0100
+@@ -82,6 +82,11 @@
+ 
+ 
+ #ifndef LIBC_SIGACTION
++# ifndef __UCLIBC_HAS_THREADS__
++strong_alias(__libc_sigaction,sigaction)
++libc_hidden_def(sigaction)
++# else
+ weak_alias(__libc_sigaction,sigaction)
+ libc_hidden_weak(sigaction)
++# endif
+ #endif
+diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/arm/sigaction.c uClibc.new/libc/sysdeps/linux/arm/sigaction.c
+--- uClibc-0.9.32.1/libc/sysdeps/linux/arm/sigaction.c	2011-12-30 12:11:07.000000000 +0100
++++ uClibc.new/libc/sysdeps/linux/arm/sigaction.c	2012-02-17 14:49:51.000000000 +0100
+@@ -96,6 +96,11 @@
+ 
+ 
+ #ifndef LIBC_SIGACTION
++# ifndef __UCLIBC_HAS_THREADS__
++strong_alias(__libc_sigaction,sigaction)
++libc_hidden_def(sigaction)
++# else
+ weak_alias(__libc_sigaction,sigaction)
+ libc_hidden_weak(sigaction)
++# endif
+ #endif
+diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/avr32/sigaction.c uClibc.new/libc/sysdeps/linux/avr32/sigaction.c
+--- uClibc-0.9.32.1/libc/sysdeps/linux/avr32/sigaction.c	2011-12-30 12:11:07.000000000 +0100
++++ uClibc.new/libc/sysdeps/linux/avr32/sigaction.c	2012-02-17 14:49:51.000000000 +0100
+@@ -38,6 +38,11 @@
+ }
+ 
+ #ifndef LIBC_SIGACTION
+-weak_alias(__libc_sigaction, sigaction)
++# ifndef __UCLIBC_HAS_THREADS__
++strong_alias(__libc_sigaction,sigaction)
++libc_hidden_def(sigaction)
++# else
++weak_alias(__libc_sigaction,sigaction)
+ libc_hidden_weak(sigaction)
++# endif
+ #endif
+diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/c6x/sigaction.c uClibc.new/libc/sysdeps/linux/c6x/sigaction.c
+--- uClibc-0.9.32.1/libc/sysdeps/linux/c6x/sigaction.c	2011-12-30 12:11:07.000000000 +0100
++++ uClibc.new/libc/sysdeps/linux/c6x/sigaction.c	2012-02-17 14:49:51.000000000 +0100
+@@ -75,10 +75,16 @@
+ }
+ 
+ #ifndef LIBC_SIGACTION
++# ifndef __UCLIBC_HAS_THREADS__
++strong_alias(__libc_sigaction,sigaction)
++libc_hidden_def(sigaction)
++# else
+ weak_alias(__libc_sigaction,sigaction)
+ libc_hidden_weak(sigaction)
++# endif
+ #endif
+ 
++
+ /* NOTE: Please think twice before making any changes to the bits of
+    code below.  GDB needs some intimate knowledge about it to
+    recognize them as signal trampolines, and make backtraces through
+diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/i386/sigaction.c uClibc.new/libc/sysdeps/linux/i386/sigaction.c
+--- uClibc-0.9.32.1/libc/sysdeps/linux/i386/sigaction.c	2011-12-30 12:11:07.000000000 +0100
++++ uClibc.new/libc/sysdeps/linux/i386/sigaction.c	2012-02-17 14:49:51.000000000 +0100
+@@ -95,8 +95,13 @@
+ 
+ 
+ #ifndef LIBC_SIGACTION
++# ifndef __UCLIBC_HAS_THREADS__
++strong_alias(__libc_sigaction,sigaction)
++libc_hidden_def(sigaction)
++# else
+ weak_alias(__libc_sigaction,sigaction)
+ libc_hidden_weak(sigaction)
++# endif
+ #endif
+ 
+ 
+diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/mips/sigaction.c uClibc.new/libc/sysdeps/linux/mips/sigaction.c
+--- uClibc-0.9.32.1/libc/sysdeps/linux/mips/sigaction.c	2011-12-30 12:11:07.000000000 +0100
++++ uClibc.new/libc/sysdeps/linux/mips/sigaction.c	2012-02-17 14:49:51.000000000 +0100
+@@ -100,8 +100,13 @@
+ 
+ 
+ #ifndef LIBC_SIGACTION
++# ifndef __UCLIBC_HAS_THREADS__
++strong_alias(__libc_sigaction,sigaction)
++libc_hidden_def(sigaction)
++# else
+ weak_alias(__libc_sigaction,sigaction)
+ libc_hidden_weak(sigaction)
++# endif
+ #endif
+ 
+ 
+diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/sparc/sigaction.c uClibc.new/libc/sysdeps/linux/sparc/sigaction.c
+--- uClibc-0.9.32.1/libc/sysdeps/linux/sparc/sigaction.c	2011-12-30 12:11:07.000000000 +0100
++++ uClibc.new/libc/sysdeps/linux/sparc/sigaction.c	2012-02-17 14:49:51.000000000 +0100
+@@ -65,11 +65,18 @@
+ 	return ret;
+ }
+ 
++
+ #ifndef LIBC_SIGACTION
++# ifndef __UCLIBC_HAS_THREADS__
++strong_alias(__libc_sigaction,sigaction)
++libc_hidden_def(sigaction)
++# else
+ weak_alias(__libc_sigaction,sigaction)
+ libc_hidden_weak(sigaction)
++# endif
+ #endif
+ 
++
+ static void
+ __rt_sigreturn_stub(void)
+ {
+diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/x86_64/sigaction.c uClibc.new/libc/sysdeps/linux/x86_64/sigaction.c
+--- uClibc-0.9.32.1/libc/sysdeps/linux/x86_64/sigaction.c	2011-12-30 12:11:07.000000000 +0100
++++ uClibc.new/libc/sysdeps/linux/x86_64/sigaction.c	2012-02-17 14:49:51.000000000 +0100
+@@ -99,8 +99,13 @@
+ 
+ 
+ #ifndef LIBC_SIGACTION
++# ifndef __UCLIBC_HAS_THREADS__
++strong_alias(__libc_sigaction,sigaction)
++libc_hidden_def(sigaction)
++# else
+ weak_alias(__libc_sigaction,sigaction)
+ libc_hidden_weak(sigaction)
++# endif
+ #endif
+ 
+ 
+diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/xtensa/sigaction.c uClibc.new/libc/sysdeps/linux/xtensa/sigaction.c
+--- uClibc-0.9.32.1/libc/sysdeps/linux/xtensa/sigaction.c	2011-12-30 12:11:07.000000000 +0100
++++ uClibc.new/libc/sysdeps/linux/xtensa/sigaction.c	2012-02-17 14:49:51.000000000 +0100
+@@ -34,6 +34,11 @@
+ }
+ 
+ #ifndef LIBC_SIGACTION
+-weak_alias(__libc_sigaction, sigaction)
++# ifndef __UCLIBC_HAS_THREADS__
++strong_alias(__libc_sigaction,sigaction)
++libc_hidden_def(sigaction)
++# else
++weak_alias(__libc_sigaction,sigaction)
+ libc_hidden_weak(sigaction)
++# endif
+ #endif
diff --git a/toolchain/uClibc/patches/0.9.32.1/uClibc-sigaction2.patch b/toolchain/uClibc/patches/0.9.32.1/uClibc-sigaction2.patch
new file mode 100644
index 000000000..f33e14dde
--- /dev/null
+++ b/toolchain/uClibc/patches/0.9.32.1/uClibc-sigaction2.patch
@@ -0,0 +1,247 @@
+diff -Nur uClibc-0.9.32.1/libc/signal/Makefile.in uClibc.new/libc/signal/Makefile.in
+--- uClibc-0.9.32.1/libc/signal/Makefile.in	2011-12-30 12:11:07.000000000 +0100
++++ uClibc.new/libc/signal/Makefile.in	2012-02-17 15:13:33.000000000 +0100
+@@ -17,7 +17,7 @@
+ CSRC-$(UCLIBC_SUSV4_LEGACY) += sigintr.c
+ 
+ ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
+-CSRC-y:=$(filter-out raise.c sigaction.c,$(CSRC-y))
++CSRC-y:=$(filter-out raise.c,$(CSRC-y))
+ endif
+ 
+ ifneq ($(strip $(ARCH_OBJS)),)
+diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/arm/Makefile.arch uClibc.new/libc/sysdeps/linux/arm/Makefile.arch
+--- uClibc-0.9.32.1/libc/sysdeps/linux/arm/Makefile.arch	2011-12-30 12:11:07.000000000 +0100
++++ uClibc.new/libc/sysdeps/linux/arm/Makefile.arch	2012-02-17 15:13:33.000000000 +0100
+@@ -5,11 +5,7 @@
+ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ #
+ 
+-CSRC := brk.c ioperm.c iopl.c mmap.c __syscall_error.c
+-
+-ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
+-CSRC += sigaction.c
+-endif
++CSRC := brk.c ioperm.c iopl.c mmap.c __syscall_error.c sigaction.c
+ 
+ SSRC := \
+ 	__longjmp.S setjmp.S bsd-setjmp.S \
+diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/i386/Makefile.arch uClibc.new/libc/sysdeps/linux/i386/Makefile.arch
+--- uClibc-0.9.32.1/libc/sysdeps/linux/i386/Makefile.arch	2011-12-30 12:11:07.000000000 +0100
++++ uClibc.new/libc/sysdeps/linux/i386/Makefile.arch	2012-02-17 15:13:33.000000000 +0100
+@@ -5,11 +5,7 @@
+ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ #
+ 
+-CSRC := brk.c __syscall_error.c
+-
+-ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
+-CSRC += sigaction.c
+-endif
++CSRC := brk.c __syscall_error.c sigaction.c
+ 
+ SSRC := \
+ 	__longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \
+diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/mips/Makefile.arch uClibc.new/libc/sysdeps/linux/mips/Makefile.arch
+--- uClibc-0.9.32.1/libc/sysdeps/linux/mips/Makefile.arch	2011-12-30 12:11:07.000000000 +0100
++++ uClibc.new/libc/sysdeps/linux/mips/Makefile.arch	2012-02-17 15:13:33.000000000 +0100
+@@ -7,7 +7,7 @@
+ 
+ CSRC := \
+ 	__longjmp.c  brk.c setjmp_aux.c mmap.c \
+-	cacheflush.c pread_write.c sysmips.c _test_and_set.c \
++	cacheflush.c pread_write.c sigaction.c sysmips.c _test_and_set.c \
+ 	readahead.c
+ 
+ SSRC := bsd-_setjmp.S bsd-setjmp.S setjmp.S syscall.S pipe.S syscall_error.S
+@@ -17,7 +17,6 @@
+ endif
+ 
+ ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
+-CSRC += sigaction.c
+ SSRC += vfork.S clone.S
+ endif
+ 
+diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/sparc/Makefile.arch uClibc.new/libc/sysdeps/linux/sparc/Makefile.arch
+--- uClibc-0.9.32.1/libc/sysdeps/linux/sparc/Makefile.arch	2011-12-30 12:11:07.000000000 +0100
++++ uClibc.new/libc/sysdeps/linux/sparc/Makefile.arch	2012-02-17 15:14:20.000000000 +0100
+@@ -5,15 +5,14 @@
+ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ #
+ 
+-CSRC := brk.c __syscall_error.c
++CSRC := brk.c __syscall_error.c sigaction.c
+ 
+ SSRC := \
+ 	__longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \
+ 	syscall.S urem.S udiv.S umul.S sdiv.S rem.S pipe.S
+ 
+ ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
+-CSRC += sigaction.c
+-SSRC += fork.S vfork.S
++SSRC += fork.S vfork.S clone.S
+ endif
+ 
+ # check weather __LONG_DOUBLE_128__ is defined (long double support)
+diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/x86_64/Makefile.arch uClibc.new/libc/sysdeps/linux/x86_64/Makefile.arch
+--- uClibc-0.9.32.1/libc/sysdeps/linux/x86_64/Makefile.arch	2011-12-30 12:11:07.000000000 +0100
++++ uClibc.new/libc/sysdeps/linux/x86_64/Makefile.arch	2012-02-17 15:13:33.000000000 +0100
+@@ -5,11 +5,7 @@
+ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ #
+ 
+-CSRC := brk.c __syscall_error.c mmap.c
+-
+-ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
+-CSRC += sigaction.c
+-endif
++CSRC := brk.c __syscall_error.c sigaction.c mmap.c
+ 
+ SSRC := \
+ 	__longjmp.S setjmp.S syscall.S bsd-setjmp.S bsd-_setjmp.S
+diff -Nur uClibc-0.9.32.1/libpthread/nptl/.gitignore uClibc.new/libpthread/nptl/.gitignore
+--- uClibc-0.9.32.1/libpthread/nptl/.gitignore	2011-12-30 12:11:07.000000000 +0100
++++ uClibc.new/libpthread/nptl/.gitignore	2012-02-17 15:13:33.000000000 +0100
+@@ -24,6 +24,5 @@
+ #
+ # symlinks
+ #
+-sysdeps/pthread/pt-sigaction.c
+ sysdeps/pthread/pt-sigfillset.c
+ sysdeps/pthread/pt-sigprocmask.c
+diff -Nur uClibc-0.9.32.1/libpthread/nptl/sysdeps/pthread/Makefile.in uClibc.new/libpthread/nptl/sysdeps/pthread/Makefile.in
+--- uClibc-0.9.32.1/libpthread/nptl/sysdeps/pthread/Makefile.in	2011-12-30 12:11:07.000000000 +0100
++++ uClibc.new/libpthread/nptl/sysdeps/pthread/Makefile.in	2012-02-17 15:13:33.000000000 +0100
+@@ -42,8 +42,6 @@
+ CFLAGS-pthread_spin_destroy.c = -D_GNU_SOURCE
+ CFLAGS-pthread_spin_init.c = -D_GNU_SOURCE
+ CFLAGS-pthread_spin_unlock.c = -D_GNU_SOURCE
+-CFLAGS-pt-sigaction.c = -I$(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH) \
+-			-I$(top_srcdir)libc/signal
+ CFLAGS-pt-sigfillset.c = -I$(top_srcdir)libc/signal
+ CFLAGS-pt-sigprocmask.c = -I$(top_srcdir)libc/sysdeps/linux/common
+ CFLAGS-unwind-forcedunwind.c = -fexceptions -fasynchronous-unwind-tables
+@@ -58,10 +56,6 @@
+ libpthread-so-y += $(patsubst %,$(libpthread_pthread_OUT)/%.oS, \
+ 	pt-sigaction pt-sigprocmask unwind-forcedunwind)
+ 
+-CFLAGS-OMIT-sigaction.c = $(CFLAGS-pthread)
+-CFLAGS-sigaction.c = -I$(top_srcdir)libc/signal
+-libc-y += $(libpthread_pthread_OUT)/sigaction.o
+-
+ librt-pt-routines-y = librt-cancellation.c
+ librt-pt-shared-only-routines-y = rt-unwind-resume.c
+ 
+@@ -114,7 +108,7 @@
+ # impl, but ok.
+ # Special rules needed since we do objdir->objdir compilation for these 3.
+ # First symlink them, then build them. Rob would freak out on these. Sheesh! ;)
+-pthread-lc-fwd = sigaction sigfillset sigprocmask
++pthread-lc-fwd = sigfillset sigprocmask
+ $(patsubst %,$(libpthread_pthread_OUT)/pt-%.c,$(pthread-lc-fwd)): | $(libpthread_pthread_OUT)
+ 	$(do_ln) $(call rel_srcdir)$(patsubst pt-%,$(libpthread_pthread_DIR)/%,$(@F)) $@
+ $(patsubst %,$(libpthread_pthread_OUT)/pt-%.oS,$(pthread-lc-fwd)): $(libpthread_pthread_OUT)/pt-%.oS: $(libpthread_pthread_OUT)/pt-%.c
+@@ -131,5 +125,5 @@
+ CLEAN_libpthread/nptl/sysdeps/pthread:
+ 	$(do_rm) $(addprefix $(libpthread_pthread_OUT)/*., o os oS s S) \
+ 		$(libpthread_pthread_OUT)/defs.h \
+-		$(addprefix $(libpthread_pthread_DIR)/,pt-sigaction.c \
++		$(addprefix $(libpthread_pthread_DIR)/, \
+ 			pt-sigfillset.c pt-sigprocmask.c)
+diff -Nur uClibc-0.9.32.1/libpthread/nptl/sysdeps/pthread/pt-sigaction.c uClibc.new/libpthread/nptl/sysdeps/pthread/pt-sigaction.c
+--- uClibc-0.9.32.1/libpthread/nptl/sysdeps/pthread/pt-sigaction.c	1970-01-01 01:00:00.000000000 +0100
++++ uClibc.new/libpthread/nptl/sysdeps/pthread/pt-sigaction.c	2012-02-17 15:13:33.000000000 +0100
+@@ -0,0 +1,40 @@
++/* Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, write to the Free
++   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++   02111-1307 USA.  */
++
++#include <pthreadP.h>
++#include <signal.h>
++
++/* We use the libc implementation but we tell it to not allow
++   SIGCANCEL or SIGTIMER to be handled.  */
++
++extern __typeof(sigaction) __libc_sigaction;
++int
++__sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
++{
++  if (unlikely (sig == SIGCANCEL || sig == SIGSETXID))
++    {
++      __set_errno (EINVAL);
++      return -1;
++    }
++
++  return __libc_sigaction (sig, act, oact);
++}
++libc_hidden_proto(sigaction)
++weak_alias (__sigaction, sigaction)
++libc_hidden_weak(sigaction)
+diff -Nur uClibc-0.9.32.1/libpthread/nptl/sysdeps/pthread/sigaction.c uClibc.new/libpthread/nptl/sysdeps/pthread/sigaction.c
+--- uClibc-0.9.32.1/libpthread/nptl/sysdeps/pthread/sigaction.c	2011-12-30 12:11:07.000000000 +0100
++++ uClibc.new/libpthread/nptl/sysdeps/pthread/sigaction.c	1970-01-01 01:00:00.000000000 +0100
+@@ -1,49 +0,0 @@
+-/* Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, write to the Free
+-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+-   02111-1307 USA.  */
+-
+-#ifndef LIBC_SIGACTION
+-
+-#include <pthreadP.h>
+-
+-/* We use the libc implementation but we tell it to not allow
+-   SIGCANCEL or SIGTIMER to be handled.  */
+-#define LIBC_SIGACTION	1
+-#include <sigaction.c>
+-
+-extern __typeof(sigaction) __sigaction;
+-int
+-__sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
+-{
+-  if (__builtin_expect (sig == SIGCANCEL || sig == SIGSETXID, 0))
+-    {
+-      __set_errno (EINVAL);
+-      return -1;
+-    }
+-
+-  return __libc_sigaction (sig, act, oact);
+-}
+-libc_hidden_proto(sigaction)
+-weak_alias (__sigaction, sigaction)
+-libc_hidden_weak(sigaction)
+-
+-#else
+-
+-# include_next <sigaction.c>
+-
+-#endif /* LIBC_SIGACTION */
diff --git a/toolchain/uClibc/patches/0.9.32.1/uClibc-weak-sigprocmask.patch b/toolchain/uClibc/patches/0.9.32.1/uClibc-weak-sigprocmask.patch
new file mode 100644
index 000000000..a98f5b94d
--- /dev/null
+++ b/toolchain/uClibc/patches/0.9.32.1/uClibc-weak-sigprocmask.patch
@@ -0,0 +1,21 @@
+diff -Nur uClibc-0.9.32.1.orig/libc/sysdeps/linux/common/sigprocmask.c uClibc-0.9.32.1/libc/sysdeps/linux/common/sigprocmask.c
+--- uClibc-0.9.32.1.orig/libc/sysdeps/linux/common/sigprocmask.c	2011-12-30 12:11:07.000000000 +0100
++++ uClibc-0.9.32.1/libc/sysdeps/linux/common/sigprocmask.c	2012-02-18 11:40:09.000000000 +0100
+@@ -23,7 +23,7 @@
+ _syscall4(int, __rt_sigprocmask, int, how, const sigset_t *, set,
+ 		  sigset_t *, oldset, size_t, size)
+ 
+-int sigprocmask(int how, const sigset_t * set, sigset_t * oldset)
++int weak_function sigprocmask(int how, const sigset_t * set, sigset_t * oldset)
+ {
+ #ifdef SIGCANCEL
+ 	sigset_t local_newmask;
+@@ -58,7 +58,7 @@
+ _syscall3(int, __syscall_sigprocmask, int, how, const sigset_t *, set,
+ 		  sigset_t *, oldset)
+ 
+-int sigprocmask(int how, const sigset_t * set, sigset_t * oldset)
++int weak_function sigprocmask(int how, const sigset_t * set, sigset_t * oldset)
+ {
+ #ifdef SIGCANCEL
+ 	sigset_t local_newmask;
diff --git a/toolchain/uClibc/patches/avr32_atomic_fix.patch b/toolchain/uClibc/patches/avr32_atomic_fix.patch
deleted file mode 100644
index 5e5460a3d..000000000
--- a/toolchain/uClibc/patches/avr32_atomic_fix.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/libc/sysdeps/linux/avr32/bits/atomic.h
-+++ b/libc/sysdeps/linux/avr32/bits/atomic.h
-@@ -28,6 +28,7 @@ typedef uintmax_t uatomic_max_t;
- 
- #define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval)	\
- 	({								\
-+		__uint32_t __result;					\
- 		__typeof__(*(mem)) __prev;				\
- 		__asm__ __volatile__(					\
- 			"/* __arch_compare_and_exchange_val_32_acq */\n" \
diff --git a/toolchain/uClibc/patches/epoll.patch b/toolchain/uClibc/patches/epoll.patch
deleted file mode 100644
index 4d9cc38cd..000000000
--- a/toolchain/uClibc/patches/epoll.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-diff -Nur uClibc-0.9.32.orig/libc/sysdeps/linux/common/epoll.c uClibc-0.9.32/libc/sysdeps/linux/common/epoll.c
---- uClibc-0.9.32.orig/libc/sysdeps/linux/common/epoll.c	2011-06-08 21:35:20.000000000 +0200
-+++ uClibc-0.9.32/libc/sysdeps/linux/common/epoll.c	2011-06-15 14:18:06.798202250 +0200
-@@ -67,12 +67,13 @@
- int __libc_epoll_pwait(int epfd, struct epoll_event *events, int maxevents,
- 						int timeout, const sigset_t *set)
- {
-+	int nsig = _NSIG / 8;
- 	if (SINGLE_THREAD_P)
--		return INLINE_SYSCALL(epoll_pwait, 6, epfd, events, maxevents, timeout, set, _NSIG / 8);
-+		return INLINE_SYSCALL(epoll_pwait, 6, epfd, events, maxevents, timeout, set, nsig);
- # ifdef __UCLIBC_HAS_THREADS_NATIVE__
- 	else {
- 		int oldtype = LIBC_CANCEL_ASYNC ();
--		int result = INLINE_SYSCALL(epoll_pwait, 6, epfd, events, maxevents, timeout, set, _NSIG / 8);
-+		int result = INLINE_SYSCALL(epoll_pwait, 6, epfd, events, maxevents, timeout, set, nsig);
- 		LIBC_CANCEL_RESET (oldtype);
- 		return result;
- 	}
diff --git a/toolchain/uClibc/patches/gnutar-problem.patch b/toolchain/uClibc/patches/gnutar-problem.patch
deleted file mode 100644
index a3d71131a..000000000
--- a/toolchain/uClibc/patches/gnutar-problem.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -Nur uClibc-0.9.32-rc3.orig/Makefile.in uClibc-0.9.32-rc3/Makefile.in
---- uClibc-0.9.32-rc3.orig/Makefile.in	2011-03-16 20:11:13.000000000 +0100
-+++ uClibc-0.9.32-rc3/Makefile.in	2011-05-20 11:16:00.000000000 +0200
-@@ -385,13 +385,13 @@
- ifeq ($(HAVE_SHARED),y)
- 	$(INSTALL) -m 755 $(top_builddir)lib/lib*-$(VERSION).so \
- 		$(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)
--	(cd $(top_builddir)lib && $(TAR) -cf - *.so.*) | $(TAR) -xf - -C $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)
- 	@if [ -x $(top_builddir)lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so ] ; then \
- 		set -e; \
- 		$(SHELL_SET_X); \
- 		$(INSTALL) -m 755 $(top_builddir)lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so \
- 			$(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR); \
- 	fi
-+	(cd $(top_builddir)lib && $(TAR) -cf - *.so.*) | $(TAR) -xf - -C $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)
- endif
- 
- utils: | pregen
diff --git a/toolchain/uClibc/patches/rpath-origin.patch b/toolchain/uClibc/patches/rpath-origin.patch
deleted file mode 100644
index c2bd2e8ab..000000000
--- a/toolchain/uClibc/patches/rpath-origin.patch
+++ /dev/null
@@ -1,174 +0,0 @@
-diff -Nur uClibc-0.9.32.orig//ldso/ldso/dl-elf.c uClibc-0.9.32/ldso/ldso/dl-elf.c
---- uClibc-0.9.32.orig//ldso/ldso/dl-elf.c	2011-06-08 21:35:20.000000000 +0200
-+++ uClibc-0.9.32/ldso/ldso/dl-elf.c	2011-08-09 11:19:18.325314589 +0200
-@@ -133,53 +133,59 @@
-  * in uClibc/ldso/util/ldd.c */
- static struct elf_resolve *
- search_for_named_library(const char *name, int secure, const char *path_list,
--	struct dyn_elf **rpnt)
-+	struct dyn_elf **rpnt, const char *origin)
- {
--	char *path, *path_n, *mylibname;
-+	char *mylibname;
-+	const char *p, *pn;
- 	struct elf_resolve *tpnt;
--	int done;
-+	int plen;
- 
- 	if (path_list==NULL)
- 		return NULL;
- 
--	/* We need a writable copy of this string, but we don't
--	 * need this allocated permanently since we don't want
--	 * to leak memory, so use alloca to put path on the stack */
--	done = _dl_strlen(path_list);
--	path = alloca(done + 1);
--
- 	/* another bit of local storage */
- 	mylibname = alloca(2050);
- 
--	_dl_memcpy(path, path_list, done+1);
--
- 	/* Unlike ldd.c, don't bother to eliminate double //s */
- 
- 	/* Replace colons with zeros in path_list */
- 	/* : at the beginning or end of path maps to CWD */
- 	/* :: anywhere maps CWD */
- 	/* "" maps to CWD */
--	done = 0;
--	path_n = path;
--	do {
--		if (*path == 0) {
--			*path = ':';
--			done = 1;
-+	for (p = path_list; p != NULL; p = pn) { 
-+		pn = _dl_strchr(p + 1, ':');
-+		if (pn != NULL) {
-+			plen = pn - p;
-+			pn++;
-+		} else
-+			plen = _dl_strlen(p);
-+
-+		if (plen >= 7 && _dl_memcmp(p, "$ORIGIN", 7) == 0) {
-+			int olen;
-+			if (secure && plen != 7)
-+				continue;
-+			if (origin == NULL)
-+				continue;
-+			for (olen = _dl_strlen(origin) - 1; olen >= 0 && origin[olen] != '/'; olen--)
-+				;
-+			if (olen <= 0)
-+				continue;
-+			_dl_memcpy(&mylibname[0], origin, olen);
-+			_dl_memcpy(&mylibname[olen], p + 7, plen - 7);
-+			mylibname[olen + plen - 7] = 0;
-+		} else if (plen != 0) {
-+			_dl_memcpy(mylibname, p, plen);
-+			mylibname[plen] = 0; 
-+		} else {
-+			_dl_strcpy(mylibname, ".");
- 		}
--		if (*path == ':') {
--			*path = 0;
--			if (*path_n)
--				_dl_strcpy(mylibname, path_n);
--			else
--				_dl_strcpy(mylibname, "."); /* Assume current dir if empty path */
--			_dl_strcat(mylibname, "/");
--			_dl_strcat(mylibname, name);
--			if ((tpnt = _dl_load_elf_shared_library(secure, rpnt, mylibname)) != NULL)
--				return tpnt;
--			path_n = path+1;
--		}
--		path++;
--	} while (!done);
-+		_dl_strcat(mylibname, "/");
-+		_dl_strcat(mylibname, name); 
-+		
-+		tpnt = _dl_load_elf_shared_library(secure, rpnt, mylibname);
-+		if (tpnt != NULL)
-+			return tpnt;
-+	}
- 	return NULL;
- }
- 
-@@ -231,7 +237,7 @@
- 	if (pnt) {
- 		pnt += (unsigned long) tpnt->dynamic_info[DT_STRTAB];
- 		_dl_if_debug_dprint("\tsearching RPATH='%s'\n", pnt);
--		if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt)) != NULL)
-+		if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt, tpnt->libname)) != NULL)
- 			return tpnt1;
- 	}
- #endif
-@@ -239,7 +245,7 @@
- 	/* Check in LD_{ELF_}LIBRARY_PATH, if specified and allowed */
- 	if (_dl_library_path) {
- 		_dl_if_debug_dprint("\tsearching LD_LIBRARY_PATH='%s'\n", _dl_library_path);
--		if ((tpnt1 = search_for_named_library(libname, secure, _dl_library_path, rpnt)) != NULL)
-+		if ((tpnt1 = search_for_named_library(libname, secure, _dl_library_path, rpnt, NULL)) != NULL)
- 		{
- 			return tpnt1;
- 		}
-@@ -253,7 +259,7 @@
- 	if (pnt) {
- 		pnt += (unsigned long) tpnt->dynamic_info[DT_STRTAB];
- 		_dl_if_debug_dprint("\tsearching RUNPATH='%s'\n", pnt);
--		if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt)) != NULL)
-+		if ((tpnt1 = search_for_named_library(libname, secure, pnt, rpnt, NULL)) != NULL)
- 			return tpnt1;
- 	}
- #endif
-@@ -287,7 +293,7 @@
- 	/* Look for libraries wherever the shared library loader
- 	 * was installed */
- 	_dl_if_debug_dprint("\tsearching ldso dir='%s'\n", _dl_ldsopath);
--	tpnt1 = search_for_named_library(libname, secure, _dl_ldsopath, rpnt);
-+	tpnt1 = search_for_named_library(libname, secure, _dl_ldsopath, rpnt, NULL);
- 	if (tpnt1 != NULL)
- 		return tpnt1;
- 
-@@ -300,7 +306,7 @@
- #ifndef __LDSO_CACHE_SUPPORT__
- 					":" UCLIBC_RUNTIME_PREFIX "usr/X11R6/lib"
- #endif
--					, rpnt);
-+					, rpnt, NULL);
- 	if (tpnt1 != NULL)
- 		return tpnt1;
- 
-diff -Nur uClibc-0.9.32.orig//ldso/ldso/ldso.c uClibc-0.9.32/ldso/ldso/ldso.c
---- uClibc-0.9.32.orig//ldso/ldso/ldso.c	2011-06-08 21:35:20.000000000 +0200
-+++ uClibc-0.9.32/ldso/ldso/ldso.c	2011-08-09 11:15:04.135386129 +0200
-@@ -272,6 +272,20 @@
- 	}
- }
- 
-+static void _dl_setup_progname(const char *argv0)
-+{
-+	char image[PATH_MAX];
-+	ssize_t s;
-+
-+	s = _dl_readlink("/proc/self/exe", image, sizeof(image));
-+	if (s > 0 && image[0] == '/') {
-+	 image[s] = 0;
-+	 _dl_progname = _dl_strdup(image);
-+	} else if (argv0) {
-+	 _dl_progname = argv0;
-+	}
-+}
-+
- void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
- 			  ElfW(auxv_t) auxvt[AT_EGID + 1], char **envp,
- 			  char **argv
-@@ -321,9 +335,7 @@
- 	 * been fixed up by now.  Still no function calls outside of this
- 	 * library, since the dynamic resolver is not yet ready.
- 	 */
--	if (argv[0]) {
--		_dl_progname = argv[0];
--	}
-+	_dl_setup_progname(argv[0]);
- 
- 	if (_start == (void *) auxvt[AT_ENTRY].a_un.a_val) {
- 		_dl_dprintf(_dl_debug_file, "Standalone execution is not supported yet\n");
diff --git a/toolchain/uClibc/patches/uClibc-0.9.32.1-unshare.patch b/toolchain/uClibc/patches/uClibc-0.9.32.1-unshare.patch
deleted file mode 100644
index 5820e15bb..000000000
--- a/toolchain/uClibc/patches/uClibc-0.9.32.1-unshare.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-Backport of unshare() syscall.
-From uClibc git 19dd090a0f68765db87990ef8eda9bf77bb29581
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
----
-diff -Nura uClibc-0.9.32.orig/libc/sysdeps/linux/common/bits/sched.h uClibc-0.9.32/libc/sysdeps/linux/common/bits/sched.h
---- uClibc-0.9.32.orig/libc/sysdeps/linux/common/bits/sched.h	2011-12-02 23:54:30.571841170 -0300
-+++ uClibc-0.9.32/libc/sysdeps/linux/common/bits/sched.h	2011-12-02 23:57:45.874205079 -0300
-@@ -58,7 +58,13 @@
- 				      force CLONE_PTRACE on this clone.  */
- # define CLONE_CHILD_SETTID 0x01000000 /* Store TID in userlevel buffer in
- 					  the child.  */
--# define CLONE_STOPPED	0x02000000 /* Start in stopped state.  */
-+# define CLONE_STOPPED 0x02000000 /* Start in stopped state.  */
-+# define CLONE_NEWUTS  0x04000000      /* New utsname group.  */
-+# define CLONE_NEWIPC  0x08000000      /* New ipcs.  */
-+# define CLONE_NEWUSER 0x10000000      /* New user namespace.  */
-+# define CLONE_NEWPID  0x20000000      /* New pid namespace.  */
-+# define CLONE_NEWNET  0x40000000      /* New network namespace.  */
-+# define CLONE_IO      0x80000000      /* Clone I/O context.  */
- #endif
- 
- /* The official definition.  */
-@@ -74,11 +80,9 @@
- extern int clone (int (*__fn) (void *__arg), void *__child_stack,
- 		  int __flags, void *__arg, ...) __THROW;
- 
--#if 0
- /* Unshare the specified resources.  */
- extern int unshare (int __flags) __THROW;
- #endif
--#endif
- 
- __END_DECLS
- 
-diff -Nura uClibc-0.9.32.orig/libc/sysdeps/linux/common/Makefile.in uClibc-0.9.32/libc/sysdeps/linux/common/Makefile.in
---- uClibc-0.9.32.orig/libc/sysdeps/linux/common/Makefile.in	2011-12-02 23:54:30.577841215 -0300
-+++ uClibc-0.9.32/libc/sysdeps/linux/common/Makefile.in	2011-12-02 23:56:08.801527166 -0300
-@@ -24,7 +24,8 @@
- 	remap_file_pages.c sched_getaffinity.c sched_setaffinity.c \
- 	sendfile64.c sendfile.c setfsgid.c setfsuid.c setresuid.c \
- 	splice.c vmsplice.c tee.c signalfd.c swapoff.c swapon.c \
--	sync_file_range.c sysctl.c sysinfo.c timerfd.c uselib.c vhangup.c
-+	sync_file_range.c sysctl.c sysinfo.c timerfd.c unshare.c uselib.c \
-+	vhangup.c
- # NPTL needs these internally: madvise.c
- CSRC-$(findstring y,$(UCLIBC_LINUX_SPECIFIC)$(UCLIBC_HAS_THREADS_NATIVE)) += madvise.c
- ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
-diff -Nura uClibc-0.9.32.orig/libc/sysdeps/linux/common/stubs.c uClibc-0.9.32/libc/sysdeps/linux/common/stubs.c
---- uClibc-0.9.32.orig/libc/sysdeps/linux/common/stubs.c	2011-12-02 23:54:30.577841215 -0300
-+++ uClibc-0.9.32/libc/sysdeps/linux/common/stubs.c	2011-12-02 23:58:18.803435042 -0300
-@@ -278,6 +278,10 @@
- make_stub(umount2)
- #endif
- 
-+#if !defined __NR_unshare && defined __UCLIBC_LINUX_SPECIFIC__
-+make_stub(unshare)
-+#endif
-+
- #ifndef __NR_utimensat
- make_stub(futimens)
- make_stub(utimensat)
-diff -Nura uClibc-0.9.32.orig/libc/sysdeps/linux/common/unshare.c uClibc-0.9.32/libc/sysdeps/linux/common/unshare.c
---- uClibc-0.9.32.orig/libc/sysdeps/linux/common/unshare.c	1969-12-31 21:00:00.000000000 -0300
-+++ uClibc-0.9.32/libc/sysdeps/linux/common/unshare.c	2011-12-02 23:58:42.693601880 -0300
-@@ -0,0 +1,15 @@
-+/* vi: set sw=4 ts=4: */
-+/*
-+ * unshare() for uClibc
-+ *
-+ * Copyright (C) 2011 Henning Heinold <heinold@inf.fu-berlin.de>
-+ *
-+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
-+ */
-+
-+#include <sys/syscall.h>
-+#include <sched.h>
-+
-+#if defined __NR_unshare
-+_syscall1(int, unshare, int, flags)
-+#endif
diff --git a/toolchain/uClibc/patches/uClibc-sigaction.patch b/toolchain/uClibc/patches/uClibc-sigaction.patch
deleted file mode 100644
index 0077191e5..000000000
--- a/toolchain/uClibc/patches/uClibc-sigaction.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-diff -Nur uClibc-0.9.32.1/libc/signal/sigaction.c uClibc.new/libc/signal/sigaction.c
---- uClibc-0.9.32.1/libc/signal/sigaction.c	2011-12-30 12:11:07.000000000 +0100
-+++ uClibc.new/libc/signal/sigaction.c	2012-02-17 14:49:51.000000000 +0100
-@@ -82,6 +82,11 @@
- 
- 
- #ifndef LIBC_SIGACTION
-+# ifndef __UCLIBC_HAS_THREADS__
-+strong_alias(__libc_sigaction,sigaction)
-+libc_hidden_def(sigaction)
-+# else
- weak_alias(__libc_sigaction,sigaction)
- libc_hidden_weak(sigaction)
-+# endif
- #endif
-diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/arm/sigaction.c uClibc.new/libc/sysdeps/linux/arm/sigaction.c
---- uClibc-0.9.32.1/libc/sysdeps/linux/arm/sigaction.c	2011-12-30 12:11:07.000000000 +0100
-+++ uClibc.new/libc/sysdeps/linux/arm/sigaction.c	2012-02-17 14:49:51.000000000 +0100
-@@ -96,6 +96,11 @@
- 
- 
- #ifndef LIBC_SIGACTION
-+# ifndef __UCLIBC_HAS_THREADS__
-+strong_alias(__libc_sigaction,sigaction)
-+libc_hidden_def(sigaction)
-+# else
- weak_alias(__libc_sigaction,sigaction)
- libc_hidden_weak(sigaction)
-+# endif
- #endif
-diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/avr32/sigaction.c uClibc.new/libc/sysdeps/linux/avr32/sigaction.c
---- uClibc-0.9.32.1/libc/sysdeps/linux/avr32/sigaction.c	2011-12-30 12:11:07.000000000 +0100
-+++ uClibc.new/libc/sysdeps/linux/avr32/sigaction.c	2012-02-17 14:49:51.000000000 +0100
-@@ -38,6 +38,11 @@
- }
- 
- #ifndef LIBC_SIGACTION
--weak_alias(__libc_sigaction, sigaction)
-+# ifndef __UCLIBC_HAS_THREADS__
-+strong_alias(__libc_sigaction,sigaction)
-+libc_hidden_def(sigaction)
-+# else
-+weak_alias(__libc_sigaction,sigaction)
- libc_hidden_weak(sigaction)
-+# endif
- #endif
-diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/c6x/sigaction.c uClibc.new/libc/sysdeps/linux/c6x/sigaction.c
---- uClibc-0.9.32.1/libc/sysdeps/linux/c6x/sigaction.c	2011-12-30 12:11:07.000000000 +0100
-+++ uClibc.new/libc/sysdeps/linux/c6x/sigaction.c	2012-02-17 14:49:51.000000000 +0100
-@@ -75,10 +75,16 @@
- }
- 
- #ifndef LIBC_SIGACTION
-+# ifndef __UCLIBC_HAS_THREADS__
-+strong_alias(__libc_sigaction,sigaction)
-+libc_hidden_def(sigaction)
-+# else
- weak_alias(__libc_sigaction,sigaction)
- libc_hidden_weak(sigaction)
-+# endif
- #endif
- 
-+
- /* NOTE: Please think twice before making any changes to the bits of
-    code below.  GDB needs some intimate knowledge about it to
-    recognize them as signal trampolines, and make backtraces through
-diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/i386/sigaction.c uClibc.new/libc/sysdeps/linux/i386/sigaction.c
---- uClibc-0.9.32.1/libc/sysdeps/linux/i386/sigaction.c	2011-12-30 12:11:07.000000000 +0100
-+++ uClibc.new/libc/sysdeps/linux/i386/sigaction.c	2012-02-17 14:49:51.000000000 +0100
-@@ -95,8 +95,13 @@
- 
- 
- #ifndef LIBC_SIGACTION
-+# ifndef __UCLIBC_HAS_THREADS__
-+strong_alias(__libc_sigaction,sigaction)
-+libc_hidden_def(sigaction)
-+# else
- weak_alias(__libc_sigaction,sigaction)
- libc_hidden_weak(sigaction)
-+# endif
- #endif
- 
- 
-diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/mips/sigaction.c uClibc.new/libc/sysdeps/linux/mips/sigaction.c
---- uClibc-0.9.32.1/libc/sysdeps/linux/mips/sigaction.c	2011-12-30 12:11:07.000000000 +0100
-+++ uClibc.new/libc/sysdeps/linux/mips/sigaction.c	2012-02-17 14:49:51.000000000 +0100
-@@ -100,8 +100,13 @@
- 
- 
- #ifndef LIBC_SIGACTION
-+# ifndef __UCLIBC_HAS_THREADS__
-+strong_alias(__libc_sigaction,sigaction)
-+libc_hidden_def(sigaction)
-+# else
- weak_alias(__libc_sigaction,sigaction)
- libc_hidden_weak(sigaction)
-+# endif
- #endif
- 
- 
-diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/sparc/sigaction.c uClibc.new/libc/sysdeps/linux/sparc/sigaction.c
---- uClibc-0.9.32.1/libc/sysdeps/linux/sparc/sigaction.c	2011-12-30 12:11:07.000000000 +0100
-+++ uClibc.new/libc/sysdeps/linux/sparc/sigaction.c	2012-02-17 14:49:51.000000000 +0100
-@@ -65,11 +65,18 @@
- 	return ret;
- }
- 
-+
- #ifndef LIBC_SIGACTION
-+# ifndef __UCLIBC_HAS_THREADS__
-+strong_alias(__libc_sigaction,sigaction)
-+libc_hidden_def(sigaction)
-+# else
- weak_alias(__libc_sigaction,sigaction)
- libc_hidden_weak(sigaction)
-+# endif
- #endif
- 
-+
- static void
- __rt_sigreturn_stub(void)
- {
-diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/x86_64/sigaction.c uClibc.new/libc/sysdeps/linux/x86_64/sigaction.c
---- uClibc-0.9.32.1/libc/sysdeps/linux/x86_64/sigaction.c	2011-12-30 12:11:07.000000000 +0100
-+++ uClibc.new/libc/sysdeps/linux/x86_64/sigaction.c	2012-02-17 14:49:51.000000000 +0100
-@@ -99,8 +99,13 @@
- 
- 
- #ifndef LIBC_SIGACTION
-+# ifndef __UCLIBC_HAS_THREADS__
-+strong_alias(__libc_sigaction,sigaction)
-+libc_hidden_def(sigaction)
-+# else
- weak_alias(__libc_sigaction,sigaction)
- libc_hidden_weak(sigaction)
-+# endif
- #endif
- 
- 
-diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/xtensa/sigaction.c uClibc.new/libc/sysdeps/linux/xtensa/sigaction.c
---- uClibc-0.9.32.1/libc/sysdeps/linux/xtensa/sigaction.c	2011-12-30 12:11:07.000000000 +0100
-+++ uClibc.new/libc/sysdeps/linux/xtensa/sigaction.c	2012-02-17 14:49:51.000000000 +0100
-@@ -34,6 +34,11 @@
- }
- 
- #ifndef LIBC_SIGACTION
--weak_alias(__libc_sigaction, sigaction)
-+# ifndef __UCLIBC_HAS_THREADS__
-+strong_alias(__libc_sigaction,sigaction)
-+libc_hidden_def(sigaction)
-+# else
-+weak_alias(__libc_sigaction,sigaction)
- libc_hidden_weak(sigaction)
-+# endif
- #endif
diff --git a/toolchain/uClibc/patches/uClibc-sigaction2.patch b/toolchain/uClibc/patches/uClibc-sigaction2.patch
deleted file mode 100644
index f33e14dde..000000000
--- a/toolchain/uClibc/patches/uClibc-sigaction2.patch
+++ /dev/null
@@ -1,247 +0,0 @@
-diff -Nur uClibc-0.9.32.1/libc/signal/Makefile.in uClibc.new/libc/signal/Makefile.in
---- uClibc-0.9.32.1/libc/signal/Makefile.in	2011-12-30 12:11:07.000000000 +0100
-+++ uClibc.new/libc/signal/Makefile.in	2012-02-17 15:13:33.000000000 +0100
-@@ -17,7 +17,7 @@
- CSRC-$(UCLIBC_SUSV4_LEGACY) += sigintr.c
- 
- ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
--CSRC-y:=$(filter-out raise.c sigaction.c,$(CSRC-y))
-+CSRC-y:=$(filter-out raise.c,$(CSRC-y))
- endif
- 
- ifneq ($(strip $(ARCH_OBJS)),)
-diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/arm/Makefile.arch uClibc.new/libc/sysdeps/linux/arm/Makefile.arch
---- uClibc-0.9.32.1/libc/sysdeps/linux/arm/Makefile.arch	2011-12-30 12:11:07.000000000 +0100
-+++ uClibc.new/libc/sysdeps/linux/arm/Makefile.arch	2012-02-17 15:13:33.000000000 +0100
-@@ -5,11 +5,7 @@
- # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
- #
- 
--CSRC := brk.c ioperm.c iopl.c mmap.c __syscall_error.c
--
--ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
--CSRC += sigaction.c
--endif
-+CSRC := brk.c ioperm.c iopl.c mmap.c __syscall_error.c sigaction.c
- 
- SSRC := \
- 	__longjmp.S setjmp.S bsd-setjmp.S \
-diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/i386/Makefile.arch uClibc.new/libc/sysdeps/linux/i386/Makefile.arch
---- uClibc-0.9.32.1/libc/sysdeps/linux/i386/Makefile.arch	2011-12-30 12:11:07.000000000 +0100
-+++ uClibc.new/libc/sysdeps/linux/i386/Makefile.arch	2012-02-17 15:13:33.000000000 +0100
-@@ -5,11 +5,7 @@
- # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
- #
- 
--CSRC := brk.c __syscall_error.c
--
--ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
--CSRC += sigaction.c
--endif
-+CSRC := brk.c __syscall_error.c sigaction.c
- 
- SSRC := \
- 	__longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \
-diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/mips/Makefile.arch uClibc.new/libc/sysdeps/linux/mips/Makefile.arch
---- uClibc-0.9.32.1/libc/sysdeps/linux/mips/Makefile.arch	2011-12-30 12:11:07.000000000 +0100
-+++ uClibc.new/libc/sysdeps/linux/mips/Makefile.arch	2012-02-17 15:13:33.000000000 +0100
-@@ -7,7 +7,7 @@
- 
- CSRC := \
- 	__longjmp.c  brk.c setjmp_aux.c mmap.c \
--	cacheflush.c pread_write.c sysmips.c _test_and_set.c \
-+	cacheflush.c pread_write.c sigaction.c sysmips.c _test_and_set.c \
- 	readahead.c
- 
- SSRC := bsd-_setjmp.S bsd-setjmp.S setjmp.S syscall.S pipe.S syscall_error.S
-@@ -17,7 +17,6 @@
- endif
- 
- ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
--CSRC += sigaction.c
- SSRC += vfork.S clone.S
- endif
- 
-diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/sparc/Makefile.arch uClibc.new/libc/sysdeps/linux/sparc/Makefile.arch
---- uClibc-0.9.32.1/libc/sysdeps/linux/sparc/Makefile.arch	2011-12-30 12:11:07.000000000 +0100
-+++ uClibc.new/libc/sysdeps/linux/sparc/Makefile.arch	2012-02-17 15:14:20.000000000 +0100
-@@ -5,15 +5,14 @@
- # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
- #
- 
--CSRC := brk.c __syscall_error.c
-+CSRC := brk.c __syscall_error.c sigaction.c
- 
- SSRC := \
- 	__longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \
- 	syscall.S urem.S udiv.S umul.S sdiv.S rem.S pipe.S
- 
- ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
--CSRC += sigaction.c
--SSRC += fork.S vfork.S
-+SSRC += fork.S vfork.S clone.S
- endif
- 
- # check weather __LONG_DOUBLE_128__ is defined (long double support)
-diff -Nur uClibc-0.9.32.1/libc/sysdeps/linux/x86_64/Makefile.arch uClibc.new/libc/sysdeps/linux/x86_64/Makefile.arch
---- uClibc-0.9.32.1/libc/sysdeps/linux/x86_64/Makefile.arch	2011-12-30 12:11:07.000000000 +0100
-+++ uClibc.new/libc/sysdeps/linux/x86_64/Makefile.arch	2012-02-17 15:13:33.000000000 +0100
-@@ -5,11 +5,7 @@
- # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
- #
- 
--CSRC := brk.c __syscall_error.c mmap.c
--
--ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
--CSRC += sigaction.c
--endif
-+CSRC := brk.c __syscall_error.c sigaction.c mmap.c
- 
- SSRC := \
- 	__longjmp.S setjmp.S syscall.S bsd-setjmp.S bsd-_setjmp.S
-diff -Nur uClibc-0.9.32.1/libpthread/nptl/.gitignore uClibc.new/libpthread/nptl/.gitignore
---- uClibc-0.9.32.1/libpthread/nptl/.gitignore	2011-12-30 12:11:07.000000000 +0100
-+++ uClibc.new/libpthread/nptl/.gitignore	2012-02-17 15:13:33.000000000 +0100
-@@ -24,6 +24,5 @@
- #
- # symlinks
- #
--sysdeps/pthread/pt-sigaction.c
- sysdeps/pthread/pt-sigfillset.c
- sysdeps/pthread/pt-sigprocmask.c
-diff -Nur uClibc-0.9.32.1/libpthread/nptl/sysdeps/pthread/Makefile.in uClibc.new/libpthread/nptl/sysdeps/pthread/Makefile.in
---- uClibc-0.9.32.1/libpthread/nptl/sysdeps/pthread/Makefile.in	2011-12-30 12:11:07.000000000 +0100
-+++ uClibc.new/libpthread/nptl/sysdeps/pthread/Makefile.in	2012-02-17 15:13:33.000000000 +0100
-@@ -42,8 +42,6 @@
- CFLAGS-pthread_spin_destroy.c = -D_GNU_SOURCE
- CFLAGS-pthread_spin_init.c = -D_GNU_SOURCE
- CFLAGS-pthread_spin_unlock.c = -D_GNU_SOURCE
--CFLAGS-pt-sigaction.c = -I$(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH) \
--			-I$(top_srcdir)libc/signal
- CFLAGS-pt-sigfillset.c = -I$(top_srcdir)libc/signal
- CFLAGS-pt-sigprocmask.c = -I$(top_srcdir)libc/sysdeps/linux/common
- CFLAGS-unwind-forcedunwind.c = -fexceptions -fasynchronous-unwind-tables
-@@ -58,10 +56,6 @@
- libpthread-so-y += $(patsubst %,$(libpthread_pthread_OUT)/%.oS, \
- 	pt-sigaction pt-sigprocmask unwind-forcedunwind)
- 
--CFLAGS-OMIT-sigaction.c = $(CFLAGS-pthread)
--CFLAGS-sigaction.c = -I$(top_srcdir)libc/signal
--libc-y += $(libpthread_pthread_OUT)/sigaction.o
--
- librt-pt-routines-y = librt-cancellation.c
- librt-pt-shared-only-routines-y = rt-unwind-resume.c
- 
-@@ -114,7 +108,7 @@
- # impl, but ok.
- # Special rules needed since we do objdir->objdir compilation for these 3.
- # First symlink them, then build them. Rob would freak out on these. Sheesh! ;)
--pthread-lc-fwd = sigaction sigfillset sigprocmask
-+pthread-lc-fwd = sigfillset sigprocmask
- $(patsubst %,$(libpthread_pthread_OUT)/pt-%.c,$(pthread-lc-fwd)): | $(libpthread_pthread_OUT)
- 	$(do_ln) $(call rel_srcdir)$(patsubst pt-%,$(libpthread_pthread_DIR)/%,$(@F)) $@
- $(patsubst %,$(libpthread_pthread_OUT)/pt-%.oS,$(pthread-lc-fwd)): $(libpthread_pthread_OUT)/pt-%.oS: $(libpthread_pthread_OUT)/pt-%.c
-@@ -131,5 +125,5 @@
- CLEAN_libpthread/nptl/sysdeps/pthread:
- 	$(do_rm) $(addprefix $(libpthread_pthread_OUT)/*., o os oS s S) \
- 		$(libpthread_pthread_OUT)/defs.h \
--		$(addprefix $(libpthread_pthread_DIR)/,pt-sigaction.c \
-+		$(addprefix $(libpthread_pthread_DIR)/, \
- 			pt-sigfillset.c pt-sigprocmask.c)
-diff -Nur uClibc-0.9.32.1/libpthread/nptl/sysdeps/pthread/pt-sigaction.c uClibc.new/libpthread/nptl/sysdeps/pthread/pt-sigaction.c
---- uClibc-0.9.32.1/libpthread/nptl/sysdeps/pthread/pt-sigaction.c	1970-01-01 01:00:00.000000000 +0100
-+++ uClibc.new/libpthread/nptl/sysdeps/pthread/pt-sigaction.c	2012-02-17 15:13:33.000000000 +0100
-@@ -0,0 +1,40 @@
-+/* Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
-+   This file is part of the GNU C Library.
-+   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-+
-+   The GNU C Library is free software; you can redistribute it and/or
-+   modify it under the terms of the GNU Lesser General Public
-+   License as published by the Free Software Foundation; either
-+   version 2.1 of the License, or (at your option) any later version.
-+
-+   The GNU C Library is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+   Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public
-+   License along with the GNU C Library; if not, write to the Free
-+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+   02111-1307 USA.  */
-+
-+#include <pthreadP.h>
-+#include <signal.h>
-+
-+/* We use the libc implementation but we tell it to not allow
-+   SIGCANCEL or SIGTIMER to be handled.  */
-+
-+extern __typeof(sigaction) __libc_sigaction;
-+int
-+__sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
-+{
-+  if (unlikely (sig == SIGCANCEL || sig == SIGSETXID))
-+    {
-+      __set_errno (EINVAL);
-+      return -1;
-+    }
-+
-+  return __libc_sigaction (sig, act, oact);
-+}
-+libc_hidden_proto(sigaction)
-+weak_alias (__sigaction, sigaction)
-+libc_hidden_weak(sigaction)
-diff -Nur uClibc-0.9.32.1/libpthread/nptl/sysdeps/pthread/sigaction.c uClibc.new/libpthread/nptl/sysdeps/pthread/sigaction.c
---- uClibc-0.9.32.1/libpthread/nptl/sysdeps/pthread/sigaction.c	2011-12-30 12:11:07.000000000 +0100
-+++ uClibc.new/libpthread/nptl/sysdeps/pthread/sigaction.c	1970-01-01 01:00:00.000000000 +0100
-@@ -1,49 +0,0 @@
--/* Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
--   This file is part of the GNU C Library.
--   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
--
--   The GNU C Library is free software; you can redistribute it and/or
--   modify it under the terms of the GNU Lesser General Public
--   License as published by the Free Software Foundation; either
--   version 2.1 of the License, or (at your option) any later version.
--
--   The GNU C Library is distributed in the hope that it will be useful,
--   but WITHOUT ANY WARRANTY; without even the implied warranty of
--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--   Lesser General Public License for more details.
--
--   You should have received a copy of the GNU Lesser General Public
--   License along with the GNU C Library; if not, write to the Free
--   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
--   02111-1307 USA.  */
--
--#ifndef LIBC_SIGACTION
--
--#include <pthreadP.h>
--
--/* We use the libc implementation but we tell it to not allow
--   SIGCANCEL or SIGTIMER to be handled.  */
--#define LIBC_SIGACTION	1
--#include <sigaction.c>
--
--extern __typeof(sigaction) __sigaction;
--int
--__sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
--{
--  if (__builtin_expect (sig == SIGCANCEL || sig == SIGSETXID, 0))
--    {
--      __set_errno (EINVAL);
--      return -1;
--    }
--
--  return __libc_sigaction (sig, act, oact);
--}
--libc_hidden_proto(sigaction)
--weak_alias (__sigaction, sigaction)
--libc_hidden_weak(sigaction)
--
--#else
--
--# include_next <sigaction.c>
--
--#endif /* LIBC_SIGACTION */
diff --git a/toolchain/uClibc/patches/uClibc-weak-sigprocmask.patch b/toolchain/uClibc/patches/uClibc-weak-sigprocmask.patch
deleted file mode 100644
index a98f5b94d..000000000
--- a/toolchain/uClibc/patches/uClibc-weak-sigprocmask.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -Nur uClibc-0.9.32.1.orig/libc/sysdeps/linux/common/sigprocmask.c uClibc-0.9.32.1/libc/sysdeps/linux/common/sigprocmask.c
---- uClibc-0.9.32.1.orig/libc/sysdeps/linux/common/sigprocmask.c	2011-12-30 12:11:07.000000000 +0100
-+++ uClibc-0.9.32.1/libc/sysdeps/linux/common/sigprocmask.c	2012-02-18 11:40:09.000000000 +0100
-@@ -23,7 +23,7 @@
- _syscall4(int, __rt_sigprocmask, int, how, const sigset_t *, set,
- 		  sigset_t *, oldset, size_t, size)
- 
--int sigprocmask(int how, const sigset_t * set, sigset_t * oldset)
-+int weak_function sigprocmask(int how, const sigset_t * set, sigset_t * oldset)
- {
- #ifdef SIGCANCEL
- 	sigset_t local_newmask;
-@@ -58,7 +58,7 @@
- _syscall3(int, __syscall_sigprocmask, int, how, const sigset_t *, set,
- 		  sigset_t *, oldset)
- 
--int sigprocmask(int how, const sigset_t * set, sigset_t * oldset)
-+int weak_function sigprocmask(int how, const sigset_t * set, sigset_t * oldset)
- {
- #ifdef SIGCANCEL
- 	sigset_t local_newmask;
-- 
cgit v1.2.3