]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/event-top.h
Automatic date update in version.in
[thirdparty/binutils-gdb.git] / gdb / event-top.h
CommitLineData
fe97fe9c
AC
1/* Definitions used by event-top.c, for GDB, the GNU debugger.
2
1d506c26 3 Copyright (C) 1999-2024 Free Software Foundation, Inc.
fe97fe9c 4
c2c6d25f
JM
5 Written by Elena Zannoni <ezannoni@cygnus.com> of Cygnus Solutions.
6
7 This file is part of GDB.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
a9762ec7 11 the Free Software Foundation; either version 3 of the License, or
c2c6d25f
JM
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
a9762ec7 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c2c6d25f 21
fe97fe9c
AC
22#ifndef EVENT_TOP_H
23#define EVENT_TOP_H
24
6aa899ce
PA
25#include <signal.h>
26
da3331ec
AC
27struct cmd_list_element;
28
e5dc0d5d
SM
29/* The current quit handler (and its type). This is called from the
30 QUIT macro. See default_quit_handler below for default behavior.
31 Parts of GDB temporarily override this to e.g., completely suppress
32 Ctrl-C because it would not be safe to throw. E.g., normally, you
33 wouldn't want to quit between a RSP command and its response, as
34 that would break the communication with the target, but you may
35 still want to intercept the Ctrl-C and offer to disconnect if the
36 user presses Ctrl-C multiple times while the target is stuck
37 waiting for the wedged remote stub. */
38typedef void (quit_handler_ftype) ();
39extern quit_handler_ftype *quit_handler;
40
0963b4bd 41/* Exported functions from event-top.c.
0af5533d 42 FIXME: these should really go into top.h. */
c2c6d25f 43
e5dc0d5d
SM
44/* The default quit handler. Checks whether Ctrl-C was pressed, and
45 if so:
46
47 - If GDB owns the terminal, throws a quit exception.
48
49 - If GDB does not own the terminal, forwards the Ctrl-C to the
50 target.
51*/
52
53extern void default_quit_handler ();
54
55/* Flag that function quit should call quit_force. */
56
57extern volatile bool sync_quit_force_run;
58
59/* Set sync_quit_force_run and also call set_quit_flag(). */
60
61extern void set_force_quit_flag ();
62
63/* Control C eventually causes this to be called, at a convenient time. */
64
65extern void quit ();
66
67/* Helper for the QUIT macro. */
68
69extern void maybe_quit ();
70
71/* Check whether a Ctrl-C was typed, and if so, call the current quit
72 handler. */
73
74#define QUIT maybe_quit ()
75
76/* Set the serial event associated with the quit flag. */
77
78extern void quit_serial_event_set ();
79
80/* Clear the serial event associated with the quit flag. */
81
82extern void quit_serial_event_clear ();
83
38bcc89d 84extern void display_gdb_prompt (const char *new_prompt);
3c216924
PA
85extern void gdb_setup_readline (int);
86extern void gdb_disable_readline (void);
27013564 87extern void gdb_init_signals (void);
3c216924 88extern void change_line_handler (int);
c2c6d25f 89
95bc9f0b 90extern void command_line_handler (gdb::unique_xmalloc_ptr<char> &&rl);
95a6b0a1 91extern void command_handler (const char *command);
b69d38af 92
c2c6d25f 93#ifdef SIGTSTP
6aa899ce 94extern void handle_sigtstp (int sig);
c2c6d25f 95#endif
6aa899ce 96
c2c6d25f 97extern void handle_sigint (int sig);
a7266fef 98extern void handle_sigterm (int sig);
2acceee2 99extern void async_request_quit (void *arg);
6426a772 100extern void async_disable_stdin (void);
712af3be 101extern void async_enable_stdin (void);
c2c6d25f
JM
102
103/* Exported variables from event-top.c.
0af5533d 104 FIXME: these should really go into top.h. */
c2c6d25f 105
491144b5
CB
106extern bool set_editing_cmd_var;
107extern bool exec_done_display_p;
c2c6d25f 108extern struct prompts the_prompts;
467d8519 109extern void (*after_char_processing_hook) (void);
d64e57fa 110extern int call_stdin_event_handler_again_p;
c70061cf 111extern void gdb_readline_no_editing_callback (void *client_data);
fe97fe9c 112
d3d4baed
PA
113/* Wrappers for rl_callback_handler_remove and
114 rl_callback_handler_install that keep track of whether the callback
115 handler is installed in readline. Do not call the readline
116 versions directly. */
117extern void gdb_rl_callback_handler_remove (void);
118extern void gdb_rl_callback_handler_install (const char *prompt);
119
120/* Reinstall the readline callback handler (with no prompt), if not
121 currently installed. */
122extern void gdb_rl_callback_handler_reinstall (void);
123
91395d97
AB
124/* Called by readline after a complete line has been gathered from the
125 user, but before the line is dispatched to back to GDB. This function
126 is a wrapper around readline's builtin rl_deprep_terminal function, and
127 handles the case where readline received EOF. */
128extern void gdb_rl_deprep_term_function (void);
129
fece451c
CB
130typedef void (*segv_handler_t) (int);
131
132/* On construction, replaces the current thread's SIGSEGV handler with
133 the provided one. On destruction, restores the handler to the
134 original one. */
135class scoped_segv_handler_restore
136{
137 public:
138 scoped_segv_handler_restore (segv_handler_t new_handler);
139 ~scoped_segv_handler_restore ();
140
141 private:
142 segv_handler_t m_old_handler;
143};
3b3978bc 144
fe97fe9c 145#endif