Its implementation always returned with a failure, and the function
was not declared in any header file.
+* The legacy signal handling functions siginterrupt, sigpause, sighold,
+ sigrelse, sigignore and sigset, and the sigmask macro have been
+ deprecated. Applications should use the sigsuspend, sigprocmask and
+ sigaction functions instead.
+
* ldconfig now defaults to the new format for ld.so.cache. glibc has
already supported this format for almost 20 years.
false, signal @var{signum} restarts primitives. If @var{failflag} is
true, handling @var{signum} causes these primitives to fail with error
code @code{EINTR}. @xref{Interrupted Primitives}.
+
+This function has been replaced by the @code{SA_RESTART} flag of the
+@code{sigaction} function. @xref{Advanced Signal Handling}.
@end deftypefun
@deftypefn Macro int sigmask (int @var{signum})
@noindent
specifies a mask that includes all the job-control stop signals.
+
+This macro has been replaced by the @code{sigset_t} type and the
+associated signal set manipulation functions. @xref{Signal Sets}.
@end deftypefn
@deftypefun int sigblock (int @var{mask})
# function frequently to get a thread-specific handle.
CFLAGS-pthread_self.os += -fomit-frame-pointer
+# The sigmask macro is deprecated and triggers are compiler warning
+# which cannot be suppressed (as of GCC 9).
+CFLAGS-tst-cancel4.c += -Wno-error
+CFLAGS-tst-cancel5.c += -Wno-error
+CFLAGS-tst-cancelx4.c += -Wno-error
+CFLAGS-tst-cancelx5.c += -Wno-error
+
# Run the cancellation and cleanup tests also for the modern, exception-based
# implementation. For this we have to pass the -fexceptions parameter.
CFLAGS-tst-cancelx2.c += -fexceptions
#include <sys/wait.h>
#include <sys/stat.h>
#include <sys/uio.h>
+#include <libc-diag.h>
/* Since STREAMS are not supported in the standard Linux kernel and
pthread_cleanup_push (cl, NULL);
+ /* This tests the deprecated sigpause and sigmask functions. The
+ file is compiled with -Wno-errno so that the sigmask deprecation
+ warning is not fatal. */
+ DIAG_PUSH_NEEDS_COMMENT;
+ DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdeprecated-declarations");
sigpause (sigmask (SIGINT));
+ DIAG_POP_NEEDS_COMMENT;
pthread_cleanup_pop (0);
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
+#include <support/xsignal.h>
static void *
}
/* Not interested in knowing when the pipe is closed. */
- if (sigignore (SIGPIPE) != 0)
- {
- puts ("sigignore failed");
- exit (1);
- }
+ xsignal (SIGPIPE, SIG_IGN);
posix_spawn_file_actions_t a;
if (posix_spawn_file_actions_init (&a) != 0)
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
+#include <support/xsignal.h>
static void *
}
/* Not interested in knowing when the pipe is closed. */
- if (sigignore (SIGPIPE) != 0)
- {
- puts ("sigignore failed");
- exit (1);
- }
+ xsignal (SIGPIPE, SIG_IGN);
pid_t pid = fork ();
if (pid == -1)
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
+#include <support/xsignal.h>
static void *
}
/* Not interested in knowing when the pipe is closed. */
- if (sigignore (SIGPIPE) != 0)
- {
- puts ("sigignore failed");
- exit (1);
- }
+ xsignal (SIGPIPE, SIG_IGN);
pid_t pid = fork ();
if (pid == -1)
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
-
+#include <support/xsignal.h>
static void *
tf (void *arg)
{
/* Ignore SIGUSR1 and block SIGUSR2. */
- if (sigignore (SIGUSR1) != 0)
- {
- puts ("sigignore failed");
- exit (1);
- }
+ xsignal (SIGUSR1, SIG_IGN);
sigset_t ss;
sigemptyset (&ss);
}
/* Not interested in knowing when the pipe is closed. */
- if (sigignore (SIGPIPE) != 0)
- {
- puts ("error: sigignore failed");
- exit (1);
- }
+ xsignal (SIGPIPE, SIG_IGN);
/* To synchronize with the thread. */
if (pthread_barrier_init (&b, NULL, 2) != 0)
#ifdef __USE_XOPEN_EXTENDED
# ifdef __GNUC__
-extern int sigpause (int __sig) __asm__ ("__xpg_sigpause");
+extern int sigpause (int __sig) __asm__ ("__xpg_sigpause")
+ __attribute_deprecated_msg__ ("Use the sigsuspend function instead");
# else
extern int __sigpause (int __sig_or_mask, int __is_sig);
/* Remove a signal from the signal mask and suspend the process. */
simply do not work in many situations. Use `sigprocmask' instead. */
/* Compute mask for signal SIG. */
-# define sigmask(sig) ((int)(1u << ((sig) - 1)))
+# define sigmask(sig) \
+ __glibc_macro_warning ("sigmask is deprecated") \
+ ((int)(1u << ((sig) - 1)))
/* Block signals in MASK, returning the old mask. */
extern int sigblock (int __mask) __THROW __attribute_deprecated__;
/* If INTERRUPT is nonzero, make signal SIG interrupt system calls
(causing them to fail with EINTR); if INTERRUPT is zero, make system
calls be restarted after signal SIG. */
-extern int siginterrupt (int __sig, int __interrupt) __THROW;
+extern int siginterrupt (int __sig, int __interrupt) __THROW
+ __attribute_deprecated_msg__ ("Use sigaction with SA_RESTART instead");
# include <bits/sigstack.h>
# include <bits/ss_flags.h>
/* Simplified interface for signal management. */
/* Add SIG to the calling process' signal mask. */
-extern int sighold (int __sig) __THROW;
+extern int sighold (int __sig) __THROW
+ __attribute_deprecated_msg__ ("Use the sigprocmask function instead");
/* Remove SIG from the calling process' signal mask. */
-extern int sigrelse (int __sig) __THROW;
+extern int sigrelse (int __sig) __THROW
+ __attribute_deprecated_msg__ ("Use the sigprocmask function instead");
/* Set the disposition of SIG to SIG_IGN. */
-extern int sigignore (int __sig) __THROW;
+extern int sigignore (int __sig) __THROW
+ __attribute_deprecated_msg__ ("Use the signal function instead");
/* Set the disposition of SIG. */
-extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __THROW;
+extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __THROW
+ __attribute_deprecated_msg__
+ ("Use the signal and sigprocmask functions instead");
#endif
#if defined __USE_POSIX199506 || defined __USE_UNIX98
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
+#include <libc-diag.h>
+
+/* The sigset function is deprecated. */
+DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdeprecated-declarations");
#define TEST_SIG SIGINT
#include <signal.h>
#include <stdio.h>
#include <string.h>
+#include <libc-diag.h>
+/* The sighold and sigrelse functions are deprecated. */
+DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdeprecated-declarations");
static int
do_test (void)