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