aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorPedro Alves <pedro@palves.net>2021-06-17 16:16:54 +0100
committerPedro Alves <pedro@palves.net>2021-06-17 16:22:11 +0100
commit6a7f1c20e82c349a2d4c977a27319e895e8ca284 (patch)
tree6210ff7bd225b3fcefd8d5b9047cfefffbdca2be /gdb
parent965febe599ab3a5f9fa17a7aaed4dd714f265ecd (diff)
downloadgdb-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/ChangeLog12
-rw-r--r--gdb/compile/compile.c29
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. */