Browse Source

gdb: move a bunch of quit-related things to event-top.{c,h}

Move some declarations related to the "quit" machinery from defs.h to
event-top.h.  Most of the definitions associated to these declarations
are in event-top.c.  The exceptions are `quit()` and `maybe_quit()`,
that are defined in utils.c.  For consistency, move these two
definitions to event-top.c.

Include "event-top.h" in many files that use these things.

Change-Id: I6594f6df9047a9a480e7b9934275d186afb14378
Approved-By: Tom Tromey <tom@tromey.com>
master
Simon Marchi 2 years ago
parent
commit
e5dc0d5d04
  1. 1
      gdb/ada-lang.c
  2. 1
      gdb/ada-typeprint.c
  3. 1
      gdb/ada-valprint.c
  4. 1
      gdb/addrmap.c
  5. 1
      gdb/amd64-windows-tdep.c
  6. 1
      gdb/breakpoint.c
  7. 1
      gdb/c-typeprint.c
  8. 1
      gdb/cli/cli-script.c
  9. 1
      gdb/coffread.c
  10. 1
      gdb/corefile.c
  11. 1
      gdb/cp-valprint.c
  12. 1
      gdb/dbxread.c
  13. 44
      gdb/defs.h
  14. 1
      gdb/disasm.c
  15. 1
      gdb/dwarf2/cooked-index.c
  16. 1
      gdb/dwarf2/expr.c
  17. 1
      gdb/dwarf2/loc.c
  18. 1
      gdb/dwarf2/read-gdb-index.c
  19. 1
      gdb/dwarf2/read.c
  20. 48
      gdb/event-top.c
  21. 52
      gdb/event-top.h
  22. 1
      gdb/f-typeprint.c
  23. 1
      gdb/findvar.c
  24. 1
      gdb/frame.c
  25. 1
      gdb/gdb_bfd.c
  26. 1
      gdb/linux-fork.c
  27. 1
      gdb/m2-lang.c
  28. 1
      gdb/m2-typeprint.c
  29. 1
      gdb/mi/mi-cmd-stack.c
  30. 1
      gdb/objc-lang.c
  31. 1
      gdb/p-lang.c
  32. 1
      gdb/p-typeprint.c
  33. 1
      gdb/printcmd.c
  34. 1
      gdb/psymtab.c
  35. 1
      gdb/remote-fileio.c
  36. 1
      gdb/remote-sim.c
  37. 1
      gdb/rust-lang.c
  38. 1
      gdb/ser-base.c
  39. 1
      gdb/skip.c
  40. 1
      gdb/solib-rocm.c
  41. 1
      gdb/sparc64-tdep.c
  42. 1
      gdb/stabsread.c
  43. 1
      gdb/stack.c
  44. 1
      gdb/symmisc.c
  45. 1
      gdb/symtab.c
  46. 1
      gdb/tracepoint.c
  47. 1
      gdb/tui/tui.c
  48. 41
      gdb/utils.c
  49. 1
      gdb/valops.c
  50. 1
      gdb/valprint.c
  51. 1
      gdb/xcoffread.c

1
gdb/ada-lang.c

@ -19,6 +19,7 @@
#include <ctype.h>
#include "event-top.h"
#include "extract-store-integer.h"
#include "gdbsupport/gdb_regex.h"
#include "frame.h"

1
gdb/ada-typeprint.c

@ -17,6 +17,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "bfd.h"
#include "event-top.h"
#include "gdbtypes.h"
#include "value.h"
#include "c-lang.h"

1
gdb/ada-valprint.c

@ -18,6 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <ctype.h>
#include "event-top.h"
#include "extract-store-integer.h"
#include "gdbtypes.h"
#include "expression.h"

1
gdb/addrmap.c

@ -17,6 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "gdbsupport/gdb_obstack.h"
#include "addrmap.h"
#include "gdbsupport/selftest.h"

1
gdb/amd64-windows-tdep.c

@ -15,6 +15,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "extract-store-integer.h"
#include "osabi.h"
#include "amd64-tdep.h"

1
gdb/breakpoint.c

@ -19,6 +19,7 @@
#include "arch-utils.h"
#include <ctype.h>
#include "event-top.h"
#include "hashtab.h"
#include "symtab.h"
#include "frame.h"

1
gdb/c-typeprint.c

@ -16,6 +16,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "gdbsupport/gdb_obstack.h"
#include "bfd.h"
#include "symtab.h"

1
gdb/cli/cli-script.c

