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