mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
5e8754f90a
This reverts commit 7a6dbc2fdb
("Update
gnulib to current upstream master"). It is needed because the gnulib
update caused problems with people using old GCC compilers (version
4.8, for example), which support C99 but don't default to using it.
Unfortunately this broke GDB for these users. A more detailed report
of what happened can be found at:
https://lists.gnu.org/archive/html/bug-gnulib/2018-08/msg00157.html
The reason for updating our gnulib copy was to fix PR gdb/23558.
Reverting this patch reintroduces the bug, so in order to fix it I
will submit a subsequent patch which cherry-picks the fix from gnulib.
gdb/ChangeLog:
2018-09-10 Sergio Durigan Junior <sergiodj@redhat.com>
Revert:
2018-08-29 Sergio Durigan Junior <sergiodj@redhat.com>
PR gdb/23555
PR gdb/23558
* gnulib/aclocal.m4: Regenerate.
* gnulib/config.in: Regenerate.
* gnulib/configure: Regenerate.
* gnulib/import/Makefile.am: Update.
* gnulib/import/Makefile.in: Update.
* gnulib/import/extra/snippet/_Noreturn.h: Rename to...
* gnulib/import/_Noreturn.h: ... this.
* gnulib/import/alloca.in.h: Update.
* gnulib/import/extra/snippet/arg-nonnull.h: Rename to...
* gnulib/import/arg-nonnull.h: ... this.
* gnulib/import/assure.h: Update.
* gnulib/import/at-func.c: Update.
* gnulib/import/basename-lgpl.c: Update.
* gnulib/import/extra/snippet/c++defs.h: Rename to...
* gnulib/import/c++defs.h: ... this.
* gnulib/import/canonicalize-lgpl.c: Update.
* gnulib/import/cdefs.h: Update.
* gnulib/import/chdir-long.c: Update.
* gnulib/import/chdir-long.h: Update.
* gnulib/import/cloexec.c: Update.
* gnulib/import/cloexec.h: Update.
* gnulib/import/close.c: Update.
* gnulib/import/closedir.c: Update.
* gnulib/import/config.charset: Update.
* gnulib/import/dirent-private.h: Update.
* gnulib/import/dirent.in.h: Update.
* gnulib/import/dirfd.c: Update.
* gnulib/import/dirname-lgpl.c: Update.
* gnulib/import/dirname.h: Update.
* gnulib/import/dosname.h: Update.
* gnulib/import/dup-safer-flag.c: Update.
* gnulib/import/dup-safer.c: Update.
* gnulib/import/dup.c: Update.
* gnulib/import/dup2.c: Update.
* gnulib/import/errno.in.h: Update.
* gnulib/import/error.c: Update.
* gnulib/import/error.h: Update.
* gnulib/import/exitfail.c: Update.
* gnulib/import/exitfail.h: Update.
* gnulib/import/extra/update-copyright: Update.
* gnulib/import/fchdir.c: Update.
* gnulib/import/fcntl.c: Update.
* gnulib/import/fcntl.in.h: Update.
* gnulib/import/fd-hook.c: Update.
* gnulib/import/fd-hook.h: Update.
* gnulib/import/fd-safer-flag.c: Update.
* gnulib/import/fd-safer.c: Update.
* gnulib/import/fdopendir.c: Update.
* gnulib/import/filename.h: Update.
* gnulib/import/filenamecat-lgpl.c: Update.
* gnulib/import/filenamecat.h: Update.
* gnulib/import/flexmember.h: Update.
* gnulib/import/float+.h: Update.
* gnulib/import/float.c: Update.
* gnulib/import/float.in.h: Update.
* gnulib/import/fnmatch.c: Update.
* gnulib/import/fnmatch.in.h: Update.
* gnulib/import/fnmatch_loop.c: Update.
* gnulib/import/fpucw.h: Update.
* gnulib/import/frexp.c: Update.
* gnulib/import/frexpl.c: Update.
* gnulib/import/fstat.c: Update.
* gnulib/import/fstatat.c: Update.
* gnulib/import/getcwd-lgpl.c: Update.
* gnulib/import/getcwd.c: Update.
* gnulib/import/getdtablesize.c: Update.
* gnulib/import/getlogin_r.c: Update.
* gnulib/import/getprogname.c: Update.
* gnulib/import/getprogname.h: Update.
* gnulib/import/gettext.h: Update.
* gnulib/import/gettimeofday.c: Update.
* gnulib/import/glob-libc.h: Update.
* gnulib/import/glob.c: Update.
* gnulib/import/glob.in.h: Update.
* gnulib/import/glob_internal.h: Update.
* gnulib/import/glob_pattern_p.c: Update.
* gnulib/import/globfree.c: Update.
* gnulib/import/hard-locale.c: Update.
* gnulib/import/hard-locale.h: Update.
* gnulib/import/intprops.h: Update.
* gnulib/import/inttypes.in.h: Update.
* gnulib/import/isnan.c: Update.
* gnulib/import/isnand-nolibm.h: Update.
* gnulib/import/isnand.c: Update.
* gnulib/import/isnanl-nolibm.h: Update.
* gnulib/import/isnanl.c: Update.
* gnulib/import/itold.c: Update.
* gnulib/import/libc-config.h: Update.
* gnulib/import/limits.in.h: Update.
* gnulib/import/localcharset.c: Update.
* gnulib/import/localcharset.h: Update.
* gnulib/import/localtime-buffer.c: Update.
* gnulib/import/localtime-buffer.h: Update.
* gnulib/import/lstat.c: Update.
* gnulib/import/m4/00gnulib.m4: Update.
* gnulib/import/m4/__inline.m4: Update.
* gnulib/import/m4/absolute-header.m4: Update.
* gnulib/import/m4/alloca.m4: Update.
* gnulib/import/m4/builtin-expect.m4: Update.
* gnulib/import/m4/canonicalize.m4: Update.
* gnulib/import/m4/chdir-long.m4: Update.
* gnulib/import/m4/close.m4: Update.
* gnulib/import/m4/closedir.m4: Update.
* gnulib/import/m4/configmake.m4: Update.
* gnulib/import/m4/d-ino.m4: Update.
* gnulib/import/m4/d-type.m4: Update.
* gnulib/import/m4/dirent_h.m4: Update.
* gnulib/import/m4/dirfd.m4: Update.
* gnulib/import/m4/dirname.m4: Update.
* gnulib/import/m4/double-slash-root.m4: Update.
* gnulib/import/m4/dup.m4: Update.
* gnulib/import/m4/dup2.m4: Update.
* gnulib/import/m4/eealloc.m4: Update.
* gnulib/import/m4/environ.m4: Update.
* gnulib/import/m4/errno_h.m4: Update.
* gnulib/import/m4/error.m4: Update.
* gnulib/import/m4/exponentd.m4: Update.
* gnulib/import/m4/exponentl.m4: Update.
* gnulib/import/m4/extensions.m4: Update.
* gnulib/import/m4/extern-inline.m4: Update.
* gnulib/import/m4/fchdir.m4: Update.
* gnulib/import/m4/fcntl-o.m4: Update.
* gnulib/import/m4/fcntl.m4: Update.
* gnulib/import/m4/fcntl_h.m4: Update.
* gnulib/import/m4/fdopendir.m4: Update.
* gnulib/import/m4/filenamecat.m4: Update.
* gnulib/import/m4/flexmember.m4: Update.
* gnulib/import/m4/float_h.m4: Update.
* gnulib/import/m4/fnmatch.m4: Update.
* gnulib/import/m4/fnmatch_h.m4: Update.
* gnulib/import/m4/fpieee.m4: Update.
* gnulib/import/m4/frexp.m4: Update.
* gnulib/import/m4/frexpl.m4: Update.
* gnulib/import/m4/fstat.m4: Update.
* gnulib/import/m4/fstatat.m4: Update.
* gnulib/import/m4/getcwd-abort-bug.m4: Update.
* gnulib/import/m4/getcwd-path-max.m4: Update.
* gnulib/import/m4/getcwd.m4: Update.
* gnulib/import/m4/getdtablesize.m4: Update.
* gnulib/import/m4/getlogin.m4: Update.
* gnulib/import/m4/getlogin_r.m4: Update.
* gnulib/import/m4/getpagesize.m4: Update.
* gnulib/import/m4/getprogname.m4: Update.
* gnulib/import/m4/gettimeofday.m4: Update.
* gnulib/import/m4/glibc21.m4: Update.
* gnulib/import/m4/glob.m4: Update.
* gnulib/import/m4/glob_h.m4: Update.
* gnulib/import/m4/gnulib-cache.m4: Update.
* gnulib/import/m4/gnulib-common.m4: Update.
* gnulib/import/m4/gnulib-comp.m4: Update.
* gnulib/import/m4/gnulib-tool.m4: Update.
* gnulib/import/m4/hard-locale.m4: Update.
* gnulib/import/m4/include_next.m4: Update.
* gnulib/import/m4/inttypes-pri.m4: Update.
* gnulib/import/m4/inttypes.m4: Update.
* gnulib/import/m4/isnand.m4: Update.
* gnulib/import/m4/isnanl.m4: Update.
* gnulib/import/m4/largefile.m4: Update.
* gnulib/import/m4/limits-h.m4: Update.
* gnulib/import/m4/localcharset.m4: Update.
* gnulib/import/m4/locale-fr.m4: Update.
* gnulib/import/m4/locale-ja.m4: Update.
* gnulib/import/m4/locale-zh.m4: Update.
* gnulib/import/m4/localtime-buffer.m4: Update.
* gnulib/import/m4/longlong.m4: Update.
* gnulib/import/m4/lstat.m4: Update.
* gnulib/import/m4/malloc.m4: Update.
* gnulib/import/m4/malloca.m4: Update.
* gnulib/import/m4/math_h.m4: Update.
* gnulib/import/m4/mbrtowc.m4: Update.
* gnulib/import/m4/mbsinit.m4: Update.
* gnulib/import/m4/mbsrtowcs.m4: Update.
* gnulib/import/m4/mbstate_t.m4: Update.
* gnulib/import/m4/memchr.m4: Update.
* gnulib/import/m4/memmem.m4: Update.
* gnulib/import/m4/mempcpy.m4: Update.
* gnulib/import/m4/memrchr.m4: Update.
* gnulib/import/m4/mkdir.m4: Update.
* gnulib/import/m4/mkstemp.m4: Update.
* gnulib/import/m4/mmap-anon.m4: Update.
* gnulib/import/m4/mode_t.m4: Update.
* gnulib/import/m4/msvc-inval.m4: Update.
* gnulib/import/m4/msvc-nothrow.m4: Update.
* gnulib/import/m4/multiarch.m4: Update.
* gnulib/import/m4/nocrash.m4: Update.
* gnulib/import/m4/off_t.m4: Update.
* gnulib/import/m4/onceonly.m4: Update.
* gnulib/import/m4/open-cloexec.m4: Update.
* gnulib/import/m4/open.m4: Update.
* gnulib/import/m4/openat.m4: Update.
* gnulib/import/m4/opendir.m4: Update.
* gnulib/import/m4/pathmax.m4: Update.
* gnulib/import/m4/rawmemchr.m4: Update.
* gnulib/import/m4/readdir.m4: Update.
* gnulib/import/m4/readlink.m4: Update.
* gnulib/import/m4/realloc.m4: Update.
* gnulib/import/m4/rename.m4: Update.
* gnulib/import/m4/rewinddir.m4: Update.
* gnulib/import/m4/rmdir.m4: Update.
* gnulib/import/m4/save-cwd.m4: Update.
* gnulib/import/m4/secure_getenv.m4: Update.
* gnulib/import/m4/setenv.m4: Update.
* gnulib/import/m4/signal_h.m4: Update.
* gnulib/import/m4/ssize_t.m4: Update.
* gnulib/import/m4/stat-time.m4: Update.
* gnulib/import/m4/stat.m4: Update.
* gnulib/import/m4/std-gnu11.m4: Update.
* gnulib/import/m4/stdbool.m4: Update.
* gnulib/import/m4/stddef_h.m4: Update.
* gnulib/import/m4/stdint.m4: Update.
* gnulib/import/m4/stdio_h.m4: Update.
* gnulib/import/m4/stdlib_h.m4: Update.
* gnulib/import/m4/strchrnul.m4: Update.
* gnulib/import/m4/strdup.m4: Update.
* gnulib/import/m4/strerror.m4: Update.
* gnulib/import/m4/string_h.m4: Update.
* gnulib/import/m4/strstr.m4: Update.
* gnulib/import/m4/strtok_r.m4: Update.
* gnulib/import/m4/sys_socket_h.m4: Update.
* gnulib/import/m4/sys_stat_h.m4: Update.
* gnulib/import/m4/sys_time_h.m4: Update.
* gnulib/import/m4/sys_types_h.m4: Update.
* gnulib/import/m4/tempname.m4: Update.
* gnulib/import/m4/time_h.m4: Update.
* gnulib/import/m4/unistd-safer.m4: Update.
* gnulib/import/m4/unistd_h.m4: Update.
* gnulib/import/m4/warn-on-use.m4: Update.
* gnulib/import/m4/wchar_h.m4: Update.
* gnulib/import/m4/wchar_t.m4: Update.
* gnulib/import/m4/wctype_h.m4: Update.
* gnulib/import/m4/wint_t.m4: Update.
* gnulib/import/malloc.c: Update.
* gnulib/import/malloc/scratch_buffer.h: Update.
* gnulib/import/malloc/scratch_buffer_grow.c: Update.
* gnulib/import/malloc/scratch_buffer_grow_preserve.c: Update.
* gnulib/import/malloc/scratch_buffer_set_array_size.c: Update.
* gnulib/import/malloca.c: Update.
* gnulib/import/malloca.h: Update.
* gnulib/import/malloca.valgrind: Update.
* gnulib/import/math.in.h: Update.
* gnulib/import/mbrtowc.c: Update.
* gnulib/import/mbsinit.c: Update.
* gnulib/import/mbsrtowcs-impl.h: Update.
* gnulib/import/mbsrtowcs-state.c: Update.
* gnulib/import/mbsrtowcs.c: Update.
* gnulib/import/memchr.c: Update.
* gnulib/import/memmem.c: Update.
* gnulib/import/mempcpy.c: Update.
* gnulib/import/memrchr.c: Update.
* gnulib/import/mkdir.c: Update.
* gnulib/import/mkstemp.c: Update.
* gnulib/import/msvc-inval.c: Update.
* gnulib/import/msvc-inval.h: Update.
* gnulib/import/msvc-nothrow.c: Update.
* gnulib/import/msvc-nothrow.h: Update.
* gnulib/import/open.c: Update.
* gnulib/import/openat-die.c: Update.
* gnulib/import/openat-priv.h: Update.
* gnulib/import/openat-proc.c: Update.
* gnulib/import/openat.c: Update.
* gnulib/import/openat.h: Update.
* gnulib/import/opendir.c: Update.
* gnulib/import/pathmax.h: Update.
* gnulib/import/pipe-safer.c: Update.
* gnulib/import/rawmemchr.c: Update.
* gnulib/import/readdir.c: Update.
* gnulib/import/readlink.c: Update.
* gnulib/import/realloc.c: Update.
* gnulib/import/ref-add.sin: Update.
* gnulib/import/ref-del.sin: Update.
* gnulib/import/rename.c: Update.
* gnulib/import/rewinddir.c: Update.
* gnulib/import/rmdir.c: Update.
* gnulib/import/same-inode.h: Update.
* gnulib/import/save-cwd.c: Update.
* gnulib/import/save-cwd.h: Update.
* gnulib/import/scratch_buffer.h: Update.
* gnulib/import/secure_getenv.c: Update.
* gnulib/import/setenv.c: Update.
* gnulib/import/signal.in.h: Update.
* gnulib/import/stat-time.c: Update.
* gnulib/import/stat-time.h: Update.
* gnulib/import/stat-w32.c: Update.
* gnulib/import/stat-w32.h: Update.
* gnulib/import/stat.c: Update.
* gnulib/import/stdbool.in.h: Update.
* gnulib/import/stddef.in.h: Update.
* gnulib/import/stdint.in.h: Update.
* gnulib/import/stdio.in.h: Update.
* gnulib/import/stdlib.in.h: Update.
* gnulib/import/str-two-way.h: Update.
* gnulib/import/strchrnul.c: Update.
* gnulib/import/strdup.c: Update.
* gnulib/import/streq.h: Update.
* gnulib/import/strerror-override.c: Update.
* gnulib/import/strerror-override.h: Update.
* gnulib/import/strerror.c: Update.
* gnulib/import/string.in.h: Update.
* gnulib/import/stripslash.c: Update.
* gnulib/import/strnlen1.c: Update.
* gnulib/import/strnlen1.h: Update.
* gnulib/import/strstr.c: Update.
* gnulib/import/strtok_r.c: Update.
* gnulib/import/sys_stat.in.h: Update.
* gnulib/import/sys_time.in.h: Update.
* gnulib/import/sys_types.in.h: Update.
* gnulib/import/tempname.c: Update.
* gnulib/import/tempname.h: Update.
* gnulib/import/time.in.h: Update.
* gnulib/import/unistd--.h: Update.
* gnulib/import/unistd-safer.h: Update.
* gnulib/import/unistd.in.h: Update.
* gnulib/import/unsetenv.c: Update.
* gnulib/import/verify.h: Update.
* gnulib/import/extra/snippet/warn-on-use.h: Update.
* gnulib/import/wchar.in.h: Update.
* gnulib/import/wctype.in.h: Update.
* gnulib/import/xalloc-oversized.h: Update.
* gnulib/update-gnulib.sh (GNULIB_COMMIT_SHA1): Set to
"53e2c179f26a890fa6685af4b6c1397ee370433b".
464 lines
14 KiB
C
464 lines
14 KiB
C
/* A GNU-like <signal.h>.
|
|
|
|
Copyright (C) 2006-2016 Free Software Foundation, Inc.
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program 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 General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
#if __GNUC__ >= 3
|
|
@PRAGMA_SYSTEM_HEADER@
|
|
#endif
|
|
@PRAGMA_COLUMNS@
|
|
|
|
#if defined __need_sig_atomic_t || defined __need_sigset_t || defined _GL_ALREADY_INCLUDING_SIGNAL_H || (defined _SIGNAL_H && !defined __SIZEOF_PTHREAD_MUTEX_T)
|
|
/* Special invocation convention:
|
|
- Inside glibc header files.
|
|
- On glibc systems we have a sequence of nested includes
|
|
<signal.h> -> <ucontext.h> -> <signal.h>.
|
|
In this situation, the functions are not yet declared, therefore we cannot
|
|
provide the C++ aliases.
|
|
- On glibc systems with GCC 4.3 we have a sequence of nested includes
|
|
<csignal> -> </usr/include/signal.h> -> <sys/ucontext.h> -> <signal.h>.
|
|
In this situation, some of the functions are not yet declared, therefore
|
|
we cannot provide the C++ aliases. */
|
|
|
|
# @INCLUDE_NEXT@ @NEXT_SIGNAL_H@
|
|
|
|
#else
|
|
/* Normal invocation convention. */
|
|
|
|
#ifndef _@GUARD_PREFIX@_SIGNAL_H
|
|
|
|
#define _GL_ALREADY_INCLUDING_SIGNAL_H
|
|
|
|
/* Define pid_t, uid_t.
|
|
Also, mingw defines sigset_t not in <signal.h>, but in <sys/types.h>.
|
|
On Solaris 10, <signal.h> includes <sys/types.h>, which eventually includes
|
|
us; so include <sys/types.h> now, before the second inclusion guard. */
|
|
#include <sys/types.h>
|
|
|
|
/* The include_next requires a split double-inclusion guard. */
|
|
#@INCLUDE_NEXT@ @NEXT_SIGNAL_H@
|
|
|
|
#undef _GL_ALREADY_INCLUDING_SIGNAL_H
|
|
|
|
#ifndef _@GUARD_PREFIX@_SIGNAL_H
|
|
#define _@GUARD_PREFIX@_SIGNAL_H
|
|
|
|
/* Mac OS X 10.3, FreeBSD 6.4, OpenBSD 3.8, OSF/1 4.0, Solaris 2.6, Android
|
|
declare pthread_sigmask in <pthread.h>, not in <signal.h>.
|
|
But avoid namespace pollution on glibc systems.*/
|
|
#if (@GNULIB_PTHREAD_SIGMASK@ || defined GNULIB_POSIXCHECK) \
|
|
&& ((defined __APPLE__ && defined __MACH__) \
|
|
|| defined __FreeBSD__ || defined __OpenBSD__ || defined __osf__ \
|
|
|| defined __sun || defined __ANDROID__) \
|
|
&& ! defined __GLIBC__
|
|
# include <pthread.h>
|
|
#endif
|
|
|
|
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
|
|
|
|
/* The definition of _GL_ARG_NONNULL is copied here. */
|
|
|
|
/* The definition of _GL_WARN_ON_USE is copied here. */
|
|
|
|
/* On AIX, sig_atomic_t already includes volatile. C99 requires that
|
|
'volatile sig_atomic_t' ignore the extra modifier, but C89 did not.
|
|
Hence, redefine this to a non-volatile type as needed. */
|
|
#if ! @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@
|
|
# if !GNULIB_defined_sig_atomic_t
|
|
typedef int rpl_sig_atomic_t;
|
|
# undef sig_atomic_t
|
|
# define sig_atomic_t rpl_sig_atomic_t
|
|
# define GNULIB_defined_sig_atomic_t 1
|
|
# endif
|
|
#endif
|
|
|
|
/* A set or mask of signals. */
|
|
#if !@HAVE_SIGSET_T@
|
|
# if !GNULIB_defined_sigset_t
|
|
typedef unsigned int sigset_t;
|
|
# define GNULIB_defined_sigset_t 1
|
|
# endif
|
|
#endif
|
|
|
|
/* Define sighandler_t, the type of signal handlers. A GNU extension. */
|
|
#if !@HAVE_SIGHANDLER_T@
|
|
# ifdef __cplusplus
|
|
extern "C" {
|
|
# endif
|
|
# if !GNULIB_defined_sighandler_t
|
|
typedef void (*sighandler_t) (int);
|
|
# define GNULIB_defined_sighandler_t 1
|
|
# endif
|
|
# ifdef __cplusplus
|
|
}
|
|
# endif
|
|
#endif
|
|
|
|
|
|
#if @GNULIB_SIGNAL_H_SIGPIPE@
|
|
# ifndef SIGPIPE
|
|
/* Define SIGPIPE to a value that does not overlap with other signals. */
|
|
# define SIGPIPE 13
|
|
# define GNULIB_defined_SIGPIPE 1
|
|
/* To actually use SIGPIPE, you also need the gnulib modules 'sigprocmask',
|
|
'write', 'stdio'. */
|
|
# endif
|
|
#endif
|
|
|
|
|
|
/* Maximum signal number + 1. */
|
|
#ifndef NSIG
|
|
# if defined __TANDEM
|
|
# define NSIG 32
|
|
# endif
|
|
#endif
|
|
|
|
|
|
#if @GNULIB_PTHREAD_SIGMASK@
|
|
# if @REPLACE_PTHREAD_SIGMASK@
|
|
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
|
# undef pthread_sigmask
|
|
# define pthread_sigmask rpl_pthread_sigmask
|
|
# endif
|
|
_GL_FUNCDECL_RPL (pthread_sigmask, int,
|
|
(int how, const sigset_t *new_mask, sigset_t *old_mask));
|
|
_GL_CXXALIAS_RPL (pthread_sigmask, int,
|
|
(int how, const sigset_t *new_mask, sigset_t *old_mask));
|
|
# else
|
|
# if !@HAVE_PTHREAD_SIGMASK@
|
|
_GL_FUNCDECL_SYS (pthread_sigmask, int,
|
|
(int how, const sigset_t *new_mask, sigset_t *old_mask));
|
|
# endif
|
|
_GL_CXXALIAS_SYS (pthread_sigmask, int,
|
|
(int how, const sigset_t *new_mask, sigset_t *old_mask));
|
|
# endif
|
|
_GL_CXXALIASWARN (pthread_sigmask);
|
|
#elif defined GNULIB_POSIXCHECK
|
|
# undef pthread_sigmask
|
|
# if HAVE_RAW_DECL_PTHREAD_SIGMASK
|
|
_GL_WARN_ON_USE (pthread_sigmask, "pthread_sigmask is not portable - "
|
|
"use gnulib module pthread_sigmask for portability");
|
|
# endif
|
|
#endif
|
|
|
|
|
|
#if @GNULIB_RAISE@
|
|
# if @REPLACE_RAISE@
|
|
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
|
# undef raise
|
|
# define raise rpl_raise
|
|
# endif
|
|
_GL_FUNCDECL_RPL (raise, int, (int sig));
|
|
_GL_CXXALIAS_RPL (raise, int, (int sig));
|
|
# else
|
|
# if !@HAVE_RAISE@
|
|
_GL_FUNCDECL_SYS (raise, int, (int sig));
|
|
# endif
|
|
_GL_CXXALIAS_SYS (raise, int, (int sig));
|
|
# endif
|
|
_GL_CXXALIASWARN (raise);
|
|
#elif defined GNULIB_POSIXCHECK
|
|
# undef raise
|
|
/* Assume raise is always declared. */
|
|
_GL_WARN_ON_USE (raise, "raise can crash on native Windows - "
|
|
"use gnulib module raise for portability");
|
|
#endif
|
|
|
|
|
|
#if @GNULIB_SIGPROCMASK@
|
|
# if !@HAVE_POSIX_SIGNALBLOCKING@
|
|
|
|
# ifndef GNULIB_defined_signal_blocking
|
|
# define GNULIB_defined_signal_blocking 1
|
|
# endif
|
|
|
|
/* Maximum signal number + 1. */
|
|
# ifndef NSIG
|
|
# define NSIG 32
|
|
# endif
|
|
|
|
/* This code supports only 32 signals. */
|
|
# if !GNULIB_defined_verify_NSIG_constraint
|
|
typedef int verify_NSIG_constraint[NSIG <= 32 ? 1 : -1];
|
|
# define GNULIB_defined_verify_NSIG_constraint 1
|
|
# endif
|
|
|
|
# endif
|
|
|
|
/* When also using extern inline, suppress the use of static inline in
|
|
standard headers of problematic Apple configurations, as Libc at
|
|
least through Libc-825.26 (2013-04-09) mishandles it; see, e.g.,
|
|
<http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html>.
|
|
Perhaps Apple will fix this some day. */
|
|
#if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \
|
|
&& (defined __i386__ || defined __x86_64__))
|
|
# undef sigaddset
|
|
# undef sigdelset
|
|
# undef sigemptyset
|
|
# undef sigfillset
|
|
# undef sigismember
|
|
#endif
|
|
|
|
/* Test whether a given signal is contained in a signal set. */
|
|
# if @HAVE_POSIX_SIGNALBLOCKING@
|
|
/* This function is defined as a macro on Mac OS X. */
|
|
# if defined __cplusplus && defined GNULIB_NAMESPACE
|
|
# undef sigismember
|
|
# endif
|
|
# else
|
|
_GL_FUNCDECL_SYS (sigismember, int, (const sigset_t *set, int sig)
|
|
_GL_ARG_NONNULL ((1)));
|
|
# endif
|
|
_GL_CXXALIAS_SYS (sigismember, int, (const sigset_t *set, int sig));
|
|
_GL_CXXALIASWARN (sigismember);
|
|
|
|
/* Initialize a signal set to the empty set. */
|
|
# if @HAVE_POSIX_SIGNALBLOCKING@
|
|
/* This function is defined as a macro on Mac OS X. */
|
|
# if defined __cplusplus && defined GNULIB_NAMESPACE
|
|
# undef sigemptyset
|
|
# endif
|
|
# else
|
|
_GL_FUNCDECL_SYS (sigemptyset, int, (sigset_t *set) _GL_ARG_NONNULL ((1)));
|
|
# endif
|
|
_GL_CXXALIAS_SYS (sigemptyset, int, (sigset_t *set));
|
|
_GL_CXXALIASWARN (sigemptyset);
|
|
|
|
/* Add a signal to a signal set. */
|
|
# if @HAVE_POSIX_SIGNALBLOCKING@
|
|
/* This function is defined as a macro on Mac OS X. */
|
|
# if defined __cplusplus && defined GNULIB_NAMESPACE
|
|
# undef sigaddset
|
|
# endif
|
|
# else
|
|
_GL_FUNCDECL_SYS (sigaddset, int, (sigset_t *set, int sig)
|
|
_GL_ARG_NONNULL ((1)));
|
|
# endif
|
|
_GL_CXXALIAS_SYS (sigaddset, int, (sigset_t *set, int sig));
|
|
_GL_CXXALIASWARN (sigaddset);
|
|
|
|
/* Remove a signal from a signal set. */
|
|
# if @HAVE_POSIX_SIGNALBLOCKING@
|
|
/* This function is defined as a macro on Mac OS X. */
|
|
# if defined __cplusplus && defined GNULIB_NAMESPACE
|
|
# undef sigdelset
|
|
# endif
|
|
# else
|
|
_GL_FUNCDECL_SYS (sigdelset, int, (sigset_t *set, int sig)
|
|
_GL_ARG_NONNULL ((1)));
|
|
# endif
|
|
_GL_CXXALIAS_SYS (sigdelset, int, (sigset_t *set, int sig));
|
|
_GL_CXXALIASWARN (sigdelset);
|
|
|
|
/* Fill a signal set with all possible signals. */
|
|
# if @HAVE_POSIX_SIGNALBLOCKING@
|
|
/* This function is defined as a macro on Mac OS X. */
|
|
# if defined __cplusplus && defined GNULIB_NAMESPACE
|
|
# undef sigfillset
|
|
# endif
|
|
# else
|
|
_GL_FUNCDECL_SYS (sigfillset, int, (sigset_t *set) _GL_ARG_NONNULL ((1)));
|
|
# endif
|
|
_GL_CXXALIAS_SYS (sigfillset, int, (sigset_t *set));
|
|
_GL_CXXALIASWARN (sigfillset);
|
|
|
|
/* Return the set of those blocked signals that are pending. */
|
|
# if !@HAVE_POSIX_SIGNALBLOCKING@
|
|
_GL_FUNCDECL_SYS (sigpending, int, (sigset_t *set) _GL_ARG_NONNULL ((1)));
|
|
# endif
|
|
_GL_CXXALIAS_SYS (sigpending, int, (sigset_t *set));
|
|
_GL_CXXALIASWARN (sigpending);
|
|
|
|
/* If OLD_SET is not NULL, put the current set of blocked signals in *OLD_SET.
|
|
Then, if SET is not NULL, affect the current set of blocked signals by
|
|
combining it with *SET as indicated in OPERATION.
|
|
In this implementation, you are not allowed to change a signal handler
|
|
while the signal is blocked. */
|
|
# if !@HAVE_POSIX_SIGNALBLOCKING@
|
|
# define SIG_BLOCK 0 /* blocked_set = blocked_set | *set; */
|
|
# define SIG_SETMASK 1 /* blocked_set = *set; */
|
|
# define SIG_UNBLOCK 2 /* blocked_set = blocked_set & ~*set; */
|
|
_GL_FUNCDECL_SYS (sigprocmask, int,
|
|
(int operation, const sigset_t *set, sigset_t *old_set));
|
|
# endif
|
|
_GL_CXXALIAS_SYS (sigprocmask, int,
|
|
(int operation, const sigset_t *set, sigset_t *old_set));
|
|
_GL_CXXALIASWARN (sigprocmask);
|
|
|
|
/* Install the handler FUNC for signal SIG, and return the previous
|
|
handler. */
|
|
# ifdef __cplusplus
|
|
extern "C" {
|
|
# endif
|
|
# if !GNULIB_defined_function_taking_int_returning_void_t
|
|
typedef void (*_gl_function_taking_int_returning_void_t) (int);
|
|
# define GNULIB_defined_function_taking_int_returning_void_t 1
|
|
# endif
|
|
# ifdef __cplusplus
|
|
}
|
|
# endif
|
|
# if !@HAVE_POSIX_SIGNALBLOCKING@
|
|
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
|
# define signal rpl_signal
|
|
# endif
|
|
_GL_FUNCDECL_RPL (signal, _gl_function_taking_int_returning_void_t,
|
|
(int sig, _gl_function_taking_int_returning_void_t func));
|
|
_GL_CXXALIAS_RPL (signal, _gl_function_taking_int_returning_void_t,
|
|
(int sig, _gl_function_taking_int_returning_void_t func));
|
|
# else
|
|
_GL_CXXALIAS_SYS (signal, _gl_function_taking_int_returning_void_t,
|
|
(int sig, _gl_function_taking_int_returning_void_t func));
|
|
# endif
|
|
_GL_CXXALIASWARN (signal);
|
|
|
|
# if !@HAVE_POSIX_SIGNALBLOCKING@ && GNULIB_defined_SIGPIPE
|
|
/* Raise signal SIGPIPE. */
|
|
_GL_EXTERN_C int _gl_raise_SIGPIPE (void);
|
|
# endif
|
|
|
|
#elif defined GNULIB_POSIXCHECK
|
|
# undef sigaddset
|
|
# if HAVE_RAW_DECL_SIGADDSET
|
|
_GL_WARN_ON_USE (sigaddset, "sigaddset is unportable - "
|
|
"use the gnulib module sigprocmask for portability");
|
|
# endif
|
|
# undef sigdelset
|
|
# if HAVE_RAW_DECL_SIGDELSET
|
|
_GL_WARN_ON_USE (sigdelset, "sigdelset is unportable - "
|
|
"use the gnulib module sigprocmask for portability");
|
|
# endif
|
|
# undef sigemptyset
|
|
# if HAVE_RAW_DECL_SIGEMPTYSET
|
|
_GL_WARN_ON_USE (sigemptyset, "sigemptyset is unportable - "
|
|
"use the gnulib module sigprocmask for portability");
|
|
# endif
|
|
# undef sigfillset
|
|
# if HAVE_RAW_DECL_SIGFILLSET
|
|
_GL_WARN_ON_USE (sigfillset, "sigfillset is unportable - "
|
|
"use the gnulib module sigprocmask for portability");
|
|
# endif
|
|
# undef sigismember
|
|
# if HAVE_RAW_DECL_SIGISMEMBER
|
|
_GL_WARN_ON_USE (sigismember, "sigismember is unportable - "
|
|
"use the gnulib module sigprocmask for portability");
|
|
# endif
|
|
# undef sigpending
|
|
# if HAVE_RAW_DECL_SIGPENDING
|
|
_GL_WARN_ON_USE (sigpending, "sigpending is unportable - "
|
|
"use the gnulib module sigprocmask for portability");
|
|
# endif
|
|
# undef sigprocmask
|
|
# if HAVE_RAW_DECL_SIGPROCMASK
|
|
_GL_WARN_ON_USE (sigprocmask, "sigprocmask is unportable - "
|
|
"use the gnulib module sigprocmask for portability");
|
|
# endif
|
|
#endif /* @GNULIB_SIGPROCMASK@ */
|
|
|
|
|
|
#if @GNULIB_SIGACTION@
|
|
# if !@HAVE_SIGACTION@
|
|
|
|
# if !@HAVE_SIGINFO_T@
|
|
|
|
# if !GNULIB_defined_siginfo_types
|
|
|
|
/* Present to allow compilation, but unsupported by gnulib. */
|
|
union sigval
|
|
{
|
|
int sival_int;
|
|
void *sival_ptr;
|
|
};
|
|
|
|
/* Present to allow compilation, but unsupported by gnulib. */
|
|
struct siginfo_t
|
|
{
|
|
int si_signo;
|
|
int si_code;
|
|
int si_errno;
|
|
pid_t si_pid;
|
|
uid_t si_uid;
|
|
void *si_addr;
|
|
int si_status;
|
|
long si_band;
|
|
union sigval si_value;
|
|
};
|
|
typedef struct siginfo_t siginfo_t;
|
|
|
|
# define GNULIB_defined_siginfo_types 1
|
|
# endif
|
|
|
|
# endif /* !@HAVE_SIGINFO_T@ */
|
|
|
|
/* We assume that platforms which lack the sigaction() function also lack
|
|
the 'struct sigaction' type, and vice versa. */
|
|
|
|
# if !GNULIB_defined_struct_sigaction
|
|
|
|
struct sigaction
|
|
{
|
|
union
|
|
{
|
|
void (*_sa_handler) (int);
|
|
/* Present to allow compilation, but unsupported by gnulib. POSIX
|
|
says that implementations may, but not must, make sa_sigaction
|
|
overlap with sa_handler, but we know of no implementation where
|
|
they do not overlap. */
|
|
void (*_sa_sigaction) (int, siginfo_t *, void *);
|
|
} _sa_func;
|
|
sigset_t sa_mask;
|
|
/* Not all POSIX flags are supported. */
|
|
int sa_flags;
|
|
};
|
|
# define sa_handler _sa_func._sa_handler
|
|
# define sa_sigaction _sa_func._sa_sigaction
|
|
/* Unsupported flags are not present. */
|
|
# define SA_RESETHAND 1
|
|
# define SA_NODEFER 2
|
|
# define SA_RESTART 4
|
|
|
|
# define GNULIB_defined_struct_sigaction 1
|
|
# endif
|
|
|
|
_GL_FUNCDECL_SYS (sigaction, int, (int, const struct sigaction *restrict,
|
|
struct sigaction *restrict));
|
|
|
|
# elif !@HAVE_STRUCT_SIGACTION_SA_SIGACTION@
|
|
|
|
# define sa_sigaction sa_handler
|
|
|
|
# endif /* !@HAVE_SIGACTION@, !@HAVE_STRUCT_SIGACTION_SA_SIGACTION@ */
|
|
|
|
_GL_CXXALIAS_SYS (sigaction, int, (int, const struct sigaction *restrict,
|
|
struct sigaction *restrict));
|
|
_GL_CXXALIASWARN (sigaction);
|
|
|
|
#elif defined GNULIB_POSIXCHECK
|
|
# undef sigaction
|
|
# if HAVE_RAW_DECL_SIGACTION
|
|
_GL_WARN_ON_USE (sigaction, "sigaction is unportable - "
|
|
"use the gnulib module sigaction for portability");
|
|
# endif
|
|
#endif
|
|
|
|
/* Some systems don't have SA_NODEFER. */
|
|
#ifndef SA_NODEFER
|
|
# define SA_NODEFER 0
|
|
#endif
|
|
|
|
|
|
#endif /* _@GUARD_PREFIX@_SIGNAL_H */
|
|
#endif /* _@GUARD_PREFIX@_SIGNAL_H */
|
|
#endif
|