@ -17,6 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "value.h"
#include <ctype.h>

1
gdb/coffread.c

@ -17,6 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "symtab.h"
#include "gdbtypes.h"
#include "demangle.h"

1
gdb/corefile.c

@ -19,6 +19,7 @@
#include <signal.h>
#include <fcntl.h>
#include "event-top.h"
#include "extract-store-integer.h"
#include "inferior.h"
#include "symtab.h"

1
gdb/cp-valprint.c

@ -17,6 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "extract-store-integer.h"
#include "gdbsupport/gdb_obstack.h"
#include "symtab.h"

1
gdb/dbxread.c

@ -31,6 +31,7 @@
for real. dbx_psymtab_to_symtab() is the function that does this */
#include "event-top.h"
#include "gdbsupport/gdb_obstack.h"
#include <sys/stat.h>
#include "symtab.h"

44
gdb/defs.h

@ -94,50 +94,6 @@ extern std::string python_libdir;
/* * Search path for separate debug files. */
extern std::string debug_file_directory;
/* The current quit handler (and its type). This is called from the
QUIT macro. See default_quit_handler below for default behavior.
Parts of GDB temporarily override this to e.g., completely suppress
Ctrl-C because it would not be safe to throw. E.g., normally, you
wouldn't want to quit between a RSP command and its response, as
that would break the communication with the target, but you may
still want to intercept the Ctrl-C and offer to disconnect if the
user presses Ctrl-C multiple times while the target is stuck
waiting for the wedged remote stub. */
typedef void (quit_handler_ftype) (void);
extern quit_handler_ftype *quit_handler;
/* The default quit handler. Checks whether Ctrl-C was pressed, and
if so:
- If GDB owns the terminal, throws a quit exception.
- If GDB does not own the terminal, forwards the Ctrl-C to the
target.
*/
extern void default_quit_handler (void);
/* Flag that function quit should call quit_force. */
extern volatile bool sync_quit_force_run;
/* Set sync_quit_force_run and also call set_quit_flag(). */
extern void set_force_quit_flag ();
extern void quit (void);
/* Helper for the QUIT macro. */
extern void maybe_quit (void);
/* Check whether a Ctrl-C was typed, and if so, call the current quit
handler. */
#define QUIT maybe_quit ()
/* Set the serial event associated with the quit flag. */
extern void quit_serial_event_set (void);
/* Clear the serial event associated with the quit flag. */
extern void quit_serial_event_clear (void);
/* * Languages represented in the symbol table and elsewhere.
This should probably be in language.h, but since enum's can't
be forward declared to satisfy opaque references before their

1
gdb/disasm.c

@ -18,6 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "arch-utils.h"
#include "event-top.h"
#include "target.h"
#include "value.h"
#include "ui-out.h"

1
gdb/dwarf2/cooked-index.c

@ -24,6 +24,7 @@
#include "cp-support.h"
#include "c-lang.h"
#include "ada-lang.h"
#include "event-top.h"
#include "split-name.h"
#include "observable.h"
#include "run-on-main-thread.h"

1
gdb/dwarf2/expr.c

@ -20,6 +20,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "block.h"
#include "event-top.h"
#include "symtab.h"
#include "gdbtypes.h"
#include "value.h"

1
gdb/dwarf2/loc.c

@ -19,6 +19,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "ui-out.h"
#include "value.h"
#include "frame.h"

1
gdb/dwarf2/read-gdb-index.c

@ -22,6 +22,7 @@
#include "cli/cli-cmds.h"
#include "complaints.h"
#include "dwz.h"
#include "event-top.h"
#include "gdb/gdb-index.h"
#include "gdbsupport/gdb-checked-static-cast.h"
#include "mapped-index.h"

1
gdb/dwarf2/read.c

@ -47,6 +47,7 @@
#include "dwarf2/public.h"
#include "bfd.h"
#include "elf-bfd.h"
#include "event-top.h"
#include "symtab.h"
#include "gdbtypes.h"
#include "objfiles.h"

48
gdb/event-top.c

@ -19,6 +19,8 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "gdbsupport/job-control.h"
#include "run-on-main-thread.h"
#include "top.h"
#include "ui.h"
#include "inferior.h"
@ -1062,15 +1064,55 @@ gdb_init_signals (void)
install_handle_sigsegv ();
}
/* See defs.h. */
/* See event-top.h. */
void
quit_serial_event_set (void)
quit (void)
{
if (sync_quit_force_run)
{
sync_quit_force_run = false;
throw_forced_quit ("SIGTERM");
}
#ifdef __MSDOS__
/* No steenking SIGINT will ever be coming our way when the
program is resumed. Don't lie. */
throw_quit ("Quit");
#else
if (job_control
/* If there is no terminal switching for this target, then we can't
possibly get screwed by the lack of job control. */
|| !target_supports_terminal_ours ())
throw_quit ("Quit");
else
throw_quit ("Quit (expect signal SIGINT when the program is resumed)");
#endif
}
/* See event-top.h. */
void
maybe_quit ()
{
if (!is_main_thread ())
return;
if (sync_quit_force_run)
quit ();
quit_handler ();
}
/* See event-top.h. */
void
quit_serial_event_set ()
{
serial_event_set (quit_serial_event);
}
/* See defs.h. */
/* See event-top.h. */
void
quit_serial_event_clear (void)

