summaryrefslogtreecommitdiff
path: root/libpthread/nptl
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@uclibc-ng.org>2017-11-22 21:30:24 +0100
committerWaldemar Brodkorb <wbx@uclibc-ng.org>2017-11-22 21:31:41 +0100
commit71b3a63b641716165f664cf112be0673a122cea0 (patch)
treee8350273c4889d1067e2eb4824dfaa0358604a6d /libpthread/nptl
parent2fcffe26e815b7125a357c83b59617ab93c16b41 (diff)
librt: fix broken posix_spawn
Fix iteration over signals, synced with GNU C library code and pending patches. Issues found when running dhcpcd with hook scripts. (exit status 127) Reported-By: kapeka <kapeka@bering-uclibc.de>
Diffstat (limited to 'libpthread/nptl')
-rw-r--r--libpthread/nptl/pthreadP.h3
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/nptl-signals.h84
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/raise.c3
3 files changed, 2 insertions, 88 deletions
diff --git a/libpthread/nptl/pthreadP.h b/libpthread/nptl/pthreadP.h
index 4707f6548..13205512a 100644
--- a/libpthread/nptl/pthreadP.h
+++ b/libpthread/nptl/pthreadP.h
@@ -1,5 +1,4 @@
/* Copyright (C) 2002-2007, 2009 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
@@ -31,7 +30,7 @@
#include <atomic.h>
#include <bits/kernel-features.h>
#include <errno.h>
-#include <nptl-signals.h>
+#include <internal-signals.h>
/* Atomic operations on TLS memory. */
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/nptl-signals.h b/libpthread/nptl/sysdeps/unix/sysv/linux/nptl-signals.h
deleted file mode 100644
index 43aa1a939..000000000
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/nptl-signals.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Special use of signals in NPTL internals. Linux version.
- Copyright (C) 2014-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- 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, see
- <http://www.gnu.org/licenses/>. */
-
-#include <signal.h>
-
-/* The signal used for asynchronous cancelation. */
-#define SIGCANCEL __SIGRTMIN
-
-
-/* Signal needed for the kernel-supported POSIX timer implementation.
- We can reuse the cancellation signal since we can distinguish
- cancellation from timer expirations. */
-#define SIGTIMER SIGCANCEL
-
-
-/* Signal used to implement the setuid et.al. functions. */
-#define SIGSETXID (__SIGRTMIN + 1)
-
-
-/* Return is sig is used internally. */
-static inline int
-__nptl_is_internal_signal (int sig)
-{
- return (sig == SIGCANCEL) || (sig == SIGTIMER) || (sig == SIGSETXID);
-}
-
-/* Remove internal glibc signal from the mask. */
-static inline void
-__nptl_clear_internal_signals (sigset_t *set)
-{
- __sigdelset (set, SIGCANCEL);
- __sigdelset (set, SIGTIMER);
- __sigdelset (set, SIGSETXID);
-}
-
-#define SIGALL_SET \
- ((__sigset_t) { .__val = {[0 ... _SIGSET_NWORDS-1 ] = -1 } })
-
-/* Block all signals, including internal glibc ones. */
-static inline int
-__libc_signal_block_all (sigset_t *set)
-{
- INTERNAL_SYSCALL_DECL (err);
- return INTERNAL_SYSCALL (rt_sigprocmask, err, 4, SIG_BLOCK, &SIGALL_SET,
- set, _NSIG / 8);
-}
-
-/* Block all application signals (excluding internal glibc ones). */
-static inline int
-__libc_signal_block_app (sigset_t *set)
-{
- sigset_t allset = SIGALL_SET;
- __nptl_clear_internal_signals (&allset);
- INTERNAL_SYSCALL_DECL (err);
- return INTERNAL_SYSCALL (rt_sigprocmask, err, 4, SIG_BLOCK, &allset, set,
- _NSIG / 8);
-}
-
-/* Restore current process signal mask. */
-static inline int
-__libc_signal_restore_set (const sigset_t *set)
-{
- INTERNAL_SYSCALL_DECL (err);
- return INTERNAL_SYSCALL (rt_sigprocmask, err, 4, SIG_SETMASK, set, NULL,
- _NSIG / 8);
-}
-
-/* Used to communicate with signal handler. */
-extern struct xid_command *__xidcmd attribute_hidden;
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/raise.c b/libpthread/nptl/sysdeps/unix/sysv/linux/raise.c
index f74cd0be3..c0f6e277b 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/raise.c
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/raise.c
@@ -1,5 +1,4 @@
/* Copyright (C) 2002-2016 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
@@ -20,7 +19,7 @@
#include <limits.h>
#include <signal.h>
#include <sysdep.h>
-#include <nptl-signals.h>
+#include <internal-signals.h>
int
raise (int sig)