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