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