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