Automatic Copyright Year update after running gdb/copyright.py
[deliverable/binutils-gdb.git] / gdb / event-top.c
CommitLineData
b5a0ac70 1/* Top level stuff for GDB, the GNU debugger.
637537d0 2
88b9d363 3 Copyright (C) 1999-2022 Free Software Foundation, Inc.
637537d0 4
b5a0ac70
SS
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
b5a0ac70
SS
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
371d5dec 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
b5a0ac70
SS
21
22#include "defs.h"
4de283e4 23#include "top.h"
d55e5aa6
TT
24#include "inferior.h"
25#include "infrun.h"
4de283e4 26#include "target.h"
766f8836 27#include "terminal.h"
400b5eca 28#include "gdbsupport/event-loop.h"
4de283e4 29#include "event-top.h"
4389a95a 30#include "interps.h"
4de283e4
TT
31#include <signal.h>
32#include "cli/cli-script.h" /* for reset_command_nest_depth */
d01a8610 33#include "main.h"
4de283e4 34#include "gdbthread.h"
d55e5aa6 35#include "observable.h"
4de283e4
TT
36#include "gdbcmd.h" /* for dont_repeat() */
37#include "annotate.h"
38#include "maint.h"
268a13a5 39#include "gdbsupport/buffer.h"
f0881b37 40#include "ser-event.h"
06cc9596 41#include "gdbsupport/gdb_select.h"
21987b9c 42#include "gdbsupport/gdb-sigmask.h"
93b54c8e 43#include "async-event.h"
104c1213 44
371d5dec 45/* readline include files. */
dbda9972
AC
46#include "readline/readline.h"
47#include "readline/history.h"
b5a0ac70
SS
48
49/* readline defines this. */
50#undef savestring
51
606aae8a 52static std::string top_level_prompt ();
b5a0ac70 53
371d5dec 54/* Signal handlers. */
6d318c73 55#ifdef SIGQUIT
c2c6d25f 56static void handle_sigquit (int sig);
6d318c73 57#endif
0f0b8dcd 58#ifdef SIGHUP
c2c6d25f 59static void handle_sighup (int sig);
0f0b8dcd 60#endif
c2c6d25f 61static void handle_sigfpe (int sig);
b5a0ac70
SS
62
63/* Functions to be invoked by the event loop in response to
371d5dec 64 signals. */
0f0b8dcd 65#if defined (SIGQUIT) || defined (SIGHUP)
c2c6d25f 66static void async_do_nothing (gdb_client_data);
0f0b8dcd
DJ
67#endif
68#ifdef SIGHUP
c2c6d25f 69static void async_disconnect (gdb_client_data);
0f0b8dcd 70#endif
c2c6d25f 71static void async_float_handler (gdb_client_data);
6aa899ce
PA
72#ifdef SIGTSTP
73static void async_sigtstp_handler (gdb_client_data);
0f0b8dcd 74#endif
06c868a8 75static void async_sigterm_handler (gdb_client_data arg);
b5a0ac70 76
a74e1786
PA
77/* Instead of invoking (and waiting for) readline to read the command
78 line and pass it back for processing, we use readline's alternate
79 interface, via callback functions, so that the event loop can react
80 to other event sources while we wait for input. */
b5a0ac70 81
371d5dec 82/* Important variables for the event loop. */
b5a0ac70
SS
83
84/* This is used to determine if GDB is using the readline library or
371d5dec 85 its own simplified form of readline. It is used by the asynchronous
0f71a2f6 86 form of the set editing command.
392a587b 87 ezannoni: as of 1999-04-29 I expect that this
b5a0ac70 88 variable will not be used after gdb is changed to use the event
371d5dec 89 loop as default engine, and event-top.c is merged into top.c. */
491144b5 90bool set_editing_cmd_var;
b5a0ac70 91
104c1213 92/* This is used to display the notification of the completion of an
371d5dec 93 asynchronous execution command. */
491144b5 94bool exec_done_display_p = false;
104c1213 95
d64e57fa
PP
96/* Used by the stdin event handler to compensate for missed stdin events.
97 Setting this to a non-zero value inside an stdin callback makes the callback
98 run again. */
99int call_stdin_event_handler_again_p;
100
371d5dec 101/* Signal handling variables. */
b5a0ac70 102/* Each of these is a pointer to a function that the event loop will
371d5dec 103 invoke if the corresponding signal has received. The real signal
b5a0ac70 104 handlers mark these functions as ready to be executed and the event
371d5dec
MS
105 loop, in a later iteration, calls them. See the function
106 invoke_async_signal_handler. */
05fa9251 107static struct async_signal_handler *sigint_token;
b5a0ac70 108#ifdef SIGHUP
05fa9251 109static struct async_signal_handler *sighup_token;
b5a0ac70 110#endif
6d318c73 111#ifdef SIGQUIT
05fa9251 112static struct async_signal_handler *sigquit_token;
6d318c73 113#endif
05fa9251 114static struct async_signal_handler *sigfpe_token;
6aa899ce 115#ifdef SIGTSTP
05fa9251 116static struct async_signal_handler *sigtstp_token;
0f71a2f6 117#endif
06c868a8 118static struct async_signal_handler *async_sigterm_token;
0f71a2f6 119
3c610247 120/* This hook is called by gdb_rl_callback_read_char_wrapper after each
467d8519 121 character is processed. */
b08ee6a2 122void (*after_char_processing_hook) (void);
b5a0ac70
SS
123\f
124
89525768
PA
125/* Wrapper function for calling into the readline library. This takes
126 care of a couple things:
127
128 - The event loop expects the callback function to have a parameter,
129 while readline expects none.
130
131 - Propagation of GDB exceptions/errors thrown from INPUT_HANDLER
132 across readline requires special handling.
133
134 On the exceptions issue:
135
136 DWARF-based unwinding cannot cross code built without -fexceptions.
137 Any exception that tries to propagate through such code will fail
138 and the result is a call to std::terminate. While some ABIs, such
139 as x86-64, require all code to be built with exception tables,
140 others don't.
141
142 This is a problem when GDB calls some non-EH-aware C library code,
143 that calls into GDB again through a callback, and that GDB callback
144 code throws a C++ exception. Turns out this is exactly what
145 happens with GDB's readline callback.
146
147 In such cases, we must catch and save any C++ exception that might
148 be thrown from the GDB callback before returning to the
149 non-EH-aware code. When the non-EH-aware function itself returns
150 back to GDB, we then rethrow the original C++ exception.
151
152 In the readline case however, the right thing to do is to longjmp
153 out of the callback, rather than do a normal return -- there's no
154 way for the callback to return to readline an indication that an
155 error happened, so a normal return would have rl_callback_read_char
156 potentially continue processing further input, redisplay the
157 prompt, etc. Instead of raw setjmp/longjmp however, we use our
158 sjlj-based TRY/CATCH mechanism, which knows to handle multiple
159 levels of active setjmp/longjmp frames, needed in order to handle
160 the readline callback recursing, as happens with e.g., secondary
2693a262
PA
161 prompts / queries, through gdb_readline_wrapper. This must be
162 noexcept in order to avoid problems with mixing sjlj and
163 (sjlj-based) C++ exceptions. */
89525768 164
2693a262
PA
165static struct gdb_exception
166gdb_rl_callback_read_char_wrapper_noexcept () noexcept
c2c6d25f 167{
cc06b668 168 struct gdb_exception gdb_expt;
89525768
PA
169
170 /* C++ exceptions can't normally be thrown across readline (unless
171 it is built with -fexceptions, but it won't by default on many
172 ABIs). So we instead wrap the readline call with a sjlj-based
173 TRY/CATCH, and rethrow the GDB exception once back in GDB. */
174 TRY_SJLJ
175 {
176 rl_callback_read_char ();
177 if (after_char_processing_hook)
178 (*after_char_processing_hook) ();
179 }
180 CATCH_SJLJ (ex, RETURN_MASK_ALL)
181 {
c6fdd8b2 182 gdb_expt = std::move (ex);
89525768
PA
183 }
184 END_CATCH_SJLJ
185
2693a262
PA
186 return gdb_expt;
187}
188
189static void
190gdb_rl_callback_read_char_wrapper (gdb_client_data client_data)
191{
192 struct gdb_exception gdb_expt
193 = gdb_rl_callback_read_char_wrapper_noexcept ();
194
89525768
PA
195 /* Rethrow using the normal EH mechanism. */
196 if (gdb_expt.reason < 0)
94aeb44b 197 throw_exception (std::move (gdb_expt));
89525768
PA
198}
199
200/* GDB's readline callback handler. Calls the current INPUT_HANDLER,
201 and propagates GDB exceptions/errors thrown from INPUT_HANDLER back
2693a262
PA
202 across readline. See gdb_rl_callback_read_char_wrapper. This must
203 be noexcept in order to avoid problems with mixing sjlj and
204 (sjlj-based) C++ exceptions. */
89525768
PA
205
206static void
2693a262 207gdb_rl_callback_handler (char *rl) noexcept
89525768 208{
3d1cbb78
TT
209 /* This is static to avoid undefined behavior when calling longjmp
210 -- gdb_exception has a destructor with side effects. */
211 static struct gdb_exception gdb_rl_expt;
a74e1786 212 struct ui *ui = current_ui;
89525768 213
a70b8144 214 try
89525768 215 {
3d1cbb78
TT
216 /* Ensure the exception is reset on each call. */
217 gdb_rl_expt = {};
95bc9f0b 218 ui->input_handler (gdb::unique_xmalloc_ptr<char> (rl));
89525768 219 }
c6fdd8b2 220 catch (gdb_exception &ex)
89525768 221 {
c6fdd8b2 222 gdb_rl_expt = std::move (ex);
89525768 223 }
89525768
PA
224
225 /* If we caught a GDB exception, longjmp out of the readline
226 callback. There's no other way for the callback to signal to
227 readline that an error happened. A normal return would have
228 readline potentially continue processing further input, redisplay
229 the prompt, etc. (This is what GDB historically did when it was
230 a C program.) Note that since we're long jumping, local variable
231 dtors are NOT run automatically. */
232 if (gdb_rl_expt.reason < 0)
233 throw_exception_sjlj (gdb_rl_expt);
c2c6d25f
JM
234}
235
b5a0ac70 236/* Change the function to be invoked every time there is a character
371d5dec 237 ready on stdin. This is used when the user sets the editing off,
b5a0ac70 238 therefore bypassing readline, and letting gdb handle the input
c70061cf
PA
239 itself, via gdb_readline_no_editing_callback. Also it is used in
240 the opposite case in which the user sets editing on again, by
3c216924
PA
241 restoring readline handling of the input.
242
243 NOTE: this operates on input_fd, not instream. If we are reading
244 commands from a file, instream will point to the file. However, we
245 always read commands from a file with editing off. This means that
246 the 'set editing on/off' will have effect only on the interactive
247 session. */
248
249void
250change_line_handler (int editing)
b5a0ac70 251{
a74e1786
PA
252 struct ui *ui = current_ui;
253
3c216924
PA
254 /* We can only have one instance of readline, so we only allow
255 editing on the main UI. */
256 if (ui != main_ui)
257 return;
258
259 /* Don't try enabling editing if the interpreter doesn't support it
260 (e.g., MI). */
261 if (!interp_supports_command_editing (top_level_interpreter ())
262 || !interp_supports_command_editing (command_interp ()))
263 return;
c2c6d25f 264
3c216924 265 if (editing)
b5a0ac70 266 {
3c216924
PA
267 gdb_assert (ui == main_ui);
268
371d5dec 269 /* Turn on editing by using readline. */
a74e1786 270 ui->call_readline = gdb_rl_callback_read_char_wrapper;
b5a0ac70
SS
271 }
272 else
273 {
c70061cf 274 /* Turn off editing by using gdb_readline_no_editing_callback. */
3c216924
PA
275 if (ui->command_editing)
276 gdb_rl_callback_handler_remove ();
a74e1786 277 ui->call_readline = gdb_readline_no_editing_callback;
b5a0ac70 278 }
3c216924 279 ui->command_editing = editing;
b5a0ac70
SS
280}
281
d3d4baed
PA
282/* The functions below are wrappers for rl_callback_handler_remove and
283 rl_callback_handler_install that keep track of whether the callback
284 handler is installed in readline. This is necessary because after
285 handling a target event of a background execution command, we may
286 need to reinstall the callback handler if it was removed due to a
287 secondary prompt. See gdb_readline_wrapper_line. We don't
288 unconditionally install the handler for every target event because
289 that also clears the line buffer, thus installing it while the user
290 is typing would lose input. */
291
292/* Whether we've registered a callback handler with readline. */
293static int callback_handler_installed;
294
295/* See event-top.h, and above. */
296
297void
298gdb_rl_callback_handler_remove (void)
299{
3c216924
PA
300 gdb_assert (current_ui == main_ui);
301
d3d4baed
PA
302 rl_callback_handler_remove ();
303 callback_handler_installed = 0;
304}
305
306/* See event-top.h, and above. Note this wrapper doesn't have an
307 actual callback parameter because we always install
308 INPUT_HANDLER. */
309
310void
311gdb_rl_callback_handler_install (const char *prompt)
312{
3c216924
PA
313 gdb_assert (current_ui == main_ui);
314
d3d4baed
PA
315 /* Calling rl_callback_handler_install resets readline's input
316 buffer. Calling this when we were already processing input
317 therefore loses input. */
318 gdb_assert (!callback_handler_installed);
319
89525768 320 rl_callback_handler_install (prompt, gdb_rl_callback_handler);
d3d4baed
PA
321 callback_handler_installed = 1;
322}
323
324/* See event-top.h, and above. */
325
326void
327gdb_rl_callback_handler_reinstall (void)
328{
3c216924
PA
329 gdb_assert (current_ui == main_ui);
330
d3d4baed
PA
331 if (!callback_handler_installed)
332 {
333 /* Passing NULL as prompt argument tells readline to not display
334 a prompt. */
335 gdb_rl_callback_handler_install (NULL);
336 }
337}
338
ab821bc6
PA
339/* Displays the prompt. If the argument NEW_PROMPT is NULL, the
340 prompt that is displayed is the current top level prompt.
341 Otherwise, it displays whatever NEW_PROMPT is as a local/secondary
342 prompt.
343
344 This is used after each gdb command has completed, and in the
345 following cases:
346
371d5dec 347 1. When the user enters a command line which is ended by '\'
ab821bc6
PA
348 indicating that the command will continue on the next line. In
349 that case the prompt that is displayed is the empty string.
350
0f71a2f6 351 2. When the user is entering 'commands' for a breakpoint, or
371d5dec 352 actions for a tracepoint. In this case the prompt will be '>'
ab821bc6
PA
353
354 3. On prompting for pagination. */
355
b5a0ac70 356void
38bcc89d 357display_gdb_prompt (const char *new_prompt)
b5a0ac70 358{
606aae8a 359 std::string actual_gdb_prompt;
b5a0ac70 360
bd00c694
PA
361 annotate_display_prompt ();
362
16026cd7
AS
363 /* Reset the nesting depth used when trace-commands is set. */
364 reset_command_nest_depth ();
365
ab821bc6
PA
366 /* Do not call the python hook on an explicit prompt change as
367 passed to this function, as this forms a secondary/local prompt,
368 IE, displayed but not set. */
369 if (! new_prompt)
adf40b2e 370 {
3b12939d
PA
371 struct ui *ui = current_ui;
372
373 if (ui->prompt_state == PROMPTED)
374 internal_error (__FILE__, __LINE__, _("double prompt"));
375 else if (ui->prompt_state == PROMPT_BLOCKED)
d17b6f81 376 {
ab821bc6
PA
377 /* This is to trick readline into not trying to display the
378 prompt. Even though we display the prompt using this
379 function, readline still tries to do its own display if
380 we don't call rl_callback_handler_install and
381 rl_callback_handler_remove (which readline detects
382 because a global variable is not set). If readline did
383 that, it could mess up gdb signal handlers for SIGINT.
384 Readline assumes that between calls to rl_set_signals and
385 rl_clear_signals gdb doesn't do anything with the signal
386 handlers. Well, that's not the case, because when the
387 target executes we change the SIGINT signal handler. If
388 we allowed readline to display the prompt, the signal
389 handler change would happen exactly between the calls to
390 the above two functions. Calling
391 rl_callback_handler_remove(), does the job. */
392
3c216924
PA
393 if (current_ui->command_editing)
394 gdb_rl_callback_handler_remove ();
ab821bc6 395 return;
d17b6f81 396 }
3b12939d 397 else if (ui->prompt_state == PROMPT_NEEDED)
ab821bc6
PA
398 {
399 /* Display the top level prompt. */
400 actual_gdb_prompt = top_level_prompt ();
3b12939d 401 ui->prompt_state = PROMPTED;
ab821bc6 402 }
b5a0ac70 403 }
ab821bc6 404 else
606aae8a 405 actual_gdb_prompt = new_prompt;
b5a0ac70 406
3c216924 407 if (current_ui->command_editing)
b5a0ac70 408 {
d3d4baed 409 gdb_rl_callback_handler_remove ();
606aae8a 410 gdb_rl_callback_handler_install (actual_gdb_prompt.c_str ());
b5a0ac70 411 }
371d5dec 412 /* new_prompt at this point can be the top of the stack or the one
d014929c
MS
413 passed in. It can't be NULL. */
414 else
b5a0ac70
SS
415 {
416 /* Don't use a _filtered function here. It causes the assumed
dda83cd7
SM
417 character position to be off, since the newline we read from
418 the user is not accounted for. */
faa17681 419 fprintf_unfiltered (gdb_stdout, "%s", actual_gdb_prompt.c_str ());
b5a0ac70
SS
420 gdb_flush (gdb_stdout);
421 }
422}
423
ab821bc6 424/* Return the top level prompt, as specified by "set prompt", possibly
405feb71 425 overridden by the python gdb.prompt_hook hook, and then composed
606aae8a 426 with the prompt prefix and suffix (annotations). */
ab821bc6 427
606aae8a 428static std::string
ab821bc6 429top_level_prompt (void)
b5a0ac70 430{
608ff013 431 char *prompt;
b5a0ac70 432
ab821bc6
PA
433 /* Give observers a chance of changing the prompt. E.g., the python
434 `gdb.prompt_hook' is installed as an observer. */
76727919 435 gdb::observers::before_prompt.notify (get_prompt ());
ab821bc6 436
608ff013 437 prompt = get_prompt ();
b5a0ac70 438
ab821bc6 439 if (annotation_level >= 2)
b5a0ac70 440 {
ab821bc6 441 /* Prefix needs to have new line at end. */
608ff013 442 const char prefix[] = "\n\032\032pre-prompt\n";
ab821bc6
PA
443
444 /* Suffix needs to have a new line at end and \032 \032 at
445 beginning. */
608ff013 446 const char suffix[] = "\n\032\032prompt\n";
b5a0ac70 447
606aae8a 448 return std::string (prefix) + prompt + suffix;
608ff013 449 }
ab821bc6 450
606aae8a 451 return prompt;
b5a0ac70 452}
c2c6d25f 453
98d9f24e 454/* See top.h. */
73ab01a0 455
98d9f24e
PA
456struct ui *main_ui;
457struct ui *current_ui;
458struct ui *ui_list;
73ab01a0 459
a74e1786 460/* Get a pointer to the current UI's line buffer. This is used to
b69d38af
PA
461 construct a whole line of input from partial input. */
462
463static struct buffer *
464get_command_line_buffer (void)
465{
a74e1786 466 return &current_ui->line_buffer;
b69d38af
PA
467}
468
187212b3 469/* When there is an event ready on the stdin file descriptor, instead
c2c6d25f 470 of calling readline directly throught the callback function, or
c70061cf
PA
471 instead of calling gdb_readline_no_editing_callback, give gdb a
472 chance to detect errors and do something. */
473
c2c6d25f 474void
2acceee2 475stdin_event_handler (int error, gdb_client_data client_data)
c2c6d25f 476{
41fd2b0f
PA
477 struct ui *ui = (struct ui *) client_data;
478
c2c6d25f
JM
479 if (error)
480 {
07169ff7
PA
481 /* Switch to the main UI, so diagnostics always go there. */
482 current_ui = main_ui;
483
41fd2b0f 484 delete_file_handler (ui->input_fd);
07169ff7
PA
485 if (main_ui == ui)
486 {
487 /* If stdin died, we may as well kill gdb. */
488 printf_unfiltered (_("error detected on stdin\n"));
268a799a 489 quit_command ((char *) 0, 0);
07169ff7
PA
490 }
491 else
492 {
493 /* Simply delete the UI. */
895b8f30 494 delete ui;
07169ff7 495 }
c2c6d25f
JM
496 }
497 else
d64e57fa 498 {
07169ff7
PA
499 /* Switch to the UI whose input descriptor woke up the event
500 loop. */
501 current_ui = ui;
502
503 /* This makes sure a ^C immediately followed by further input is
504 always processed in that order. E.g,. with input like
505 "^Cprint 1\n", the SIGINT handler runs, marks the async
506 signal handler, and then select/poll may return with stdin
507 ready, instead of -1/EINTR. The
508 gdb.base/double-prompt-target-event-error.exp test exercises
509 this. */
d2acc30b
PA
510 QUIT;
511
d64e57fa
PP
512 do
513 {
514 call_stdin_event_handler_again_p = 0;
a74e1786 515 ui->call_readline (client_data);
07169ff7
PA
516 }
517 while (call_stdin_event_handler_again_p != 0);
d64e57fa 518 }
c2c6d25f
JM
519}
520
3eb7562a
PA
521/* See top.h. */
522
523void
524ui_register_input_event_handler (struct ui *ui)
525{
2554f6f5 526 add_file_handler (ui->input_fd, stdin_event_handler, ui,
6b01403b 527 string_printf ("ui-%d", ui->num), true);
3eb7562a
PA
528}
529
530/* See top.h. */
531
532void
533ui_unregister_input_event_handler (struct ui *ui)
534{
535 delete_file_handler (ui->input_fd);
536}
537
6426a772
JM
538/* Re-enable stdin after the end of an execution command in
539 synchronous mode, or after an error from the target, and we aborted
371d5dec 540 the exec operation. */
6426a772
JM
541
542void
712af3be 543async_enable_stdin (void)
6426a772 544{
3b12939d
PA
545 struct ui *ui = current_ui;
546
547 if (ui->prompt_state == PROMPT_BLOCKED)
32c1e744 548 {
223ffa71 549 target_terminal::ours ();
3eb7562a 550 ui_register_input_event_handler (ui);
3b12939d 551 ui->prompt_state = PROMPT_NEEDED;
32c1e744 552 }
6426a772
JM
553}
554
555/* Disable reads from stdin (the console) marking the command as
371d5dec 556 synchronous. */
6426a772
JM
557
558void
559async_disable_stdin (void)
560{
3b12939d
PA
561 struct ui *ui = current_ui;
562
563 ui->prompt_state = PROMPT_BLOCKED;
3eb7562a 564 delete_file_handler (ui->input_fd);
6426a772 565}
b5a0ac70 566\f
6426a772 567
b69d38af
PA
568/* Handle a gdb command line. This function is called when
569 handle_line_of_input has concatenated one or more input lines into
570 a whole command. */
571
572void
95a6b0a1 573command_handler (const char *command)
b5a0ac70 574{
f38d3ad1 575 struct ui *ui = current_ui;
95a6b0a1 576 const char *c;
b5a0ac70 577
268a799a 578 if (ui->instream == ui->stdin_stream)
b5a0ac70 579 reinitialize_more_filter ();
b5a0ac70 580
1e3b796d 581 scoped_command_stats stat_reporter (true);
b5a0ac70 582
b69d38af
PA
583 /* Do not execute commented lines. */
584 for (c = command; *c == ' ' || *c == '\t'; c++)
585 ;
586 if (c[0] != '#')
587 {
268a799a 588 execute_command (command, ui->instream == ui->stdin_stream);
c5aa993b 589
b69d38af
PA
590 /* Do any commands attached to breakpoint we stopped at. */
591 bpstat_do_actions ();
592 }
43ff13b4
JM
593}
594
b69d38af
PA
595/* Append RL, an input line returned by readline or one of its
596 emulations, to CMD_LINE_BUFFER. Returns the command line if we
597 have a whole command line ready to be processed by the command
598 interpreter or NULL if the command line isn't complete yet (input
95bc9f0b 599 line ends in a backslash). */
b5a0ac70 600
b69d38af 601static char *
95bc9f0b 602command_line_append_input_line (struct buffer *cmd_line_buffer, const char *rl)
b5a0ac70 603{
b69d38af
PA
604 char *cmd;
605 size_t len;
b5a0ac70 606
b69d38af 607 len = strlen (rl);
b5a0ac70 608
b69d38af 609 if (len > 0 && rl[len - 1] == '\\')
b5a0ac70 610 {
b69d38af
PA
611 /* Don't copy the backslash and wait for more. */
612 buffer_grow (cmd_line_buffer, rl, len - 1);
613 cmd = NULL;
b5a0ac70 614 }
b69d38af 615 else
b5a0ac70 616 {
b69d38af
PA
617 /* Copy whole line including terminating null, and we're
618 done. */
619 buffer_grow (cmd_line_buffer, rl, len + 1);
620 cmd = cmd_line_buffer->buffer;
b5a0ac70
SS
621 }
622
b69d38af
PA
623 return cmd;
624}
b5a0ac70 625
b69d38af 626/* Handle a line of input coming from readline.
b5a0ac70 627
b69d38af
PA
628 If the read line ends with a continuation character (backslash),
629 save the partial input in CMD_LINE_BUFFER (except the backslash),
630 and return NULL. Otherwise, save the partial input and return a
631 pointer to CMD_LINE_BUFFER's buffer (null terminated), indicating a
632 whole command line is ready to be executed.
b5a0ac70 633
b69d38af 634 Returns EOF on end of file.
b5a0ac70 635
b69d38af 636 If REPEAT, handle command repetitions:
b5a0ac70 637
b69d38af 638 - If the input command line is NOT empty, the command returned is
68bb5386 639 saved using save_command_line () so that it can be repeated later.
d96429cd 640
68bb5386
PW
641 - OTOH, if the input command line IS empty, return the saved
642 command instead of the empty input line.
b69d38af 643*/
b5a0ac70 644
b69d38af
PA
645char *
646handle_line_of_input (struct buffer *cmd_line_buffer,
95bc9f0b
TT
647 const char *rl, int repeat,
648 const char *annotation_suffix)
b69d38af 649{
f38d3ad1 650 struct ui *ui = current_ui;
268a799a 651 int from_tty = ui->instream == ui->stdin_stream;
b69d38af
PA
652 char *p1;
653 char *cmd;
654
655 if (rl == NULL)
656 return (char *) EOF;
657
658 cmd = command_line_append_input_line (cmd_line_buffer, rl);
659 if (cmd == NULL)
660 return NULL;
b5a0ac70 661
b69d38af
PA
662 /* We have a complete command line now. Prepare for the next
663 command, but leave ownership of memory to the buffer . */
664 cmd_line_buffer->used_size = 0;
665
268a799a 666 if (from_tty && annotation_level > 1)
b5a0ac70 667 {
b69d38af
PA
668 printf_unfiltered (("\n\032\032post-"));
669 puts_unfiltered (annotation_suffix);
670 printf_unfiltered (("\n"));
671 }
672
673#define SERVER_COMMAND_PREFIX "server "
9937536c
JB
674 server_command = startswith (cmd, SERVER_COMMAND_PREFIX);
675 if (server_command)
b69d38af 676 {
68bb5386 677 /* Note that we don't call `save_command_line'. Between this
dda83cd7
SM
678 and the check in dont_repeat, this insures that repeating
679 will still do the right thing. */
b69d38af 680 return cmd + strlen (SERVER_COMMAND_PREFIX);
b5a0ac70
SS
681 }
682
683 /* Do history expansion if that is wished. */
268a799a 684 if (history_expansion_p && from_tty && input_interactive_p (current_ui))
b5a0ac70 685 {
b6fb1ee5 686 char *cmd_expansion;
b5a0ac70
SS
687 int expanded;
688
b6fb1ee5
PW
689 expanded = history_expand (cmd, &cmd_expansion);
690 gdb::unique_xmalloc_ptr<char> history_value (cmd_expansion);
b5a0ac70
SS
691 if (expanded)
692 {
b69d38af
PA
693 size_t len;
694
b5a0ac70 695 /* Print the changes. */
b6fb1ee5 696 printf_unfiltered ("%s\n", history_value.get ());
b5a0ac70
SS
697
698 /* If there was an error, call this function again. */
699 if (expanded < 0)
b6fb1ee5 700 return cmd;
b69d38af
PA
701
702 /* history_expand returns an allocated string. Just replace
703 our buffer with it. */
b6fb1ee5 704 len = strlen (history_value.get ());
b69d38af 705 xfree (buffer_finish (cmd_line_buffer));
b6fb1ee5 706 cmd_line_buffer->buffer = history_value.get ();
b69d38af 707 cmd_line_buffer->buffer_size = len + 1;
b6fb1ee5 708 cmd = history_value.release ();
b5a0ac70
SS
709 }
710 }
711
371d5dec 712 /* If we just got an empty line, and that is supposed to repeat the
b69d38af
PA
713 previous command, return the previously saved command. */
714 for (p1 = cmd; *p1 == ' ' || *p1 == '\t'; p1++)
715 ;
716 if (repeat && *p1 == '\0')
68bb5386 717 return get_saved_command_line ();
b69d38af
PA
718
719 /* Add command to history if appropriate. Note: lines consisting
720 solely of comments are also added to the command history. This
721 is useful when you type a command, and then realize you don't
722 want to execute it quite yet. You can comment out the command
723 and then later fetch it from the value history and remove the
724 '#'. The kill ring is probably better, but some people are in
725 the habit of commenting things out. */
268a799a 726 if (*cmd != '\0' && from_tty && input_interactive_p (current_ui))
b69d38af 727 gdb_add_history (cmd);
b5a0ac70 728
b69d38af
PA
729 /* Save into global buffer if appropriate. */
730 if (repeat)
b5a0ac70 731 {
68bb5386
PW
732 save_command_line (cmd);
733 return get_saved_command_line ();
b5a0ac70 734 }
b69d38af
PA
735 else
736 return cmd;
737}
b5a0ac70 738
b69d38af
PA
739/* Handle a complete line of input. This is called by the callback
740 mechanism within the readline library. Deal with incomplete
741 commands as well, by saving the partial input in a global
742 buffer.
b5a0ac70 743
b69d38af
PA
744 NOTE: This is the asynchronous version of the command_line_input
745 function. */
b5a0ac70 746
b69d38af 747void
95bc9f0b 748command_line_handler (gdb::unique_xmalloc_ptr<char> &&rl)
b69d38af
PA
749{
750 struct buffer *line_buffer = get_command_line_buffer ();
f38d3ad1 751 struct ui *ui = current_ui;
b69d38af 752 char *cmd;
b5a0ac70 753
95bc9f0b 754 cmd = handle_line_of_input (line_buffer, rl.get (), 1, "prompt");
b69d38af 755 if (cmd == (char *) EOF)
b5a0ac70 756 {
b69d38af
PA
757 /* stdin closed. The connection with the terminal is gone.
758 This happens at the end of a testsuite run, after Expect has
759 hung up but GDB is still alive. In such a case, we just quit
760 gdb killing the inferior program too. */
761 printf_unfiltered ("quit\n");
95a6b0a1 762 execute_command ("quit", 1);
b69d38af
PA
763 }
764 else if (cmd == NULL)
765 {
766 /* We don't have a full line yet. Print an empty prompt. */
767 display_gdb_prompt ("");
768 }
769 else
770 {
3b12939d
PA
771 ui->prompt_state = PROMPT_NEEDED;
772
b69d38af 773 command_handler (cmd);
3b12939d
PA
774
775 if (ui->prompt_state != PROMPTED)
776 display_gdb_prompt (0);
b5a0ac70 777 }
b5a0ac70
SS
778}
779
780/* Does reading of input from terminal w/o the editing features
c70061cf
PA
781 provided by the readline library. Calls the line input handler
782 once we have a whole input line. */
b5a0ac70 783
085dd6e6 784void
c70061cf 785gdb_readline_no_editing_callback (gdb_client_data client_data)
b5a0ac70
SS
786{
787 int c;
788 char *result;
187212b3 789 struct buffer line_buffer;
7be570e7 790 static int done_once = 0;
a74e1786 791 struct ui *ui = current_ui;
7be570e7 792
187212b3
PA
793 buffer_init (&line_buffer);
794
7be570e7 795 /* Unbuffer the input stream, so that, later on, the calls to fgetc
371d5dec 796 fetch only one char at the time from the stream. The fgetc's will
7be570e7 797 get up to the first newline, but there may be more chars in the
371d5dec 798 stream after '\n'. If we buffer the input and fgetc drains the
7be570e7 799 stream, getting stuff beyond the newline as well, a select, done
371d5dec 800 afterwards will not trigger. */
f38d3ad1 801 if (!done_once && !ISATTY (ui->instream))
7be570e7 802 {
f38d3ad1 803 setbuf (ui->instream, NULL);
7be570e7
JM
804 done_once = 1;
805 }
b5a0ac70 806
b5a0ac70 807 /* We still need the while loop here, even though it would seem
c70061cf
PA
808 obvious to invoke gdb_readline_no_editing_callback at every
809 character entered. If not using the readline library, the
810 terminal is in cooked mode, which sends the characters all at
811 once. Poll will notice that the input fd has changed state only
812 after enter is pressed. At this point we still need to fetch all
813 the chars entered. */
b5a0ac70
SS
814
815 while (1)
816 {
817 /* Read from stdin if we are executing a user defined command.
dda83cd7 818 This is the right thing for prompt_for_continue, at least. */
268a799a 819 c = fgetc (ui->instream != NULL ? ui->instream : ui->stdin_stream);
b5a0ac70
SS
820
821 if (c == EOF)
822 {
187212b3
PA
823 if (line_buffer.used_size > 0)
824 {
825 /* The last line does not end with a newline. Return it, and
826 if we are called again fgetc will still return EOF and
827 we'll return NULL then. */
828 break;
829 }
830 xfree (buffer_finish (&line_buffer));
a74e1786 831 ui->input_handler (NULL);
13ce7133 832 return;
b5a0ac70
SS
833 }
834
835 if (c == '\n')
b5a0ac70 836 {
187212b3
PA
837 if (line_buffer.used_size > 0
838 && line_buffer.buffer[line_buffer.used_size - 1] == '\r')
839 line_buffer.used_size--;
b5a0ac70
SS
840 break;
841 }
b5a0ac70 842
187212b3 843 buffer_grow_char (&line_buffer, c);
b5a0ac70
SS
844 }
845
187212b3
PA
846 buffer_grow_char (&line_buffer, '\0');
847 result = buffer_finish (&line_buffer);
95bc9f0b 848 ui->input_handler (gdb::unique_xmalloc_ptr<char> (result));
b5a0ac70
SS
849}
850\f
851
fece451c
CB
852/* The SIGSEGV handler for this thread, or NULL if there is none. GDB
853 always installs a global SIGSEGV handler, and then lets threads
854 indicate their interest in handling the signal by setting this
855 thread-local variable.
3b3978bc 856
fece451c
CB
857 This is a static variable instead of extern because on various platforms
858 (notably Cygwin) extern thread_local variables cause link errors. So
859 instead, we have scoped_segv_handler_restore, which also makes it impossible
860 to accidentally forget to restore it to the original value. */
861
862static thread_local void (*thread_local_segv_handler) (int);
3b3978bc
TT
863
864static void handle_sigsegv (int sig);
865
866/* Install the SIGSEGV handler. */
867static void
868install_handle_sigsegv ()
869{
870#if defined (HAVE_SIGACTION)
871 struct sigaction sa;
872 sa.sa_handler = handle_sigsegv;
873 sigemptyset (&sa.sa_mask);
874#ifdef HAVE_SIGALTSTACK
875 sa.sa_flags = SA_ONSTACK;
876#else
877 sa.sa_flags = 0;
878#endif
879 sigaction (SIGSEGV, &sa, nullptr);
880#else
881 signal (SIGSEGV, handle_sigsegv);
882#endif
883}
884
885/* Handler for SIGSEGV. */
886
887static void
888handle_sigsegv (int sig)
889{
890 install_handle_sigsegv ();
891
892 if (thread_local_segv_handler == nullptr)
036003a6 893 abort (); /* ARI: abort */
3b3978bc
TT
894 thread_local_segv_handler (sig);
895}
896
897\f
898
f0881b37
PA
899/* The serial event associated with the QUIT flag. set_quit_flag sets
900 this, and check_quit_flag clears it. Used by interruptible_select
901 to be able to do interruptible I/O with no race with the SIGINT
902 handler. */
903static struct serial_event *quit_serial_event;
904
b5a0ac70 905/* Initialization of signal handlers and tokens. There is a function
371d5dec 906 handle_sig* for each of the signals GDB cares about. Specifically:
b5a0ac70
SS
907 SIGINT, SIGFPE, SIGQUIT, SIGTSTP, SIGHUP, SIGWINCH. These
908 functions are the actual signal handlers associated to the signals
909 via calls to signal(). The only job for these functions is to
910 enqueue the appropriate event/procedure with the event loop. Such
371d5dec 911 procedures are the old signal handlers. The event loop will take
b5a0ac70 912 care of invoking the queued procedures to perform the usual tasks
371d5dec 913 associated with the reception of the signal. */
392a587b 914/* NOTE: 1999-04-30 This is the asynchronous version of init_signals.
b5a0ac70 915 init_signals will become obsolete as we move to have to event loop
371d5dec 916 as the default for gdb. */
b5a0ac70 917void
c2c6d25f 918async_init_signals (void)
c5aa993b 919{
5cc3ce8b
PA
920 initialize_async_signal_handlers ();
921
f0881b37
PA
922 quit_serial_event = make_serial_event ();
923
b5a0ac70
SS
924 signal (SIGINT, handle_sigint);
925 sigint_token =
db20ebdf 926 create_async_signal_handler (async_request_quit, NULL, "sigint");
a7266fef 927 signal (SIGTERM, handle_sigterm);
06c868a8 928 async_sigterm_token
db20ebdf 929 = create_async_signal_handler (async_sigterm_handler, NULL, "sigterm");
b5a0ac70
SS
930
931 /* If SIGTRAP was set to SIG_IGN, then the SIG_IGN will get passed
932 to the inferior and breakpoints will be ignored. */
933#ifdef SIGTRAP
934 signal (SIGTRAP, SIG_DFL);
935#endif
936
6d318c73 937#ifdef SIGQUIT
b5a0ac70
SS
938 /* If we initialize SIGQUIT to SIG_IGN, then the SIG_IGN will get
939 passed to the inferior, which we don't want. It would be
940 possible to do a "signal (SIGQUIT, SIG_DFL)" after we fork, but
941 on BSD4.3 systems using vfork, that can affect the
942 GDB process as well as the inferior (the signal handling tables
943 might be in memory, shared between the two). Since we establish
944 a handler for SIGQUIT, when we call exec it will set the signal
945 to SIG_DFL for us. */
946 signal (SIGQUIT, handle_sigquit);
947 sigquit_token =
db20ebdf 948 create_async_signal_handler (async_do_nothing, NULL, "sigquit");
6d318c73 949#endif
b5a0ac70
SS
950#ifdef SIGHUP
951 if (signal (SIGHUP, handle_sighup) != SIG_IGN)
952 sighup_token =
db20ebdf 953 create_async_signal_handler (async_disconnect, NULL, "sighup");
b5a0ac70
SS
954 else
955 sighup_token =
db20ebdf 956 create_async_signal_handler (async_do_nothing, NULL, "sighup");
b5a0ac70
SS
957#endif
958 signal (SIGFPE, handle_sigfpe);
959 sigfpe_token =
db20ebdf 960 create_async_signal_handler (async_float_handler, NULL, "sigfpe");
b5a0ac70 961
6aa899ce 962#ifdef SIGTSTP
0f71a2f6 963 sigtstp_token =
db20ebdf 964 create_async_signal_handler (async_sigtstp_handler, NULL, "sigtstp");
0f71a2f6 965#endif
3b3978bc
TT
966
967 install_handle_sigsegv ();
0f71a2f6
JM
968}
969
f0881b37
PA
970/* See defs.h. */
971
972void
973quit_serial_event_set (void)
974{
975 serial_event_set (quit_serial_event);
976}
977
978/* See defs.h. */
979
980void
981quit_serial_event_clear (void)
982{
983 serial_event_clear (quit_serial_event);
984}
985
986/* Return the selectable file descriptor of the serial event
987 associated with the quit flag. */
988
989static int
990quit_serial_event_fd (void)
991{
992 return serial_event_fd (quit_serial_event);
993}
994
048094ac
PA
995/* See defs.h. */
996
997void
998default_quit_handler (void)
999{
1000 if (check_quit_flag ())
1001 {
223ffa71 1002 if (target_terminal::is_ours ())
048094ac
PA
1003 quit ();
1004 else
1005 target_pass_ctrlc ();
1006 }
1007}
1008
1009/* See defs.h. */
1010quit_handler_ftype *quit_handler = default_quit_handler;
1011
f0881b37
PA
1012/* Handle a SIGINT. */
1013
c5aa993b 1014void
c2c6d25f 1015handle_sigint (int sig)
b5a0ac70
SS
1016{
1017 signal (sig, handle_sigint);
1018
5f960e00
FF
1019 /* We could be running in a loop reading in symfiles or something so
1020 it may be quite a while before we get back to the event loop. So
371d5dec 1021 set quit_flag to 1 here. Then if QUIT is called before we get to
5f960e00 1022 the event loop, we will unwind as expected. */
522002f9 1023 set_quit_flag ();
5f960e00 1024
585a46a2
PA
1025 /* In case nothing calls QUIT before the event loop is reached, the
1026 event loop handles it. */
1027 mark_async_signal_handler (sigint_token);
b5a0ac70
SS
1028}
1029
f0881b37
PA
1030/* See gdb_select.h. */
1031
1032int
1033interruptible_select (int n,
1034 fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
1035 struct timeval *timeout)
1036{
1037 fd_set my_readfds;
1038 int fd;
1039 int res;
1040
1041 if (readfds == NULL)
1042 {
1043 readfds = &my_readfds;
1044 FD_ZERO (&my_readfds);
1045 }
1046
1047 fd = quit_serial_event_fd ();
1048 FD_SET (fd, readfds);
1049 if (n <= fd)
1050 n = fd + 1;
1051
1052 do
1053 {
1054 res = gdb_select (n, readfds, writefds, exceptfds, timeout);
1055 }
1056 while (res == -1 && errno == EINTR);
1057
1058 if (res == 1 && FD_ISSET (fd, readfds))
1059 {
1060 errno = EINTR;
1061 return -1;
1062 }
1063 return res;
1064}
1065
06c868a8
JK
1066/* Handle GDB exit upon receiving SIGTERM if target_can_async_p (). */
1067
1068static void
1069async_sigterm_handler (gdb_client_data arg)
1070{
268a799a 1071 quit_force (NULL, 0);
06c868a8
JK
1072}
1073
1074/* See defs.h. */
1075volatile int sync_quit_force_run;
1076
a7266fef
AS
1077/* Quit GDB if SIGTERM is received.
1078 GDB would quit anyway, but this way it will clean up properly. */
1079void
1080handle_sigterm (int sig)
1081{
1082 signal (sig, handle_sigterm);
06c868a8 1083
077836f7
PP
1084 sync_quit_force_run = 1;
1085 set_quit_flag ();
1086
1087 mark_async_signal_handler (async_sigterm_token);
a7266fef
AS
1088}
1089
371d5dec 1090/* Do the quit. All the checks have been done by the caller. */
c5aa993b 1091void
c2c6d25f 1092async_request_quit (gdb_client_data arg)
b5a0ac70 1093{
5f960e00 1094 /* If the quit_flag has gotten reset back to 0 by the time we get
4ac94eda
FF
1095 back here, that means that an exception was thrown to unwind the
1096 current command before we got back to the event loop. So there
522002f9 1097 is no reason to call quit again here. */
048094ac 1098 QUIT;
b5a0ac70
SS
1099}
1100
6d318c73 1101#ifdef SIGQUIT
371d5dec
MS
1102/* Tell the event loop what to do if SIGQUIT is received.
1103 See event-signal.c. */
c5aa993b 1104static void
c2c6d25f 1105handle_sigquit (int sig)
b5a0ac70 1106{
f6fbab7d 1107 mark_async_signal_handler (sigquit_token);
b5a0ac70
SS
1108 signal (sig, handle_sigquit);
1109}
6d318c73 1110#endif
b5a0ac70 1111
0f0b8dcd
DJ
1112#if defined (SIGQUIT) || defined (SIGHUP)
1113/* Called by the event loop in response to a SIGQUIT or an
1114 ignored SIGHUP. */
c5aa993b 1115static void
c2c6d25f 1116async_do_nothing (gdb_client_data arg)
b5a0ac70 1117{
371d5dec 1118 /* Empty function body. */
b5a0ac70 1119}
0f0b8dcd 1120#endif
b5a0ac70
SS
1121
1122#ifdef SIGHUP
371d5dec
MS
1123/* Tell the event loop what to do if SIGHUP is received.
1124 See event-signal.c. */
c5aa993b 1125static void
fba45db2 1126handle_sighup (int sig)
b5a0ac70 1127{
f6fbab7d 1128 mark_async_signal_handler (sighup_token);
b5a0ac70
SS
1129 signal (sig, handle_sighup);
1130}
1131
371d5dec 1132/* Called by the event loop to process a SIGHUP. */
c5aa993b 1133static void
c2c6d25f 1134async_disconnect (gdb_client_data arg)
b5a0ac70 1135{
b2cd6b29 1136
a70b8144 1137 try
b2cd6b29
JM
1138 {
1139 quit_cover ();
1140 }
1141
230d2906 1142 catch (const gdb_exception &exception)
b2cd6b29
JM
1143 {
1144 fputs_filtered ("Could not kill the program being debugged",
1145 gdb_stderr);
1146 exception_print (gdb_stderr, exception);
1147 }
1148
5b6d1e4f 1149 for (inferior *inf : all_inferiors ())
492d29ea 1150 {
5b6d1e4f
PA
1151 switch_to_inferior_no_thread (inf);
1152 try
1153 {
1154 pop_all_targets ();
1155 }
1156 catch (const gdb_exception &exception)
1157 {
1158 }
492d29ea 1159 }
b2cd6b29 1160
371d5dec 1161 signal (SIGHUP, SIG_DFL); /*FIXME: ??????????? */
ec4dfccf 1162 raise (SIGHUP);
b5a0ac70
SS
1163}
1164#endif
1165
6aa899ce 1166#ifdef SIGTSTP
c5aa993b 1167void
6aa899ce 1168handle_sigtstp (int sig)
0f71a2f6 1169{
f6fbab7d 1170 mark_async_signal_handler (sigtstp_token);
6aa899ce 1171 signal (sig, handle_sigtstp);
0f71a2f6
JM
1172}
1173
1174static void
6aa899ce 1175async_sigtstp_handler (gdb_client_data arg)
0f71a2f6 1176{
ab821bc6 1177 char *prompt = get_prompt ();
d7f9d729 1178
0f71a2f6 1179 signal (SIGTSTP, SIG_DFL);
2acceee2
JM
1180#if HAVE_SIGPROCMASK
1181 {
1182 sigset_t zero;
46711df8 1183
2acceee2 1184 sigemptyset (&zero);
21987b9c 1185 gdb_sigmask (SIG_SETMASK, &zero, 0);
2acceee2 1186 }
46711df8 1187#elif HAVE_SIGSETMASK
0f71a2f6 1188 sigsetmask (0);
2acceee2 1189#endif
ec4dfccf 1190 raise (SIGTSTP);
6aa899ce 1191 signal (SIGTSTP, handle_sigtstp);
0f71a2f6
JM
1192 printf_unfiltered ("%s", prompt);
1193 gdb_flush (gdb_stdout);
1194
371d5dec
MS
1195 /* Forget about any previous command -- null line now will do
1196 nothing. */
0f71a2f6
JM
1197 dont_repeat ();
1198}
6aa899ce 1199#endif /* SIGTSTP */
0f71a2f6 1200
371d5dec
MS
1201/* Tell the event loop what to do if SIGFPE is received.
1202 See event-signal.c. */
c5aa993b 1203static void
c2c6d25f 1204handle_sigfpe (int sig)
b5a0ac70 1205{
f6fbab7d 1206 mark_async_signal_handler (sigfpe_token);
b5a0ac70
SS
1207 signal (sig, handle_sigfpe);
1208}
1209
405feb71 1210/* Event loop will call this function to process a SIGFPE. */
c5aa993b 1211static void
c2c6d25f 1212async_float_handler (gdb_client_data arg)
b5a0ac70 1213{
371d5dec
MS
1214 /* This message is based on ANSI C, section 4.7. Note that integer
1215 divide by zero causes this, so "float" is a misnomer. */
8a3fe4f8 1216 error (_("Erroneous arithmetic operation."));
b5a0ac70 1217}
b5a0ac70
SS
1218\f
1219
0f71a2f6 1220/* Set things up for readline to be invoked via the alternate
3c610247
PA
1221 interface, i.e. via a callback function
1222 (gdb_rl_callback_read_char), and hook up instream to the event
1223 loop. */
1224
0f71a2f6 1225void
3c216924 1226gdb_setup_readline (int editing)
0f71a2f6 1227{
a74e1786
PA
1228 struct ui *ui = current_ui;
1229
362646f5
AC
1230 /* This function is a noop for the sync case. The assumption is
1231 that the sync setup is ALL done in gdb_init, and we would only
1232 mess it up here. The sync stuff should really go away over
1233 time. */
1a088d06 1234 if (!batch_silent)
d7e74731
PA
1235 gdb_stdout = new stdio_file (ui->outstream);
1236 gdb_stderr = new stderr_file (ui->errstream);
362646f5
AC
1237 gdb_stdlog = gdb_stderr; /* for moment */
1238 gdb_stdtarg = gdb_stderr; /* for moment */
8d4d924b 1239 gdb_stdtargerr = gdb_stderr; /* for moment */
362646f5 1240
3c216924
PA
1241 /* If the input stream is connected to a terminal, turn on editing.
1242 However, that is only allowed on the main UI, as we can only have
1243 one instance of readline. */
1244 if (ISATTY (ui->instream) && editing && ui == main_ui)
9e0b60a8 1245 {
371d5dec 1246 /* Tell gdb that we will be using the readline library. This
362646f5
AC
1247 could be overwritten by a command in .gdbinit like 'set
1248 editing on' or 'off'. */
3c216924
PA
1249 ui->command_editing = 1;
1250
362646f5
AC
1251 /* When a character is detected on instream by select or poll,
1252 readline will be invoked via this callback function. */
a74e1786 1253 ui->call_readline = gdb_rl_callback_read_char_wrapper;
3c216924
PA
1254
1255 /* Tell readline to use the same input stream that gdb uses. */
1256 rl_instream = ui->instream;
9e0b60a8 1257 }
362646f5
AC
1258 else
1259 {
3c216924 1260 ui->command_editing = 0;
a74e1786 1261 ui->call_readline = gdb_readline_no_editing_callback;
362646f5 1262 }
362646f5 1263
41fd2b0f
PA
1264 /* Now create the event source for this UI's input file descriptor.
1265 Another source is going to be the target program (inferior), but
1266 that must be registered only when it actually exists (I.e. after
1267 we say 'run' or after we connect to a remote target. */
3eb7562a 1268 ui_register_input_event_handler (ui);
0f71a2f6 1269}
cee6ddeb 1270
7d5b6fdd
EZ
1271/* Disable command input through the standard CLI channels. Used in
1272 the suspend proc for interpreters that use the standard gdb readline
1273 interface, like the cli & the mi. */
3c216924 1274
7d5b6fdd
EZ
1275void
1276gdb_disable_readline (void)
1277{
41fd2b0f
PA
1278 struct ui *ui = current_ui;
1279
362646f5
AC
1280 /* FIXME - It is too heavyweight to delete and remake these every
1281 time you run an interpreter that needs readline. It is probably
1282 better to have the interpreters cache these, which in turn means
1283 that this needs to be moved into interpreter specific code. */
7d5b6fdd
EZ
1284
1285#if 0
362646f5
AC
1286 ui_file_delete (gdb_stdout);
1287 ui_file_delete (gdb_stderr);
1288 gdb_stdlog = NULL;
1289 gdb_stdtarg = NULL;
8d4d924b 1290 gdb_stdtargerr = NULL;
7d5b6fdd
EZ
1291#endif
1292
3c216924
PA
1293 if (ui->command_editing)
1294 gdb_rl_callback_handler_remove ();
41fd2b0f 1295 delete_file_handler (ui->input_fd);
7d5b6fdd 1296}
6b01403b 1297
fece451c
CB
1298scoped_segv_handler_restore::scoped_segv_handler_restore (segv_handler_t new_handler)
1299{
1300 m_old_handler = thread_local_segv_handler;
1301 thread_local_segv_handler = new_handler;
1302}
1303
1304scoped_segv_handler_restore::~scoped_segv_handler_restore()
1305{
1306 thread_local_segv_handler = m_old_handler;
1307}
1308
6b01403b
SM
1309static const char debug_event_loop_off[] = "off";
1310static const char debug_event_loop_all_except_ui[] = "all-except-ui";
1311static const char debug_event_loop_all[] = "all";
1312
1313static const char *debug_event_loop_enum[] = {
1314 debug_event_loop_off,
1315 debug_event_loop_all_except_ui,
1316 debug_event_loop_all,
1317 nullptr
1318};
1319
1320static const char *debug_event_loop_value = debug_event_loop_off;
1321
1322static void
1323set_debug_event_loop_command (const char *args, int from_tty,
1324 cmd_list_element *c)
1325{
1326 if (debug_event_loop_value == debug_event_loop_off)
1327 debug_event_loop = debug_event_loop_kind::OFF;
1328 else if (debug_event_loop_value == debug_event_loop_all_except_ui)
1329 debug_event_loop = debug_event_loop_kind::ALL_EXCEPT_UI;
1330 else if (debug_event_loop_value == debug_event_loop_all)
1331 debug_event_loop = debug_event_loop_kind::ALL;
1332 else
1333 gdb_assert_not_reached ("Invalid debug event look kind value.");
1334}
1335
1336static void
1337show_debug_event_loop_command (struct ui_file *file, int from_tty,
1338 struct cmd_list_element *cmd, const char *value)
1339{
1340 fprintf_filtered (file, _("Event loop debugging is %s.\n"), value);
1341}
1342
1343void _initialize_event_top ();
1344void
1345_initialize_event_top ()
1346{
1347 add_setshow_enum_cmd ("event-loop", class_maintenance,
1348 debug_event_loop_enum,
1349 &debug_event_loop_value,
1350 _("Set event-loop debugging."),
1351 _("Show event-loop debugging."),
1352 _("\
1353Control whether to show event loop-related debug messages."),
1354 set_debug_event_loop_command,
1355 show_debug_event_loop_command,
1356 &setdebuglist, &showdebuglist);
1357}
This page took 1.689867 seconds and 4 git commands to generate.