Silence ARI for valid calls to abort
[deliverable/binutils-gdb.git] / gdb / event-top.c
CommitLineData
b5a0ac70 1/* Top level stuff for GDB, the GNU debugger.
637537d0 2
42a4f53d 3 Copyright (C) 1999-2019 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"
4de283e4
TT
28#include "event-loop.h"
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"
4de283e4 42#include "gdb_select.h"
21987b9c 43#include "gdbsupport/gdb-sigmask.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
417 character position to be off, since the newline we read from
418 the user is not accounted for. */
606aae8a 419 fputs_unfiltered (actual_gdb_prompt.c_str (), gdb_stdout);
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{
526 add_file_handler (ui->input_fd, stdin_event_handler, ui);
527}
528
529/* See top.h. */
530
531void
532ui_unregister_input_event_handler (struct ui *ui)
533{
534 delete_file_handler (ui->input_fd);
535}
536
6426a772
JM
537/* Re-enable stdin after the end of an execution command in
538 synchronous mode, or after an error from the target, and we aborted
371d5dec 539 the exec operation. */
6426a772
JM
540
541void
712af3be 542async_enable_stdin (void)
6426a772 543{
3b12939d
PA
544 struct ui *ui = current_ui;
545
546 if (ui->prompt_state == PROMPT_BLOCKED)
32c1e744 547 {
223ffa71 548 target_terminal::ours ();
3eb7562a 549 ui_register_input_event_handler (ui);
3b12939d 550 ui->prompt_state = PROMPT_NEEDED;
32c1e744 551 }
6426a772
JM
552}
553
554/* Disable reads from stdin (the console) marking the command as
371d5dec 555 synchronous. */
6426a772
JM
556
557void
558async_disable_stdin (void)
559{
3b12939d
PA
560 struct ui *ui = current_ui;
561
562 ui->prompt_state = PROMPT_BLOCKED;
3eb7562a 563 delete_file_handler (ui->input_fd);
6426a772 564}
b5a0ac70 565\f
6426a772 566
b69d38af
PA
567/* Handle a gdb command line. This function is called when
568 handle_line_of_input has concatenated one or more input lines into
569 a whole command. */
570
571void
95a6b0a1 572command_handler (const char *command)
b5a0ac70 573{
f38d3ad1 574 struct ui *ui = current_ui;
95a6b0a1 575 const char *c;
b5a0ac70 576
268a799a 577 if (ui->instream == ui->stdin_stream)
b5a0ac70 578 reinitialize_more_filter ();
b5a0ac70 579
1e3b796d 580 scoped_command_stats stat_reporter (true);
b5a0ac70 581
b69d38af
PA
582 /* Do not execute commented lines. */
583 for (c = command; *c == ' ' || *c == '\t'; c++)
584 ;
585 if (c[0] != '#')
586 {
268a799a 587 execute_command (command, ui->instream == ui->stdin_stream);
c5aa993b 588
b69d38af
PA
589 /* Do any commands attached to breakpoint we stopped at. */
590 bpstat_do_actions ();
591 }
43ff13b4
JM
592}
593
b69d38af
PA
594/* Append RL, an input line returned by readline or one of its
595 emulations, to CMD_LINE_BUFFER. Returns the command line if we
596 have a whole command line ready to be processed by the command
597 interpreter or NULL if the command line isn't complete yet (input
95bc9f0b 598 line ends in a backslash). */
b5a0ac70 599
b69d38af 600static char *
95bc9f0b 601command_line_append_input_line (struct buffer *cmd_line_buffer, const char *rl)
b5a0ac70 602{
b69d38af
PA
603 char *cmd;
604 size_t len;
b5a0ac70 605
b69d38af 606 len = strlen (rl);
b5a0ac70 607
b69d38af 608 if (len > 0 && rl[len - 1] == '\\')
b5a0ac70 609 {
b69d38af
PA
610 /* Don't copy the backslash and wait for more. */
611 buffer_grow (cmd_line_buffer, rl, len - 1);
612 cmd = NULL;
b5a0ac70 613 }
b69d38af 614 else
b5a0ac70 615 {
b69d38af
PA
616 /* Copy whole line including terminating null, and we're
617 done. */
618 buffer_grow (cmd_line_buffer, rl, len + 1);
619 cmd = cmd_line_buffer->buffer;
b5a0ac70
SS
620 }
621
b69d38af
PA
622 return cmd;
623}
b5a0ac70 624
b69d38af 625/* Handle a line of input coming from readline.
b5a0ac70 626
b69d38af
PA
627 If the read line ends with a continuation character (backslash),
628 save the partial input in CMD_LINE_BUFFER (except the backslash),
629 and return NULL. Otherwise, save the partial input and return a
630 pointer to CMD_LINE_BUFFER's buffer (null terminated), indicating a
631 whole command line is ready to be executed.
b5a0ac70 632
b69d38af 633 Returns EOF on end of file.
b5a0ac70 634
b69d38af 635 If REPEAT, handle command repetitions:
b5a0ac70 636
b69d38af 637 - If the input command line is NOT empty, the command returned is
68bb5386 638 saved using save_command_line () so that it can be repeated later.
d96429cd 639
68bb5386
PW
640 - OTOH, if the input command line IS empty, return the saved
641 command instead of the empty input line.
b69d38af 642*/
b5a0ac70 643
b69d38af
PA
644char *
645handle_line_of_input (struct buffer *cmd_line_buffer,
95bc9f0b
TT
646 const char *rl, int repeat,
647 const char *annotation_suffix)
b69d38af 648{
f38d3ad1 649 struct ui *ui = current_ui;
268a799a 650 int from_tty = ui->instream == ui->stdin_stream;
b69d38af
PA
651 char *p1;
652 char *cmd;
653
654 if (rl == NULL)
655 return (char *) EOF;
656
657 cmd = command_line_append_input_line (cmd_line_buffer, rl);
658 if (cmd == NULL)
659 return NULL;
b5a0ac70 660
b69d38af
PA
661 /* We have a complete command line now. Prepare for the next
662 command, but leave ownership of memory to the buffer . */
663 cmd_line_buffer->used_size = 0;
664
268a799a 665 if (from_tty && annotation_level > 1)
b5a0ac70 666 {
b69d38af
PA
667 printf_unfiltered (("\n\032\032post-"));
668 puts_unfiltered (annotation_suffix);
669 printf_unfiltered (("\n"));
670 }
671
672#define SERVER_COMMAND_PREFIX "server "
9937536c
JB
673 server_command = startswith (cmd, SERVER_COMMAND_PREFIX);
674 if (server_command)
b69d38af 675 {
68bb5386 676 /* Note that we don't call `save_command_line'. Between this
b69d38af
PA
677 and the check in dont_repeat, this insures that repeating
678 will still do the right thing. */
679 return cmd + strlen (SERVER_COMMAND_PREFIX);
b5a0ac70
SS
680 }
681
682 /* Do history expansion if that is wished. */
268a799a 683 if (history_expansion_p && from_tty && input_interactive_p (current_ui))
b5a0ac70 684 {
b6fb1ee5 685 char *cmd_expansion;
b5a0ac70
SS
686 int expanded;
687
b6fb1ee5
PW
688 expanded = history_expand (cmd, &cmd_expansion);
689 gdb::unique_xmalloc_ptr<char> history_value (cmd_expansion);
b5a0ac70
SS
690 if (expanded)
691 {
b69d38af
PA
692 size_t len;
693
b5a0ac70 694 /* Print the changes. */
b6fb1ee5 695 printf_unfiltered ("%s\n", history_value.get ());
b5a0ac70
SS
696
697 /* If there was an error, call this function again. */
698 if (expanded < 0)
b6fb1ee5 699 return cmd;
b69d38af
PA
700
701 /* history_expand returns an allocated string. Just replace
702 our buffer with it. */
b6fb1ee5 703 len = strlen (history_value.get ());
b69d38af 704 xfree (buffer_finish (cmd_line_buffer));
b6fb1ee5 705 cmd_line_buffer->buffer = history_value.get ();
b69d38af 706 cmd_line_buffer->buffer_size = len + 1;
b6fb1ee5 707 cmd = history_value.release ();
b5a0ac70
SS
708 }
709 }
710
371d5dec 711 /* If we just got an empty line, and that is supposed to repeat the
b69d38af
PA
712 previous command, return the previously saved command. */
713 for (p1 = cmd; *p1 == ' ' || *p1 == '\t'; p1++)
714 ;
715 if (repeat && *p1 == '\0')
68bb5386 716 return get_saved_command_line ();
b69d38af
PA
717
718 /* Add command to history if appropriate. Note: lines consisting
719 solely of comments are also added to the command history. This
720 is useful when you type a command, and then realize you don't
721 want to execute it quite yet. You can comment out the command
722 and then later fetch it from the value history and remove the
723 '#'. The kill ring is probably better, but some people are in
724 the habit of commenting things out. */
268a799a 725 if (*cmd != '\0' && from_tty && input_interactive_p (current_ui))
b69d38af 726 gdb_add_history (cmd);
b5a0ac70 727
b69d38af
PA
728 /* Save into global buffer if appropriate. */
729 if (repeat)
b5a0ac70 730 {
68bb5386
PW
731 save_command_line (cmd);
732 return get_saved_command_line ();
b5a0ac70 733 }
b69d38af
PA
734 else
735 return cmd;
736}
b5a0ac70 737
b69d38af
PA
738/* Handle a complete line of input. This is called by the callback
739 mechanism within the readline library. Deal with incomplete
740 commands as well, by saving the partial input in a global
741 buffer.
b5a0ac70 742
b69d38af
PA
743 NOTE: This is the asynchronous version of the command_line_input
744 function. */
b5a0ac70 745
b69d38af 746void
95bc9f0b 747command_line_handler (gdb::unique_xmalloc_ptr<char> &&rl)
b69d38af
PA
748{
749 struct buffer *line_buffer = get_command_line_buffer ();
f38d3ad1 750 struct ui *ui = current_ui;
b69d38af 751 char *cmd;
b5a0ac70 752
95bc9f0b 753 cmd = handle_line_of_input (line_buffer, rl.get (), 1, "prompt");
b69d38af 754 if (cmd == (char *) EOF)
b5a0ac70 755 {
b69d38af
PA
756 /* stdin closed. The connection with the terminal is gone.
757 This happens at the end of a testsuite run, after Expect has
758 hung up but GDB is still alive. In such a case, we just quit
759 gdb killing the inferior program too. */
760 printf_unfiltered ("quit\n");
95a6b0a1 761 execute_command ("quit", 1);
b69d38af
PA
762 }
763 else if (cmd == NULL)
764 {
765 /* We don't have a full line yet. Print an empty prompt. */
766 display_gdb_prompt ("");
767 }
768 else
769 {
3b12939d
PA
770 ui->prompt_state = PROMPT_NEEDED;
771
b69d38af 772 command_handler (cmd);
3b12939d
PA
773
774 if (ui->prompt_state != PROMPTED)
775 display_gdb_prompt (0);
b5a0ac70 776 }
b5a0ac70
SS
777}
778
779/* Does reading of input from terminal w/o the editing features
c70061cf
PA
780 provided by the readline library. Calls the line input handler
781 once we have a whole input line. */
b5a0ac70 782
085dd6e6 783void
c70061cf 784gdb_readline_no_editing_callback (gdb_client_data client_data)
b5a0ac70
SS
785{
786 int c;
787 char *result;
187212b3 788 struct buffer line_buffer;
7be570e7 789 static int done_once = 0;
a74e1786 790 struct ui *ui = current_ui;
7be570e7 791
187212b3
PA
792 buffer_init (&line_buffer);
793
7be570e7 794 /* Unbuffer the input stream, so that, later on, the calls to fgetc
371d5dec 795 fetch only one char at the time from the stream. The fgetc's will
7be570e7 796 get up to the first newline, but there may be more chars in the
371d5dec 797 stream after '\n'. If we buffer the input and fgetc drains the
7be570e7 798 stream, getting stuff beyond the newline as well, a select, done
371d5dec 799 afterwards will not trigger. */
f38d3ad1 800 if (!done_once && !ISATTY (ui->instream))
7be570e7 801 {
f38d3ad1 802 setbuf (ui->instream, NULL);
7be570e7
JM
803 done_once = 1;
804 }
b5a0ac70 805
b5a0ac70 806 /* We still need the while loop here, even though it would seem
c70061cf
PA
807 obvious to invoke gdb_readline_no_editing_callback at every
808 character entered. If not using the readline library, the
809 terminal is in cooked mode, which sends the characters all at
810 once. Poll will notice that the input fd has changed state only
811 after enter is pressed. At this point we still need to fetch all
812 the chars entered. */
b5a0ac70
SS
813
814 while (1)
815 {
816 /* Read from stdin if we are executing a user defined command.
817 This is the right thing for prompt_for_continue, at least. */
268a799a 818 c = fgetc (ui->instream != NULL ? ui->instream : ui->stdin_stream);
b5a0ac70
SS
819
820 if (c == EOF)
821 {
187212b3
PA
822 if (line_buffer.used_size > 0)
823 {
824 /* The last line does not end with a newline. Return it, and
825 if we are called again fgetc will still return EOF and
826 we'll return NULL then. */
827 break;
828 }
829 xfree (buffer_finish (&line_buffer));
a74e1786 830 ui->input_handler (NULL);
13ce7133 831 return;
b5a0ac70
SS
832 }
833
834 if (c == '\n')
b5a0ac70 835 {
187212b3
PA
836 if (line_buffer.used_size > 0
837 && line_buffer.buffer[line_buffer.used_size - 1] == '\r')
838 line_buffer.used_size--;
b5a0ac70
SS
839 break;
840 }
b5a0ac70 841
187212b3 842 buffer_grow_char (&line_buffer, c);
b5a0ac70
SS
843 }
844
187212b3
PA
845 buffer_grow_char (&line_buffer, '\0');
846 result = buffer_finish (&line_buffer);
95bc9f0b 847 ui->input_handler (gdb::unique_xmalloc_ptr<char> (result));
b5a0ac70
SS
848}
849\f
850
3b3978bc
TT
851/* See event-top.h. */
852
853thread_local void (*thread_local_segv_handler) (int);
854
855static void handle_sigsegv (int sig);
856
857/* Install the SIGSEGV handler. */
858static void
859install_handle_sigsegv ()
860{
861#if defined (HAVE_SIGACTION)
862 struct sigaction sa;
863 sa.sa_handler = handle_sigsegv;
864 sigemptyset (&sa.sa_mask);
865#ifdef HAVE_SIGALTSTACK
866 sa.sa_flags = SA_ONSTACK;
867#else
868 sa.sa_flags = 0;
869#endif
870 sigaction (SIGSEGV, &sa, nullptr);
871#else
872 signal (SIGSEGV, handle_sigsegv);
873#endif
874}
875
876/* Handler for SIGSEGV. */
877
878static void
879handle_sigsegv (int sig)
880{
881 install_handle_sigsegv ();
882
883 if (thread_local_segv_handler == nullptr)
036003a6 884 abort (); /* ARI: abort */
3b3978bc
TT
885 thread_local_segv_handler (sig);
886}
887
888\f
889
f0881b37
PA
890/* The serial event associated with the QUIT flag. set_quit_flag sets
891 this, and check_quit_flag clears it. Used by interruptible_select
892 to be able to do interruptible I/O with no race with the SIGINT
893 handler. */
894static struct serial_event *quit_serial_event;
895
b5a0ac70 896/* Initialization of signal handlers and tokens. There is a function
371d5dec 897 handle_sig* for each of the signals GDB cares about. Specifically:
b5a0ac70
SS
898 SIGINT, SIGFPE, SIGQUIT, SIGTSTP, SIGHUP, SIGWINCH. These
899 functions are the actual signal handlers associated to the signals
900 via calls to signal(). The only job for these functions is to
901 enqueue the appropriate event/procedure with the event loop. Such
371d5dec 902 procedures are the old signal handlers. The event loop will take
b5a0ac70 903 care of invoking the queued procedures to perform the usual tasks
371d5dec 904 associated with the reception of the signal. */
392a587b 905/* NOTE: 1999-04-30 This is the asynchronous version of init_signals.
b5a0ac70 906 init_signals will become obsolete as we move to have to event loop
371d5dec 907 as the default for gdb. */
b5a0ac70 908void
c2c6d25f 909async_init_signals (void)
c5aa993b 910{
5cc3ce8b
PA
911 initialize_async_signal_handlers ();
912
f0881b37
PA
913 quit_serial_event = make_serial_event ();
914
b5a0ac70
SS
915 signal (SIGINT, handle_sigint);
916 sigint_token =
0f71a2f6 917 create_async_signal_handler (async_request_quit, NULL);
a7266fef 918 signal (SIGTERM, handle_sigterm);
06c868a8
JK
919 async_sigterm_token
920 = create_async_signal_handler (async_sigterm_handler, NULL);
b5a0ac70
SS
921
922 /* If SIGTRAP was set to SIG_IGN, then the SIG_IGN will get passed
923 to the inferior and breakpoints will be ignored. */
924#ifdef SIGTRAP
925 signal (SIGTRAP, SIG_DFL);
926#endif
927
6d318c73 928#ifdef SIGQUIT
b5a0ac70
SS
929 /* If we initialize SIGQUIT to SIG_IGN, then the SIG_IGN will get
930 passed to the inferior, which we don't want. It would be
931 possible to do a "signal (SIGQUIT, SIG_DFL)" after we fork, but
932 on BSD4.3 systems using vfork, that can affect the
933 GDB process as well as the inferior (the signal handling tables
934 might be in memory, shared between the two). Since we establish
935 a handler for SIGQUIT, when we call exec it will set the signal
936 to SIG_DFL for us. */
937 signal (SIGQUIT, handle_sigquit);
938 sigquit_token =
0f71a2f6 939 create_async_signal_handler (async_do_nothing, NULL);
6d318c73 940#endif
b5a0ac70
SS
941#ifdef SIGHUP
942 if (signal (SIGHUP, handle_sighup) != SIG_IGN)
943 sighup_token =
0f71a2f6 944 create_async_signal_handler (async_disconnect, NULL);
b5a0ac70
SS
945 else
946 sighup_token =
0f71a2f6 947 create_async_signal_handler (async_do_nothing, NULL);
b5a0ac70
SS
948#endif
949 signal (SIGFPE, handle_sigfpe);
950 sigfpe_token =
0f71a2f6 951 create_async_signal_handler (async_float_handler, NULL);
b5a0ac70 952
6aa899ce 953#ifdef SIGTSTP
0f71a2f6 954 sigtstp_token =
6aa899ce 955 create_async_signal_handler (async_sigtstp_handler, NULL);
0f71a2f6 956#endif
3b3978bc
TT
957
958 install_handle_sigsegv ();
0f71a2f6
JM
959}
960
f0881b37
PA
961/* See defs.h. */
962
963void
964quit_serial_event_set (void)
965{
966 serial_event_set (quit_serial_event);
967}
968
969/* See defs.h. */
970
971void
972quit_serial_event_clear (void)
973{
974 serial_event_clear (quit_serial_event);
975}
976
977/* Return the selectable file descriptor of the serial event
978 associated with the quit flag. */
979
980static int
981quit_serial_event_fd (void)
982{
983 return serial_event_fd (quit_serial_event);
984}
985
048094ac
PA
986/* See defs.h. */
987
988void
989default_quit_handler (void)
990{
991 if (check_quit_flag ())
992 {
223ffa71 993 if (target_terminal::is_ours ())
048094ac
PA
994 quit ();
995 else
996 target_pass_ctrlc ();
997 }
998}
999
1000/* See defs.h. */
1001quit_handler_ftype *quit_handler = default_quit_handler;
1002
f0881b37
PA
1003/* Handle a SIGINT. */
1004
c5aa993b 1005void
c2c6d25f 1006handle_sigint (int sig)
b5a0ac70
SS
1007{
1008 signal (sig, handle_sigint);
1009
5f960e00
FF
1010 /* We could be running in a loop reading in symfiles or something so
1011 it may be quite a while before we get back to the event loop. So
371d5dec 1012 set quit_flag to 1 here. Then if QUIT is called before we get to
5f960e00 1013 the event loop, we will unwind as expected. */
522002f9 1014 set_quit_flag ();
5f960e00 1015
585a46a2
PA
1016 /* In case nothing calls QUIT before the event loop is reached, the
1017 event loop handles it. */
1018 mark_async_signal_handler (sigint_token);
b5a0ac70
SS
1019}
1020
f0881b37
PA
1021/* See gdb_select.h. */
1022
1023int
1024interruptible_select (int n,
1025 fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
1026 struct timeval *timeout)
1027{
1028 fd_set my_readfds;
1029 int fd;
1030 int res;
1031
1032 if (readfds == NULL)
1033 {
1034 readfds = &my_readfds;
1035 FD_ZERO (&my_readfds);
1036 }
1037
1038 fd = quit_serial_event_fd ();
1039 FD_SET (fd, readfds);
1040 if (n <= fd)
1041 n = fd + 1;
1042
1043 do
1044 {
1045 res = gdb_select (n, readfds, writefds, exceptfds, timeout);
1046 }
1047 while (res == -1 && errno == EINTR);
1048
1049 if (res == 1 && FD_ISSET (fd, readfds))
1050 {
1051 errno = EINTR;
1052 return -1;
1053 }
1054 return res;
1055}
1056
06c868a8
JK
1057/* Handle GDB exit upon receiving SIGTERM if target_can_async_p (). */
1058
1059static void
1060async_sigterm_handler (gdb_client_data arg)
1061{
268a799a 1062 quit_force (NULL, 0);
06c868a8
JK
1063}
1064
1065/* See defs.h. */
1066volatile int sync_quit_force_run;
1067
a7266fef
AS
1068/* Quit GDB if SIGTERM is received.
1069 GDB would quit anyway, but this way it will clean up properly. */
1070void
1071handle_sigterm (int sig)
1072{
1073 signal (sig, handle_sigterm);
06c868a8 1074
077836f7
PP
1075 sync_quit_force_run = 1;
1076 set_quit_flag ();
1077
1078 mark_async_signal_handler (async_sigterm_token);
a7266fef
AS
1079}
1080
371d5dec 1081/* Do the quit. All the checks have been done by the caller. */
c5aa993b 1082void
c2c6d25f 1083async_request_quit (gdb_client_data arg)
b5a0ac70 1084{
5f960e00 1085 /* If the quit_flag has gotten reset back to 0 by the time we get
4ac94eda
FF
1086 back here, that means that an exception was thrown to unwind the
1087 current command before we got back to the event loop. So there
522002f9 1088 is no reason to call quit again here. */
048094ac 1089 QUIT;
b5a0ac70
SS
1090}
1091
6d318c73 1092#ifdef SIGQUIT
371d5dec
MS
1093/* Tell the event loop what to do if SIGQUIT is received.
1094 See event-signal.c. */
c5aa993b 1095static void
c2c6d25f 1096handle_sigquit (int sig)
b5a0ac70 1097{
f6fbab7d 1098 mark_async_signal_handler (sigquit_token);
b5a0ac70
SS
1099 signal (sig, handle_sigquit);
1100}
6d318c73 1101#endif
b5a0ac70 1102
0f0b8dcd
DJ
1103#if defined (SIGQUIT) || defined (SIGHUP)
1104/* Called by the event loop in response to a SIGQUIT or an
1105 ignored SIGHUP. */
c5aa993b 1106static void
c2c6d25f 1107async_do_nothing (gdb_client_data arg)
b5a0ac70 1108{
371d5dec 1109 /* Empty function body. */
b5a0ac70 1110}
0f0b8dcd 1111#endif
b5a0ac70
SS
1112
1113#ifdef SIGHUP
371d5dec
MS
1114/* Tell the event loop what to do if SIGHUP is received.
1115 See event-signal.c. */
c5aa993b 1116static void
fba45db2 1117handle_sighup (int sig)
b5a0ac70 1118{
f6fbab7d 1119 mark_async_signal_handler (sighup_token);
b5a0ac70
SS
1120 signal (sig, handle_sighup);
1121}
1122
371d5dec 1123/* Called by the event loop to process a SIGHUP. */
c5aa993b 1124static void
c2c6d25f 1125async_disconnect (gdb_client_data arg)
b5a0ac70 1126{
b2cd6b29 1127
a70b8144 1128 try
b2cd6b29
JM
1129 {
1130 quit_cover ();
1131 }
1132
230d2906 1133 catch (const gdb_exception &exception)
b2cd6b29
JM
1134 {
1135 fputs_filtered ("Could not kill the program being debugged",
1136 gdb_stderr);
1137 exception_print (gdb_stderr, exception);
1138 }
1139
a70b8144 1140 try
b2cd6b29 1141 {
460014f5 1142 pop_all_targets ();
b2cd6b29 1143 }
230d2906 1144 catch (const gdb_exception &exception)
492d29ea
PA
1145 {
1146 }
b2cd6b29 1147
371d5dec 1148 signal (SIGHUP, SIG_DFL); /*FIXME: ??????????? */
ec4dfccf 1149 raise (SIGHUP);
b5a0ac70
SS
1150}
1151#endif
1152
6aa899ce 1153#ifdef SIGTSTP
c5aa993b 1154void
6aa899ce 1155handle_sigtstp (int sig)
0f71a2f6 1156{
f6fbab7d 1157 mark_async_signal_handler (sigtstp_token);
6aa899ce 1158 signal (sig, handle_sigtstp);
0f71a2f6
JM
1159}
1160
1161static void
6aa899ce 1162async_sigtstp_handler (gdb_client_data arg)
0f71a2f6 1163{
ab821bc6 1164 char *prompt = get_prompt ();
d7f9d729 1165
0f71a2f6 1166 signal (SIGTSTP, SIG_DFL);
2acceee2
JM
1167#if HAVE_SIGPROCMASK
1168 {
1169 sigset_t zero;
46711df8 1170
2acceee2 1171 sigemptyset (&zero);
21987b9c 1172 gdb_sigmask (SIG_SETMASK, &zero, 0);
2acceee2 1173 }
46711df8 1174#elif HAVE_SIGSETMASK
0f71a2f6 1175 sigsetmask (0);
2acceee2 1176#endif
ec4dfccf 1177 raise (SIGTSTP);
6aa899ce 1178 signal (SIGTSTP, handle_sigtstp);
0f71a2f6
JM
1179 printf_unfiltered ("%s", prompt);
1180 gdb_flush (gdb_stdout);
1181
371d5dec
MS
1182 /* Forget about any previous command -- null line now will do
1183 nothing. */
0f71a2f6
JM
1184 dont_repeat ();
1185}
6aa899ce 1186#endif /* SIGTSTP */
0f71a2f6 1187
371d5dec
MS
1188/* Tell the event loop what to do if SIGFPE is received.
1189 See event-signal.c. */
c5aa993b 1190static void
c2c6d25f 1191handle_sigfpe (int sig)
b5a0ac70 1192{
f6fbab7d 1193 mark_async_signal_handler (sigfpe_token);
b5a0ac70
SS
1194 signal (sig, handle_sigfpe);
1195}
1196
405feb71 1197/* Event loop will call this function to process a SIGFPE. */
c5aa993b 1198static void
c2c6d25f 1199async_float_handler (gdb_client_data arg)
b5a0ac70 1200{
371d5dec
MS
1201 /* This message is based on ANSI C, section 4.7. Note that integer
1202 divide by zero causes this, so "float" is a misnomer. */
8a3fe4f8 1203 error (_("Erroneous arithmetic operation."));
b5a0ac70 1204}
b5a0ac70
SS
1205\f
1206
0f71a2f6 1207/* Set things up for readline to be invoked via the alternate
3c610247
PA
1208 interface, i.e. via a callback function
1209 (gdb_rl_callback_read_char), and hook up instream to the event
1210 loop. */
1211
0f71a2f6 1212void
3c216924 1213gdb_setup_readline (int editing)
0f71a2f6 1214{
a74e1786
PA
1215 struct ui *ui = current_ui;
1216
362646f5
AC
1217 /* This function is a noop for the sync case. The assumption is
1218 that the sync setup is ALL done in gdb_init, and we would only
1219 mess it up here. The sync stuff should really go away over
1220 time. */
1a088d06 1221 if (!batch_silent)
d7e74731
PA
1222 gdb_stdout = new stdio_file (ui->outstream);
1223 gdb_stderr = new stderr_file (ui->errstream);
362646f5
AC
1224 gdb_stdlog = gdb_stderr; /* for moment */
1225 gdb_stdtarg = gdb_stderr; /* for moment */
8d4d924b 1226 gdb_stdtargerr = gdb_stderr; /* for moment */
362646f5 1227
3c216924
PA
1228 /* If the input stream is connected to a terminal, turn on editing.
1229 However, that is only allowed on the main UI, as we can only have
1230 one instance of readline. */
1231 if (ISATTY (ui->instream) && editing && ui == main_ui)
9e0b60a8 1232 {
371d5dec 1233 /* Tell gdb that we will be using the readline library. This
362646f5
AC
1234 could be overwritten by a command in .gdbinit like 'set
1235 editing on' or 'off'. */
3c216924
PA
1236 ui->command_editing = 1;
1237
362646f5
AC
1238 /* When a character is detected on instream by select or poll,
1239 readline will be invoked via this callback function. */
a74e1786 1240 ui->call_readline = gdb_rl_callback_read_char_wrapper;
3c216924
PA
1241
1242 /* Tell readline to use the same input stream that gdb uses. */
1243 rl_instream = ui->instream;
9e0b60a8 1244 }
362646f5
AC
1245 else
1246 {
3c216924 1247 ui->command_editing = 0;
a74e1786 1248 ui->call_readline = gdb_readline_no_editing_callback;
362646f5 1249 }
362646f5 1250
41fd2b0f
PA
1251 /* Now create the event source for this UI's input file descriptor.
1252 Another source is going to be the target program (inferior), but
1253 that must be registered only when it actually exists (I.e. after
1254 we say 'run' or after we connect to a remote target. */
3eb7562a 1255 ui_register_input_event_handler (ui);
0f71a2f6 1256}
cee6ddeb 1257
7d5b6fdd
EZ
1258/* Disable command input through the standard CLI channels. Used in
1259 the suspend proc for interpreters that use the standard gdb readline
1260 interface, like the cli & the mi. */
3c216924 1261
7d5b6fdd
EZ
1262void
1263gdb_disable_readline (void)
1264{
41fd2b0f
PA
1265 struct ui *ui = current_ui;
1266
362646f5
AC
1267 /* FIXME - It is too heavyweight to delete and remake these every
1268 time you run an interpreter that needs readline. It is probably
1269 better to have the interpreters cache these, which in turn means
1270 that this needs to be moved into interpreter specific code. */
7d5b6fdd
EZ
1271
1272#if 0
362646f5
AC
1273 ui_file_delete (gdb_stdout);
1274 ui_file_delete (gdb_stderr);
1275 gdb_stdlog = NULL;
1276 gdb_stdtarg = NULL;
8d4d924b 1277 gdb_stdtargerr = NULL;
7d5b6fdd
EZ
1278#endif
1279
3c216924
PA
1280 if (ui->command_editing)
1281 gdb_rl_callback_handler_remove ();
41fd2b0f 1282 delete_file_handler (ui->input_fd);
7d5b6fdd 1283}
This page took 1.613215 seconds and 4 git commands to generate.