diff options
author | Pedro Alves <pedro@palves.net> | 2021-06-17 16:16:54 +0100 |
---|---|---|
committer | Pedro Alves <pedro@palves.net> | 2021-06-17 16:22:11 +0100 |
commit | 6a7f1c20e82c349a2d4c977a27319e895e8ca284 (patch) | |
tree | 6210ff7bd225b3fcefd8d5b9047cfefffbdca2be /gdb | |
parent | 965febe599ab3a5f9fa17a7aaed4dd714f265ecd (diff) | |
download | gdb-6a7f1c20e82c349a2d4c977a27319e895e8ca284.zip gdb-6a7f1c20e82c349a2d4c977a27319e895e8ca284.tar.gz gdb-6a7f1c20e82c349a2d4c977a27319e895e8ca284.tar.bz2 |
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<SIGPIPE> 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 <pedro@palves.net>
* gdbsupport/scoped_ignore_signal.h: New.
* compile/compile.c: Include gdbsupport/scoped_ignore_signal.h
instead of <signal.h>. Don't include <unistd.h>.
(scoped_ignore_sigpipe): Remove.
* gdbsupport/scoped_ignore_sigttou.h: Include gdbsupport/scoped_ignore_signal.h
instead of <signal.h>. Don't include <unistd.h>.
(lazy_init): New.
(scoped_ignore_sigttou): Reimplement using scoped_ignore_signal
and lazy_init.
Change-Id: Ibb44d0bd705e96df03ef0787c77358a4a7b7086c
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 12 | ||||
-rw-r--r-- | gdb/compile/compile.c | 29 |
2 files changed, 13 insertions, 28 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 63d7cf5..a56531e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,17 @@ 2021-06-17 Pedro Alves <pedro@palves.net> + * gdbsupport/scoped_ignore_signal.h: New. + * compile/compile.c: Include gdbsupport/scoped_ignore_signal.h + instead of <signal.h>. Don't include <unistd.h>. + (scoped_ignore_sigpipe): Remove. + * gdbsupport/scoped_ignore_sigttou.h: Include gdbsupport/scoped_ignore_signal.h + instead of <signal.h>. Don't include <unistd.h>. + (lazy_init): New. + (scoped_ignore_sigttou): Reimplement using scoped_ignore_signal + and lazy_init. + +2021-06-17 Pedro Alves <pedro@palves.net> + * Makefile.in (HFILES_NO_SRCDIR): Remove inflow.h. * inf-ptrace.c, inflow.c, procfs.c: Don't include "inflow.h". * inflow.h: Delete, moved to gdbsupport/ under a different name. 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 <signal.h> +#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. */ |