PR gdb/10720
[deliverable/binutils-gdb.git] / gdb / event-top.c
CommitLineData
b5a0ac70 1/* Top level stuff for GDB, the GNU debugger.
637537d0 2
7b6bb8da
JB
3 Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005, 2007, 2008, 2009, 2010,
4 2011 Free Software Foundation, Inc.
637537d0 5
b5a0ac70
SS
6 Written by Elena Zannoni <ezannoni@cygnus.com> of Cygnus Solutions.
7
8 This file is part of GDB.
9
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
a9762ec7 12 the Free Software Foundation; either version 3 of the License, or
b5a0ac70
SS
13 (at your option) any later version.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
19
20 You should have received a copy of the GNU General Public License
371d5dec 21 along with this program. If not, see <http://www.gnu.org/licenses/>. */
b5a0ac70
SS
22
23#include "defs.h"
0f71a2f6 24#include "top.h"
b5a0ac70 25#include "inferior.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>
60250e8b 32#include "exceptions.h"
16026cd7 33#include "cli/cli-script.h" /* for reset_command_nest_depth */
d01a8610 34#include "main.h"
8ea051c5 35#include "gdbthread.h"
d17b6f81 36#include "observer.h"
be34f849 37#include "continuations.h"
371d5dec 38#include "gdbcmd.h" /* for dont_repeat() */
104c1213 39
371d5dec 40/* readline include files. */
dbda9972
AC
41#include "readline/readline.h"
42#include "readline/history.h"
b5a0ac70
SS
43
44/* readline defines this. */
45#undef savestring
46
c2c6d25f
JM
47static void rl_callback_read_char_wrapper (gdb_client_data client_data);
48static void command_line_handler (char *rl);
c2c6d25f
JM
49static void change_line_handler (void);
50static void change_annotation_level (void);
51static void command_handler (char *command);
b5a0ac70 52
371d5dec 53/* Signal handlers. */
6d318c73 54#ifdef SIGQUIT
c2c6d25f 55static void handle_sigquit (int sig);
6d318c73 56#endif
0f0b8dcd 57#ifdef SIGHUP
c2c6d25f 58static void handle_sighup (int sig);
0f0b8dcd 59#endif
c2c6d25f 60static void handle_sigfpe (int sig);
d4f3574e 61#if defined(SIGWINCH) && defined(SIGWINCH_HANDLER)
c2c6d25f 62static void handle_sigwinch (int sig);
0f71a2f6 63#endif
b5a0ac70
SS
64
65/* Functions to be invoked by the event loop in response to
371d5dec 66 signals. */
0f0b8dcd 67#if defined (SIGQUIT) || defined (SIGHUP)
c2c6d25f 68static void async_do_nothing (gdb_client_data);
0f0b8dcd
DJ
69#endif
70#ifdef SIGHUP
c2c6d25f 71static void async_disconnect (gdb_client_data);
0f0b8dcd 72#endif
c2c6d25f 73static void async_float_handler (gdb_client_data);
0f0b8dcd 74#ifdef STOP_SIGNAL
c2c6d25f 75static void async_stop_sig (gdb_client_data);
0f0b8dcd 76#endif
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
111/* This variable contains the new prompt that the user sets with the
371d5dec 112 set prompt command. */
b5a0ac70
SS
113char *new_async_prompt;
114
115/* This is the annotation suffix that will be used when the
371d5dec 116 annotation_level is 2. */
b5a0ac70
SS
117char *async_annotation_suffix;
118
104c1213 119/* This is used to display the notification of the completion of an
371d5dec 120 asynchronous execution command. */
104c1213
JM
121int exec_done_display_p = 0;
122
b5a0ac70 123/* This is the file descriptor for the input stream that GDB uses to
371d5dec 124 read commands from. */
b5a0ac70
SS
125int input_fd;
126
371d5dec 127/* This is the prompt stack. Prompts will be pushed on the stack as
b5a0ac70 128 needed by the different 'kinds' of user inputs GDB is asking
371d5dec 129 for. See event-loop.h. */
b5a0ac70
SS
130struct prompts the_prompts;
131
371d5dec 132/* Signal handling variables. */
b5a0ac70 133/* Each of these is a pointer to a function that the event loop will
371d5dec 134 invoke if the corresponding signal has received. The real signal
b5a0ac70 135 handlers mark these functions as ready to be executed and the event
371d5dec
MS
136 loop, in a later iteration, calls them. See the function
137 invoke_async_signal_handler. */
97bb9d91 138void *sigint_token;
b5a0ac70 139#ifdef SIGHUP
97bb9d91 140void *sighup_token;
b5a0ac70 141#endif
6d318c73 142#ifdef SIGQUIT
97bb9d91 143void *sigquit_token;
6d318c73 144#endif
97bb9d91 145void *sigfpe_token;
b5a0ac70 146#if defined(SIGWINCH) && defined(SIGWINCH_HANDLER)
97bb9d91 147void *sigwinch_token;
b5a0ac70 148#endif
0f71a2f6 149#ifdef STOP_SIGNAL
97bb9d91 150void *sigtstp_token;
0f71a2f6
JM
151#endif
152
b5a0ac70 153/* Structure to save a partially entered command. This is used when
371d5dec 154 the user types '\' at the end of a command line. This is necessary
b5a0ac70
SS
155 because each line of input is handled by a different call to
156 command_line_handler, and normally there is no state retained
371d5dec 157 between different calls. */
b5a0ac70
SS
158int more_to_come = 0;
159
160struct readline_input_state
161 {
162 char *linebuffer;
163 char *linebuffer_ptr;
164 }
165readline_input_state;
467d8519
TT
166
167/* This hook is called by rl_callback_read_char_wrapper after each
168 character is processed. */
b08ee6a2 169void (*after_char_processing_hook) (void);
b5a0ac70
SS
170\f
171
371d5dec
MS
172/* Wrapper function for calling into the readline library. The event
173 loop expects the callback function to have a paramter, while
174 readline expects none. */
c2c6d25f
JM
175static void
176rl_callback_read_char_wrapper (gdb_client_data client_data)
177{
178 rl_callback_read_char ();
467d8519
TT
179 if (after_char_processing_hook)
180 (*after_char_processing_hook) ();
c2c6d25f
JM
181}
182
b5a0ac70 183/* Initialize all the necessary variables, start the event loop,
371d5dec 184 register readline, and stdin, start the loop. */
b5a0ac70 185void
c2c6d25f 186cli_command_loop (void)
b5a0ac70 187{
7d8e6458 188 display_gdb_prompt (0);
b5a0ac70 189
371d5dec 190 /* Now it's time to start the event loop. */
085dd6e6 191 start_event_loop ();
b5a0ac70
SS
192}
193
194/* Change the function to be invoked every time there is a character
371d5dec 195 ready on stdin. This is used when the user sets the editing off,
b5a0ac70 196 therefore bypassing readline, and letting gdb handle the input
371d5dec 197 itself, via gdb_readline2. Also it is used in the opposite case in
b5a0ac70 198 which the user sets editing on again, by restoring readline
371d5dec 199 handling of the input. */
392a587b 200static void
c2c6d25f 201change_line_handler (void)
b5a0ac70 202{
371d5dec
MS
203 /* NOTE: this operates on input_fd, not instream. If we are reading
204 commands from a file, instream will point to the file. However in
c2c6d25f 205 async mode, we always read commands from a file with editing
371d5dec
MS
206 off. This means that the 'set editing on/off' will have effect
207 only on the interactive session. */
c2c6d25f 208
b5a0ac70
SS
209 if (async_command_editing_p)
210 {
371d5dec 211 /* Turn on editing by using readline. */
c2c6d25f 212 call_readline = rl_callback_read_char_wrapper;
0f71a2f6 213 input_handler = command_line_handler;
b5a0ac70
SS
214 }
215 else
216 {
371d5dec 217 /* Turn off editing by using gdb_readline2. */
b5a0ac70
SS
218 rl_callback_handler_remove ();
219 call_readline = gdb_readline2;
0f71a2f6
JM
220
221 /* Set up the command handler as well, in case we are called as
371d5dec 222 first thing from .gdbinit. */
0f71a2f6 223 input_handler = command_line_handler;
b5a0ac70 224 }
b5a0ac70
SS
225}
226
227/* Displays the prompt. The prompt that is displayed is the current
228 top of the prompt stack, if the argument NEW_PROMPT is
371d5dec 229 0. Otherwise, it displays whatever NEW_PROMPT is. This is used
b5a0ac70 230 after each gdb command has completed, and in the following cases:
371d5dec 231 1. When the user enters a command line which is ended by '\'
0f71a2f6 232 indicating that the command will continue on the next line.
b5a0ac70 233 In that case the prompt that is displayed is the empty string.
0f71a2f6 234 2. When the user is entering 'commands' for a breakpoint, or
371d5dec 235 actions for a tracepoint. In this case the prompt will be '>'
0f71a2f6 236 3. Other????
371d5dec 237 FIXME: 2. & 3. not implemented yet for async. */
b5a0ac70 238void
c2c6d25f 239display_gdb_prompt (char *new_prompt)
b5a0ac70
SS
240{
241 int prompt_length = 0;
d17b6f81 242 char *actual_gdb_prompt = NULL;
b5a0ac70 243
16026cd7
AS
244 /* Reset the nesting depth used when trace-commands is set. */
245 reset_command_nest_depth ();
246
4389a95a
AC
247 /* Each interpreter has its own rules on displaying the command
248 prompt. */
249 if (!current_interp_display_prompt_p ())
fb40c209 250 return;
fb40c209 251
d17b6f81
PM
252 /* Get the prompt before the observers are called as observer hook
253 functions may change the prompt. Do not call observers on an
254 explicit prompt change as passed to this function, as this forms
7d8e6458 255 a temporary prompt, IE, displayed but not set. Do not call
256 observers for a prompt change if sync_execution is set, it will
257 call us again with sync_execution not set when it wants to
258 display an actual prompt. */
259 if (! sync_execution && ! new_prompt)
d17b6f81
PM
260 {
261 char *post_gdb_prompt = NULL;
95298e72 262 char *pre_gdb_prompt = xstrdup (get_prompt (0));
d17b6f81
PM
263
264 observer_notify_before_prompt (pre_gdb_prompt);
95298e72 265 post_gdb_prompt = get_prompt (0);
d17b6f81
PM
266
267 /* If the observer changed the prompt, use that prompt. */
268 if (strcmp (pre_gdb_prompt, post_gdb_prompt) != 0)
269 actual_gdb_prompt = post_gdb_prompt;
270
271 xfree (pre_gdb_prompt);
272 }
273
7d8e6458 274 /* In the sync_execution && !is_running case we need to display the prompt
275 even though it may be "" to avoid a double prompt, while installing the
276 callback handlers, in the async_editing_p case for pagination,
277 So fall through. */
8ea051c5 278 if (sync_execution && is_running (inferior_ptid))
adf40b2e
JM
279 {
280 /* This is to trick readline into not trying to display the
6426a772
JM
281 prompt. Even though we display the prompt using this
282 function, readline still tries to do its own display if we
283 don't call rl_callback_handler_install and
284 rl_callback_handler_remove (which readline detects because a
371d5dec 285 global variable is not set). If readline did that, it could
6426a772
JM
286 mess up gdb signal handlers for SIGINT. Readline assumes
287 that between calls to rl_set_signals and rl_clear_signals gdb
371d5dec 288 doesn't do anything with the signal handlers. Well, that's
6426a772 289 not the case, because when the target executes we change the
371d5dec 290 SIGINT signal handler. If we allowed readline to display the
6426a772
JM
291 prompt, the signal handler change would happen exactly
292 between the calls to the above two functions.
371d5dec 293 Calling rl_callback_handler_remove(), does the job. */
adf40b2e
JM
294
295 rl_callback_handler_remove ();
296 return;
297 }
298
d17b6f81
PM
299 /* If the observer changed the prompt, ACTUAL_GDB_PROMPT will not be
300 NULL. Otherwise, either copy the existing prompt, or set it to
301 NEW_PROMPT. */
302 if (! actual_gdb_prompt)
b5a0ac70 303 {
d17b6f81
PM
304 if (! new_prompt)
305 {
306 /* Just use the top of the prompt stack. */
95298e72
PM
307 prompt_length = strlen (get_prefix (0)) +
308 strlen (get_suffix (0)) +
309 strlen (get_prompt (0)) + 1;
d17b6f81
PM
310
311 actual_gdb_prompt = (char *) alloca (prompt_length);
312
313 /* Prefix needs to have new line at end. */
95298e72
PM
314 strcpy (actual_gdb_prompt, get_prefix (0));
315 strcat (actual_gdb_prompt, get_prompt (0));
d17b6f81
PM
316 /* Suffix needs to have a new line at end and \032 \032 at
317 beginning. */
95298e72 318 strcat (actual_gdb_prompt, get_suffix (0));
d17b6f81
PM
319 }
320 else
321 actual_gdb_prompt = new_prompt;;
b5a0ac70
SS
322 }
323
324 if (async_command_editing_p)
325 {
326 rl_callback_handler_remove ();
d17b6f81 327 rl_callback_handler_install (actual_gdb_prompt, input_handler);
b5a0ac70 328 }
371d5dec 329 /* new_prompt at this point can be the top of the stack or the one
d014929c
MS
330 passed in. It can't be NULL. */
331 else
b5a0ac70
SS
332 {
333 /* Don't use a _filtered function here. It causes the assumed
334 character position to be off, since the newline we read from
335 the user is not accounted for. */
d17b6f81 336 fputs_unfiltered (actual_gdb_prompt, gdb_stdout);
b5a0ac70
SS
337 gdb_flush (gdb_stdout);
338 }
339}
340
341/* Used when the user requests a different annotation level, with
371d5dec 342 'set annotate'. It pushes a new prompt (with prefix and suffix) on top
b5a0ac70
SS
343 of the prompt stack, if the annotation level desired is 2, otherwise
344 it pops the top of the prompt stack when we want the annotation level
371d5dec 345 to be the normal ones (1 or 0). */
392a587b 346static void
c2c6d25f 347change_annotation_level (void)
b5a0ac70
SS
348{
349 char *prefix, *suffix;
350
95298e72 351 if (!get_prefix (0) || !get_prompt (0) || !get_suffix (0))
b5a0ac70
SS
352 {
353 /* The prompt stack has not been initialized to "", we are
371d5dec 354 using gdb w/o the --async switch. */
8a3fe4f8 355 warning (_("Command has same effect as set annotate"));
b5a0ac70
SS
356 return;
357 }
358
359 if (annotation_level > 1)
360 {
95298e72 361 if (!strcmp (get_prefix (0), "") && !strcmp (get_suffix (0), ""))
b5a0ac70 362 {
371d5dec 363 /* Push a new prompt if the previous annotation_level was not >1. */
b5a0ac70
SS
364 prefix = (char *) alloca (strlen (async_annotation_suffix) + 10);
365 strcpy (prefix, "\n\032\032pre-");
366 strcat (prefix, async_annotation_suffix);
367 strcat (prefix, "\n");
368
369 suffix = (char *) alloca (strlen (async_annotation_suffix) + 6);
370 strcpy (suffix, "\n\032\032");
371 strcat (suffix, async_annotation_suffix);
372 strcat (suffix, "\n");
373
374 push_prompt (prefix, (char *) 0, suffix);
375 }
376 }
377 else
378 {
95298e72 379 if (strcmp (get_prefix (0), "") && strcmp (get_suffix (0), ""))
b5a0ac70 380 {
371d5dec 381 /* Pop the top of the stack, we are going back to annotation < 1. */
b5a0ac70
SS
382 pop_prompt ();
383 }
384 }
385}
386
371d5dec
MS
387/* Pushes a new prompt on the prompt stack. Each prompt has three
388 parts: prefix, prompt, suffix. Usually prefix and suffix are empty
389 strings, except when the annotation level is 2. Memory is allocated
390 within xstrdup for the new prompt. */
43ff13b4 391void
c2c6d25f 392push_prompt (char *prefix, char *prompt, char *suffix)
b5a0ac70
SS
393{
394 the_prompts.top++;
95298e72 395 set_prefix (prefix, 0);
b5a0ac70 396
43ff13b4 397 /* Note that this function is used by the set annotate 2
371d5dec
MS
398 command. This is why we take care of saving the old prompt
399 in case a new one is not specified. */
b5a0ac70 400 if (prompt)
95298e72 401 set_prompt (prompt, 0);
b5a0ac70 402 else
95298e72 403 set_prompt (get_prompt (-1), 0);
b5a0ac70 404
95298e72 405 set_suffix (suffix, 0);
b5a0ac70
SS
406}
407
371d5dec
MS
408/* Pops the top of the prompt stack, and frees the memory allocated
409 for it. */
43ff13b4 410void
c2c6d25f 411pop_prompt (void)
b5a0ac70 412{
43ff13b4 413 /* If we are not during a 'synchronous' execution command, in which
371d5dec 414 case, the top prompt would be empty. */
95298e72 415 if (strcmp (get_prompt (0), ""))
43ff13b4 416 /* This is for the case in which the prompt is set while the
371d5dec 417 annotation level is 2. The top prompt will be changed, but when
43ff13b4 418 we return to annotation level < 2, we want that new prompt to be
371d5dec 419 in effect, until the user does another 'set prompt'. */
95298e72
PM
420 if (strcmp (get_prompt (0), get_prompt (-1)))
421 set_prompt (get_prompt (0), -1);
422
423 set_prefix (NULL, 0);
424 set_prompt (NULL, 0);
425 set_suffix (NULL, 0);
b5a0ac70
SS
426 the_prompts.top--;
427}
c2c6d25f
JM
428
429/* When there is an event ready on the stdin file desriptor, instead
430 of calling readline directly throught the callback function, or
431 instead of calling gdb_readline2, give gdb a chance to detect
371d5dec 432 errors and do something. */
c2c6d25f 433void
2acceee2 434stdin_event_handler (int error, gdb_client_data client_data)
c2c6d25f
JM
435{
436 if (error)
437 {
a3f17187 438 printf_unfiltered (_("error detected on stdin\n"));
2acceee2 439 delete_file_handler (input_fd);
c2c6d25f 440 discard_all_continuations ();
604ead4a 441 discard_all_intermediate_continuations ();
371d5dec 442 /* If stdin died, we may as well kill gdb. */
c5394b80 443 quit_command ((char *) 0, stdin == instream);
c2c6d25f
JM
444 }
445 else
6426a772 446 (*call_readline) (client_data);
c2c6d25f
JM
447}
448
6426a772
JM
449/* Re-enable stdin after the end of an execution command in
450 synchronous mode, or after an error from the target, and we aborted
371d5dec 451 the exec operation. */
6426a772
JM
452
453void
712af3be 454async_enable_stdin (void)
6426a772 455{
32c1e744
VP
456 if (sync_execution)
457 {
371d5dec 458 /* See NOTE in async_disable_stdin(). */
32c1e744
VP
459 /* FIXME: cagney/1999-09-27: Call this before clearing
460 sync_execution. Current target_terminal_ours() implementations
371d5dec 461 check for sync_execution before switching the terminal. */
32c1e744
VP
462 target_terminal_ours ();
463 pop_prompt ();
464 sync_execution = 0;
465 }
6426a772
JM
466}
467
468/* Disable reads from stdin (the console) marking the command as
371d5dec 469 synchronous. */
6426a772
JM
470
471void
472async_disable_stdin (void)
473{
d9d2d8b6
PA
474 if (!sync_execution)
475 {
476 sync_execution = 1;
477 push_prompt ("", "", "");
478 }
6426a772 479}
b5a0ac70 480\f
6426a772 481
371d5dec 482/* Handles a gdb command. This function is called by
b5a0ac70 483 command_line_handler, which has processed one or more input lines
371d5dec 484 into COMMAND. */
392a587b 485/* NOTE: 1999-04-30 This is the asynchronous version of the command_loop
b5a0ac70 486 function. The command_loop function will be obsolete when we
371d5dec 487 switch to use the event loop at every execution of gdb. */
392a587b 488static void
c2c6d25f 489command_handler (char *command)
b5a0ac70 490{
b5a0ac70 491 int stdin_is_tty = ISATTY (stdin);
0f3bb72e 492 struct cleanup *stat_chain;
b5a0ac70 493
b5a0ac70
SS
494 quit_flag = 0;
495 if (instream == stdin && stdin_is_tty)
496 reinitialize_more_filter ();
b5a0ac70 497
371d5dec
MS
498 /* If readline returned a NULL command, it means that the connection
499 with the terminal is gone. This happens at the end of a
500 testsuite run, after Expect has hung up but GDB is still alive.
501 In such a case, we just quit gdb killing the inferior program
502 too. */
b5a0ac70 503 if (command == 0)
fa3fd85b
AS
504 {
505 printf_unfiltered ("quit\n");
506 execute_command ("quit", stdin == instream);
507 }
b5a0ac70 508
0f3bb72e 509 stat_chain = make_command_stats_cleanup (1);
b5a0ac70
SS
510
511 execute_command (command, instream == stdin);
c5aa993b 512
347bddb7
PA
513 /* Do any commands attached to breakpoint we stopped at. */
514 bpstat_do_actions ();
c5aa993b 515
0f3bb72e 516 do_cleanups (stat_chain);
43ff13b4
JM
517}
518
371d5dec
MS
519/* Handle a complete line of input. This is called by the callback
520 mechanism within the readline library. Deal with incomplete
521 commands as well, by saving the partial input in a global
522 buffer. */
b5a0ac70 523
392a587b 524/* NOTE: 1999-04-30 This is the asynchronous version of the
371d5dec 525 command_line_input function; command_line_input will become
b5a0ac70 526 obsolete once we use the event loop as the default mechanism in
371d5dec 527 GDB. */
b5a0ac70 528static void
c2c6d25f 529command_line_handler (char *rl)
b5a0ac70
SS
530{
531 static char *linebuffer = 0;
532 static unsigned linelength = 0;
52f0bd74 533 char *p;
b5a0ac70 534 char *p1;
b5a0ac70
SS
535 char *nline;
536 char got_eof = 0;
537
b5a0ac70
SS
538 int repeat = (instream == stdin);
539
540 if (annotation_level > 1 && instream == stdin)
541 {
a3f17187 542 printf_unfiltered (("\n\032\032post-"));
306d9ac5 543 puts_unfiltered (async_annotation_suffix);
a3f17187 544 printf_unfiltered (("\n"));
b5a0ac70
SS
545 }
546
547 if (linebuffer == 0)
548 {
549 linelength = 80;
550 linebuffer = (char *) xmalloc (linelength);
551 }
552
553 p = linebuffer;
554
555 if (more_to_come)
556 {
557 strcpy (linebuffer, readline_input_state.linebuffer);
558 p = readline_input_state.linebuffer_ptr;
b8c9b27d 559 xfree (readline_input_state.linebuffer);
b5a0ac70 560 more_to_come = 0;
adf40b2e 561 pop_prompt ();
b5a0ac70
SS
562 }
563
564#ifdef STOP_SIGNAL
565 if (job_control)
0f71a2f6 566 signal (STOP_SIGNAL, handle_stop_sig);
b5a0ac70
SS
567#endif
568
569 /* Make sure that all output has been output. Some machines may let
371d5dec
MS
570 you get away with leaving out some of the gdb_flush, but not
571 all. */
b5a0ac70
SS
572 wrap_here ("");
573 gdb_flush (gdb_stdout);
574 gdb_flush (gdb_stderr);
575
576 if (source_file_name != NULL)
637537d0 577 ++source_line_number;
b5a0ac70
SS
578
579 /* If we are in this case, then command_handler will call quit
371d5dec 580 and exit from gdb. */
b5a0ac70
SS
581 if (!rl || rl == (char *) EOF)
582 {
583 got_eof = 1;
584 command_handler (0);
371d5dec 585 return; /* Lint. */
b5a0ac70
SS
586 }
587 if (strlen (rl) + 1 + (p - linebuffer) > linelength)
588 {
589 linelength = strlen (rl) + 1 + (p - linebuffer);
590 nline = (char *) xrealloc (linebuffer, linelength);
591 p += nline - linebuffer;
592 linebuffer = nline;
593 }
594 p1 = rl;
595 /* Copy line. Don't copy null at end. (Leaves line alone
371d5dec 596 if this was just a newline). */
b5a0ac70
SS
597 while (*p1)
598 *p++ = *p1++;
599
b8c9b27d 600 xfree (rl); /* Allocated in readline. */
b5a0ac70 601
4dd79c29 602 if (p > linebuffer && *(p - 1) == '\\')
b5a0ac70 603 {
20bb6bc8 604 *p = '\0';
b5a0ac70
SS
605 p--; /* Put on top of '\'. */
606
1b36a34b 607 readline_input_state.linebuffer = xstrdup (linebuffer);
d96429cd
AS
608 readline_input_state.linebuffer_ptr = p;
609
610 /* We will not invoke a execute_command if there is more
371d5dec
MS
611 input expected to complete the command. So, we need to
612 print an empty prompt here. */
d96429cd
AS
613 more_to_come = 1;
614 push_prompt ("", "", "");
615 display_gdb_prompt (0);
616 return;
b5a0ac70
SS
617 }
618
619#ifdef STOP_SIGNAL
620 if (job_control)
621 signal (STOP_SIGNAL, SIG_DFL);
622#endif
623
624#define SERVER_COMMAND_LENGTH 7
625 server_command =
626 (p - linebuffer > SERVER_COMMAND_LENGTH)
bf896cb0 627 && strncmp (linebuffer, "server ", SERVER_COMMAND_LENGTH) == 0;
b5a0ac70
SS
628 if (server_command)
629 {
630 /* Note that we don't set `line'. Between this and the check in
631 dont_repeat, this insures that repeating will still do the
632 right thing. */
633 *p = '\0';
634 command_handler (linebuffer + SERVER_COMMAND_LENGTH);
635 display_gdb_prompt (0);
636 return;
637 }
638
639 /* Do history expansion if that is wished. */
640 if (history_expansion_p && instream == stdin
641 && ISATTY (instream))
642 {
643 char *history_value;
644 int expanded;
645
646 *p = '\0'; /* Insert null now. */
647 expanded = history_expand (linebuffer, &history_value);
648 if (expanded)
649 {
650 /* Print the changes. */
651 printf_unfiltered ("%s\n", history_value);
652
653 /* If there was an error, call this function again. */
654 if (expanded < 0)
655 {
b8c9b27d 656 xfree (history_value);
b5a0ac70
SS
657 return;
658 }
659 if (strlen (history_value) > linelength)
660 {
661 linelength = strlen (history_value) + 1;
662 linebuffer = (char *) xrealloc (linebuffer, linelength);
663 }
664 strcpy (linebuffer, history_value);
665 p = linebuffer + strlen (linebuffer);
b5a0ac70 666 }
f5b73fbb 667 xfree (history_value);
b5a0ac70
SS
668 }
669
371d5dec
MS
670 /* If we just got an empty line, and that is supposed to repeat the
671 previous command, return the value in the global buffer. */
b5a0ac70
SS
672 if (repeat && p == linebuffer && *p != '\\')
673 {
dc7eb48e 674 command_handler (saved_command_line);
b5a0ac70
SS
675 display_gdb_prompt (0);
676 return;
677 }
678
679 for (p1 = linebuffer; *p1 == ' ' || *p1 == '\t'; p1++);
680 if (repeat && !*p1)
681 {
dc7eb48e 682 command_handler (saved_command_line);
b5a0ac70
SS
683 display_gdb_prompt (0);
684 return;
685 }
686
687 *p = 0;
688
689 /* Add line to history if appropriate. */
690 if (instream == stdin
691 && ISATTY (stdin) && *linebuffer)
692 add_history (linebuffer);
693
694 /* Note: lines consisting solely of comments are added to the command
695 history. This is useful when you type a command, and then
696 realize you don't want to execute it quite yet. You can comment
697 out the command and then later fetch it from the value history
698 and remove the '#'. The kill ring is probably better, but some
699 people are in the habit of commenting things out. */
700 if (*p1 == '#')
371d5dec 701 *p1 = '\0'; /* Found a comment. */
b5a0ac70
SS
702
703 /* Save into global buffer if appropriate. */
704 if (repeat)
705 {
dc7eb48e 706 if (linelength > saved_command_line_size)
b5a0ac70 707 {
dc7eb48e
PA
708 saved_command_line = xrealloc (saved_command_line, linelength);
709 saved_command_line_size = linelength;
b5a0ac70 710 }
dc7eb48e 711 strcpy (saved_command_line, linebuffer);
b5a0ac70
SS
712 if (!more_to_come)
713 {
dc7eb48e 714 command_handler (saved_command_line);
b5a0ac70
SS
715 display_gdb_prompt (0);
716 }
717 return;
718 }
719
720 command_handler (linebuffer);
721 display_gdb_prompt (0);
722 return;
723}
724
725/* Does reading of input from terminal w/o the editing features
371d5dec 726 provided by the readline library. */
b5a0ac70 727
371d5dec 728/* NOTE: 1999-04-30 Asynchronous version of gdb_readline; gdb_readline
b5a0ac70 729 will become obsolete when the event loop is made the default
371d5dec 730 execution for gdb. */
085dd6e6 731void
c2c6d25f 732gdb_readline2 (gdb_client_data client_data)
b5a0ac70
SS
733{
734 int c;
735 char *result;
736 int input_index = 0;
737 int result_size = 80;
7be570e7
JM
738 static int done_once = 0;
739
740 /* Unbuffer the input stream, so that, later on, the calls to fgetc
371d5dec 741 fetch only one char at the time from the stream. The fgetc's will
7be570e7 742 get up to the first newline, but there may be more chars in the
371d5dec 743 stream after '\n'. If we buffer the input and fgetc drains the
7be570e7 744 stream, getting stuff beyond the newline as well, a select, done
371d5dec 745 afterwards will not trigger. */
7be570e7
JM
746 if (!done_once && !ISATTY (instream))
747 {
748 setbuf (instream, NULL);
749 done_once = 1;
750 }
b5a0ac70
SS
751
752 result = (char *) xmalloc (result_size);
753
754 /* We still need the while loop here, even though it would seem
755 obvious to invoke gdb_readline2 at every character entered. If
756 not using the readline library, the terminal is in cooked mode,
371d5dec
MS
757 which sends the characters all at once. Poll will notice that the
758 input fd has changed state only after enter is pressed. At this
759 point we still need to fetch all the chars entered. */
b5a0ac70
SS
760
761 while (1)
762 {
763 /* Read from stdin if we are executing a user defined command.
764 This is the right thing for prompt_for_continue, at least. */
765 c = fgetc (instream ? instream : stdin);
766
767 if (c == EOF)
768 {
769 if (input_index > 0)
371d5dec
MS
770 /* The last line does not end with a newline. Return it,
771 and if we are called again fgetc will still return EOF
772 and we'll return NULL then. */
b5a0ac70 773 break;
b8c9b27d 774 xfree (result);
0f71a2f6 775 (*input_handler) (0);
13ce7133 776 return;
b5a0ac70
SS
777 }
778
779 if (c == '\n')
b5a0ac70
SS
780 {
781 if (input_index > 0 && result[input_index - 1] == '\r')
782 input_index--;
783 break;
784 }
b5a0ac70
SS
785
786 result[input_index++] = c;
787 while (input_index >= result_size)
788 {
789 result_size *= 2;
790 result = (char *) xrealloc (result, result_size);
791 }
792 }
793
794 result[input_index++] = '\0';
0f71a2f6 795 (*input_handler) (result);
b5a0ac70
SS
796}
797\f
798
799/* Initialization of signal handlers and tokens. There is a function
371d5dec 800 handle_sig* for each of the signals GDB cares about. Specifically:
b5a0ac70
SS
801 SIGINT, SIGFPE, SIGQUIT, SIGTSTP, SIGHUP, SIGWINCH. These
802 functions are the actual signal handlers associated to the signals
803 via calls to signal(). The only job for these functions is to
804 enqueue the appropriate event/procedure with the event loop. Such
371d5dec 805 procedures are the old signal handlers. The event loop will take
b5a0ac70 806 care of invoking the queued procedures to perform the usual tasks
371d5dec 807 associated with the reception of the signal. */
392a587b 808/* NOTE: 1999-04-30 This is the asynchronous version of init_signals.
b5a0ac70 809 init_signals will become obsolete as we move to have to event loop
371d5dec 810 as the default for gdb. */
b5a0ac70 811void
c2c6d25f 812async_init_signals (void)
c5aa993b 813{
b5a0ac70
SS
814 signal (SIGINT, handle_sigint);
815 sigint_token =
0f71a2f6 816 create_async_signal_handler (async_request_quit, NULL);
a7266fef 817 signal (SIGTERM, handle_sigterm);
b5a0ac70
SS
818
819 /* If SIGTRAP was set to SIG_IGN, then the SIG_IGN will get passed
820 to the inferior and breakpoints will be ignored. */
821#ifdef SIGTRAP
822 signal (SIGTRAP, SIG_DFL);
823#endif
824
6d318c73 825#ifdef SIGQUIT
b5a0ac70
SS
826 /* If we initialize SIGQUIT to SIG_IGN, then the SIG_IGN will get
827 passed to the inferior, which we don't want. It would be
828 possible to do a "signal (SIGQUIT, SIG_DFL)" after we fork, but
829 on BSD4.3 systems using vfork, that can affect the
830 GDB process as well as the inferior (the signal handling tables
831 might be in memory, shared between the two). Since we establish
832 a handler for SIGQUIT, when we call exec it will set the signal
833 to SIG_DFL for us. */
834 signal (SIGQUIT, handle_sigquit);
835 sigquit_token =
0f71a2f6 836 create_async_signal_handler (async_do_nothing, NULL);
6d318c73 837#endif
b5a0ac70
SS
838#ifdef SIGHUP
839 if (signal (SIGHUP, handle_sighup) != SIG_IGN)
840 sighup_token =
0f71a2f6 841 create_async_signal_handler (async_disconnect, NULL);
b5a0ac70
SS
842 else
843 sighup_token =
0f71a2f6 844 create_async_signal_handler (async_do_nothing, NULL);
b5a0ac70
SS
845#endif
846 signal (SIGFPE, handle_sigfpe);
847 sigfpe_token =
0f71a2f6 848 create_async_signal_handler (async_float_handler, NULL);
b5a0ac70
SS
849
850#if defined(SIGWINCH) && defined(SIGWINCH_HANDLER)
851 signal (SIGWINCH, handle_sigwinch);
852 sigwinch_token =
0f71a2f6 853 create_async_signal_handler (SIGWINCH_HANDLER, NULL);
b5a0ac70 854#endif
0f71a2f6
JM
855#ifdef STOP_SIGNAL
856 sigtstp_token =
857 create_async_signal_handler (async_stop_sig, NULL);
858#endif
859
860}
861
c5aa993b 862void
97bb9d91 863mark_async_signal_handler_wrapper (void *token)
0f71a2f6 864{
c2c6d25f 865 mark_async_signal_handler ((struct async_signal_handler *) token);
b5a0ac70
SS
866}
867
371d5dec
MS
868/* Tell the event loop what to do if SIGINT is received.
869 See event-signal.c. */
c5aa993b 870void
c2c6d25f 871handle_sigint (int sig)
b5a0ac70
SS
872{
873 signal (sig, handle_sigint);
874
5f960e00
FF
875 /* We could be running in a loop reading in symfiles or something so
876 it may be quite a while before we get back to the event loop. So
371d5dec 877 set quit_flag to 1 here. Then if QUIT is called before we get to
5f960e00
FF
878 the event loop, we will unwind as expected. */
879
880 quit_flag = 1;
881
b5a0ac70 882 /* If immediate_quit is set, we go ahead and process the SIGINT right
371d5dec 883 away, even if we usually would defer this to the event loop. The
b5a0ac70 884 assumption here is that it is safe to process ^C immediately if
371d5dec 885 immediate_quit is set. If we didn't, SIGINT would be really
b5a0ac70
SS
886 processed only the next time through the event loop. To get to
887 that point, though, the command that we want to interrupt needs to
b803fb0f 888 finish first, which is unacceptable. If immediate quit is not set,
371d5dec 889 we process SIGINT the next time through the loop, which is fine. */
b803fb0f 890 gdb_call_async_signal_handler (sigint_token, immediate_quit);
b5a0ac70
SS
891}
892
a7266fef
AS
893/* Quit GDB if SIGTERM is received.
894 GDB would quit anyway, but this way it will clean up properly. */
895void
896handle_sigterm (int sig)
897{
898 signal (sig, handle_sigterm);
899 quit_force ((char *) 0, stdin == instream);
900}
901
371d5dec 902/* Do the quit. All the checks have been done by the caller. */
c5aa993b 903void
c2c6d25f 904async_request_quit (gdb_client_data arg)
b5a0ac70 905{
5f960e00 906 /* If the quit_flag has gotten reset back to 0 by the time we get
4ac94eda
FF
907 back here, that means that an exception was thrown to unwind the
908 current command before we got back to the event loop. So there
909 is no reason to call quit again here, unless immediate_quit is
371d5dec 910 set. */
5f960e00 911
4ac94eda
FF
912 if (quit_flag || immediate_quit)
913 quit ();
b5a0ac70
SS
914}
915
6d318c73 916#ifdef SIGQUIT
371d5dec
MS
917/* Tell the event loop what to do if SIGQUIT is received.
918 See event-signal.c. */
c5aa993b 919static void
c2c6d25f 920handle_sigquit (int sig)
b5a0ac70 921{
0f71a2f6 922 mark_async_signal_handler_wrapper (sigquit_token);
b5a0ac70
SS
923 signal (sig, handle_sigquit);
924}
6d318c73 925#endif
b5a0ac70 926
0f0b8dcd
DJ
927#if defined (SIGQUIT) || defined (SIGHUP)
928/* Called by the event loop in response to a SIGQUIT or an
929 ignored SIGHUP. */
c5aa993b 930static void
c2c6d25f 931async_do_nothing (gdb_client_data arg)
b5a0ac70 932{
371d5dec 933 /* Empty function body. */
b5a0ac70 934}
0f0b8dcd 935#endif
b5a0ac70
SS
936
937#ifdef SIGHUP
371d5dec
MS
938/* Tell the event loop what to do if SIGHUP is received.
939 See event-signal.c. */
c5aa993b 940static void
fba45db2 941handle_sighup (int sig)
b5a0ac70 942{
0f71a2f6 943 mark_async_signal_handler_wrapper (sighup_token);
b5a0ac70
SS
944 signal (sig, handle_sighup);
945}
946
371d5dec 947/* Called by the event loop to process a SIGHUP. */
c5aa993b 948static void
c2c6d25f 949async_disconnect (gdb_client_data arg)
b5a0ac70
SS
950{
951 catch_errors (quit_cover, NULL,
952 "Could not kill the program being debugged",
953 RETURN_MASK_ALL);
371d5dec 954 signal (SIGHUP, SIG_DFL); /*FIXME: ??????????? */
ec4dfccf 955 raise (SIGHUP);
b5a0ac70
SS
956}
957#endif
958
0f71a2f6 959#ifdef STOP_SIGNAL
c5aa993b 960void
c2c6d25f 961handle_stop_sig (int sig)
0f71a2f6 962{
c5aa993b
JM
963 mark_async_signal_handler_wrapper (sigtstp_token);
964 signal (sig, handle_stop_sig);
0f71a2f6
JM
965}
966
967static void
c2c6d25f 968async_stop_sig (gdb_client_data arg)
0f71a2f6 969{
95298e72 970 char *prompt = get_prompt (0);
d7f9d729 971
0f71a2f6
JM
972#if STOP_SIGNAL == SIGTSTP
973 signal (SIGTSTP, SIG_DFL);
2acceee2
JM
974#if HAVE_SIGPROCMASK
975 {
976 sigset_t zero;
46711df8 977
2acceee2
JM
978 sigemptyset (&zero);
979 sigprocmask (SIG_SETMASK, &zero, 0);
980 }
46711df8 981#elif HAVE_SIGSETMASK
0f71a2f6 982 sigsetmask (0);
2acceee2 983#endif
ec4dfccf 984 raise (SIGTSTP);
0f71a2f6
JM
985 signal (SIGTSTP, handle_stop_sig);
986#else
987 signal (STOP_SIGNAL, handle_stop_sig);
988#endif
989 printf_unfiltered ("%s", prompt);
990 gdb_flush (gdb_stdout);
991
371d5dec
MS
992 /* Forget about any previous command -- null line now will do
993 nothing. */
0f71a2f6
JM
994 dont_repeat ();
995}
996#endif /* STOP_SIGNAL */
997
371d5dec
MS
998/* Tell the event loop what to do if SIGFPE is received.
999 See event-signal.c. */
c5aa993b 1000static void
c2c6d25f 1001handle_sigfpe (int sig)
b5a0ac70 1002{
0f71a2f6 1003 mark_async_signal_handler_wrapper (sigfpe_token);
b5a0ac70
SS
1004 signal (sig, handle_sigfpe);
1005}
1006
371d5dec 1007/* Event loop will call this functin to process a SIGFPE. */
c5aa993b 1008static void
c2c6d25f 1009async_float_handler (gdb_client_data arg)
b5a0ac70 1010{
371d5dec
MS
1011 /* This message is based on ANSI C, section 4.7. Note that integer
1012 divide by zero causes this, so "float" is a misnomer. */
8a3fe4f8 1013 error (_("Erroneous arithmetic operation."));
b5a0ac70
SS
1014}
1015
371d5dec
MS
1016/* Tell the event loop what to do if SIGWINCH is received.
1017 See event-signal.c. */
b5a0ac70 1018#if defined(SIGWINCH) && defined(SIGWINCH_HANDLER)
c5aa993b 1019static void
c2c6d25f 1020handle_sigwinch (int sig)
b5a0ac70 1021{
0f71a2f6 1022 mark_async_signal_handler_wrapper (sigwinch_token);
b5a0ac70
SS
1023 signal (sig, handle_sigwinch);
1024}
1025#endif
1026\f
1027
1028/* Called by do_setshow_command. */
b5a0ac70 1029void
371d5dec
MS
1030set_async_editing_command (char *args, int from_tty,
1031 struct cmd_list_element *c)
b5a0ac70
SS
1032{
1033 change_line_handler ();
1034}
1035
1036/* Called by do_setshow_command. */
b5a0ac70 1037void
371d5dec
MS
1038set_async_annotation_level (char *args, int from_tty,
1039 struct cmd_list_element *c)
b5a0ac70
SS
1040{
1041 change_annotation_level ();
1042}
1043
1044/* Called by do_setshow_command. */
b5a0ac70 1045void
c2c6d25f 1046set_async_prompt (char *args, int from_tty, struct cmd_list_element *c)
b5a0ac70 1047{
95298e72 1048 set_prompt (new_async_prompt, 0);
b5a0ac70
SS
1049}
1050
0f71a2f6
JM
1051/* Set things up for readline to be invoked via the alternate
1052 interface, i.e. via a callback function (rl_callback_read_char),
371d5dec 1053 and hook up instream to the event loop. */
0f71a2f6 1054void
cee6ddeb 1055gdb_setup_readline (void)
0f71a2f6 1056{
362646f5
AC
1057 /* This function is a noop for the sync case. The assumption is
1058 that the sync setup is ALL done in gdb_init, and we would only
1059 mess it up here. The sync stuff should really go away over
1060 time. */
1a088d06
AS
1061 if (!batch_silent)
1062 gdb_stdout = stdio_fileopen (stdout);
362646f5
AC
1063 gdb_stderr = stdio_fileopen (stderr);
1064 gdb_stdlog = gdb_stderr; /* for moment */
1065 gdb_stdtarg = gdb_stderr; /* for moment */
8d4d924b 1066 gdb_stdtargerr = gdb_stderr; /* for moment */
362646f5
AC
1067
1068 /* If the input stream is connected to a terminal, turn on
1069 editing. */
1070 if (ISATTY (instream))
9e0b60a8 1071 {
371d5dec 1072 /* Tell gdb that we will be using the readline library. This
362646f5
AC
1073 could be overwritten by a command in .gdbinit like 'set
1074 editing on' or 'off'. */
1075 async_command_editing_p = 1;
c5201926 1076
362646f5
AC
1077 /* When a character is detected on instream by select or poll,
1078 readline will be invoked via this callback function. */
1079 call_readline = rl_callback_read_char_wrapper;
9e0b60a8 1080 }
362646f5
AC
1081 else
1082 {
1083 async_command_editing_p = 0;
1084 call_readline = gdb_readline2;
1085 }
1086
1087 /* When readline has read an end-of-line character, it passes the
371d5dec 1088 complete line to gdb for processing; command_line_handler is the
362646f5
AC
1089 function that does this. */
1090 input_handler = command_line_handler;
1091
371d5dec 1092 /* Tell readline to use the same input stream that gdb uses. */
362646f5
AC
1093 rl_instream = instream;
1094
1095 /* Get a file descriptor for the input stream, so that we can
1096 register it with the event loop. */
1097 input_fd = fileno (instream);
1098
1099 /* Now we need to create the event sources for the input file
1100 descriptor. */
1101 /* At this point in time, this is the only event source that we
371d5dec 1102 register with the even loop. Another source is going to be the
362646f5
AC
1103 target program (inferior), but that must be registered only when
1104 it actually exists (I.e. after we say 'run' or after we connect
1105 to a remote target. */
1106 add_file_handler (input_fd, stdin_event_handler, 0);
0f71a2f6 1107}
cee6ddeb 1108
7d5b6fdd
EZ
1109/* Disable command input through the standard CLI channels. Used in
1110 the suspend proc for interpreters that use the standard gdb readline
1111 interface, like the cli & the mi. */
1112void
1113gdb_disable_readline (void)
1114{
362646f5
AC
1115 /* FIXME - It is too heavyweight to delete and remake these every
1116 time you run an interpreter that needs readline. It is probably
1117 better to have the interpreters cache these, which in turn means
1118 that this needs to be moved into interpreter specific code. */
7d5b6fdd
EZ
1119
1120#if 0
362646f5
AC
1121 ui_file_delete (gdb_stdout);
1122 ui_file_delete (gdb_stderr);
1123 gdb_stdlog = NULL;
1124 gdb_stdtarg = NULL;
8d4d924b 1125 gdb_stdtargerr = NULL;
7d5b6fdd
EZ
1126#endif
1127
362646f5
AC
1128 rl_callback_handler_remove ();
1129 delete_file_handler (input_fd);
7d5b6fdd 1130}
This page took 0.850683 seconds and 4 git commands to generate.