52
gdb/event-top.h

@ -26,9 +26,61 @@
struct cmd_list_element;
/* The current quit handler (and its type). This is called from the
QUIT macro. See default_quit_handler below for default behavior.
Parts of GDB temporarily override this to e.g., completely suppress
Ctrl-C because it would not be safe to throw. E.g., normally, you
wouldn't want to quit between a RSP command and its response, as
that would break the communication with the target, but you may
still want to intercept the Ctrl-C and offer to disconnect if the
user presses Ctrl-C multiple times while the target is stuck
waiting for the wedged remote stub. */
typedef void (quit_handler_ftype) ();
extern quit_handler_ftype *quit_handler;
/* Exported functions from event-top.c.
FIXME: these should really go into top.h. */
/* The default quit handler. Checks whether Ctrl-C was pressed, and
if so:
- If GDB owns the terminal, throws a quit exception.
- If GDB does not own the terminal, forwards the Ctrl-C to the
target.
*/
extern void default_quit_handler ();
/* Flag that function quit should call quit_force. */
extern volatile bool sync_quit_force_run;
/* Set sync_quit_force_run and also call set_quit_flag(). */
extern void set_force_quit_flag ();
/* Control C eventually causes this to be called, at a convenient time. */
extern void quit ();
/* Helper for the QUIT macro. */
extern void maybe_quit ();
/* Check whether a Ctrl-C was typed, and if so, call the current quit
handler. */
#define QUIT maybe_quit ()
/* Set the serial event associated with the quit flag. */
extern void quit_serial_event_set ();
/* Clear the serial event associated with the quit flag. */
extern void quit_serial_event_clear ();
extern void display_gdb_prompt (const char *new_prompt);
extern void gdb_setup_readline (int);
extern void gdb_disable_readline (void);

1
gdb/f-typeprint.c

@ -20,6 +20,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "gdbsupport/gdb_obstack.h"
#include "bfd.h"
#include "symtab.h"

1
gdb/findvar.c

@ -17,6 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "extract-store-integer.h"
#include "symtab.h"
#include "gdbtypes.h"

1
gdb/frame.c

@ -18,6 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "frame.h"
#include "event-top.h"
#include "extract-store-integer.h"
#include "target.h"
#include "value.h"

1
gdb/gdb_bfd.c

@ -18,6 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "gdb_bfd.h"
#include "event-top.h"
#include "ui-out.h"
#include "gdbcmd.h"
#include "hashtab.h"

1
gdb/linux-fork.c

@ -18,6 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "arch-utils.h"
#include "event-top.h"
#include "inferior.h"
#include "infrun.h"
#include "regcache.h"

1
gdb/m2-lang.c

@ -17,6 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "symtab.h"
#include "gdbtypes.h"
#include "expression.h"

1
gdb/m2-typeprint.c

@ -16,6 +16,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "language.h"
#include "gdbsupport/gdb_obstack.h"
#include "bfd.h"

1
gdb/mi/mi-cmd-stack.c

@ -17,6 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "target.h"
#include "frame.h"
#include "value.h"

1
gdb/objc-lang.c

@ -20,6 +20,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "symtab.h"
#include "gdbtypes.h"
#include "expression.h"

1
gdb/p-lang.c

@ -19,6 +19,7 @@
/* This file is derived from c-lang.c */
#include "event-top.h"
#include "extract-store-integer.h"
#include "symtab.h"
#include "gdbtypes.h"

1
gdb/p-typeprint.c

@ -18,6 +18,7 @@
/* This file is derived from p-typeprint.c */
#include "event-top.h"
#include "gdbsupport/gdb_obstack.h"
#include "bfd.h"
#include "symtab.h"

