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