Simplify saved_command_line handling
[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   struct cleanup *old_chain;
537   char *command;
538
539   while (instream && !feof (instream))
540     {
541       clear_quit_flag ();
542       if (instream == stdin)
543         reinitialize_more_filter ();
544       old_chain = make_cleanup (null_cleanup, 0);
545
546       /* Get a command-line.  This calls the readline package.  */
547       command = command_line_input (instream == stdin ?
548                                     get_prompt () : (char *) NULL,
549                                     instream == stdin, "prompt");
550       if (command == 0)
551         {
552           do_cleanups (old_chain);
553           return;
554         }
555
556       make_command_stats_cleanup (1);
557
558       /* Do not execute commented lines.  */
559       if (command[0] != '#')
560         {
561           execute_command (command, instream == stdin);
562
563           /* Do any commands attached to breakpoint we are stopped at.  */
564           bpstat_do_actions ();
565         }
566       do_cleanups (old_chain);
567     }
568 }
569 \f
570 /* When nonzero, cause dont_repeat to do nothing.  This should only be
571    set via prevent_dont_repeat.  */
572
573 static int suppress_dont_repeat = 0;
574
575 /* Commands call this if they do not want to be repeated by null lines.  */
576
577 void
578 dont_repeat (void)
579 {
580   if (suppress_dont_repeat || server_command)
581     return;
582
583   /* If we aren't reading from standard input, we are saving the last
584      thing read from stdin in line and don't want to delete it.  Null
585      lines won't repeat here in any case.  */
586   if (instream == stdin)
587     *saved_command_line = 0;
588 }
589
590 /* Prevent dont_repeat from working, and return a cleanup that
591    restores the previous state.  */
592
593 struct cleanup *
594 prevent_dont_repeat (void)
595 {
596   struct cleanup *result = make_cleanup_restore_integer (&suppress_dont_repeat);
597
598   suppress_dont_repeat = 1;
599   return result;
600 }
601
602 \f
603 /* Read a line from the stream "instream" without command line editing.
604
605    It prints PROMPT once at the start.
606    Action is compatible with "readline", e.g. space for the result is
607    malloc'd and should be freed by the caller.
608
609    A NULL return means end of file.  */
610
611 static char *
612 gdb_readline_no_editing (const char *prompt)
613 {
614   struct buffer line_buffer;
615
616   buffer_init (&line_buffer);
617
618   if (prompt != NULL)
619     {
620       /* Don't use a _filtered function here.  It causes the assumed
621          character position to be off, since the newline we read from
622          the user is not accounted for.  */
623       fputs_unfiltered (prompt, gdb_stdout);
624       gdb_flush (gdb_stdout);
625     }
626
627   while (1)
628     {
629       int c;
630
631       /* Read from stdin if we are executing a user defined command.
632          This is the right thing for prompt_for_continue, at least.  */
633       c = fgetc (instream ? instream : stdin);
634
635       if (c == EOF)
636         {
637           if (line_buffer.used_size > 0)
638             /* The last line does not end with a newline.  Return it, and
639                if we are called again fgetc will still return EOF and
640                we'll return NULL then.  */
641             break;
642           xfree (buffer_finish (&line_buffer));
643           return NULL;
644         }
645
646       if (c == '\n')
647         {
648           if (line_buffer.used_size > 0
649               && line_buffer.buffer[line_buffer.used_size - 1] == '\r')
650             line_buffer.used_size--;
651           break;
652         }
653
654       buffer_grow_char (&line_buffer, c);
655     }
656
657   buffer_grow_char (&line_buffer, '\0');
658   return buffer_finish (&line_buffer);
659 }
660
661 /* Variables which control command line editing and history
662    substitution.  These variables are given default values at the end
663    of this file.  */
664 static int command_editing_p;
665
666 /* NOTE 1999-04-29: This variable will be static again, once we modify
667    gdb to use the event loop as the default command loop and we merge
668    event-top.c into this file, top.c.  */
669
670 /* static */ int history_expansion_p;
671
672 static int write_history_p;
673 static void
674 show_write_history_p (struct ui_file *file, int from_tty,
675                       struct cmd_list_element *c, const char *value)
676 {
677   fprintf_filtered (file, _("Saving of the history record on exit is %s.\n"),
678                     value);
679 }
680
681 /* The variable associated with the "set/show history size"
682    command.  The value -1 means unlimited, and -2 means undefined.  */
683 static int history_size_setshow_var = -2;
684
685 static void
686 show_history_size (struct ui_file *file, int from_tty,
687                    struct cmd_list_element *c, const char *value)
688 {
689   fprintf_filtered (file, _("The size of the command history is %s.\n"),
690                     value);
691 }
692
693 /* Variable associated with the "history remove-duplicates" option.
694    The value -1 means unlimited.  */
695 static int history_remove_duplicates = 0;
696
697 static void
698 show_history_remove_duplicates (struct ui_file *file, int from_tty,
699                                 struct cmd_list_element *c, const char *value)
700 {
701   fprintf_filtered (file,
702                     _("The number of history entries to look back at for "
703                       "duplicates is %s.\n"),
704                     value);
705 }
706
707 static char *history_filename;
708 static void
709 show_history_filename (struct ui_file *file, int from_tty,
710                        struct cmd_list_element *c, const char *value)
711 {
712   fprintf_filtered (file, _("The filename in which to record "
713                             "the command history is \"%s\".\n"),
714                     value);
715 }
716
717 /* This is like readline(), but it has some gdb-specific behavior.
718    gdb may want readline in both the synchronous and async modes during
719    a single gdb invocation.  At the ordinary top-level prompt we might
720    be using the async readline.  That means we can't use
721    rl_pre_input_hook, since it doesn't work properly in async mode.
722    However, for a secondary prompt (" >", such as occurs during a
723    `define'), gdb wants a synchronous response.
724
725    We used to call readline() directly, running it in synchronous
726    mode.  But mixing modes this way is not supported, and as of
727    readline 5.x it no longer works; the arrow keys come unbound during
728    the synchronous call.  So we make a nested call into the event
729    loop.  That's what gdb_readline_wrapper is for.  */
730
731 /* A flag set as soon as gdb_readline_wrapper_line is called; we can't
732    rely on gdb_readline_wrapper_result, which might still be NULL if
733    the user types Control-D for EOF.  */
734 static int gdb_readline_wrapper_done;
735
736 /* The result of the current call to gdb_readline_wrapper, once a newline
737    is seen.  */
738 static char *gdb_readline_wrapper_result;
739
740 /* Any intercepted hook.  Operate-and-get-next sets this, expecting it
741    to be called after the newline is processed (which will redisplay
742    the prompt).  But in gdb_readline_wrapper we will not get a new
743    prompt until the next call, or until we return to the event loop.
744    So we disable this hook around the newline and restore it before we
745    return.  */
746 static void (*saved_after_char_processing_hook) (void);
747
748
749 /* The number of nested readline secondary prompts that are currently
750    active.  */
751
752 static int gdb_secondary_prompt_depth = 0;
753
754 /* See top.h.  */
755
756 int
757 gdb_in_secondary_prompt_p (void)
758 {
759   return gdb_secondary_prompt_depth > 0;
760 }
761
762
763 /* This function is called when readline has seen a complete line of
764    text.  */
765
766 static void
767 gdb_readline_wrapper_line (char *line)
768 {
769   gdb_assert (!gdb_readline_wrapper_done);
770   gdb_readline_wrapper_result = line;
771   gdb_readline_wrapper_done = 1;
772
773   /* Prevent operate-and-get-next from acting too early.  */
774   saved_after_char_processing_hook = after_char_processing_hook;
775   after_char_processing_hook = NULL;
776
777   /* Prevent parts of the prompt from being redisplayed if annotations
778      are enabled, and readline's state getting out of sync.  We'll
779      reinstall the callback handler, which puts the terminal in raw
780      mode (or in readline lingo, in prepped state), when we're next
781      ready to process user input, either in display_gdb_prompt, or if
782      we're handling an asynchronous target event and running in the
783      background, just before returning to the event loop to process
784      further input (or more target events).  */
785   if (async_command_editing_p)
786     gdb_rl_callback_handler_remove ();
787 }
788
789 struct gdb_readline_wrapper_cleanup
790   {
791     void (*handler_orig) (char *);
792     int already_prompted_orig;
793
794     /* Whether the target was async.  */
795     int target_is_async_orig;
796   };
797
798 static void
799 gdb_readline_wrapper_cleanup (void *arg)
800 {
801   struct gdb_readline_wrapper_cleanup *cleanup
802     = (struct gdb_readline_wrapper_cleanup *) arg;
803
804   rl_already_prompted = cleanup->already_prompted_orig;
805
806   gdb_assert (input_handler == gdb_readline_wrapper_line);
807   input_handler = cleanup->handler_orig;
808
809   /* Don't restore our input handler in readline yet.  That would make
810      readline prep the terminal (putting it in raw mode), while the
811      line we just read may trigger execution of a command that expects
812      the terminal in the default cooked/canonical mode, such as e.g.,
813      running Python's interactive online help utility.  See
814      gdb_readline_wrapper_line for when we'll reinstall it.  */
815
816   gdb_readline_wrapper_result = NULL;
817   gdb_readline_wrapper_done = 0;
818   gdb_secondary_prompt_depth--;
819   gdb_assert (gdb_secondary_prompt_depth >= 0);
820
821   after_char_processing_hook = saved_after_char_processing_hook;
822   saved_after_char_processing_hook = NULL;
823
824   if (cleanup->target_is_async_orig)
825     target_async (1);
826
827   xfree (cleanup);
828 }
829
830 char *
831 gdb_readline_wrapper (const char *prompt)
832 {
833   struct cleanup *back_to;
834   struct gdb_readline_wrapper_cleanup *cleanup;
835   char *retval;
836
837   cleanup = XNEW (struct gdb_readline_wrapper_cleanup);
838   cleanup->handler_orig = input_handler;
839   input_handler = gdb_readline_wrapper_line;
840
841   cleanup->already_prompted_orig = rl_already_prompted;
842
843   cleanup->target_is_async_orig = target_is_async_p ();
844
845   gdb_secondary_prompt_depth++;
846   back_to = make_cleanup (gdb_readline_wrapper_cleanup, cleanup);
847
848   if (cleanup->target_is_async_orig)
849     target_async (0);
850
851   /* Display our prompt and prevent double prompt display.  */
852   display_gdb_prompt (prompt);
853   rl_already_prompted = 1;
854
855   if (after_char_processing_hook)
856     (*after_char_processing_hook) ();
857   gdb_assert (after_char_processing_hook == NULL);
858
859   while (gdb_do_one_event () >= 0)
860     if (gdb_readline_wrapper_done)
861       break;
862
863   retval = gdb_readline_wrapper_result;
864   do_cleanups (back_to);
865   return retval;
866 }
867
868 \f
869 /* The current saved history number from operate-and-get-next.
870    This is -1 if not valid.  */
871 static int operate_saved_history = -1;
872
873 /* This is put on the appropriate hook and helps operate-and-get-next
874    do its work.  */
875 static void
876 gdb_rl_operate_and_get_next_completion (void)
877 {
878   int delta = where_history () - operate_saved_history;
879
880   /* The `key' argument to rl_get_previous_history is ignored.  */
881   rl_get_previous_history (delta, 0);
882   operate_saved_history = -1;
883
884   /* readline doesn't automatically update the display for us.  */
885   rl_redisplay ();
886
887   after_char_processing_hook = NULL;
888   rl_pre_input_hook = NULL;
889 }
890
891 /* This is a gdb-local readline command handler.  It accepts the
892    current command line (like RET does) and, if this command was taken
893    from the history, arranges for the next command in the history to
894    appear on the command line when the prompt returns.
895    We ignore the arguments.  */
896 static int
897 gdb_rl_operate_and_get_next (int count, int key)
898 {
899   int where;
900
901   /* Use the async hook.  */
902   after_char_processing_hook = gdb_rl_operate_and_get_next_completion;
903
904   /* Find the current line, and find the next line to use.  */
905   where = where_history();
906
907   if ((history_is_stifled () && (history_length >= history_max_entries))
908       || (where >= history_length - 1))
909     operate_saved_history = where;
910   else
911     operate_saved_history = where + 1;
912
913   return rl_newline (1, key);
914 }
915
916 /* Number of user commands executed during this session.  */
917
918 static int command_count = 0;
919
920 /* Add the user command COMMAND to the input history list.  */
921
922 void
923 gdb_add_history (const char *command)
924 {
925   command_count++;
926
927   if (history_remove_duplicates != 0)
928     {
929       int lookbehind;
930       int lookbehind_threshold;
931
932       /* The lookbehind threshold for finding a duplicate history entry is
933          bounded by command_count because we can't meaningfully delete
934          history entries that are already stored in the history file since
935          the history file is appended to.  */
936       if (history_remove_duplicates == -1
937           || history_remove_duplicates > command_count)
938         lookbehind_threshold = command_count;
939       else
940         lookbehind_threshold = history_remove_duplicates;
941
942       using_history ();
943       for (lookbehind = 0; lookbehind < lookbehind_threshold; lookbehind++)
944         {
945           HIST_ENTRY *temp = previous_history ();
946
947           if (temp == NULL)
948             break;
949
950           if (strcmp (temp->line, command) == 0)
951             {
952               HIST_ENTRY *prev = remove_history (where_history ());
953               command_count--;
954               free_history_entry (prev);
955               break;
956             }
957         }
958       using_history ();
959     }
960
961   add_history (command);
962 }
963
964 /* Safely append new history entries to the history file in a corruption-free
965    way using an intermediate local history file.  */
966
967 static void
968 gdb_safe_append_history (void)
969 {
970   int ret, saved_errno;
971   char *local_history_filename;
972   struct cleanup *old_chain;
973
974   local_history_filename
975     = xstrprintf ("%s-gdb%d~", history_filename, getpid ());
976   old_chain = make_cleanup (xfree, local_history_filename);
977
978   ret = rename (history_filename, local_history_filename);
979   saved_errno = errno;
980   if (ret < 0 && saved_errno != ENOENT)
981     {
982       warning (_("Could not rename %s to %s: %s"),
983                history_filename, local_history_filename,
984                safe_strerror (saved_errno));
985     }
986   else
987     {
988       if (ret < 0)
989         {
990           /* If the rename failed with ENOENT then either the global history
991              file never existed in the first place or another GDB process is
992              currently appending to it (and has thus temporarily renamed it).
993              Since we can't distinguish between these two cases, we have to
994              conservatively assume the first case and therefore must write out
995              (not append) our known history to our local history file and try
996              to move it back anyway.  Otherwise a global history file would
997              never get created!  */
998            gdb_assert (saved_errno == ENOENT);
999            write_history (local_history_filename);
1000         }
1001       else
1002         {
1003           append_history (command_count, local_history_filename);
1004           if (history_is_stifled ())
1005             history_truncate_file (local_history_filename, history_max_entries);
1006         }
1007
1008       ret = rename (local_history_filename, history_filename);
1009       saved_errno = errno;
1010       if (ret < 0 && saved_errno != EEXIST)
1011         warning (_("Could not rename %s to %s: %s"),
1012                  local_history_filename, history_filename,
1013                  safe_strerror (saved_errno));
1014     }
1015
1016   do_cleanups (old_chain);
1017 }
1018
1019 /* Read one line from the command input stream `instream'
1020    into the local static buffer `linebuffer' (whose current length
1021    is `linelength').
1022    The buffer is made bigger as necessary.
1023    Returns the address of the start of the line.
1024
1025    NULL is returned for end of file.
1026
1027    *If* the instream == stdin & stdin is a terminal, the line read
1028    is copied into the file line saver (global var char *line,
1029    length linesize) so that it can be duplicated.
1030
1031    This routine either uses fancy command line editing or
1032    simple input as the user has requested.  */
1033
1034 char *
1035 command_line_input (const char *prompt_arg, int repeat, char *annotation_suffix)
1036 {
1037   static char *linebuffer = 0;
1038   static unsigned linelength = 0;
1039   const char *prompt = prompt_arg;
1040   char *p;
1041   char *p1;
1042   char *rl;
1043   char *nline;
1044   char got_eof = 0;
1045
1046   /* The annotation suffix must be non-NULL.  */
1047   if (annotation_suffix == NULL)
1048     annotation_suffix = "";
1049
1050   if (annotation_level > 1 && instream == stdin)
1051     {
1052       char *local_prompt;
1053
1054       local_prompt
1055         = (char *) alloca ((prompt == NULL ? 0 : strlen (prompt))
1056                            + strlen (annotation_suffix) + 40);
1057       if (prompt == NULL)
1058         local_prompt[0] = '\0';
1059       else
1060         strcpy (local_prompt, prompt);
1061       strcat (local_prompt, "\n\032\032");
1062       strcat (local_prompt, annotation_suffix);
1063       strcat (local_prompt, "\n");
1064
1065       prompt = local_prompt;
1066     }
1067
1068   if (linebuffer == 0)
1069     {
1070       linelength = 80;
1071       linebuffer = (char *) xmalloc (linelength);
1072     }
1073
1074   p = linebuffer;
1075
1076   /* Control-C quits instantly if typed while in this loop
1077      since it should not wait until the user types a newline.  */
1078   immediate_quit++;
1079   QUIT;
1080 #ifdef STOP_SIGNAL
1081   if (job_control)
1082     signal (STOP_SIGNAL, handle_stop_sig);
1083 #endif
1084
1085   while (1)
1086     {
1087       /* Make sure that all output has been output.  Some machines may
1088          let you get away with leaving out some of the gdb_flush, but
1089          not all.  */
1090       wrap_here ("");
1091       gdb_flush (gdb_stdout);
1092       gdb_flush (gdb_stderr);
1093
1094       if (source_file_name != NULL)
1095         ++source_line_number;
1096
1097       if (annotation_level > 1 && instream == stdin)
1098         {
1099           puts_unfiltered ("\n\032\032pre-");
1100           puts_unfiltered (annotation_suffix);
1101           puts_unfiltered ("\n");
1102         }
1103
1104       /* Don't use fancy stuff if not talking to stdin.  */
1105       if (deprecated_readline_hook && input_from_terminal_p ())
1106         {
1107           rl = (*deprecated_readline_hook) (prompt);
1108         }
1109       else if (command_editing_p && input_from_terminal_p ())
1110         {
1111           rl = gdb_readline_wrapper (prompt);
1112         }
1113       else
1114         {
1115           rl = gdb_readline_no_editing (prompt);
1116         }
1117
1118       if (annotation_level > 1 && instream == stdin)
1119         {
1120           puts_unfiltered ("\n\032\032post-");
1121           puts_unfiltered (annotation_suffix);
1122           puts_unfiltered ("\n");
1123         }
1124
1125       if (!rl || rl == (char *) EOF)
1126         {
1127           got_eof = 1;
1128           break;
1129         }
1130       if (strlen (rl) + 1 + (p - linebuffer) > linelength)
1131         {
1132           linelength = strlen (rl) + 1 + (p - linebuffer);
1133           nline = (char *) xrealloc (linebuffer, linelength);
1134           p += nline - linebuffer;
1135           linebuffer = nline;
1136         }
1137       p1 = rl;
1138       /* Copy line.  Don't copy null at end.  (Leaves line alone
1139          if this was just a newline).  */
1140       while (*p1)
1141         *p++ = *p1++;
1142
1143       xfree (rl);               /* Allocated in readline.  */
1144
1145       if (p == linebuffer || *(p - 1) != '\\')
1146         break;
1147
1148       p--;                      /* Put on top of '\'.  */
1149       prompt = NULL;
1150     }
1151
1152 #ifdef STOP_SIGNAL
1153   if (job_control)
1154     signal (STOP_SIGNAL, SIG_DFL);
1155 #endif
1156   immediate_quit--;
1157
1158   if (got_eof)
1159     return NULL;
1160
1161 #define SERVER_COMMAND_LENGTH 7
1162   server_command =
1163     (p - linebuffer > SERVER_COMMAND_LENGTH)
1164     && strncmp (linebuffer, "server ", SERVER_COMMAND_LENGTH) == 0;
1165   if (server_command)
1166     {
1167       /* Note that we don't set `line'.  Between this and the check in
1168          dont_repeat, this insures that repeating will still do the
1169          right thing.  */
1170       *p = '\0';
1171       return linebuffer + SERVER_COMMAND_LENGTH;
1172     }
1173
1174   /* Do history expansion if that is wished.  */
1175   if (history_expansion_p && instream == stdin
1176       && ISATTY (instream))
1177     {
1178       char *history_value;
1179       int expanded;
1180
1181       *p = '\0';                /* Insert null now.  */
1182       expanded = history_expand (linebuffer, &history_value);
1183       if (expanded)
1184         {
1185           /* Print the changes.  */
1186           printf_unfiltered ("%s\n", history_value);
1187
1188           /* If there was an error, call this function again.  */
1189           if (expanded < 0)
1190             {
1191               xfree (history_value);
1192               return command_line_input (prompt, repeat,
1193                                          annotation_suffix);
1194             }
1195           if (strlen (history_value) > linelength)
1196             {
1197               linelength = strlen (history_value) + 1;
1198               linebuffer = (char *) xrealloc (linebuffer, linelength);
1199             }
1200           strcpy (linebuffer, history_value);
1201           p = linebuffer + strlen (linebuffer);
1202         }
1203       xfree (history_value);
1204     }
1205
1206   /* If we just got an empty line, and that is supposed to repeat the
1207      previous command, return the value in the global buffer.  */
1208   if (repeat && p == linebuffer)
1209     return saved_command_line;
1210   for (p1 = linebuffer; *p1 == ' ' || *p1 == '\t'; p1++);
1211   if (repeat && !*p1)
1212     return saved_command_line;
1213
1214   *p = 0;
1215
1216   /* Add line to history if appropriate.  */
1217   if (*linebuffer && input_from_terminal_p ())
1218     gdb_add_history (linebuffer);
1219
1220   /* Save into global buffer if appropriate.  */
1221   if (repeat)
1222     {
1223       xfree (saved_command_line);
1224       saved_command_line = xstrdup (linebuffer);
1225       return saved_command_line;
1226     }
1227
1228   return linebuffer;
1229 }
1230 \f
1231 /* Print the GDB banner.  */
1232 void
1233 print_gdb_version (struct ui_file *stream)
1234 {
1235   /* From GNU coding standards, first line is meant to be easy for a
1236      program to parse, and is just canonical program name and version
1237      number, which starts after last space.  */
1238
1239   fprintf_filtered (stream, "GNU gdb %s%s\n", PKGVERSION, version);
1240
1241   /* Second line is a copyright notice.  */
1242
1243   fprintf_filtered (stream,
1244                     "Copyright (C) 2016 Free Software Foundation, Inc.\n");
1245
1246   /* Following the copyright is a brief statement that the program is
1247      free software, that users are free to copy and change it on
1248      certain conditions, that it is covered by the GNU GPL, and that
1249      there is no warranty.  */
1250
1251   fprintf_filtered (stream, "\
1252 License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\
1253 \nThis is free software: you are free to change and redistribute it.\n\
1254 There is NO WARRANTY, to the extent permitted by law.  Type \"show copying\"\n\
1255 and \"show warranty\" for details.\n");
1256
1257   /* After the required info we print the configuration information.  */
1258
1259   fprintf_filtered (stream, "This GDB was configured as \"");
1260   if (strcmp (host_name, target_name) != 0)
1261     {
1262       fprintf_filtered (stream, "--host=%s --target=%s",
1263                         host_name, target_name);
1264     }
1265   else
1266     {
1267       fprintf_filtered (stream, "%s", host_name);
1268     }
1269   fprintf_filtered (stream, "\".\n\
1270 Type \"show configuration\" for configuration details.");
1271
1272   if (REPORT_BUGS_TO[0])
1273     {
1274       fprintf_filtered (stream,
1275                         _("\nFor bug reporting instructions, please see:\n"));
1276       fprintf_filtered (stream, "%s.\n", REPORT_BUGS_TO);
1277     }
1278   fprintf_filtered (stream,
1279                     _("Find the GDB manual and other documentation \
1280 resources online at:\n<http://www.gnu.org/software/gdb/documentation/>.\n"));
1281   fprintf_filtered (stream, _("For help, type \"help\".\n"));
1282   fprintf_filtered (stream, _("Type \"apropos word\" to search for \
1283 commands related to \"word\"."));
1284 }
1285
1286 /* Print the details of GDB build-time configuration.  */
1287 void
1288 print_gdb_configuration (struct ui_file *stream)
1289 {
1290   fprintf_filtered (stream, _("\
1291 This GDB was configured as follows:\n\
1292    configure --host=%s --target=%s\n\
1293 "), host_name, target_name);
1294   fprintf_filtered (stream, _("\
1295              --with-auto-load-dir=%s\n\
1296              --with-auto-load-safe-path=%s\n\
1297 "), AUTO_LOAD_DIR, AUTO_LOAD_SAFE_PATH);
1298 #if HAVE_LIBEXPAT
1299   fprintf_filtered (stream, _("\
1300              --with-expat\n\
1301 "));
1302 #else
1303   fprintf_filtered (stream, _("\
1304              --without-expat\n\
1305 "));
1306 #endif
1307   if (GDB_DATADIR[0])
1308     fprintf_filtered (stream, _("\
1309              --with-gdb-datadir=%s%s\n\
1310 "), GDB_DATADIR, GDB_DATADIR_RELOCATABLE ? " (relocatable)" : "");
1311 #ifdef ICONV_BIN
1312   fprintf_filtered (stream, _("\
1313              --with-iconv-bin=%s%s\n\
1314 "), ICONV_BIN, ICONV_BIN_RELOCATABLE ? " (relocatable)" : "");
1315 #endif
1316   if (JIT_READER_DIR[0])
1317     fprintf_filtered (stream, _("\
1318              --with-jit-reader-dir=%s%s\n\
1319 "), JIT_READER_DIR, JIT_READER_DIR_RELOCATABLE ? " (relocatable)" : "");
1320 #if HAVE_LIBUNWIND_IA64_H
1321   fprintf_filtered (stream, _("\
1322              --with-libunwind-ia64\n\
1323 "));
1324 #else
1325   fprintf_filtered (stream, _("\
1326              --without-libunwind-ia64\n\
1327 "));
1328 #endif
1329 #if HAVE_LIBLZMA
1330   fprintf_filtered (stream, _("\
1331              --with-lzma\n\
1332 "));
1333 #else
1334   fprintf_filtered (stream, _("\
1335              --without-lzma\n\
1336 "));
1337 #endif
1338 #ifdef WITH_PYTHON_PATH
1339   fprintf_filtered (stream, _("\
1340              --with-python=%s%s\n\
1341 "), WITH_PYTHON_PATH, PYTHON_PATH_RELOCATABLE ? " (relocatable)" : "");
1342 #endif
1343 #if HAVE_GUILE
1344   fprintf_filtered (stream, _("\
1345              --with-guile\n\
1346 "));
1347 #else
1348   fprintf_filtered (stream, _("\
1349              --without-guile\n\
1350 "));
1351 #endif
1352 #ifdef RELOC_SRCDIR
1353   fprintf_filtered (stream, _("\
1354              --with-relocated-sources=%s\n\
1355 "), RELOC_SRCDIR);
1356 #endif
1357   if (DEBUGDIR[0])
1358     fprintf_filtered (stream, _("\
1359              --with-separate-debug-dir=%s%s\n\
1360 "), DEBUGDIR, DEBUGDIR_RELOCATABLE ? " (relocatable)" : "");
1361   if (TARGET_SYSTEM_ROOT[0])
1362     fprintf_filtered (stream, _("\
1363              --with-sysroot=%s%s\n\
1364 "), TARGET_SYSTEM_ROOT, TARGET_SYSTEM_ROOT_RELOCATABLE ? " (relocatable)" : "");
1365   if (SYSTEM_GDBINIT[0])
1366     fprintf_filtered (stream, _("\
1367              --with-system-gdbinit=%s%s\n\
1368 "), SYSTEM_GDBINIT, SYSTEM_GDBINIT_RELOCATABLE ? " (relocatable)" : "");
1369 #if HAVE_LIBBABELTRACE
1370     fprintf_filtered (stream, _("\
1371              --with-babeltrace\n\
1372 "));
1373 #else
1374     fprintf_filtered (stream, _("\
1375              --without-babeltrace\n\
1376 "));
1377 #endif
1378     /* We assume "relocatable" will be printed at least once, thus we always
1379        print this text.  It's a reasonably safe assumption for now.  */
1380     fprintf_filtered (stream, _("\n\
1381 (\"Relocatable\" means the directory can be moved with the GDB installation\n\
1382 tree, and GDB will still find it.)\n\
1383 "));
1384 }
1385 \f
1386
1387 /* The current top level prompt, settable with "set prompt", and/or
1388    with the python `gdb.prompt_hook' hook.  */
1389 static char *top_prompt;
1390
1391 /* Access method for the GDB prompt string.  */
1392
1393 char *
1394 get_prompt (void)
1395 {
1396   return top_prompt;
1397 }
1398
1399 /* Set method for the GDB prompt string.  */
1400
1401 void
1402 set_prompt (const char *s)
1403 {
1404   char *p = xstrdup (s);
1405
1406   xfree (top_prompt);
1407   top_prompt = p;
1408 }
1409 \f
1410
1411 struct qt_args
1412 {
1413   char *args;
1414   int from_tty;
1415 };
1416
1417 /* Callback for iterate_over_inferiors.  Kills or detaches the given
1418    inferior, depending on how we originally gained control of it.  */
1419
1420 static int
1421 kill_or_detach (struct inferior *inf, void *args)
1422 {
1423   struct qt_args *qt = (struct qt_args *) args;
1424   struct thread_info *thread;
1425
1426   if (inf->pid == 0)
1427     return 0;
1428
1429   thread = any_thread_of_process (inf->pid);
1430   if (thread != NULL)
1431     {
1432       switch_to_thread (thread->ptid);
1433
1434       /* Leave core files alone.  */
1435       if (target_has_execution)
1436         {
1437           if (inf->attach_flag)
1438             target_detach (qt->args, qt->from_tty);
1439           else
1440             target_kill ();
1441         }
1442     }
1443
1444   return 0;
1445 }
1446
1447 /* Callback for iterate_over_inferiors.  Prints info about what GDB
1448    will do to each inferior on a "quit".  ARG points to a struct
1449    ui_out where output is to be collected.  */
1450
1451 static int
1452 print_inferior_quit_action (struct inferior *inf, void *arg)
1453 {
1454   struct ui_file *stb = (struct ui_file *) arg;
1455
1456   if (inf->pid == 0)
1457     return 0;
1458
1459   if (inf->attach_flag)
1460     fprintf_filtered (stb,
1461                       _("\tInferior %d [%s] will be detached.\n"), inf->num,
1462                       target_pid_to_str (pid_to_ptid (inf->pid)));
1463   else
1464     fprintf_filtered (stb,
1465                       _("\tInferior %d [%s] will be killed.\n"), inf->num,
1466                       target_pid_to_str (pid_to_ptid (inf->pid)));
1467
1468   return 0;
1469 }
1470
1471 /* If necessary, make the user confirm that we should quit.  Return
1472    non-zero if we should quit, zero if we shouldn't.  */
1473
1474 int
1475 quit_confirm (void)
1476 {
1477   struct ui_file *stb;
1478   struct cleanup *old_chain;
1479   char *str;
1480   int qr;
1481
1482   /* Don't even ask if we're only debugging a core file inferior.  */
1483   if (!have_live_inferiors ())
1484     return 1;
1485
1486   /* Build the query string as a single string.  */
1487   stb = mem_fileopen ();
1488   old_chain = make_cleanup_ui_file_delete (stb);
1489
1490   fprintf_filtered (stb, _("A debugging session is active.\n\n"));
1491   iterate_over_inferiors (print_inferior_quit_action, stb);
1492   fprintf_filtered (stb, _("\nQuit anyway? "));
1493
1494   str = ui_file_xstrdup (stb, NULL);
1495   make_cleanup (xfree, str);
1496
1497   qr = query ("%s", str);
1498   do_cleanups (old_chain);
1499   return qr;
1500 }
1501
1502 /* Prepare to exit GDB cleanly by undoing any changes made to the
1503    terminal so that we leave the terminal in the state we acquired it.  */
1504
1505 static void
1506 undo_terminal_modifications_before_exit (void)
1507 {
1508   target_terminal_ours ();
1509 #if defined(TUI)
1510   tui_disable ();
1511 #endif
1512   if (async_command_editing_p)
1513     gdb_disable_readline ();
1514 }
1515
1516
1517 /* Quit without asking for confirmation.  */
1518
1519 void
1520 quit_force (char *args, int from_tty)
1521 {
1522   int exit_code = 0;
1523   struct qt_args qt;
1524
1525   undo_terminal_modifications_before_exit ();
1526
1527   /* An optional expression may be used to cause gdb to terminate with the 
1528      value of that expression.  */
1529   if (args)
1530     {
1531       struct value *val = parse_and_eval (args);
1532
1533       exit_code = (int) value_as_long (val);
1534     }
1535   else if (return_child_result)
1536     exit_code = return_child_result_value;
1537
1538   qt.args = args;
1539   qt.from_tty = from_tty;
1540
1541   /* We want to handle any quit errors and exit regardless.  */
1542
1543   /* Get out of tfind mode, and kill or detach all inferiors.  */
1544   TRY
1545     {
1546       disconnect_tracing ();
1547       iterate_over_inferiors (kill_or_detach, &qt);
1548     }
1549   CATCH (ex, RETURN_MASK_ALL)
1550     {
1551       exception_print (gdb_stderr, ex);
1552     }
1553   END_CATCH
1554
1555   /* Give all pushed targets a chance to do minimal cleanup, and pop
1556      them all out.  */
1557   TRY
1558     {
1559       pop_all_targets ();
1560     }
1561   CATCH (ex, RETURN_MASK_ALL)
1562     {
1563       exception_print (gdb_stderr, ex);
1564     }
1565   END_CATCH
1566
1567   /* Save the history information if it is appropriate to do so.  */
1568   TRY
1569     {
1570       if (write_history_p && history_filename
1571           && input_from_terminal_p ())
1572         gdb_safe_append_history ();
1573     }
1574   CATCH (ex, RETURN_MASK_ALL)
1575     {
1576       exception_print (gdb_stderr, ex);
1577     }
1578   END_CATCH
1579
1580   /* Do any final cleanups before exiting.  */
1581   TRY
1582     {
1583       do_final_cleanups (all_cleanups ());
1584     }
1585   CATCH (ex, RETURN_MASK_ALL)
1586     {
1587       exception_print (gdb_stderr, ex);
1588     }
1589   END_CATCH
1590
1591   exit (exit_code);
1592 }
1593
1594 /* Returns whether GDB is running on a terminal and input is
1595    currently coming from that terminal.  */
1596
1597 int
1598 input_from_terminal_p (void)
1599 {
1600   if (batch_flag)
1601     return 0;
1602
1603   if (gdb_has_a_terminal () && instream == stdin)
1604     return 1;
1605
1606   /* If INSTREAM is unset, and we are not in a user command, we
1607      must be in Insight.  That's like having a terminal, for our
1608      purposes.  */
1609   if (instream == NULL && !in_user_command)
1610     return 1;
1611
1612   return 0;
1613 }
1614 \f
1615 static void
1616 dont_repeat_command (char *ignored, int from_tty)
1617 {
1618   /* Can't call dont_repeat here because we're not necessarily reading
1619      from stdin.  */
1620   *saved_command_line = 0;
1621 }
1622 \f
1623 /* Functions to manipulate command line editing control variables.  */
1624
1625 /* Number of commands to print in each call to show_commands.  */
1626 #define Hist_print 10
1627 void
1628 show_commands (char *args, int from_tty)
1629 {
1630   /* Index for history commands.  Relative to history_base.  */
1631   int offset;
1632
1633   /* Number of the history entry which we are planning to display next.
1634      Relative to history_base.  */
1635   static int num = 0;
1636
1637   /* Print out some of the commands from the command history.  */
1638
1639   if (args)
1640     {
1641       if (args[0] == '+' && args[1] == '\0')
1642         /* "info editing +" should print from the stored position.  */
1643         ;
1644       else
1645         /* "info editing <exp>" should print around command number <exp>.  */
1646         num = (parse_and_eval_long (args) - history_base) - Hist_print / 2;
1647     }
1648   /* "show commands" means print the last Hist_print commands.  */
1649   else
1650     {
1651       num = history_length - Hist_print;
1652     }
1653
1654   if (num < 0)
1655     num = 0;
1656
1657   /* If there are at least Hist_print commands, we want to display the last
1658      Hist_print rather than, say, the last 6.  */
1659   if (history_length - num < Hist_print)
1660     {
1661       num = history_length - Hist_print;
1662       if (num < 0)
1663         num = 0;
1664     }
1665
1666   for (offset = num;
1667        offset < num + Hist_print && offset < history_length;
1668        offset++)
1669     {
1670       printf_filtered ("%5d  %s\n", history_base + offset,
1671                        (history_get (history_base + offset))->line);
1672     }
1673
1674   /* The next command we want to display is the next one that we haven't
1675      displayed yet.  */
1676   num += Hist_print;
1677
1678   /* If the user repeats this command with return, it should do what
1679      "show commands +" does.  This is unnecessary if arg is null,
1680      because "show commands +" is not useful after "show commands".  */
1681   if (from_tty && args)
1682     {
1683       args[0] = '+';
1684       args[1] = '\0';
1685     }
1686 }
1687
1688 /* Update the size of our command history file to HISTORY_SIZE.
1689
1690    A HISTORY_SIZE of -1 stands for unlimited.  */
1691
1692 static void
1693 set_readline_history_size (int history_size)
1694 {
1695   gdb_assert (history_size >= -1);
1696
1697   if (history_size == -1)
1698     unstifle_history ();
1699   else
1700     stifle_history (history_size);
1701 }
1702
1703 /* Called by do_setshow_command.  */
1704 static void
1705 set_history_size_command (char *args, int from_tty, struct cmd_list_element *c)
1706 {
1707   set_readline_history_size (history_size_setshow_var);
1708 }
1709
1710 void
1711 set_history (char *args, int from_tty)
1712 {
1713   printf_unfiltered (_("\"set history\" must be followed "
1714                        "by the name of a history subcommand.\n"));
1715   help_list (sethistlist, "set history ", all_commands, gdb_stdout);
1716 }
1717
1718 void
1719 show_history (char *args, int from_tty)
1720 {
1721   cmd_show_list (showhistlist, from_tty, "");
1722 }
1723
1724 int info_verbose = 0;           /* Default verbose msgs off.  */
1725
1726 /* Called by do_setshow_command.  An elaborate joke.  */
1727 void
1728 set_verbose (char *args, int from_tty, struct cmd_list_element *c)
1729 {
1730   const char *cmdname = "verbose";
1731   struct cmd_list_element *showcmd;
1732
1733   showcmd = lookup_cmd_1 (&cmdname, showlist, NULL, 1);
1734   gdb_assert (showcmd != NULL && showcmd != CMD_LIST_AMBIGUOUS);
1735
1736   if (info_verbose)
1737     {
1738       c->doc = "Set verbose printing of informational messages.";
1739       showcmd->doc = "Show verbose printing of informational messages.";
1740     }
1741   else
1742     {
1743       c->doc = "Set verbosity.";
1744       showcmd->doc = "Show verbosity.";
1745     }
1746 }
1747
1748 /* Init the history buffer.  Note that we are called after the init file(s)
1749    have been read so that the user can change the history file via his
1750    .gdbinit file (for instance).  The GDBHISTFILE environment variable
1751    overrides all of this.  */
1752
1753 void
1754 init_history (void)
1755 {
1756   char *tmpenv;
1757
1758   tmpenv = getenv ("GDBHISTSIZE");
1759   if (tmpenv)
1760     {
1761       long var;
1762       int saved_errno;
1763       char *endptr;
1764
1765       tmpenv = skip_spaces (tmpenv);
1766       errno = 0;
1767       var = strtol (tmpenv, &endptr, 10);
1768       saved_errno = errno;
1769       endptr = skip_spaces (endptr);
1770
1771       /* If GDBHISTSIZE is non-numeric then ignore it.  If GDBHISTSIZE is the
1772          empty string, a negative number or a huge positive number (larger than
1773          INT_MAX) then set the history size to unlimited.  Otherwise set our
1774          history size to the number we have read.  This behavior is consistent
1775          with how bash handles HISTSIZE.  */
1776       if (*endptr != '\0')
1777         ;
1778       else if (*tmpenv == '\0'
1779                || var < 0
1780                || var > INT_MAX
1781                /* On targets where INT_MAX == LONG_MAX, we have to look at
1782                   errno after calling strtol to distinguish between a value that
1783                   is exactly INT_MAX and an overflowing value that was clamped
1784                   to INT_MAX.  */
1785                || (var == INT_MAX && saved_errno == ERANGE))
1786         history_size_setshow_var = -1;
1787       else
1788         history_size_setshow_var = var;
1789     }
1790
1791   /* If neither the init file nor GDBHISTSIZE has set a size yet, pick the
1792      default.  */
1793   if (history_size_setshow_var == -2)
1794     history_size_setshow_var = 256;
1795
1796   set_readline_history_size (history_size_setshow_var);
1797
1798   tmpenv = getenv ("GDBHISTFILE");
1799   if (tmpenv)
1800     history_filename = xstrdup (tmpenv);
1801   else if (!history_filename)
1802     {
1803       /* We include the current directory so that if the user changes
1804          directories the file written will be the same as the one
1805          that was read.  */
1806 #ifdef __MSDOS__
1807       /* No leading dots in file names are allowed on MSDOS.  */
1808       history_filename = concat (current_directory, "/_gdb_history",
1809                                  (char *)NULL);
1810 #else
1811       history_filename = concat (current_directory, "/.gdb_history",
1812                                  (char *)NULL);
1813 #endif
1814     }
1815   read_history (history_filename);
1816 }
1817
1818 static void
1819 show_prompt (struct ui_file *file, int from_tty,
1820              struct cmd_list_element *c, const char *value)
1821 {
1822   fprintf_filtered (file, _("Gdb's prompt is \"%s\".\n"), value);
1823 }
1824
1825 static void
1826 show_async_command_editing_p (struct ui_file *file, int from_tty,
1827                               struct cmd_list_element *c, const char *value)
1828 {
1829   fprintf_filtered (file, _("Editing of command lines as "
1830                             "they are typed is %s.\n"),
1831                     value);
1832 }
1833
1834 static void
1835 show_annotation_level (struct ui_file *file, int from_tty,
1836                        struct cmd_list_element *c, const char *value)
1837 {
1838   fprintf_filtered (file, _("Annotation_level is %s.\n"), value);
1839 }
1840
1841 static void
1842 show_exec_done_display_p (struct ui_file *file, int from_tty,
1843                           struct cmd_list_element *c, const char *value)
1844 {
1845   fprintf_filtered (file, _("Notification of completion for "
1846                             "asynchronous execution commands is %s.\n"),
1847                     value);
1848 }
1849
1850 /* New values of the "data-directory" parameter are staged here.  */
1851 static char *staged_gdb_datadir;
1852
1853 /* "set" command for the gdb_datadir configuration variable.  */
1854
1855 static void
1856 set_gdb_datadir (char *args, int from_tty, struct cmd_list_element *c)
1857 {
1858   set_gdb_data_directory (staged_gdb_datadir);
1859   observer_notify_gdb_datadir_changed ();
1860 }
1861
1862 /* "show" command for the gdb_datadir configuration variable.  */
1863
1864 static void
1865 show_gdb_datadir (struct ui_file *file, int from_tty,
1866                   struct cmd_list_element *c, const char *value)
1867 {
1868   fprintf_filtered (file, _("GDB's data directory is \"%s\".\n"),
1869                     gdb_datadir);
1870 }
1871
1872 static void
1873 set_history_filename (char *args, int from_tty, struct cmd_list_element *c)
1874 {
1875   /* We include the current directory so that if the user changes
1876      directories the file written will be the same as the one
1877      that was read.  */
1878   if (!IS_ABSOLUTE_PATH (history_filename))
1879     history_filename = reconcat (history_filename, current_directory, "/", 
1880                                  history_filename, (char *) NULL);
1881 }
1882
1883 static void
1884 init_main (void)
1885 {
1886   /* Initialize the prompt to a simple "(gdb) " prompt or to whatever
1887      the DEFAULT_PROMPT is.  */
1888   set_prompt (DEFAULT_PROMPT);
1889
1890   /* Set the important stuff up for command editing.  */
1891   command_editing_p = 1;
1892   history_expansion_p = 0;
1893   write_history_p = 0;
1894
1895   /* Setup important stuff for command line editing.  */
1896   rl_completion_word_break_hook = gdb_completion_word_break_characters;
1897   rl_completion_entry_function = readline_line_completion_function;
1898   rl_completer_word_break_characters = default_word_break_characters ();
1899   rl_completer_quote_characters = get_gdb_completer_quote_characters ();
1900   rl_completion_display_matches_hook = cli_display_match_list;
1901   rl_readline_name = "gdb";
1902   rl_terminal_name = getenv ("TERM");
1903
1904   /* The name for this defun comes from Bash, where it originated.
1905      15 is Control-o, the same binding this function has in Bash.  */
1906   rl_add_defun ("operate-and-get-next", gdb_rl_operate_and_get_next, 15);
1907
1908   add_setshow_string_cmd ("prompt", class_support,
1909                           &top_prompt,
1910                           _("Set gdb's prompt"),
1911                           _("Show gdb's prompt"),
1912                           NULL, NULL,
1913                           show_prompt,
1914                           &setlist, &showlist);
1915
1916   add_com ("dont-repeat", class_support, dont_repeat_command, _("\
1917 Don't repeat this command.\nPrimarily \
1918 used inside of user-defined commands that should not be repeated when\n\
1919 hitting return."));
1920
1921   add_setshow_boolean_cmd ("editing", class_support,
1922                            &async_command_editing_p, _("\
1923 Set editing of command lines as they are typed."), _("\
1924 Show editing of command lines as they are typed."), _("\
1925 Use \"on\" to enable the editing, and \"off\" to disable it.\n\
1926 Without an argument, command line editing is enabled.  To edit, use\n\
1927 EMACS-like or VI-like commands like control-P or ESC."),
1928                            set_async_editing_command,
1929                            show_async_command_editing_p,
1930                            &setlist, &showlist);
1931
1932   add_setshow_boolean_cmd ("save", no_class, &write_history_p, _("\
1933 Set saving of the history record on exit."), _("\
1934 Show saving of the history record on exit."), _("\
1935 Use \"on\" to enable the saving, and \"off\" to disable it.\n\
1936 Without an argument, saving is enabled."),
1937                            NULL,
1938                            show_write_history_p,
1939                            &sethistlist, &showhistlist);
1940
1941   add_setshow_zuinteger_unlimited_cmd ("size", no_class,
1942                                        &history_size_setshow_var, _("\
1943 Set the size of the command history,"), _("\
1944 Show the size of the command history,"), _("\
1945 ie. the number of previous commands to keep a record of.\n\
1946 If set to \"unlimited\", the number of commands kept in the history\n\
1947 list is unlimited.  This defaults to the value of the environment\n\
1948 variable \"GDBHISTSIZE\", or to 256 if this variable is not set."),
1949                             set_history_size_command,
1950                             show_history_size,
1951                             &sethistlist, &showhistlist);
1952
1953   add_setshow_zuinteger_unlimited_cmd ("remove-duplicates", no_class,
1954                                        &history_remove_duplicates, _("\
1955 Set how far back in history to look for and remove duplicate entries."), _("\
1956 Show how far back in history to look for and remove duplicate entries."), _("\
1957 If set to a nonzero value N, GDB will look back at the last N history entries\n\
1958 and remove the first history entry that is a duplicate of the most recent\n\
1959 entry, each time a new history entry is added.\n\
1960 If set to \"unlimited\", this lookbehind is unbounded.\n\
1961 Only history entries added during this session are considered for removal.\n\
1962 If set to 0, removal of duplicate history entries is disabled.\n\
1963 By default this option is set to 0."),
1964                            NULL,
1965                            show_history_remove_duplicates,
1966                            &sethistlist, &showhistlist);
1967
1968   add_setshow_filename_cmd ("filename", no_class, &history_filename, _("\
1969 Set the filename in which to record the command history"), _("\
1970 Show the filename in which to record the command history"), _("\
1971 (the list of previous commands of which a record is kept)."),
1972                             set_history_filename,
1973                             show_history_filename,
1974                             &sethistlist, &showhistlist);
1975
1976   add_setshow_boolean_cmd ("confirm", class_support, &confirm, _("\
1977 Set whether to confirm potentially dangerous operations."), _("\
1978 Show whether to confirm potentially dangerous operations."), NULL,
1979                            NULL,
1980                            show_confirm,
1981                            &setlist, &showlist);
1982
1983   add_setshow_zinteger_cmd ("annotate", class_obscure, &annotation_level, _("\
1984 Set annotation_level."), _("\
1985 Show annotation_level."), _("\
1986 0 == normal;     1 == fullname (for use when running under emacs)\n\
1987 2 == output annotated suitably for use by programs that control GDB."),
1988                             NULL,
1989                             show_annotation_level,
1990                             &setlist, &showlist);
1991
1992   add_setshow_boolean_cmd ("exec-done-display", class_support,
1993                            &exec_done_display_p, _("\
1994 Set notification of completion for asynchronous execution commands."), _("\
1995 Show notification of completion for asynchronous execution commands."), _("\
1996 Use \"on\" to enable the notification, and \"off\" to disable it."),
1997                            NULL,
1998                            show_exec_done_display_p,
1999                            &setlist, &showlist);
2000
2001   add_setshow_filename_cmd ("data-directory", class_maintenance,
2002                            &staged_gdb_datadir, _("Set GDB's data directory."),
2003                            _("Show GDB's data directory."),
2004                            _("\
2005 When set, GDB uses the specified path to search for data files."),
2006                            set_gdb_datadir, show_gdb_datadir,
2007                            &setlist,
2008                            &showlist);
2009 }
2010
2011 void
2012 gdb_init (char *argv0)
2013 {
2014   if (pre_init_ui_hook)
2015     pre_init_ui_hook ();
2016
2017   /* Run the init function of each source file.  */
2018
2019 #ifdef __MSDOS__
2020   /* Make sure we return to the original directory upon exit, come
2021      what may, since the OS doesn't do that for us.  */
2022   make_final_cleanup (do_chdir_cleanup, xstrdup (current_directory));
2023 #endif
2024
2025   init_cmd_lists ();        /* This needs to be done first.  */
2026   initialize_targets ();    /* Setup target_terminal macros for utils.c.  */
2027   initialize_utils ();      /* Make errors and warnings possible.  */
2028
2029   init_page_info ();
2030
2031   /* Here is where we call all the _initialize_foo routines.  */
2032   initialize_all_files ();
2033
2034   /* This creates the current_program_space.  Do this after all the
2035      _initialize_foo routines have had a chance to install their
2036      per-sspace data keys.  Also do this before
2037      initialize_current_architecture is called, because it accesses
2038      exec_bfd of the current program space.  */
2039   initialize_progspace ();
2040   initialize_inferiors ();
2041   initialize_current_architecture ();
2042   init_cli_cmds();
2043   init_main ();                 /* But that omits this file!  Do it now.  */
2044
2045   initialize_stdin_serial ();
2046
2047   /* Take a snapshot of our tty state before readline/ncurses have had a chance
2048      to alter it.  */
2049   set_initial_gdb_ttystate ();
2050
2051   async_init_signals ();
2052
2053   /* We need a default language for parsing expressions, so simple
2054      things like "set width 0" won't fail if no language is explicitly
2055      set in a config file or implicitly set by reading an executable
2056      during startup.  */
2057   set_language (language_c);
2058   expected_language = current_language; /* Don't warn about the change.  */
2059
2060   /* Python initialization, for example, can require various commands to be
2061      installed.  For example "info pretty-printer" needs the "info"
2062      prefix to be installed.  Keep things simple and just do final
2063      script initialization here.  */
2064   finish_ext_lang_initialization ();
2065 }