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