[git commit] buildsys: fixup sigaction handling

Carmelo AMOROSO carmelo.amoroso at st.com
Mon Jan 30 14:14:33 UTC 2012


On 28/01/2012 21.28, Bernhard Reutner-Fischer wrote:
> commit: http://git.uclibc.org/uClibc/commit/?id=83ce0cc4d5e93549f0a9447a9bd6b051f5f1b62f
> branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/master
> 
> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop at gmail.com>

Thanks Bernhard,
I couldn't complete my patch last Friday. I was doing something similar.

Few comments inlined:


> ---
>  libc/signal/Makefile.in                            |    2 +-
>  libc/sysdeps/linux/arm/Makefile.arch               |    6 +-----
>  libc/sysdeps/linux/i386/Makefile.arch              |    6 +-----
>  libc/sysdeps/linux/mips/Makefile.arch              |    3 +--
>  libc/sysdeps/linux/sparc/Makefile.arch             |    3 +--
>  libc/sysdeps/linux/x86_64/Makefile.arch            |    6 +-----
>  libpthread/nptl/.gitignore                         |    1 -
>  libpthread/nptl/sysdeps/pthread/Makefile.in        |   10 ++--------
>  .../pthread/{sigaction.c => pt-sigaction.c}        |   15 +++------------
>  9 files changed, 11 insertions(+), 41 deletions(-)
> 
> diff --git a/libc/signal/Makefile.in b/libc/signal/Makefile.in
> index bb5ba8f..46c2af7 100644
> --- a/libc/signal/Makefile.in
> +++ b/libc/signal/Makefile.in
> @@ -17,7 +17,7 @@ CSRC-$(UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL) += sysv_signal.c
>  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 --git a/libc/sysdeps/linux/arm/Makefile.arch b/libc/sysdeps/linux/arm/Makefile.arch
> index ddd104d..cd1710a 100644
> --- a/libc/sysdeps/linux/arm/Makefile.arch
> +++ b/libc/sysdeps/linux/arm/Makefile.arch
> @@ -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 --git a/libc/sysdeps/linux/i386/Makefile.arch b/libc/sysdeps/linux/i386/Makefile.arch
> index 668cca7..966f8b5 100644
> --- a/libc/sysdeps/linux/i386/Makefile.arch
> +++ b/libc/sysdeps/linux/i386/Makefile.arch
> @@ -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 --git a/libc/sysdeps/linux/mips/Makefile.arch b/libc/sysdeps/linux/mips/Makefile.arch
> index 8bbc0bc..738cdd0 100644
> --- a/libc/sysdeps/linux/mips/Makefile.arch
> +++ b/libc/sysdeps/linux/mips/Makefile.arch
> @@ -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 @@ CSRC += posix_fadvise.c posix_fadvise64.c
>  endif
>  
>  ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
> -CSRC += sigaction.c
>  SSRC += vfork.S clone.S
>  endif
>  
> diff --git a/libc/sysdeps/linux/sparc/Makefile.arch b/libc/sysdeps/linux/sparc/Makefile.arch
> index 820b2fa..aa58756 100644
> --- a/libc/sysdeps/linux/sparc/Makefile.arch
> +++ b/libc/sysdeps/linux/sparc/Makefile.arch
> @@ -5,14 +5,13 @@
>  # 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 clone.S
>  endif
>  
> diff --git a/libc/sysdeps/linux/x86_64/Makefile.arch b/libc/sysdeps/linux/x86_64/Makefile.arch
> index 0d14650..3243d86 100644
> --- a/libc/sysdeps/linux/x86_64/Makefile.arch
> +++ b/libc/sysdeps/linux/x86_64/Makefile.arch
> @@ -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 --git a/libpthread/nptl/.gitignore b/libpthread/nptl/.gitignore
> index 0a86898..6565dcd 100644
> --- a/libpthread/nptl/.gitignore
> +++ b/libpthread/nptl/.gitignore
> @@ -26,6 +26,5 @@ sysdeps/pthread/pt-crtn.S
>  #
>  # symlinks
>  #
> -sysdeps/pthread/pt-sigaction.c
>  sysdeps/pthread/pt-sigfillset.c
>  sysdeps/pthread/pt-sigprocmask.c
> diff --git a/libpthread/nptl/sysdeps/pthread/Makefile.in b/libpthread/nptl/sysdeps/pthread/Makefile.in
> index be5c022..79765e9 100644
> --- a/libpthread/nptl/sysdeps/pthread/Makefile.in
> +++ b/libpthread/nptl/sysdeps/pthread/Makefile.in
> @@ -42,8 +42,6 @@ CFLAGS-pthread_barrier_wait.c = -D_GNU_SOURCE
>  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 @@ CFLAGS-rt-unwind-resume.c = -DIS_IN_librt				\
>  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 @@ endif
>  # 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 @@ objclean-y += CLEAN_libpthread/nptl/sysdeps/pthread
>  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 --git a/libpthread/nptl/sysdeps/pthread/sigaction.c b/libpthread/nptl/sysdeps/pthread/pt-sigaction.c
> similarity index 84%
> rename from libpthread/nptl/sysdeps/pthread/sigaction.c
> rename to libpthread/nptl/sysdeps/pthread/pt-sigaction.c

I wouldn't have renamed to pt-sigaction, as it seems to me that the pt-
prefix is used for implementation within libpthread.

> index e004a39..8b34cd9 100644
> --- a/libpthread/nptl/sysdeps/pthread/sigaction.c
> +++ b/libpthread/nptl/sysdeps/pthread/pt-sigaction.c
> @@ -17,20 +17,17 @@
>     Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
>     02111-1307 USA.  */
>  
> -#ifndef LIBC_SIGACTION
> -
>  #include <pthreadP.h>
> +#include <signal.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;
> +extern __typeof(sigaction) __libc_sigaction;
>  int
>  __sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
>  {
> -  if (__builtin_expect (sig == SIGCANCEL || sig == SIGSETXID, 0))
> +  if (unlikely (sig == SIGCANCEL || sig == SIGSETXID))
>      {
>        __set_errno (EINVAL);
>        return -1;
> @@ -41,9 +38,3 @@ __sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
>  libc_hidden_proto(sigaction)
>  weak_alias (__sigaction, sigaction)
>  libc_hidden_weak(sigaction)
> -
> -#else
> -
> -# include_next <sigaction.c>
> -
> -#endif /* LIBC_SIGACTION */

what about removing the __sigaction symbol, and use a plain sigation ?
further libc_hidden_proto could be removed as well as we are now
including signal.h

Cheers,
Carmelo

> _______________________________________________
> uClibc-cvs mailing list
> uClibc-cvs at uclibc.org
> http://lists.busybox.net/mailman/listinfo/uclibc-cvs
> 



More information about the uClibc mailing list