1
gdb/printcmd.c

@ -17,6 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "extract-store-integer.h"
#include "frame.h"
#include "symtab.h"

1
gdb/psymtab.c

@ -17,6 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "symtab.h"
#include "objfiles.h"
#include "psymtab.h"

1
gdb/remote-fileio.c

@ -19,6 +19,7 @@
/* See the GDB User Guide for details of the GDB remote protocol. */
#include "event-top.h"
#include "extract-store-integer.h"
#include "gdbcmd.h"
#include "remote.h"

1
gdb/remote-sim.c

@ -20,6 +20,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "gdb_bfd.h"
#include "inferior.h"
#include "infrun.h"

1
gdb/rust-lang.c

@ -25,6 +25,7 @@
#include "charset.h"
#include "cp-support.h"
#include "demangle.h"
#include "event-top.h"
#include "gdbarch.h"
#include "infcall.h"
#include "objfiles.h"

1
gdb/ser-base.c

@ -17,6 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "serial.h"
#include "ser-base.h"
#include "gdbsupport/event-loop.h"

1
gdb/skip.c

@ -16,6 +16,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "skip.h"
#include "event-top.h"
#include "value.h"
#include "valprint.h"
#include "ui-out.h"

1
gdb/solib-rocm.c

@ -23,6 +23,7 @@
#include "arch-utils.h"
#include "elf-bfd.h"
#include "elf/amdgpu.h"
#include "event-top.h"
#include "gdbsupport/fileio.h"
#include "inferior.h"
#include "observable.h"

1
gdb/sparc64-tdep.c

@ -19,6 +19,7 @@
#include "arch-utils.h"
#include "dwarf2/frame.h"
#include "event-top.h"
#include "extract-store-integer.h"
#include "frame.h"
#include "frame-base.h"

1
gdb/stabsread.c

@ -25,6 +25,7 @@
this file. */
#include "bfd.h"
#include "event-top.h"
#include "gdbsupport/gdb_obstack.h"
#include "symtab.h"
#include "gdbtypes.h"

1
gdb/stack.c

@ -17,6 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "extract-store-integer.h"
#include "value.h"
#include "symtab.h"

1
gdb/symmisc.c

@ -17,6 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "symtab.h"
#include "gdbtypes.h"
#include "bfd.h"

1
gdb/symtab.c

@ -19,6 +19,7 @@
#include "dwarf2/call-site.h"
#include "symtab.h"
#include "event-top.h"
#include "gdbtypes.h"
#include "gdbcore.h"
#include "frame.h"

1
gdb/tracepoint.c

@ -18,6 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "arch-utils.h"
#include "event-top.h"
#include "symtab.h"
#include "frame.h"
#include "gdbtypes.h"

1
gdb/tui/tui.c

@ -19,6 +19,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "gdbcmd.h"
#include "tui/tui.h"
#include "tui/tui-hooks.h"

41
gdb/utils.c

@ -652,47 +652,6 @@ warning_filename_and_errno (const char *filename, int saved_errno)
safe_strerror (saved_errno));
}
/* Control C eventually causes this to be called, at a convenient time. */
void
quit (void)
{
if (sync_quit_force_run)
{
sync_quit_force_run = false;
throw_forced_quit ("SIGTERM");
}
#ifdef __MSDOS__
/* No steenking SIGINT will ever be coming our way when the
program is resumed. Don't lie. */
throw_quit ("Quit");
#else
if (job_control
/* If there is no terminal switching for this target, then we can't
possibly get screwed by the lack of job control. */
|| !target_supports_terminal_ours ())
throw_quit ("Quit");
else
throw_quit ("Quit (expect signal SIGINT when the program is resumed)");
#endif
}
/* See defs.h. */
void
maybe_quit (void)
{
if (!is_main_thread ())
return;
if (sync_quit_force_run)
quit ();
quit_handler ();
}
/* Called when a memory allocation fails, with the number of bytes of
memory requested in SIZE. */

1
gdb/valops.c

@ -17,6 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "extract-store-integer.h"
#include "symtab.h"
#include "gdbtypes.h"

1
gdb/valprint.c

@ -17,6 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "event-top.h"
#include "extract-store-integer.h"
#include "symtab.h"
#include "gdbtypes.h"

1
gdb/xcoffread.c

@ -19,6 +19,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "bfd.h"
#include "event-top.h"
#include <sys/types.h>
#include <fcntl.h>

Loading…
Cancel
Save