1a5c3f9aef71b6bb919eccf0eeeed349d45dbbed
[deliverable/binutils-gdb.git] / gdb / top.c
1 /* Top level stuff for GDB, the GNU debugger.
2
3 Copyright (C) 1986-2016 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20 #include "defs.h"
21 #include "gdbcmd.h"
22 #include "cli/cli-cmds.h"
23 #include "cli/cli-script.h"
24 #include "cli/cli-setshow.h"
25 #include "cli/cli-decode.h"
26 #include "symtab.h"
27 #include "inferior.h"
28 #include "infrun.h"
29 #include <signal.h>
30 #include "target.h"
31 #include "target-dcache.h"
32 #include "breakpoint.h"
33 #include "gdbtypes.h"
34 #include "expression.h"
35 #include "value.h"
36 #include "language.h"
37 #include "terminal.h" /* For job_control. */
38 #include "annotate.h"
39 #include "completer.h"
40 #include "top.h"
41 #include "version.h"
42 #include "serial.h"
43 #include "doublest.h"
44 #include "main.h"
45 #include "event-loop.h"
46 #include "gdbthread.h"
47 #include "extension.h"
48 #include "interps.h"
49 #include "observer.h"
50 #include "maint.h"
51 #include "filenames.h"
52 #include "frame.h"
53 #include "buffer.h"
54
55 /* readline include files. */
56 #include "readline/readline.h"
57 #include "readline/history.h"
58
59 /* readline defines this. */
60 #undef savestring
61
62 #include <sys/types.h>
63
64 #include "event-top.h"
65 #include <sys/stat.h>
66 #include <ctype.h>
67 #include "ui-out.h"
68 #include "cli-out.h"
69 #include "tracepoint.h"
70 #include "inf-loop.h"
71
72 #if defined(TUI)
73 # include "tui/tui.h"
74 #endif
75
76 extern void initialize_all_files (void);
77
78 #define PROMPT(X) the_prompts.prompt_stack[the_prompts.top + X].prompt
79 #define PREFIX(X) the_prompts.prompt_stack[the_prompts.top + X].prefix
80 #define SUFFIX(X) the_prompts.prompt_stack[the_prompts.top + X].suffix
81
82 /* Default command line prompt. This is overriden in some configs. */
83
84 #ifndef DEFAULT_PROMPT
85 #define DEFAULT_PROMPT "(gdb) "
86 #endif
87
88 /* Initialization file name for gdb. This is host-dependent. */
89
90 const char gdbinit[] = GDBINIT;
91
92 int inhibit_gdbinit = 0;
93
94 extern char lang_frame_mismatch_warn[]; /* language.c */
95
96 /* Flag for whether we want to confirm potentially dangerous
97 operations. Default is yes. */
98
99 int confirm = 1;
100
101 static void
102 show_confirm (struct ui_file *file, int from_tty,
103 struct cmd_list_element *c, const char *value)
104 {
105 fprintf_filtered (file, _("Whether to confirm potentially "
106 "dangerous operations is %s.\n"),
107 value);
108 }
109
110 /* stdio stream that command input is being read from. Set to stdin
111 normally. Set by source_command to the file we are sourcing. Set
112 to NULL if we are executing a user-defined command or interacting
113 via a GUI. */
114
115 FILE *instream;
116
117 /* Flag to indicate whether a user defined command is currently running. */
118
119 int in_user_command;
120
121 /* Current working directory. */
122
123 char *current_directory;
124
125 /* The directory name is actually stored here (usually). */
126 char gdb_dirbuf[1024];
127
128 /* The last command line executed on the console. Used for command
129 repetitions. */
130 char *saved_command_line;
131
132 /* Nonzero if the current command is modified by "server ". This
133 affects things like recording into the command history, commands
134 repeating on RETURN, etc. This is so a user interface (emacs, GUI,
135 whatever) can issue its own commands and also send along commands
136 from the user, and have the user not notice that the user interface
137 is issuing commands too. */
138 int server_command;
139
140 /* Timeout limit for response from target. */
141
142 /* The default value has been changed many times over the years. It
143 was originally 5 seconds. But that was thought to be a long time
144 to sit and wait, so it was changed to 2 seconds. That was thought
145 to be plenty unless the connection was going through some terminal
146 server or multiplexer or other form of hairy serial connection.
147
148 In mid-1996, remote_timeout was moved from remote.c to top.c and
149 it began being used in other remote-* targets. It appears that the
150 default was changed to 20 seconds at that time, perhaps because the
151 Renesas E7000 ICE didn't always respond in a timely manner.
152
153 But if 5 seconds is a long time to sit and wait for retransmissions,
154 20 seconds is far worse. This demonstrates the difficulty of using
155 a single variable for all protocol timeouts.
156
157 As remote.c is used much more than remote-e7000.c, it was changed
158 back to 2 seconds in 1999. */
159
160 int remote_timeout = 2;
161
162 /* Non-zero tells remote* modules to output debugging info. */
163
164 int remote_debug = 0;
165
166 /* Sbrk location on entry to main. Used for statistics only. */
167 #ifdef HAVE_SBRK
168 char *lim_at_start;
169 #endif
170
171 /* Hooks for alternate command interfaces. */
172
173 /* This hook is called from within gdb's many mini-event loops which
174 could steal control from a real user interface's event loop. It
175 returns non-zero if the user is requesting a detach, zero
176 otherwise. */
177
178 int (*deprecated_ui_loop_hook) (int);
179
180
181 /* Called from print_frame_info to list the line we stopped in. */
182
183 void (*deprecated_print_frame_info_listing_hook) (struct symtab * s,
184 int line,
185 int stopline,
186 int noerror);
187 /* Replaces most of query. */
188
189 int (*deprecated_query_hook) (const char *, va_list);
190
191 /* Replaces most of warning. */
192
193 void (*deprecated_warning_hook) (const char *, va_list);
194
195 /* These three functions support getting lines of text from the user.
196 They are used in sequence. First deprecated_readline_begin_hook is
197 called with a text string that might be (for example) a message for
198 the user to type in a sequence of commands to be executed at a
199 breakpoint. If this function calls back to a GUI, it might take
200 this opportunity to pop up a text interaction window with this
201 message. Next, deprecated_readline_hook is called with a prompt
202 that is emitted prior to collecting the user input. It can be
203 called multiple times. Finally, deprecated_readline_end_hook is
204 called to notify the GUI that we are done with the interaction
205 window and it can close it. */
206
207 void (*deprecated_readline_begin_hook) (char *, ...);
208 char *(*deprecated_readline_hook) (const char *);
209 void (*deprecated_readline_end_hook) (void);
210
211 /* Called as appropriate to notify the interface that we have attached
212 to or detached from an already running process. */
213
214 void (*deprecated_attach_hook) (void);
215 void (*deprecated_detach_hook) (void);
216
217 /* Called during long calculations to allow GUI to repair window
218 damage, and to check for stop buttons, etc... */
219
220 void (*deprecated_interactive_hook) (void);
221
222 /* Called when going to wait for the target. Usually allows the GUI
223 to run while waiting for target events. */
224
225 ptid_t (*deprecated_target_wait_hook) (ptid_t ptid,
226 struct target_waitstatus *status,
227 int options);
228
229 /* Used by UI as a wrapper around command execution. May do various
230 things like enabling/disabling buttons, etc... */
231
232 void (*deprecated_call_command_hook) (struct cmd_list_element * c,
233 char *cmd, int from_tty);
234
235 /* Called when the current thread changes. Argument is thread id. */
236
237 void (*deprecated_context_hook) (int id);
238
239 /* Handler for SIGHUP. */
240
241 #ifdef SIGHUP
242 /* NOTE 1999-04-29: This function will be static again, once we modify
243 gdb to use the event loop as the default command loop and we merge
244 event-top.c into this file, top.c. */
245 /* static */ void
246 quit_cover (void)
247 {
248 /* Stop asking user for confirmation --- we're exiting. This
249 prevents asking the user dumb questions. */
250 confirm = 0;
251 quit_command ((char *) 0, 0);
252 }
253 #endif /* defined SIGHUP */
254 \f
255 /* Line number we are currently in, in a file which is being sourced. */
256 /* NOTE 1999-04-29: This variable will be static again, once we modify
257 gdb to use the event loop as the default command loop and we merge
258 event-top.c into this file, top.c. */
259 /* static */ int source_line_number;
260
261 /* Name of the file we are sourcing. */
262 /* NOTE 1999-04-29: This variable will be static again, once we modify
263 gdb to use the event loop as the default command loop and we merge
264 event-top.c into this file, top.c. */
265 /* static */ const char *source_file_name;
266
267 /* Clean up on error during a "source" command (or execution of a
268 user-defined command). */
269
270 void
271 do_restore_instream_cleanup (void *stream)
272 {
273 /* Restore the previous input stream. */
274 instream = (FILE *) stream;
275 }
276
277 /* Read commands from STREAM. */
278 void
279 read_command_file (FILE *stream)
280 {
281 struct cleanup *cleanups;
282
283 cleanups = make_cleanup (do_restore_instream_cleanup, instream);
284 instream = stream;
285 command_loop ();
286 do_cleanups (cleanups);
287 }
288 \f
289 void (*pre_init_ui_hook) (void);
290
291 #ifdef __MSDOS__
292 static void
293 do_chdir_cleanup (void *old_dir)
294 {
295 chdir (old_dir);
296 xfree (old_dir);
297 }
298 #endif
299
300 struct cleanup *
301 prepare_execute_command (void)
302 {
303 struct value *mark;
304 struct cleanup *cleanup;
305
306 mark = value_mark ();
307 cleanup = make_cleanup_value_free_to_mark (mark);
308
309 /* With multiple threads running while the one we're examining is
310 stopped, the dcache can get stale without us being able to detect
311 it. For the duration of the command, though, use the dcache to
312 help things like backtrace. */
313 if (non_stop)
314 target_dcache_invalidate ();
315
316 return cleanup;
317 }
318
319 /* Tell the user if the language has changed (except first time) after
320 executing a command. */
321
322 void
323 check_frame_language_change (void)
324 {
325 static int warned = 0;
326 struct frame_info *frame;
327
328 /* First make sure that a new frame has been selected, in case the
329 command or the hooks changed the program state. */
330 frame = deprecated_safe_get_selected_frame ();
331 if (current_language != expected_language)
332 {
333 if (language_mode == language_mode_auto && info_verbose)
334 {
335 language_info (1); /* Print what changed. */
336 }
337 warned = 0;
338 }
339
340 /* Warn the user if the working language does not match the language
341 of the current frame. Only warn the user if we are actually
342 running the program, i.e. there is a stack. */
343 /* FIXME: This should be cacheing the frame and only running when
344 the frame changes. */
345
346 if (has_stack_frames ())
347 {
348 enum language flang;
349
350 flang = get_frame_language (frame);
351 if (!warned
352 && flang != language_unknown
353 && flang != current_language->la_language)
354 {
355 printf_filtered ("%s\n", lang_frame_mismatch_warn);
356 warned = 1;
357 }
358 }
359 }
360
361 /* See top.h. */
362
363 void
364 wait_sync_command_done (void)
365 {
366 while (gdb_do_one_event () >= 0)
367 if (!sync_execution)
368 break;
369 }
370
371 /* See top.h. */
372
373 void
374 maybe_wait_sync_command_done (int was_sync)
375 {
376 /* If the interpreter is in sync mode (we're running a user
377 command's list, running command hooks or similars), and we
378 just ran a synchronous command that started the target, wait
379 for that command to end. */
380 if (!interpreter_async && !was_sync && sync_execution)
381 wait_sync_command_done ();
382 }
383
384 /* Execute the line P as a command, in the current user context.
385 Pass FROM_TTY as second argument to the defining function. */
386
387 void
388 execute_command (char *p, int from_tty)
389 {
390 struct cleanup *cleanup_if_error, *cleanup;
391 struct cmd_list_element *c;
392 char *line;
393
394 cleanup_if_error = make_bpstat_clear_actions_cleanup ();
395 cleanup = prepare_execute_command ();
396
397 /* Force cleanup of any alloca areas if using C alloca instead of
398 a builtin alloca. */
399 alloca (0);
400
401 /* This can happen when command_line_input hits end of file. */
402 if (p == NULL)
403 {
404 do_cleanups (cleanup);
405 discard_cleanups (cleanup_if_error);
406 return;
407 }
408
409 target_log_command (p);
410
411 while (*p == ' ' || *p == '\t')
412 p++;
413 if (*p)
414 {
415 const char *cmd = p;
416 char *arg;
417 int was_sync = sync_execution;
418
419 line = p;
420
421 /* If trace-commands is set then this will print this command. */
422 print_command_trace (p);
423
424 c = lookup_cmd (&cmd, cmdlist, "", 0, 1);
425 p = (char *) cmd;
426
427 /* Pass null arg rather than an empty one. */
428 arg = *p ? p : 0;
429
430 /* FIXME: cagney/2002-02-02: The c->type test is pretty dodgy
431 while the is_complete_command(cfunc) test is just plain
432 bogus. They should both be replaced by a test of the form
433 c->strip_trailing_white_space_p. */
434 /* NOTE: cagney/2002-02-02: The function.cfunc in the below
435 can't be replaced with func. This is because it is the
436 cfunc, and not the func, that has the value that the
437 is_complete_command hack is testing for. */
438 /* Clear off trailing whitespace, except for set and complete
439 command. */
440 if (arg
441 && c->type != set_cmd
442 && !is_complete_command (c))
443 {
444 p = arg + strlen (arg) - 1;
445 while (p >= arg && (*p == ' ' || *p == '\t'))
446 p--;
447 *(p + 1) = '\0';
448 }
449
450 /* If this command has been pre-hooked, run the hook first. */
451 execute_cmd_pre_hook (c);
452
453 if (c->deprecated_warn_user)
454 deprecated_cmd_warning (line);
455
456 /* c->user_commands would be NULL in the case of a python command. */
457 if (c->theclass == class_user && c->user_commands)
458 execute_user_command (c, arg);
459 else if (c->type == set_cmd)
460 do_set_command (arg, from_tty, c);
461 else if (c->type == show_cmd)
462 do_show_command (arg, from_tty, c);
463 else if (!cmd_func_p (c))
464 error (_("That is not a command, just a help topic."));
465 else if (deprecated_call_command_hook)
466 deprecated_call_command_hook (c, arg, from_tty);
467 else
468 cmd_func (c, arg, from_tty);
469
470 maybe_wait_sync_command_done (was_sync);
471
472 /* If this command has been post-hooked, run the hook last. */
473 execute_cmd_post_hook (c);
474
475 }
476
477 check_frame_language_change ();
478
479 do_cleanups (cleanup);
480 discard_cleanups (cleanup_if_error);
481 }
482
483 /* Run execute_command for P and FROM_TTY. Capture its output into the
484 returned string, do not display it to the screen. BATCH_FLAG will be
485 temporarily set to true. */
486
487 char *
488 execute_command_to_string (char *p, int from_tty)
489 {
490 struct ui_file *str_file;
491 struct cleanup *cleanup;
492 char *retval;
493
494 /* GDB_STDOUT should be better already restored during these
495 restoration callbacks. */
496 cleanup = set_batch_flag_and_make_cleanup_restore_page_info ();
497
498 make_cleanup_restore_integer (&interpreter_async);
499 interpreter_async = 0;
500
501 str_file = mem_fileopen ();
502
503 make_cleanup_ui_file_delete (str_file);
504 make_cleanup_restore_ui_file (&gdb_stdout);
505 make_cleanup_restore_ui_file (&gdb_stderr);
506 make_cleanup_restore_ui_file (&gdb_stdlog);
507 make_cleanup_restore_ui_file (&gdb_stdtarg);
508 make_cleanup_restore_ui_file (&gdb_stdtargerr);
509
510 if (ui_out_redirect (current_uiout, str_file) < 0)
511 warning (_("Current output protocol does not support redirection"));
512 else
513 make_cleanup_ui_out_redirect_pop (current_uiout);
514
515 gdb_stdout = str_file;
516 gdb_stderr = str_file;
517 gdb_stdlog = str_file;
518 gdb_stdtarg = str_file;
519 gdb_stdtargerr = str_file;
520
521 execute_command (p, from_tty);
522
523 retval = ui_file_xstrdup (str_file, NULL);
524
525 do_cleanups (cleanup);
526
527 return retval;
528 }
529
530 /* Read commands from `instream' and execute them
531 until end of file or error reading instream. */
532
533 void
534 command_loop (void)
535 {
536 struct cleanup *old_chain;
537 char *command;
538
539 while (instream && !feof (instream))
540 {
541 clear_quit_flag ();
542 if (instream == stdin)
543 reinitialize_more_filter ();
544 old_chain = make_cleanup (null_cleanup, 0);
545
546 /* Get a command-line. This calls the readline package. */
547 command = command_line_input (instream == stdin ?
548 get_prompt () : (char *) NULL,
549 instream == stdin, "prompt");
550 if (command == 0)
551 {
552 do_cleanups (old_chain);
553 return;
554 }
555
556 make_command_stats_cleanup (1);
557
558 /* Do not execute commented lines. */
559 if (command[0] != '#')
560 {
561 execute_command (command, instream == stdin);
562
563 /* Do any commands attached to breakpoint we are stopped at. */
564 bpstat_do_actions ();
565 }
566 do_cleanups (old_chain);
567 }
568 }
569 \f
570 /* When nonzero, cause dont_repeat to do nothing. This should only be
571 set via prevent_dont_repeat. */
572
573 static int suppress_dont_repeat = 0;
574
575 /* Commands call this if they do not want to be repeated by null lines. */
576
577 void
578 dont_repeat (void)
579 {
580 if (suppress_dont_repeat || server_command)
581 return;
582
583 /* If we aren't reading from standard input, we are saving the last
584 thing read from stdin in line and don't want to delete it. Null
585 lines won't repeat here in any case. */
586 if (instream == stdin)
587 *saved_command_line = 0;
588 }
589
590 /* Prevent dont_repeat from working, and return a cleanup that
591 restores the previous state. */
592
593 struct cleanup *
594 prevent_dont_repeat (void)
595 {
596 struct cleanup *result = make_cleanup_restore_integer (&suppress_dont_repeat);
597
598 suppress_dont_repeat = 1;
599 return result;
600 }
601
602 \f
603 /* Read a line from the stream "instream" without command line editing.
604
605 It prints PROMPT once at the start.
606 Action is compatible with "readline", e.g. space for the result is
607 malloc'd and should be freed by the caller.
608
609 A NULL return means end of file. */
610
611 static char *
612 gdb_readline_no_editing (const char *prompt)
613 {
614 struct buffer line_buffer;
615
616 buffer_init (&line_buffer);
617
618 if (prompt != NULL)
619 {
620 /* Don't use a _filtered function here. It causes the assumed
621 character position to be off, since the newline we read from
622 the user is not accounted for. */
623 fputs_unfiltered (prompt, gdb_stdout);
624 gdb_flush (gdb_stdout);
625 }
626
627 while (1)
628 {
629 int c;
630
631 /* Read from stdin if we are executing a user defined command.
632 This is the right thing for prompt_for_continue, at least. */
633 c = fgetc (instream ? instream : stdin);
634
635 if (c == EOF)
636 {
637 if (line_buffer.used_size > 0)
638 /* The last line does not end with a newline. Return it, and
639 if we are called again fgetc will still return EOF and
640 we'll return NULL then. */
641 break;
642 xfree (buffer_finish (&line_buffer));
643 return NULL;
644 }
645
646 if (c == '\n')
647 {
648 if (line_buffer.used_size > 0
649 && line_buffer.buffer[line_buffer.used_size - 1] == '\r')
650 line_buffer.used_size--;
651 break;
652 }
653
654 buffer_grow_char (&line_buffer, c);
655 }
656
657 buffer_grow_char (&line_buffer, '\0');
658 return buffer_finish (&line_buffer);
659 }
660
661 /* Variables which control command line editing and history
662 substitution. These variables are given default values at the end
663 of this file. */
664 static int command_editing_p;
665
666 /* NOTE 1999-04-29: This variable will be static again, once we modify
667 gdb to use the event loop as the default command loop and we merge
668 event-top.c into this file, top.c. */
669
670 /* static */ int history_expansion_p;
671
672 static int write_history_p;
673 static void
674 show_write_history_p (struct ui_file *file, int from_tty,
675 struct cmd_list_element *c, const char *value)
676 {
677 fprintf_filtered (file, _("Saving of the history record on exit is %s.\n"),
678 value);
679 }
680
681 /* The variable associated with the "set/show history size"
682 command. The value -1 means unlimited, and -2 means undefined. */
683 static int history_size_setshow_var = -2;
684
685 static void
686 show_history_size (struct ui_file *file, int from_tty,
687 struct cmd_list_element *c, const char *value)
688 {
689 fprintf_filtered (file, _("The size of the command history is %s.\n"),
690 value);
691 }
692
693 /* Variable associated with the "history remove-duplicates" option.
694 The value -1 means unlimited. */
695 static int history_remove_duplicates = 0;
696
697 static void
698 show_history_remove_duplicates (struct ui_file *file, int from_tty,
699 struct cmd_list_element *c, const char *value)
700 {
701 fprintf_filtered (file,
702 _("The number of history entries to look back at for "
703 "duplicates is %s.\n"),
704 value);
705 }
706
707 static char *history_filename;
708 static void
709 show_history_filename (struct ui_file *file, int from_tty,
710 struct cmd_list_element *c, const char *value)
711 {
712 fprintf_filtered (file, _("The filename in which to record "
713 "the command history is \"%s\".\n"),
714 value);
715 }
716
717 /* This is like readline(), but it has some gdb-specific behavior.
718 gdb may want readline in both the synchronous and async modes during
719 a single gdb invocation. At the ordinary top-level prompt we might
720 be using the async readline. That means we can't use
721 rl_pre_input_hook, since it doesn't work properly in async mode.
722 However, for a secondary prompt (" >", such as occurs during a
723 `define'), gdb wants a synchronous response.
724
725 We used to call readline() directly, running it in synchronous
726 mode. But mixing modes this way is not supported, and as of
727 readline 5.x it no longer works; the arrow keys come unbound during
728 the synchronous call. So we make a nested call into the event
729 loop. That's what gdb_readline_wrapper is for. */
730
731 /* A flag set as soon as gdb_readline_wrapper_line is called; we can't
732 rely on gdb_readline_wrapper_result, which might still be NULL if
733 the user types Control-D for EOF. */
734 static int gdb_readline_wrapper_done;
735
736 /* The result of the current call to gdb_readline_wrapper, once a newline
737 is seen. */
738 static char *gdb_readline_wrapper_result;
739
740 /* Any intercepted hook. Operate-and-get-next sets this, expecting it
741 to be called after the newline is processed (which will redisplay
742 the prompt). But in gdb_readline_wrapper we will not get a new
743 prompt until the next call, or until we return to the event loop.
744 So we disable this hook around the newline and restore it before we
745 return. */
746 static void (*saved_after_char_processing_hook) (void);
747
748
749 /* The number of nested readline secondary prompts that are currently
750 active. */
751
752 static int gdb_secondary_prompt_depth = 0;
753
754 /* See top.h. */
755
756 int
757 gdb_in_secondary_prompt_p (void)
758 {
759 return gdb_secondary_prompt_depth > 0;
760 }
761
762
763 /* This function is called when readline has seen a complete line of
764 text. */
765
766 static void
767 gdb_readline_wrapper_line (char *line)
768 {
769 gdb_assert (!gdb_readline_wrapper_done);
770 gdb_readline_wrapper_result = line;
771 gdb_readline_wrapper_done = 1;
772
773 /* Prevent operate-and-get-next from acting too early. */
774 saved_after_char_processing_hook = after_char_processing_hook;
775 after_char_processing_hook = NULL;
776
777 /* Prevent parts of the prompt from being redisplayed if annotations
778 are enabled, and readline's state getting out of sync. We'll
779 reinstall the callback handler, which puts the terminal in raw
780 mode (or in readline lingo, in prepped state), when we're next
781 ready to process user input, either in display_gdb_prompt, or if
782 we're handling an asynchronous target event and running in the
783 background, just before returning to the event loop to process
784 further input (or more target events). */
785 if (async_command_editing_p)
786 gdb_rl_callback_handler_remove ();
787 }
788
789 struct gdb_readline_wrapper_cleanup
790 {
791 void (*handler_orig) (char *);
792 int already_prompted_orig;
793
794 /* Whether the target was async. */
795 int target_is_async_orig;
796 };
797
798 static void
799 gdb_readline_wrapper_cleanup (void *arg)
800 {
801 struct gdb_readline_wrapper_cleanup *cleanup
802 = (struct gdb_readline_wrapper_cleanup *) arg;
803
804 rl_already_prompted = cleanup->already_prompted_orig;
805
806 gdb_assert (input_handler == gdb_readline_wrapper_line);
807 input_handler = cleanup->handler_orig;
808
809 /* Don't restore our input handler in readline yet. That would make
810 readline prep the terminal (putting it in raw mode), while the
811 line we just read may trigger execution of a command that expects
812 the terminal in the default cooked/canonical mode, such as e.g.,
813 running Python's interactive online help utility. See
814 gdb_readline_wrapper_line for when we'll reinstall it. */
815
816 gdb_readline_wrapper_result = NULL;
817 gdb_readline_wrapper_done = 0;
818 gdb_secondary_prompt_depth--;
819 gdb_assert (gdb_secondary_prompt_depth >= 0);
820
821 after_char_processing_hook = saved_after_char_processing_hook;
822 saved_after_char_processing_hook = NULL;
823
824 if (cleanup->target_is_async_orig)
825 target_async (1);
826
827 xfree (cleanup);
828 }
829
830 char *
831 gdb_readline_wrapper (const char *prompt)
832 {
833 struct cleanup *back_to;
834 struct gdb_readline_wrapper_cleanup *cleanup;
835 char *retval;
836
837 cleanup = XNEW (struct gdb_readline_wrapper_cleanup);
838 cleanup->handler_orig = input_handler;
839 input_handler = gdb_readline_wrapper_line;
840
841 cleanup->already_prompted_orig = rl_already_prompted;
842
843 cleanup->target_is_async_orig = target_is_async_p ();
844
845 gdb_secondary_prompt_depth++;
846 back_to = make_cleanup (gdb_readline_wrapper_cleanup, cleanup);
847
848 if (cleanup->target_is_async_orig)
849 target_async (0);
850
851 /* Display our prompt and prevent double prompt display. */
852 display_gdb_prompt (prompt);
853 rl_already_prompted = 1;
854
855 if (after_char_processing_hook)
856 (*after_char_processing_hook) ();
857 gdb_assert (after_char_processing_hook == NULL);
858
859 while (gdb_do_one_event () >= 0)
860 if (gdb_readline_wrapper_done)
861 break;
862
863 retval = gdb_readline_wrapper_result;
864 do_cleanups (back_to);
865 return retval;
866 }
867
868 \f
869 /* The current saved history number from operate-and-get-next.
870 This is -1 if not valid. */
871 static int operate_saved_history = -1;
872
873 /* This is put on the appropriate hook and helps operate-and-get-next
874 do its work. */
875 static void
876 gdb_rl_operate_and_get_next_completion (void)
877 {
878 int delta = where_history () - operate_saved_history;
879
880 /* The `key' argument to rl_get_previous_history is ignored. */
881 rl_get_previous_history (delta, 0);
882 operate_saved_history = -1;
883
884 /* readline doesn't automatically update the display for us. */
885 rl_redisplay ();
886
887 after_char_processing_hook = NULL;
888 rl_pre_input_hook = NULL;
889 }
890
891 /* This is a gdb-local readline command handler. It accepts the
892 current command line (like RET does) and, if this command was taken
893 from the history, arranges for the next command in the history to
894 appear on the command line when the prompt returns.
895 We ignore the arguments. */
896 static int
897 gdb_rl_operate_and_get_next (int count, int key)
898 {
899 int where;
900
901 /* Use the async hook. */
902 after_char_processing_hook = gdb_rl_operate_and_get_next_completion;
903
904 /* Find the current line, and find the next line to use. */
905 where = where_history();
906
907 if ((history_is_stifled () && (history_length >= history_max_entries))
908 || (where >= history_length - 1))
909 operate_saved_history = where;
910 else
911 operate_saved_history = where + 1;
912
913 return rl_newline (1, key);
914 }
915
916 /* Number of user commands executed during this session. */
917
918 static int command_count = 0;
919
920 /* Add the user command COMMAND to the input history list. */
921
922 void
923 gdb_add_history (const char *command)
924 {
925 command_count++;
926
927 if (history_remove_duplicates != 0)
928 {
929 int lookbehind;
930 int lookbehind_threshold;
931
932 /* The lookbehind threshold for finding a duplicate history entry is
933 bounded by command_count because we can't meaningfully delete
934 history entries that are already stored in the history file since
935 the history file is appended to. */
936 if (history_remove_duplicates == -1
937 || history_remove_duplicates > command_count)
938 lookbehind_threshold = command_count;
939 else
940 lookbehind_threshold = history_remove_duplicates;
941
942 using_history ();
943 for (lookbehind = 0; lookbehind < lookbehind_threshold; lookbehind++)
944 {
945 HIST_ENTRY *temp = previous_history ();
946
947 if (temp == NULL)
948 break;
949
950 if (strcmp (temp->line, command) == 0)
951 {
952 HIST_ENTRY *prev = remove_history (where_history ());
953 command_count--;
954 free_history_entry (prev);
955 break;
956 }
957 }
958 using_history ();
959 }
960
961 add_history (command);
962 }
963
964 /* Safely append new history entries to the history file in a corruption-free
965 way using an intermediate local history file. */
966
967 static void
968 gdb_safe_append_history (void)
969 {
970 int ret, saved_errno;
971 char *local_history_filename;
972 struct cleanup *old_chain;
973
974 local_history_filename
975 = xstrprintf ("%s-gdb%d~", history_filename, getpid ());
976 old_chain = make_cleanup (xfree, local_history_filename);
977
978 ret = rename (history_filename, local_history_filename);
979 saved_errno = errno;
980 if (ret < 0 && saved_errno != ENOENT)
981 {
982 warning (_("Could not rename %s to %s: %s"),
983 history_filename, local_history_filename,
984 safe_strerror (saved_errno));
985 }
986 else
987 {
988 if (ret < 0)
989 {
990 /* If the rename failed with ENOENT then either the global history
991 file never existed in the first place or another GDB process is
992 currently appending to it (and has thus temporarily renamed it).
993 Since we can't distinguish between these two cases, we have to
994 conservatively assume the first case and therefore must write out
995 (not append) our known history to our local history file and try
996 to move it back anyway. Otherwise a global history file would
997 never get created! */
998 gdb_assert (saved_errno == ENOENT);
999 write_history (local_history_filename);
1000 }
1001 else
1002 {
1003 append_history (command_count, local_history_filename);
1004 if (history_is_stifled ())
1005 history_truncate_file (local_history_filename, history_max_entries);
1006 }
1007
1008 ret = rename (local_history_filename, history_filename);
1009 saved_errno = errno;
1010 if (ret < 0 && saved_errno != EEXIST)
1011 warning (_("Could not rename %s to %s: %s"),
1012 local_history_filename, history_filename,
1013 safe_strerror (saved_errno));
1014 }
1015
1016 do_cleanups (old_chain);
1017 }
1018
1019 /* Read one line from the command input stream `instream'
1020 into the local static buffer `linebuffer' (whose current length
1021 is `linelength').
1022 The buffer is made bigger as necessary.
1023 Returns the address of the start of the line.
1024
1025 NULL is returned for end of file.
1026
1027 *If* the instream == stdin & stdin is a terminal, the line read
1028 is copied into the file line saver (global var char *line,
1029 length linesize) so that it can be duplicated.
1030
1031 This routine either uses fancy command line editing or
1032 simple input as the user has requested. */
1033
1034 char *
1035 command_line_input (const char *prompt_arg, int repeat, char *annotation_suffix)
1036 {
1037 static char *linebuffer = 0;
1038 static unsigned linelength = 0;
1039 const char *prompt = prompt_arg;
1040 char *p;
1041 char *p1;
1042 char *rl;
1043 char *nline;
1044 char got_eof = 0;
1045
1046 /* The annotation suffix must be non-NULL. */
1047 if (annotation_suffix == NULL)
1048 annotation_suffix = "";
1049
1050 if (annotation_level > 1 && instream == stdin)
1051 {
1052 char *local_prompt;
1053
1054 local_prompt
1055 = (char *) alloca ((prompt == NULL ? 0 : strlen (prompt))
1056 + strlen (annotation_suffix) + 40);
1057 if (prompt == NULL)
1058 local_prompt[0] = '\0';
1059 else
1060 strcpy (local_prompt, prompt);
1061 strcat (local_prompt, "\n\032\032");
1062 strcat (local_prompt, annotation_suffix);
1063 strcat (local_prompt, "\n");
1064
1065 prompt = local_prompt;
1066 }
1067
1068 if (linebuffer == 0)
1069 {
1070 linelength = 80;
1071 linebuffer = (char *) xmalloc (linelength);
1072 }
1073
1074 p = linebuffer;
1075
1076 /* Control-C quits instantly if typed while in this loop
1077 since it should not wait until the user types a newline. */
1078 immediate_quit++;
1079 QUIT;
1080 #ifdef STOP_SIGNAL
1081 if (job_control)
1082 signal (STOP_SIGNAL, handle_stop_sig);
1083 #endif
1084
1085 while (1)
1086 {
1087 /* Make sure that all output has been output. Some machines may
1088 let you get away with leaving out some of the gdb_flush, but
1089 not all. */
1090 wrap_here ("");
1091 gdb_flush (gdb_stdout);
1092 gdb_flush (gdb_stderr);
1093
1094 if (source_file_name != NULL)
1095 ++source_line_number;
1096
1097 if (annotation_level > 1 && instream == stdin)
1098 {
1099 puts_unfiltered ("\n\032\032pre-");
1100 puts_unfiltered (annotation_suffix);
1101 puts_unfiltered ("\n");
1102 }
1103
1104 /* Don't use fancy stuff if not talking to stdin. */
1105 if (deprecated_readline_hook && input_from_terminal_p ())
1106 {
1107 rl = (*deprecated_readline_hook) (prompt);
1108 }
1109 else if (command_editing_p && input_from_terminal_p ())
1110 {
1111 rl = gdb_readline_wrapper (prompt);
1112 }
1113 else
1114 {
1115 rl = gdb_readline_no_editing (prompt);
1116 }
1117
1118 if (annotation_level > 1 && instream == stdin)
1119 {
1120 puts_unfiltered ("\n\032\032post-");
1121 puts_unfiltered (annotation_suffix);
1122 puts_unfiltered ("\n");
1123 }
1124
1125 if (!rl || rl == (char *) EOF)
1126 {
1127 got_eof = 1;
1128 break;
1129 }
1130 if (strlen (rl) + 1 + (p - linebuffer) > linelength)
1131 {
1132 linelength = strlen (rl) + 1 + (p - linebuffer);
1133 nline = (char *) xrealloc (linebuffer, linelength);
1134 p += nline - linebuffer;
1135 linebuffer = nline;
1136 }
1137 p1 = rl;
1138 /* Copy line. Don't copy null at end. (Leaves line alone
1139 if this was just a newline). */
1140 while (*p1)
1141 *p++ = *p1++;
1142
1143 xfree (rl); /* Allocated in readline. */
1144
1145 if (p == linebuffer || *(p - 1) != '\\')
1146 break;
1147
1148 p--; /* Put on top of '\'. */
1149 prompt = NULL;
1150 }
1151
1152 #ifdef STOP_SIGNAL
1153 if (job_control)
1154 signal (STOP_SIGNAL, SIG_DFL);
1155 #endif
1156 immediate_quit--;
1157
1158 if (got_eof)
1159 return NULL;
1160
1161 #define SERVER_COMMAND_LENGTH 7
1162 server_command =
1163 (p - linebuffer > SERVER_COMMAND_LENGTH)
1164 && strncmp (linebuffer, "server ", SERVER_COMMAND_LENGTH) == 0;
1165 if (server_command)
1166 {
1167 /* Note that we don't set `line'. Between this and the check in
1168 dont_repeat, this insures that repeating will still do the
1169 right thing. */
1170 *p = '\0';
1171 return linebuffer + SERVER_COMMAND_LENGTH;
1172 }
1173
1174 /* Do history expansion if that is wished. */
1175 if (history_expansion_p && instream == stdin
1176 && ISATTY (instream))
1177 {
1178 char *history_value;
1179 int expanded;
1180
1181 *p = '\0'; /* Insert null now. */
1182 expanded = history_expand (linebuffer, &history_value);
1183 if (expanded)
1184 {
1185 /* Print the changes. */
1186 printf_unfiltered ("%s\n", history_value);
1187
1188 /* If there was an error, call this function again. */
1189 if (expanded < 0)
1190 {
1191 xfree (history_value);
1192 return command_line_input (prompt, repeat,
1193 annotation_suffix);
1194 }
1195 if (strlen (history_value) > linelength)
1196 {
1197 linelength = strlen (history_value) + 1;
1198 linebuffer = (char *) xrealloc (linebuffer, linelength);
1199 }
1200 strcpy (linebuffer, history_value);
1201 p = linebuffer + strlen (linebuffer);
1202 }
1203 xfree (history_value);
1204 }
1205
1206 /* If we just got an empty line, and that is supposed to repeat the
1207 previous command, return the value in the global buffer. */
1208 if (repeat && p == linebuffer)
1209 return saved_command_line;
1210 for (p1 = linebuffer; *p1 == ' ' || *p1 == '\t'; p1++);
1211 if (repeat && !*p1)
1212 return saved_command_line;
1213
1214 *p = 0;
1215
1216 /* Add line to history if appropriate. */
1217 if (*linebuffer && input_from_terminal_p ())
1218 gdb_add_history (linebuffer);
1219
1220 /* Save into global buffer if appropriate. */
1221 if (repeat)
1222 {
1223 xfree (saved_command_line);
1224 saved_command_line = xstrdup (linebuffer);
1225 return saved_command_line;
1226 }
1227
1228 return linebuffer;
1229 }
1230 \f
1231 /* Print the GDB banner. */
1232 void
1233 print_gdb_version (struct ui_file *stream)
1234 {
1235 /* From GNU coding standards, first line is meant to be easy for a
1236 program to parse, and is just canonical program name and version
1237 number, which starts after last space. */
1238
1239 fprintf_filtered (stream, "GNU gdb %s%s\n", PKGVERSION, version);
1240
1241 /* Second line is a copyright notice. */
1242
1243 fprintf_filtered (stream,
1244 "Copyright (C) 2016 Free Software Foundation, Inc.\n");
1245
1246 /* Following the copyright is a brief statement that the program is
1247 free software, that users are free to copy and change it on
1248 certain conditions, that it is covered by the GNU GPL, and that
1249 there is no warranty. */
1250
1251 fprintf_filtered (stream, "\
1252 License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\
1253 \nThis is free software: you are free to change and redistribute it.\n\
1254 There is NO WARRANTY, to the extent permitted by law. Type \"show copying\"\n\
1255 and \"show warranty\" for details.\n");
1256
1257 /* After the required info we print the configuration information. */
1258
1259 fprintf_filtered (stream, "This GDB was configured as \"");
1260 if (strcmp (host_name, target_name) != 0)
1261 {
1262 fprintf_filtered (stream, "--host=%s --target=%s",
1263 host_name, target_name);
1264 }
1265 else
1266 {
1267 fprintf_filtered (stream, "%s", host_name);
1268 }
1269 fprintf_filtered (stream, "\".\n\
1270 Type \"show configuration\" for configuration details.");
1271
1272 if (REPORT_BUGS_TO[0])
1273 {
1274 fprintf_filtered (stream,
1275 _("\nFor bug reporting instructions, please see:\n"));
1276 fprintf_filtered (stream, "%s.\n", REPORT_BUGS_TO);
1277 }
1278 fprintf_filtered (stream,
1279 _("Find the GDB manual and other documentation \
1280 resources online at:\n<http://www.gnu.org/software/gdb/documentation/>.\n"));
1281 fprintf_filtered (stream, _("For help, type \"help\".\n"));
1282 fprintf_filtered (stream, _("Type \"apropos word\" to search for \
1283 commands related to \"word\"."));
1284 }
1285
1286 /* Print the details of GDB build-time configuration. */
1287 void
1288 print_gdb_configuration (struct ui_file *stream)
1289 {
1290 fprintf_filtered (stream, _("\
1291 This GDB was configured as follows:\n\
1292 configure --host=%s --target=%s\n\
1293 "), host_name, target_name);
1294 fprintf_filtered (stream, _("\
1295 --with-auto-load-dir=%s\n\
1296 --with-auto-load-safe-path=%s\n\
1297 "), AUTO_LOAD_DIR, AUTO_LOAD_SAFE_PATH);
1298 #if HAVE_LIBEXPAT
1299 fprintf_filtered (stream, _("\
1300 --with-expat\n\
1301 "));
1302 #else
1303 fprintf_filtered (stream, _("\
1304 --without-expat\n\
1305 "));
1306 #endif
1307 if (GDB_DATADIR[0])
1308 fprintf_filtered (stream, _("\
1309 --with-gdb-datadir=%s%s\n\
1310 "), GDB_DATADIR, GDB_DATADIR_RELOCATABLE ? " (relocatable)" : "");
1311 #ifdef ICONV_BIN
1312 fprintf_filtered (stream, _("\
1313 --with-iconv-bin=%s%s\n\
1314 "), ICONV_BIN, ICONV_BIN_RELOCATABLE ? " (relocatable)" : "");
1315 #endif
1316 if (JIT_READER_DIR[0])
1317 fprintf_filtered (stream, _("\
1318 --with-jit-reader-dir=%s%s\n\
1319 "), JIT_READER_DIR, JIT_READER_DIR_RELOCATABLE ? " (relocatable)" : "");
1320 #if HAVE_LIBUNWIND_IA64_H
1321 fprintf_filtered (stream, _("\
1322 --with-libunwind-ia64\n\
1323 "));
1324 #else
1325 fprintf_filtered (stream, _("\
1326 --without-libunwind-ia64\n\
1327 "));
1328 #endif
1329 #if HAVE_LIBLZMA
1330 fprintf_filtered (stream, _("\
1331 --with-lzma\n\
1332 "));
1333 #else
1334 fprintf_filtered (stream, _("\
1335 --without-lzma\n\
1336 "));
1337 #endif
1338 #ifdef WITH_PYTHON_PATH
1339 fprintf_filtered (stream, _("\
1340 --with-python=%s%s\n\
1341 "), WITH_PYTHON_PATH, PYTHON_PATH_RELOCATABLE ? " (relocatable)" : "");
1342 #endif
1343 #if HAVE_GUILE
1344 fprintf_filtered (stream, _("\
1345 --with-guile\n\
1346 "));
1347 #else
1348 fprintf_filtered (stream, _("\
1349 --without-guile\n\
1350 "));
1351 #endif
1352 #ifdef RELOC_SRCDIR
1353 fprintf_filtered (stream, _("\
1354 --with-relocated-sources=%s\n\
1355 "), RELOC_SRCDIR);
1356 #endif
1357 if (DEBUGDIR[0])
1358 fprintf_filtered (stream, _("\
1359 --with-separate-debug-dir=%s%s\n\
1360 "), DEBUGDIR, DEBUGDIR_RELOCATABLE ? " (relocatable)" : "");
1361 if (TARGET_SYSTEM_ROOT[0])
1362 fprintf_filtered (stream, _("\
1363 --with-sysroot=%s%s\n\
1364 "), TARGET_SYSTEM_ROOT, TARGET_SYSTEM_ROOT_RELOCATABLE ? " (relocatable)" : "");
1365 if (SYSTEM_GDBINIT[0])
1366 fprintf_filtered (stream, _("\
1367 --with-system-gdbinit=%s%s\n\
1368 "), SYSTEM_GDBINIT, SYSTEM_GDBINIT_RELOCATABLE ? " (relocatable)" : "");
1369 #if HAVE_LIBBABELTRACE
1370 fprintf_filtered (stream, _("\
1371 --with-babeltrace\n\
1372 "));
1373 #else
1374 fprintf_filtered (stream, _("\
1375 --without-babeltrace\n\
1376 "));
1377 #endif
1378 /* We assume "relocatable" will be printed at least once, thus we always
1379 print this text. It's a reasonably safe assumption for now. */
1380 fprintf_filtered (stream, _("\n\
1381 (\"Relocatable\" means the directory can be moved with the GDB installation\n\
1382 tree, and GDB will still find it.)\n\
1383 "));
1384 }
1385 \f
1386
1387 /* The current top level prompt, settable with "set prompt", and/or
1388 with the python `gdb.prompt_hook' hook. */
1389 static char *top_prompt;
1390
1391 /* Access method for the GDB prompt string. */
1392
1393 char *
1394 get_prompt (void)
1395 {
1396 return top_prompt;
1397 }
1398
1399 /* Set method for the GDB prompt string. */
1400
1401 void
1402 set_prompt (const char *s)
1403 {
1404 char *p = xstrdup (s);
1405
1406 xfree (top_prompt);
1407 top_prompt = p;
1408 }
1409 \f
1410
1411 struct qt_args
1412 {
1413 char *args;
1414 int from_tty;
1415 };
1416
1417 /* Callback for iterate_over_inferiors. Kills or detaches the given
1418 inferior, depending on how we originally gained control of it. */
1419
1420 static int
1421 kill_or_detach (struct inferior *inf, void *args)
1422 {
1423 struct qt_args *qt = (struct qt_args *) args;
1424 struct thread_info *thread;
1425
1426 if (inf->pid == 0)
1427 return 0;
1428
1429 thread = any_thread_of_process (inf->pid);
1430 if (thread != NULL)
1431 {
1432 switch_to_thread (thread->ptid);
1433
1434 /* Leave core files alone. */
1435 if (target_has_execution)
1436 {
1437 if (inf->attach_flag)
1438 target_detach (qt->args, qt->from_tty);
1439 else
1440 target_kill ();
1441 }
1442 }
1443
1444 return 0;
1445 }
1446
1447 /* Callback for iterate_over_inferiors. Prints info about what GDB
1448 will do to each inferior on a "quit". ARG points to a struct
1449 ui_out where output is to be collected. */
1450
1451 static int
1452 print_inferior_quit_action (struct inferior *inf, void *arg)
1453 {
1454 struct ui_file *stb = (struct ui_file *) arg;
1455
1456 if (inf->pid == 0)
1457 return 0;
1458
1459 if (inf->attach_flag)
1460 fprintf_filtered (stb,
1461 _("\tInferior %d [%s] will be detached.\n"), inf->num,
1462 target_pid_to_str (pid_to_ptid (inf->pid)));
1463 else
1464 fprintf_filtered (stb,
1465 _("\tInferior %d [%s] will be killed.\n"), inf->num,
1466 target_pid_to_str (pid_to_ptid (inf->pid)));
1467
1468 return 0;
1469 }
1470
1471 /* If necessary, make the user confirm that we should quit. Return
1472 non-zero if we should quit, zero if we shouldn't. */
1473
1474 int
1475 quit_confirm (void)
1476 {
1477 struct ui_file *stb;
1478 struct cleanup *old_chain;
1479 char *str;
1480 int qr;
1481
1482 /* Don't even ask if we're only debugging a core file inferior. */
1483 if (!have_live_inferiors ())
1484 return 1;
1485
1486 /* Build the query string as a single string. */
1487 stb = mem_fileopen ();
1488 old_chain = make_cleanup_ui_file_delete (stb);
1489
1490 fprintf_filtered (stb, _("A debugging session is active.\n\n"));
1491 iterate_over_inferiors (print_inferior_quit_action, stb);
1492 fprintf_filtered (stb, _("\nQuit anyway? "));
1493
1494 str = ui_file_xstrdup (stb, NULL);
1495 make_cleanup (xfree, str);
1496
1497 qr = query ("%s", str);
1498 do_cleanups (old_chain);
1499 return qr;
1500 }
1501
1502 /* Prepare to exit GDB cleanly by undoing any changes made to the
1503 terminal so that we leave the terminal in the state we acquired it. */
1504
1505 static void
1506 undo_terminal_modifications_before_exit (void)
1507 {
1508 target_terminal_ours ();
1509 #if defined(TUI)
1510 tui_disable ();
1511 #endif
1512 if (async_command_editing_p)
1513 gdb_disable_readline ();
1514 }
1515
1516
1517 /* Quit without asking for confirmation. */
1518
1519 void
1520 quit_force (char *args, int from_tty)
1521 {
1522 int exit_code = 0;
1523 struct qt_args qt;
1524
1525 undo_terminal_modifications_before_exit ();
1526
1527 /* An optional expression may be used to cause gdb to terminate with the
1528 value of that expression. */
1529 if (args)
1530 {
1531 struct value *val = parse_and_eval (args);
1532
1533 exit_code = (int) value_as_long (val);
1534 }
1535 else if (return_child_result)
1536 exit_code = return_child_result_value;
1537
1538 qt.args = args;
1539 qt.from_tty = from_tty;
1540
1541 /* We want to handle any quit errors and exit regardless. */
1542
1543 /* Get out of tfind mode, and kill or detach all inferiors. */
1544 TRY
1545 {
1546 disconnect_tracing ();
1547 iterate_over_inferiors (kill_or_detach, &qt);
1548 }
1549 CATCH (ex, RETURN_MASK_ALL)
1550 {
1551 exception_print (gdb_stderr, ex);
1552 }
1553 END_CATCH
1554
1555 /* Give all pushed targets a chance to do minimal cleanup, and pop
1556 them all out. */
1557 TRY
1558 {
1559 pop_all_targets ();
1560 }
1561 CATCH (ex, RETURN_MASK_ALL)
1562 {
1563 exception_print (gdb_stderr, ex);
1564 }
1565 END_CATCH
1566
1567 /* Save the history information if it is appropriate to do so. */
1568 TRY
1569 {
1570 if (write_history_p && history_filename
1571 && input_from_terminal_p ())
1572 gdb_safe_append_history ();
1573 }
1574 CATCH (ex, RETURN_MASK_ALL)
1575 {
1576 exception_print (gdb_stderr, ex);
1577 }
1578 END_CATCH
1579
1580 /* Do any final cleanups before exiting. */
1581 TRY
1582 {
1583 do_final_cleanups (all_cleanups ());
1584 }
1585 CATCH (ex, RETURN_MASK_ALL)
1586 {
1587 exception_print (gdb_stderr, ex);
1588 }
1589 END_CATCH
1590
1591 exit (exit_code);
1592 }
1593
1594 /* Returns whether GDB is running on a terminal and input is
1595 currently coming from that terminal. */
1596
1597 int
1598 input_from_terminal_p (void)
1599 {
1600 if (batch_flag)
1601 return 0;
1602
1603 if (gdb_has_a_terminal () && instream == stdin)
1604 return 1;
1605
1606 /* If INSTREAM is unset, and we are not in a user command, we
1607 must be in Insight. That's like having a terminal, for our
1608 purposes. */
1609 if (instream == NULL && !in_user_command)
1610 return 1;
1611
1612 return 0;
1613 }
1614 \f
1615 static void
1616 dont_repeat_command (char *ignored, int from_tty)
1617 {
1618 /* Can't call dont_repeat here because we're not necessarily reading
1619 from stdin. */
1620 *saved_command_line = 0;
1621 }
1622 \f
1623 /* Functions to manipulate command line editing control variables. */
1624
1625 /* Number of commands to print in each call to show_commands. */
1626 #define Hist_print 10
1627 void
1628 show_commands (char *args, int from_tty)
1629 {
1630 /* Index for history commands. Relative to history_base. */
1631 int offset;
1632
1633 /* Number of the history entry which we are planning to display next.
1634 Relative to history_base. */
1635 static int num = 0;
1636
1637 /* Print out some of the commands from the command history. */
1638
1639 if (args)
1640 {
1641 if (args[0] == '+' && args[1] == '\0')
1642 /* "info editing +" should print from the stored position. */
1643 ;
1644 else
1645 /* "info editing <exp>" should print around command number <exp>. */
1646 num = (parse_and_eval_long (args) - history_base) - Hist_print / 2;
1647 }
1648 /* "show commands" means print the last Hist_print commands. */
1649 else
1650 {
1651 num = history_length - Hist_print;
1652 }
1653
1654 if (num < 0)
1655 num = 0;
1656
1657 /* If there are at least Hist_print commands, we want to display the last
1658 Hist_print rather than, say, the last 6. */
1659 if (history_length - num < Hist_print)
1660 {
1661 num = history_length - Hist_print;
1662 if (num < 0)
1663 num = 0;
1664 }
1665
1666 for (offset = num;
1667 offset < num + Hist_print && offset < history_length;
1668 offset++)
1669 {
1670 printf_filtered ("%5d %s\n", history_base + offset,
1671 (history_get (history_base + offset))->line);
1672 }
1673
1674 /* The next command we want to display is the next one that we haven't
1675 displayed yet. */
1676 num += Hist_print;
1677
1678 /* If the user repeats this command with return, it should do what
1679 "show commands +" does. This is unnecessary if arg is null,
1680 because "show commands +" is not useful after "show commands". */
1681 if (from_tty && args)
1682 {
1683 args[0] = '+';
1684 args[1] = '\0';
1685 }
1686 }
1687
1688 /* Update the size of our command history file to HISTORY_SIZE.
1689
1690 A HISTORY_SIZE of -1 stands for unlimited. */
1691
1692 static void
1693 set_readline_history_size (int history_size)
1694 {
1695 gdb_assert (history_size >= -1);
1696
1697 if (history_size == -1)
1698 unstifle_history ();
1699 else
1700 stifle_history (history_size);
1701 }
1702
1703 /* Called by do_setshow_command. */
1704 static void
1705 set_history_size_command (char *args, int from_tty, struct cmd_list_element *c)
1706 {
1707 set_readline_history_size (history_size_setshow_var);
1708 }
1709
1710 void
1711 set_history (char *args, int from_tty)
1712 {
1713 printf_unfiltered (_("\"set history\" must be followed "
1714 "by the name of a history subcommand.\n"));
1715 help_list (sethistlist, "set history ", all_commands, gdb_stdout);
1716 }
1717
1718 void
1719 show_history (char *args, int from_tty)
1720 {
1721 cmd_show_list (showhistlist, from_tty, "");
1722 }
1723
1724 int info_verbose = 0; /* Default verbose msgs off. */
1725
1726 /* Called by do_setshow_command. An elaborate joke. */
1727 void
1728 set_verbose (char *args, int from_tty, struct cmd_list_element *c)
1729 {
1730 const char *cmdname = "verbose";
1731 struct cmd_list_element *showcmd;
1732
1733 showcmd = lookup_cmd_1 (&cmdname, showlist, NULL, 1);
1734 gdb_assert (showcmd != NULL && showcmd != CMD_LIST_AMBIGUOUS);
1735
1736 if (info_verbose)
1737 {
1738 c->doc = "Set verbose printing of informational messages.";
1739 showcmd->doc = "Show verbose printing of informational messages.";
1740 }
1741 else
1742 {
1743 c->doc = "Set verbosity.";
1744 showcmd->doc = "Show verbosity.";
1745 }
1746 }
1747
1748 /* Init the history buffer. Note that we are called after the init file(s)
1749 have been read so that the user can change the history file via his
1750 .gdbinit file (for instance). The GDBHISTFILE environment variable
1751 overrides all of this. */
1752
1753 void
1754 init_history (void)
1755 {
1756 char *tmpenv;
1757
1758 tmpenv = getenv ("GDBHISTSIZE");
1759 if (tmpenv)
1760 {
1761 long var;
1762 int saved_errno;
1763 char *endptr;
1764
1765 tmpenv = skip_spaces (tmpenv);
1766 errno = 0;
1767 var = strtol (tmpenv, &endptr, 10);
1768 saved_errno = errno;
1769 endptr = skip_spaces (endptr);
1770
1771 /* If GDBHISTSIZE is non-numeric then ignore it. If GDBHISTSIZE is the
1772 empty string, a negative number or a huge positive number (larger than
1773 INT_MAX) then set the history size to unlimited. Otherwise set our
1774 history size to the number we have read. This behavior is consistent
1775 with how bash handles HISTSIZE. */
1776 if (*endptr != '\0')
1777 ;
1778 else if (*tmpenv == '\0'
1779 || var < 0
1780 || var > INT_MAX
1781 /* On targets where INT_MAX == LONG_MAX, we have to look at
1782 errno after calling strtol to distinguish between a value that
1783 is exactly INT_MAX and an overflowing value that was clamped
1784 to INT_MAX. */
1785 || (var == INT_MAX && saved_errno == ERANGE))
1786 history_size_setshow_var = -1;
1787 else
1788 history_size_setshow_var = var;
1789 }
1790
1791 /* If neither the init file nor GDBHISTSIZE has set a size yet, pick the
1792 default. */
1793 if (history_size_setshow_var == -2)
1794 history_size_setshow_var = 256;
1795
1796 set_readline_history_size (history_size_setshow_var);
1797
1798 tmpenv = getenv ("GDBHISTFILE");
1799 if (tmpenv)
1800 history_filename = xstrdup (tmpenv);
1801 else if (!history_filename)
1802 {
1803 /* We include the current directory so that if the user changes
1804 directories the file written will be the same as the one
1805 that was read. */
1806 #ifdef __MSDOS__
1807 /* No leading dots in file names are allowed on MSDOS. */
1808 history_filename = concat (current_directory, "/_gdb_history",
1809 (char *)NULL);
1810 #else
1811 history_filename = concat (current_directory, "/.gdb_history",
1812 (char *)NULL);
1813 #endif
1814 }
1815 read_history (history_filename);
1816 }
1817
1818 static void
1819 show_prompt (struct ui_file *file, int from_tty,
1820 struct cmd_list_element *c, const char *value)
1821 {
1822 fprintf_filtered (file, _("Gdb's prompt is \"%s\".\n"), value);
1823 }
1824
1825 static void
1826 show_async_command_editing_p (struct ui_file *file, int from_tty,
1827 struct cmd_list_element *c, const char *value)
1828 {
1829 fprintf_filtered (file, _("Editing of command lines as "
1830 "they are typed is %s.\n"),
1831 value);
1832 }
1833
1834 static void
1835 show_annotation_level (struct ui_file *file, int from_tty,
1836 struct cmd_list_element *c, const char *value)
1837 {
1838 fprintf_filtered (file, _("Annotation_level is %s.\n"), value);
1839 }
1840
1841 static void
1842 show_exec_done_display_p (struct ui_file *file, int from_tty,
1843 struct cmd_list_element *c, const char *value)
1844 {
1845 fprintf_filtered (file, _("Notification of completion for "
1846 "asynchronous execution commands is %s.\n"),
1847 value);
1848 }
1849
1850 /* New values of the "data-directory" parameter are staged here. */
1851 static char *staged_gdb_datadir;
1852
1853 /* "set" command for the gdb_datadir configuration variable. */
1854
1855 static void
1856 set_gdb_datadir (char *args, int from_tty, struct cmd_list_element *c)
1857 {
1858 set_gdb_data_directory (staged_gdb_datadir);
1859 observer_notify_gdb_datadir_changed ();
1860 }
1861
1862 /* "show" command for the gdb_datadir configuration variable. */
1863
1864 static void
1865 show_gdb_datadir (struct ui_file *file, int from_tty,
1866 struct cmd_list_element *c, const char *value)
1867 {
1868 fprintf_filtered (file, _("GDB's data directory is \"%s\".\n"),
1869 gdb_datadir);
1870 }
1871
1872 static void
1873 set_history_filename (char *args, int from_tty, struct cmd_list_element *c)
1874 {
1875 /* We include the current directory so that if the user changes
1876 directories the file written will be the same as the one
1877 that was read. */
1878 if (!IS_ABSOLUTE_PATH (history_filename))
1879 history_filename = reconcat (history_filename, current_directory, "/",
1880 history_filename, (char *) NULL);
1881 }
1882
1883 static void
1884 init_main (void)
1885 {
1886 /* Initialize the prompt to a simple "(gdb) " prompt or to whatever
1887 the DEFAULT_PROMPT is. */
1888 set_prompt (DEFAULT_PROMPT);
1889
1890 /* Set the important stuff up for command editing. */
1891 command_editing_p = 1;
1892 history_expansion_p = 0;
1893 write_history_p = 0;
1894
1895 /* Setup important stuff for command line editing. */
1896 rl_completion_word_break_hook = gdb_completion_word_break_characters;
1897 rl_completion_entry_function = readline_line_completion_function;
1898 rl_completer_word_break_characters = default_word_break_characters ();
1899 rl_completer_quote_characters = get_gdb_completer_quote_characters ();
1900 rl_completion_display_matches_hook = cli_display_match_list;
1901 rl_readline_name = "gdb";
1902 rl_terminal_name = getenv ("TERM");
1903
1904 /* The name for this defun comes from Bash, where it originated.
1905 15 is Control-o, the same binding this function has in Bash. */
1906 rl_add_defun ("operate-and-get-next", gdb_rl_operate_and_get_next, 15);
1907
1908 add_setshow_string_cmd ("prompt", class_support,
1909 &top_prompt,
1910 _("Set gdb's prompt"),
1911 _("Show gdb's prompt"),
1912 NULL, NULL,
1913 show_prompt,
1914 &setlist, &showlist);
1915
1916 add_com ("dont-repeat", class_support, dont_repeat_command, _("\
1917 Don't repeat this command.\nPrimarily \
1918 used inside of user-defined commands that should not be repeated when\n\
1919 hitting return."));
1920
1921 add_setshow_boolean_cmd ("editing", class_support,
1922 &async_command_editing_p, _("\
1923 Set editing of command lines as they are typed."), _("\
1924 Show editing of command lines as they are typed."), _("\
1925 Use \"on\" to enable the editing, and \"off\" to disable it.\n\
1926 Without an argument, command line editing is enabled. To edit, use\n\
1927 EMACS-like or VI-like commands like control-P or ESC."),
1928 set_async_editing_command,
1929 show_async_command_editing_p,
1930 &setlist, &showlist);
1931
1932 add_setshow_boolean_cmd ("save", no_class, &write_history_p, _("\
1933 Set saving of the history record on exit."), _("\
1934 Show saving of the history record on exit."), _("\
1935 Use \"on\" to enable the saving, and \"off\" to disable it.\n\
1936 Without an argument, saving is enabled."),
1937 NULL,
1938 show_write_history_p,
1939 &sethistlist, &showhistlist);
1940
1941 add_setshow_zuinteger_unlimited_cmd ("size", no_class,
1942 &history_size_setshow_var, _("\
1943 Set the size of the command history,"), _("\
1944 Show the size of the command history,"), _("\
1945 ie. the number of previous commands to keep a record of.\n\
1946 If set to \"unlimited\", the number of commands kept in the history\n\
1947 list is unlimited. This defaults to the value of the environment\n\
1948 variable \"GDBHISTSIZE\", or to 256 if this variable is not set."),
1949 set_history_size_command,
1950 show_history_size,
1951 &sethistlist, &showhistlist);
1952
1953 add_setshow_zuinteger_unlimited_cmd ("remove-duplicates", no_class,
1954 &history_remove_duplicates, _("\
1955 Set how far back in history to look for and remove duplicate entries."), _("\
1956 Show how far back in history to look for and remove duplicate entries."), _("\
1957 If set to a nonzero value N, GDB will look back at the last N history entries\n\
1958 and remove the first history entry that is a duplicate of the most recent\n\
1959 entry, each time a new history entry is added.\n\
1960 If set to \"unlimited\", this lookbehind is unbounded.\n\
1961 Only history entries added during this session are considered for removal.\n\
1962 If set to 0, removal of duplicate history entries is disabled.\n\
1963 By default this option is set to 0."),
1964 NULL,
1965 show_history_remove_duplicates,
1966 &sethistlist, &showhistlist);
1967
1968 add_setshow_filename_cmd ("filename", no_class, &history_filename, _("\
1969 Set the filename in which to record the command history"), _("\
1970 Show the filename in which to record the command history"), _("\
1971 (the list of previous commands of which a record is kept)."),
1972 set_history_filename,
1973 show_history_filename,
1974 &sethistlist, &showhistlist);
1975
1976 add_setshow_boolean_cmd ("confirm", class_support, &confirm, _("\
1977 Set whether to confirm potentially dangerous operations."), _("\
1978 Show whether to confirm potentially dangerous operations."), NULL,
1979 NULL,
1980 show_confirm,
1981 &setlist, &showlist);
1982
1983 add_setshow_zinteger_cmd ("annotate", class_obscure, &annotation_level, _("\
1984 Set annotation_level."), _("\
1985 Show annotation_level."), _("\
1986 0 == normal; 1 == fullname (for use when running under emacs)\n\
1987 2 == output annotated suitably for use by programs that control GDB."),
1988 NULL,
1989 show_annotation_level,
1990 &setlist, &showlist);
1991
1992 add_setshow_boolean_cmd ("exec-done-display", class_support,
1993 &exec_done_display_p, _("\
1994 Set notification of completion for asynchronous execution commands."), _("\
1995 Show notification of completion for asynchronous execution commands."), _("\
1996 Use \"on\" to enable the notification, and \"off\" to disable it."),
1997 NULL,
1998 show_exec_done_display_p,
1999 &setlist, &showlist);
2000
2001 add_setshow_filename_cmd ("data-directory", class_maintenance,
2002 &staged_gdb_datadir, _("Set GDB's data directory."),
2003 _("Show GDB's data directory."),
2004 _("\
2005 When set, GDB uses the specified path to search for data files."),
2006 set_gdb_datadir, show_gdb_datadir,
2007 &setlist,
2008 &showlist);
2009 }
2010
2011 void
2012 gdb_init (char *argv0)
2013 {
2014 if (pre_init_ui_hook)
2015 pre_init_ui_hook ();
2016
2017 /* Run the init function of each source file. */
2018
2019 #ifdef __MSDOS__
2020 /* Make sure we return to the original directory upon exit, come
2021 what may, since the OS doesn't do that for us. */
2022 make_final_cleanup (do_chdir_cleanup, xstrdup (current_directory));
2023 #endif
2024
2025 init_cmd_lists (); /* This needs to be done first. */
2026 initialize_targets (); /* Setup target_terminal macros for utils.c. */
2027 initialize_utils (); /* Make errors and warnings possible. */
2028
2029 init_page_info ();
2030
2031 /* Here is where we call all the _initialize_foo routines. */
2032 initialize_all_files ();
2033
2034 /* This creates the current_program_space. Do this after all the
2035 _initialize_foo routines have had a chance to install their
2036 per-sspace data keys. Also do this before
2037 initialize_current_architecture is called, because it accesses
2038 exec_bfd of the current program space. */
2039 initialize_progspace ();
2040 initialize_inferiors ();
2041 initialize_current_architecture ();
2042 init_cli_cmds();
2043 init_main (); /* But that omits this file! Do it now. */
2044
2045 initialize_stdin_serial ();
2046
2047 /* Take a snapshot of our tty state before readline/ncurses have had a chance
2048 to alter it. */
2049 set_initial_gdb_ttystate ();
2050
2051 async_init_signals ();
2052
2053 /* We need a default language for parsing expressions, so simple
2054 things like "set width 0" won't fail if no language is explicitly
2055 set in a config file or implicitly set by reading an executable
2056 during startup. */
2057 set_language (language_c);
2058 expected_language = current_language; /* Don't warn about the change. */
2059
2060 /* Python initialization, for example, can require various commands to be
2061 installed. For example "info pretty-printer" needs the "info"
2062 prefix to be installed. Keep things simple and just do final
2063 script initialization here. */
2064 finish_ext_lang_initialization ();
2065 }
This page took 0.071192 seconds and 4 git commands to generate.