From 9db751639196ee0033f2f5aa4779ff4d1ee31be7 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sat, 18 Feb 2012 11:59:42 +0100 Subject: update to 0.9.32.1, add patches to allow static linking of threaded applications as x11vnc --- toolchain/uClibc/Makefile.inc | 4 +- .../uClibc-0.9.32-use-arch-pt-initfini_c.patch | 39 ---- toolchain/uClibc/patches/uClibc-sigaction.patch | 155 +++++++++++++ toolchain/uClibc/patches/uClibc-sigaction2.patch | 247 +++++++++++++++++++++ .../uClibc/patches/uClibc-weak-sigprocmask.patch | 21 ++ 5 files changed, 425 insertions(+), 41 deletions(-) delete mode 100644 toolchain/uClibc/patches/uClibc-0.9.32-use-arch-pt-initfini_c.patch create mode 100644 toolchain/uClibc/patches/uClibc-sigaction.patch create mode 100644 toolchain/uClibc/patches/uClibc-sigaction2.patch create mode 100644 toolchain/uClibc/patches/uClibc-weak-sigprocmask.patch (limited to 'toolchain') diff --git a/toolchain/uClibc/Makefile.inc b/toolchain/uClibc/Makefile.inc index 975cc71e9..73a89f91f 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 +PKG_VERSION:= 0.9.32.1 PKG_RELEASE:= 1 -PKG_MD5SUM:= cfcb6c25d8ebe12817499d8749ee8ae1 +PKG_MD5SUM:= ade6e441242be5cdd735fec97954a54a PKG_SITES:= http://uclibc.org/downloads/ DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.bz2 diff --git a/toolchain/uClibc/patches/uClibc-0.9.32-use-arch-pt-initfini_c.patch b/toolchain/uClibc/patches/uClibc-0.9.32-use-arch-pt-initfini_c.patch deleted file mode 100644 index 3eb5b15c2..000000000 --- a/toolchain/uClibc/patches/uClibc-0.9.32-use-arch-pt-initfini_c.patch +++ /dev/null @@ -1,39 +0,0 @@ -SH provides a pt-initfini.c, so use that instead of -libpthread/nptl/sysdeps/pthread/pt-initfini.c - -This prevents: - libpthread/nptl/sysdeps/pthread/crti.S: Assembler messages: - libpthread/nptl/sysdeps/pthread/crti.S:25: Error: pcrel too far - libpthread/nptl/sysdeps/pthread/crti.S:26: Error: pcrel too far - libpthread/nptl/sysdeps/pthread/crti.S:28: Error: pcrel too far - libpthread/nptl/sysdeps/pthread/crti.S:53: Error: pcrel too far - libpthread/nptl/sysdeps/pthread/crti.S:56: Error: pcrel too far - make[1]: *** [libpthread/nptl/sysdeps/pthread/crti.o] Error 1 - -There is probably a better way to handle this... but since 9381d622e2411a35a5fd7 -I do not want to even try. - ---- uClibc-0.9.32/libpthread/nptl/sysdeps/pthread/Makefile.in 2011-06-11 00:58:59.539341382 -0400 -+++ uClibc-0.9.32/libpthread/nptl/sysdeps/pthread/Makefile.in 2011-06-11 00:57:52.848172407 -0400 -@@ -76,12 +76,21 @@ - ASFLAGS-crti.S = -g0 - ASFLAGS-crtn.S = -g0 - -+ifneq ($(wildcard $(top_srcdir)libpthread/nptl/sysdeps/unix/sysv/linux/$(TARGET_ARCH)/pt-initfini.c),) -+$(libpthread_pthread_OUT)/pt-initfini.s: $(top_srcdir)libpthread/nptl/sysdeps/unix/sysv/linux/$(TARGET_ARCH)/pt-initfini.c -+ $(compile.c) -+$(libpthread_pthread_OUT)/defs.h: $(top_srcdir)libpthread/nptl/sysdeps/unix/sysv/linux/$(TARGET_ARCH)/pt-initfini.c -+ $(do_sed) -n -e '/@TESTS_BEGIN/,/@TESTS_END/p' $< | \ -+ $(AWK) -f $(top_srcdir)extra/scripts/defs.awk > $@.tmp -+ $(Q)mv $@.tmp $@ -+else - $(libpthread_pthread_OUT)/pt-initfini.s: $(libpthread_pthread_DIR)/pt-initfini.c - $(compile.c) - $(libpthread_pthread_OUT)/defs.h: $(libpthread_pthread_DIR)/pt-initfini.c - $(do_sed) -n -e '/@TESTS_BEGIN/,/@TESTS_END/p' $< | \ - $(AWK) -f $(top_srcdir)extra/scripts/defs.awk > $@.tmp - $(Q)mv $@.tmp $@ -+endif - - $(libpthread_pthread_OUT)/crti.S: $(libpthread_pthread_OUT)/pt-initfini.s $(libpthread_pthread_OUT)/defs.h - $(do_sed) -n -e '/[ ]*\.file/d' \ diff --git a/toolchain/uClibc/patches/uClibc-sigaction.patch b/toolchain/uClibc/patches/uClibc-sigaction.patch new file mode 100644 index 000000000..0077191e5 --- /dev/null +++ b/toolchain/uClibc/patches/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/uClibc-sigaction2.patch b/toolchain/uClibc/patches/uClibc-sigaction2.patch new file mode 100644 index 000000000..f33e14dde --- /dev/null +++ b/toolchain/uClibc/patches/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 , 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 ++#include ++ ++/* 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 , 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 +- +-/* We use the libc implementation but we tell it to not allow +- SIGCANCEL or SIGTIMER to be handled. */ +-#define LIBC_SIGACTION 1 +-#include +- +-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 +- +-#endif /* LIBC_SIGACTION */ diff --git a/toolchain/uClibc/patches/uClibc-weak-sigprocmask.patch b/toolchain/uClibc/patches/uClibc-weak-sigprocmask.patch new file mode 100644 index 000000000..a98f5b94d --- /dev/null +++ b/toolchain/uClibc/patches/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; -- cgit v1.2.3