From 6a7f1c20e82c349a2d4c977a27319e895e8ca284 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Thu, 17 Jun 2021 16:16:54 +0100 Subject: Introduce scoped_restore_signal We currently have scoped_restore_sigttou and scoped_restore_sigpipe doing basically the same thing -- temporarily ignoring a specific signal. This patch introduce a scoped_restore_signal type that can be used for both. This will become more important for the next patch which changes how the signal-ignoring is implemented. scoped_restore_sigpipe is a straight alias to scoped_restore_signal on systems that define SIGPIPE, and an alias to scoped_restore_signal_nop (a no-op version of scoped_restore_signal) otherwise. scoped_restore_sigttou is not a straight alias because it wants to check the job_control global. gdb/ChangeLog: yyyy-mm-dd Pedro Alves * gdbsupport/scoped_ignore_signal.h: New. * compile/compile.c: Include gdbsupport/scoped_ignore_signal.h instead of . Don't include . (scoped_ignore_sigpipe): Remove. * gdbsupport/scoped_ignore_sigttou.h: Include gdbsupport/scoped_ignore_signal.h instead of . Don't include . (lazy_init): New. (scoped_ignore_sigttou): Reimplement using scoped_ignore_signal and lazy_init. Change-Id: Ibb44d0bd705e96df03ef0787c77358a4a7b7086c --- gdb/compile/compile.c | 29 +---------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) (limited to 'gdb/compile/compile.c') diff --git a/gdb/compile/compile.c b/gdb/compile/compile.c index abbb72a..e815348 100644 --- a/gdb/compile/compile.c +++ b/gdb/compile/compile.c @@ -43,7 +43,7 @@ #include "gdbsupport/gdb_optional.h" #include "gdbsupport/gdb_unlinker.h" #include "gdbsupport/pathstuff.h" -#include +#include "gdbsupport/scoped_ignore_signal.h" @@ -634,33 +634,6 @@ print_callback (void *ignore, const char *message) fputs_filtered (message, gdb_stderr); } -/* RAII class used to ignore SIGPIPE in a scope. */ - -class scoped_ignore_sigpipe -{ -public: - scoped_ignore_sigpipe () - { -#ifdef SIGPIPE - m_osigpipe = signal (SIGPIPE, SIG_IGN); -#endif - } - - ~scoped_ignore_sigpipe () - { -#ifdef SIGPIPE - signal (SIGPIPE, m_osigpipe); -#endif - } - - DISABLE_COPY_AND_ASSIGN (scoped_ignore_sigpipe); - -private: -#ifdef SIGPIPE - sighandler_t m_osigpipe = NULL; -#endif -}; - /* Process the compilation request. On success it returns the object and source file names. On an error condition, error () is called. */ -- cgit v1.1