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