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