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