Make gdb_in_secondary_prompt_p() 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 /* See top.h.  */
761
762 int
763 gdb_in_secondary_prompt_p (struct ui *ui)
764 {
765   return ui->secondary_prompt_depth > 0;
766 }
767
768
769 /* This function is called when readline has seen a complete line of
770    text.  */
771
772 static void
773 gdb_readline_wrapper_line (char *line)
774 {
775   gdb_assert (!gdb_readline_wrapper_done);
776   gdb_readline_wrapper_result = line;
777   gdb_readline_wrapper_done = 1;
778
779   /* Prevent operate-and-get-next from acting too early.  */
780   saved_after_char_processing_hook = after_char_processing_hook;
781   after_char_processing_hook = NULL;
782
783   /* Prevent parts of the prompt from being redisplayed if annotations
784      are enabled, and readline's state getting out of sync.  We'll
785      reinstall the callback handler, which puts the terminal in raw
786      mode (or in readline lingo, in prepped state), when we're next
787      ready to process user input, either in display_gdb_prompt, or if
788      we're handling an asynchronous target event and running in the
789      background, just before returning to the event loop to process
790      further input (or more target events).  */
791   if (current_ui->command_editing)
792     gdb_rl_callback_handler_remove ();
793 }
794
795 struct gdb_readline_wrapper_cleanup
796   {
797     void (*handler_orig) (char *);
798     int already_prompted_orig;
799
800     /* Whether the target was async.  */
801     int target_is_async_orig;
802   };
803
804 static void
805 gdb_readline_wrapper_cleanup (void *arg)
806 {
807   struct ui *ui = current_ui;
808   struct gdb_readline_wrapper_cleanup *cleanup
809     = (struct gdb_readline_wrapper_cleanup *) arg;
810
811   if (ui->command_editing)
812     rl_already_prompted = cleanup->already_prompted_orig;
813
814   gdb_assert (ui->input_handler == gdb_readline_wrapper_line);
815   ui->input_handler = cleanup->handler_orig;
816
817   /* Don't restore our input handler in readline yet.  That would make
818      readline prep the terminal (putting it in raw mode), while the
819      line we just read may trigger execution of a command that expects
820      the terminal in the default cooked/canonical mode, such as e.g.,
821      running Python's interactive online help utility.  See
822      gdb_readline_wrapper_line for when we'll reinstall it.  */
823
824   gdb_readline_wrapper_result = NULL;
825   gdb_readline_wrapper_done = 0;
826   ui->secondary_prompt_depth--;
827   gdb_assert (ui->secondary_prompt_depth >= 0);
828
829   after_char_processing_hook = saved_after_char_processing_hook;
830   saved_after_char_processing_hook = NULL;
831
832   if (cleanup->target_is_async_orig)
833     target_async (1);
834
835   xfree (cleanup);
836 }
837
838 char *
839 gdb_readline_wrapper (const char *prompt)
840 {
841   struct ui *ui = current_ui;
842   struct cleanup *back_to;
843   struct gdb_readline_wrapper_cleanup *cleanup;
844   char *retval;
845
846   cleanup = XNEW (struct gdb_readline_wrapper_cleanup);
847   cleanup->handler_orig = ui->input_handler;
848   ui->input_handler = gdb_readline_wrapper_line;
849
850   if (ui->command_editing)
851     cleanup->already_prompted_orig = rl_already_prompted;
852   else
853     cleanup->already_prompted_orig = 0;
854
855   cleanup->target_is_async_orig = target_is_async_p ();
856
857   ui->secondary_prompt_depth++;
858   back_to = make_cleanup (gdb_readline_wrapper_cleanup, cleanup);
859
860   if (cleanup->target_is_async_orig)
861     target_async (0);
862
863   /* Display our prompt and prevent double prompt display.  */
864   display_gdb_prompt (prompt);
865   if (ui->command_editing)
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   struct ui *saved_top_level = current_ui;
1424
1425   target_terminal_ours ();
1426
1427   current_ui = main_ui;
1428
1429 #if defined(TUI)
1430   tui_disable ();
1431 #endif
1432   gdb_disable_readline ();
1433
1434   current_ui = saved_top_level;
1435 }
1436
1437
1438 /* Quit without asking for confirmation.  */
1439
1440 void
1441 quit_force (char *args, int from_tty)
1442 {
1443   int exit_code = 0;
1444   struct qt_args qt;
1445
1446   undo_terminal_modifications_before_exit ();
1447
1448   /* An optional expression may be used to cause gdb to terminate with the 
1449      value of that expression.  */
1450   if (args)
1451     {
1452       struct value *val = parse_and_eval (args);
1453
1454       exit_code = (int) value_as_long (val);
1455     }
1456   else if (return_child_result)
1457     exit_code = return_child_result_value;
1458
1459   qt.args = args;
1460   qt.from_tty = from_tty;
1461
1462   /* We want to handle any quit errors and exit regardless.  */
1463
1464   /* Get out of tfind mode, and kill or detach all inferiors.  */
1465   TRY
1466     {
1467       disconnect_tracing ();
1468       iterate_over_inferiors (kill_or_detach, &qt);
1469     }
1470   CATCH (ex, RETURN_MASK_ALL)
1471     {
1472       exception_print (gdb_stderr, ex);
1473     }
1474   END_CATCH
1475
1476   /* Give all pushed targets a chance to do minimal cleanup, and pop
1477      them all out.  */
1478   TRY
1479     {
1480       pop_all_targets ();
1481     }
1482   CATCH (ex, RETURN_MASK_ALL)
1483     {
1484       exception_print (gdb_stderr, ex);
1485     }
1486   END_CATCH
1487
1488   /* Save the history information if it is appropriate to do so.  */
1489   TRY
1490     {
1491       if (write_history_p && history_filename
1492           && input_from_terminal_p ())
1493         gdb_safe_append_history ();
1494     }
1495   CATCH (ex, RETURN_MASK_ALL)
1496     {
1497       exception_print (gdb_stderr, ex);
1498     }
1499   END_CATCH
1500
1501   /* Do any final cleanups before exiting.  */
1502   TRY
1503     {
1504       do_final_cleanups (all_cleanups ());
1505     }
1506   CATCH (ex, RETURN_MASK_ALL)
1507     {
1508       exception_print (gdb_stderr, ex);
1509     }
1510   END_CATCH
1511
1512   exit (exit_code);
1513 }
1514
1515 /* Returns whether GDB is running on a terminal and input is
1516    currently coming from that terminal.  */
1517
1518 int
1519 input_from_terminal_p (void)
1520 {
1521   struct ui *ui = current_ui;
1522
1523   if (batch_flag)
1524     return 0;
1525
1526   if (gdb_has_a_terminal () && ui->instream == stdin)
1527     return 1;
1528
1529   /* If INSTREAM is unset, and we are not in a user command, we
1530      must be in Insight.  That's like having a terminal, for our
1531      purposes.  */
1532   if (ui->instream == NULL && !in_user_command)
1533     return 1;
1534
1535   return 0;
1536 }
1537 \f
1538 static void
1539 dont_repeat_command (char *ignored, int from_tty)
1540 {
1541   /* Can't call dont_repeat here because we're not necessarily reading
1542      from stdin.  */
1543   *saved_command_line = 0;
1544 }
1545 \f
1546 /* Functions to manipulate command line editing control variables.  */
1547
1548 /* Number of commands to print in each call to show_commands.  */
1549 #define Hist_print 10
1550 void
1551 show_commands (char *args, int from_tty)
1552 {
1553   /* Index for history commands.  Relative to history_base.  */
1554   int offset;
1555
1556   /* Number of the history entry which we are planning to display next.
1557      Relative to history_base.  */
1558   static int num = 0;
1559
1560   /* Print out some of the commands from the command history.  */
1561
1562   if (args)
1563     {
1564       if (args[0] == '+' && args[1] == '\0')
1565         /* "info editing +" should print from the stored position.  */
1566         ;
1567       else
1568         /* "info editing <exp>" should print around command number <exp>.  */
1569         num = (parse_and_eval_long (args) - history_base) - Hist_print / 2;
1570     }
1571   /* "show commands" means print the last Hist_print commands.  */
1572   else
1573     {
1574       num = history_length - Hist_print;
1575     }
1576
1577   if (num < 0)
1578     num = 0;
1579
1580   /* If there are at least Hist_print commands, we want to display the last
1581      Hist_print rather than, say, the last 6.  */
1582   if (history_length - num < Hist_print)
1583     {
1584       num = history_length - Hist_print;
1585       if (num < 0)
1586         num = 0;
1587     }
1588
1589   for (offset = num;
1590        offset < num + Hist_print && offset < history_length;
1591        offset++)
1592     {
1593       printf_filtered ("%5d  %s\n", history_base + offset,
1594                        (history_get (history_base + offset))->line);
1595     }
1596
1597   /* The next command we want to display is the next one that we haven't
1598      displayed yet.  */
1599   num += Hist_print;
1600
1601   /* If the user repeats this command with return, it should do what
1602      "show commands +" does.  This is unnecessary if arg is null,
1603      because "show commands +" is not useful after "show commands".  */
1604   if (from_tty && args)
1605     {
1606       args[0] = '+';
1607       args[1] = '\0';
1608     }
1609 }
1610
1611 /* Update the size of our command history file to HISTORY_SIZE.
1612
1613    A HISTORY_SIZE of -1 stands for unlimited.  */
1614
1615 static void
1616 set_readline_history_size (int history_size)
1617 {
1618   gdb_assert (history_size >= -1);
1619
1620   if (history_size == -1)
1621     unstifle_history ();
1622   else
1623     stifle_history (history_size);
1624 }
1625
1626 /* Called by do_setshow_command.  */
1627 static void
1628 set_history_size_command (char *args, int from_tty, struct cmd_list_element *c)
1629 {
1630   set_readline_history_size (history_size_setshow_var);
1631 }
1632
1633 void
1634 set_history (char *args, int from_tty)
1635 {
1636   printf_unfiltered (_("\"set history\" must be followed "
1637                        "by the name of a history subcommand.\n"));
1638   help_list (sethistlist, "set history ", all_commands, gdb_stdout);
1639 }
1640
1641 void
1642 show_history (char *args, int from_tty)
1643 {
1644   cmd_show_list (showhistlist, from_tty, "");
1645 }
1646
1647 int info_verbose = 0;           /* Default verbose msgs off.  */
1648
1649 /* Called by do_setshow_command.  An elaborate joke.  */
1650 void
1651 set_verbose (char *args, int from_tty, struct cmd_list_element *c)
1652 {
1653   const char *cmdname = "verbose";
1654   struct cmd_list_element *showcmd;
1655
1656   showcmd = lookup_cmd_1 (&cmdname, showlist, NULL, 1);
1657   gdb_assert (showcmd != NULL && showcmd != CMD_LIST_AMBIGUOUS);
1658
1659   if (info_verbose)
1660     {
1661       c->doc = "Set verbose printing of informational messages.";
1662       showcmd->doc = "Show verbose printing of informational messages.";
1663     }
1664   else
1665     {
1666       c->doc = "Set verbosity.";
1667       showcmd->doc = "Show verbosity.";
1668     }
1669 }
1670
1671 /* Init the history buffer.  Note that we are called after the init file(s)
1672    have been read so that the user can change the history file via his
1673    .gdbinit file (for instance).  The GDBHISTFILE environment variable
1674    overrides all of this.  */
1675
1676 void
1677 init_history (void)
1678 {
1679   char *tmpenv;
1680
1681   tmpenv = getenv ("GDBHISTSIZE");
1682   if (tmpenv)
1683     {
1684       long var;
1685       int saved_errno;
1686       char *endptr;
1687
1688       tmpenv = skip_spaces (tmpenv);
1689       errno = 0;
1690       var = strtol (tmpenv, &endptr, 10);
1691       saved_errno = errno;
1692       endptr = skip_spaces (endptr);
1693
1694       /* If GDBHISTSIZE is non-numeric then ignore it.  If GDBHISTSIZE is the
1695          empty string, a negative number or a huge positive number (larger than
1696          INT_MAX) then set the history size to unlimited.  Otherwise set our
1697          history size to the number we have read.  This behavior is consistent
1698          with how bash handles HISTSIZE.  */
1699       if (*endptr != '\0')
1700         ;
1701       else if (*tmpenv == '\0'
1702                || var < 0
1703                || var > INT_MAX
1704                /* On targets where INT_MAX == LONG_MAX, we have to look at
1705                   errno after calling strtol to distinguish between a value that
1706                   is exactly INT_MAX and an overflowing value that was clamped
1707                   to INT_MAX.  */
1708                || (var == INT_MAX && saved_errno == ERANGE))
1709         history_size_setshow_var = -1;
1710       else
1711         history_size_setshow_var = var;
1712     }
1713
1714   /* If neither the init file nor GDBHISTSIZE has set a size yet, pick the
1715      default.  */
1716   if (history_size_setshow_var == -2)
1717     history_size_setshow_var = 256;
1718
1719   set_readline_history_size (history_size_setshow_var);
1720
1721   tmpenv = getenv ("GDBHISTFILE");
1722   if (tmpenv)
1723     history_filename = xstrdup (tmpenv);
1724   else if (!history_filename)
1725     {
1726       /* We include the current directory so that if the user changes
1727          directories the file written will be the same as the one
1728          that was read.  */
1729 #ifdef __MSDOS__
1730       /* No leading dots in file names are allowed on MSDOS.  */
1731       history_filename = concat (current_directory, "/_gdb_history",
1732                                  (char *)NULL);
1733 #else
1734       history_filename = concat (current_directory, "/.gdb_history",
1735                                  (char *)NULL);
1736 #endif
1737     }
1738   read_history (history_filename);
1739 }
1740
1741 static void
1742 show_prompt (struct ui_file *file, int from_tty,
1743              struct cmd_list_element *c, const char *value)
1744 {
1745   fprintf_filtered (file, _("Gdb's prompt is \"%s\".\n"), value);
1746 }
1747
1748 /* "set editing" command.  */
1749
1750 static void
1751 set_editing (char *args, int from_tty, struct cmd_list_element *c)
1752 {
1753   change_line_handler (set_editing_cmd_var);
1754   /* Update the control variable so that MI's =cmd-param-changed event
1755      shows the correct value. */
1756   set_editing_cmd_var = current_ui->command_editing;
1757 }
1758
1759 static void
1760 show_editing (struct ui_file *file, int from_tty,
1761               struct cmd_list_element *c, const char *value)
1762 {
1763   fprintf_filtered (file, _("Editing of command lines as "
1764                             "they are typed is %s.\n"),
1765                     current_ui->command_editing ? _("on") : _("off"));
1766 }
1767
1768 static void
1769 show_annotation_level (struct ui_file *file, int from_tty,
1770                        struct cmd_list_element *c, const char *value)
1771 {
1772   fprintf_filtered (file, _("Annotation_level is %s.\n"), value);
1773 }
1774
1775 static void
1776 show_exec_done_display_p (struct ui_file *file, int from_tty,
1777                           struct cmd_list_element *c, const char *value)
1778 {
1779   fprintf_filtered (file, _("Notification of completion for "
1780                             "asynchronous execution commands is %s.\n"),
1781                     value);
1782 }
1783
1784 /* New values of the "data-directory" parameter are staged here.  */
1785 static char *staged_gdb_datadir;
1786
1787 /* "set" command for the gdb_datadir configuration variable.  */
1788
1789 static void
1790 set_gdb_datadir (char *args, int from_tty, struct cmd_list_element *c)
1791 {
1792   set_gdb_data_directory (staged_gdb_datadir);
1793   observer_notify_gdb_datadir_changed ();
1794 }
1795
1796 /* "show" command for the gdb_datadir configuration variable.  */
1797
1798 static void
1799 show_gdb_datadir (struct ui_file *file, int from_tty,
1800                   struct cmd_list_element *c, const char *value)
1801 {
1802   fprintf_filtered (file, _("GDB's data directory is \"%s\".\n"),
1803                     gdb_datadir);
1804 }
1805
1806 static void
1807 set_history_filename (char *args, int from_tty, struct cmd_list_element *c)
1808 {
1809   /* We include the current directory so that if the user changes
1810      directories the file written will be the same as the one
1811      that was read.  */
1812   if (!IS_ABSOLUTE_PATH (history_filename))
1813     history_filename = reconcat (history_filename, current_directory, "/", 
1814                                  history_filename, (char *) NULL);
1815 }
1816
1817 static void
1818 init_main (void)
1819 {
1820   /* Initialize the prompt to a simple "(gdb) " prompt or to whatever
1821      the DEFAULT_PROMPT is.  */
1822   set_prompt (DEFAULT_PROMPT);
1823
1824   /* Set the important stuff up for command editing.  */
1825   command_editing_p = 1;
1826   history_expansion_p = 0;
1827   write_history_p = 0;
1828
1829   /* Setup important stuff for command line editing.  */
1830   rl_completion_word_break_hook = gdb_completion_word_break_characters;
1831   rl_completion_entry_function = readline_line_completion_function;
1832   rl_completer_word_break_characters = default_word_break_characters ();
1833   rl_completer_quote_characters = get_gdb_completer_quote_characters ();
1834   rl_completion_display_matches_hook = cli_display_match_list;
1835   rl_readline_name = "gdb";
1836   rl_terminal_name = getenv ("TERM");
1837
1838   /* The name for this defun comes from Bash, where it originated.
1839      15 is Control-o, the same binding this function has in Bash.  */
1840   rl_add_defun ("operate-and-get-next", gdb_rl_operate_and_get_next, 15);
1841
1842   add_setshow_string_cmd ("prompt", class_support,
1843                           &top_prompt,
1844                           _("Set gdb's prompt"),
1845                           _("Show gdb's prompt"),
1846                           NULL, NULL,
1847                           show_prompt,
1848                           &setlist, &showlist);
1849
1850   add_com ("dont-repeat", class_support, dont_repeat_command, _("\
1851 Don't repeat this command.\nPrimarily \
1852 used inside of user-defined commands that should not be repeated when\n\
1853 hitting return."));
1854
1855   add_setshow_boolean_cmd ("editing", class_support,
1856                            &set_editing_cmd_var, _("\
1857 Set editing of command lines as they are typed."), _("\
1858 Show editing of command lines as they are typed."), _("\
1859 Use \"on\" to enable the editing, and \"off\" to disable it.\n\
1860 Without an argument, command line editing is enabled.  To edit, use\n\
1861 EMACS-like or VI-like commands like control-P or ESC."),
1862                            set_editing,
1863                            show_editing,
1864                            &setlist, &showlist);
1865
1866   add_setshow_boolean_cmd ("save", no_class, &write_history_p, _("\
1867 Set saving of the history record on exit."), _("\
1868 Show saving of the history record on exit."), _("\
1869 Use \"on\" to enable the saving, and \"off\" to disable it.\n\
1870 Without an argument, saving is enabled."),
1871                            NULL,
1872                            show_write_history_p,
1873                            &sethistlist, &showhistlist);
1874
1875   add_setshow_zuinteger_unlimited_cmd ("size", no_class,
1876                                        &history_size_setshow_var, _("\
1877 Set the size of the command history,"), _("\
1878 Show the size of the command history,"), _("\
1879 ie. the number of previous commands to keep a record of.\n\
1880 If set to \"unlimited\", the number of commands kept in the history\n\
1881 list is unlimited.  This defaults to the value of the environment\n\
1882 variable \"GDBHISTSIZE\", or to 256 if this variable is not set."),
1883                             set_history_size_command,
1884                             show_history_size,
1885                             &sethistlist, &showhistlist);
1886
1887   add_setshow_zuinteger_unlimited_cmd ("remove-duplicates", no_class,
1888                                        &history_remove_duplicates, _("\
1889 Set how far back in history to look for and remove duplicate entries."), _("\
1890 Show how far back in history to look for and remove duplicate entries."), _("\
1891 If set to a nonzero value N, GDB will look back at the last N history entries\n\
1892 and remove the first history entry that is a duplicate of the most recent\n\
1893 entry, each time a new history entry is added.\n\
1894 If set to \"unlimited\", this lookbehind is unbounded.\n\
1895 Only history entries added during this session are considered for removal.\n\
1896 If set to 0, removal of duplicate history entries is disabled.\n\
1897 By default this option is set to 0."),
1898                            NULL,
1899                            show_history_remove_duplicates,
1900                            &sethistlist, &showhistlist);
1901
1902   add_setshow_filename_cmd ("filename", no_class, &history_filename, _("\
1903 Set the filename in which to record the command history"), _("\
1904 Show the filename in which to record the command history"), _("\
1905 (the list of previous commands of which a record is kept)."),
1906                             set_history_filename,
1907                             show_history_filename,
1908                             &sethistlist, &showhistlist);
1909
1910   add_setshow_boolean_cmd ("confirm", class_support, &confirm, _("\
1911 Set whether to confirm potentially dangerous operations."), _("\
1912 Show whether to confirm potentially dangerous operations."), NULL,
1913                            NULL,
1914                            show_confirm,
1915                            &setlist, &showlist);
1916
1917   add_setshow_zinteger_cmd ("annotate", class_obscure, &annotation_level, _("\
1918 Set annotation_level."), _("\
1919 Show annotation_level."), _("\
1920 0 == normal;     1 == fullname (for use when running under emacs)\n\
1921 2 == output annotated suitably for use by programs that control GDB."),
1922                             NULL,
1923                             show_annotation_level,
1924                             &setlist, &showlist);
1925
1926   add_setshow_boolean_cmd ("exec-done-display", class_support,
1927                            &exec_done_display_p, _("\
1928 Set notification of completion for asynchronous execution commands."), _("\
1929 Show notification of completion for asynchronous execution commands."), _("\
1930 Use \"on\" to enable the notification, and \"off\" to disable it."),
1931                            NULL,
1932                            show_exec_done_display_p,
1933                            &setlist, &showlist);
1934
1935   add_setshow_filename_cmd ("data-directory", class_maintenance,
1936                            &staged_gdb_datadir, _("Set GDB's data directory."),
1937                            _("Show GDB's data directory."),
1938                            _("\
1939 When set, GDB uses the specified path to search for data files."),
1940                            set_gdb_datadir, show_gdb_datadir,
1941                            &setlist,
1942                            &showlist);
1943 }
1944
1945 void
1946 gdb_init (char *argv0)
1947 {
1948   if (pre_init_ui_hook)
1949     pre_init_ui_hook ();
1950
1951   /* Run the init function of each source file.  */
1952
1953 #ifdef __MSDOS__
1954   /* Make sure we return to the original directory upon exit, come
1955      what may, since the OS doesn't do that for us.  */
1956   make_final_cleanup (do_chdir_cleanup, xstrdup (current_directory));
1957 #endif
1958
1959   init_cmd_lists ();        /* This needs to be done first.  */
1960   initialize_targets ();    /* Setup target_terminal macros for utils.c.  */
1961   initialize_utils ();      /* Make errors and warnings possible.  */
1962
1963   init_page_info ();
1964
1965   /* Here is where we call all the _initialize_foo routines.  */
1966   initialize_all_files ();
1967
1968   /* This creates the current_program_space.  Do this after all the
1969      _initialize_foo routines have had a chance to install their
1970      per-sspace data keys.  Also do this before
1971      initialize_current_architecture is called, because it accesses
1972      exec_bfd of the current program space.  */
1973   initialize_progspace ();
1974   initialize_inferiors ();
1975   initialize_current_architecture ();
1976   init_cli_cmds();
1977   init_main ();                 /* But that omits this file!  Do it now.  */
1978
1979   initialize_stdin_serial ();
1980
1981   /* Take a snapshot of our tty state before readline/ncurses have had a chance
1982      to alter it.  */
1983   set_initial_gdb_ttystate ();
1984
1985   async_init_signals ();
1986
1987   /* We need a default language for parsing expressions, so simple
1988      things like "set width 0" won't fail if no language is explicitly
1989      set in a config file or implicitly set by reading an executable
1990      during startup.  */
1991   set_language (language_c);
1992   expected_language = current_language; /* Don't warn about the change.  */
1993
1994   /* Python initialization, for example, can require various commands to be
1995      installed.  For example "info pretty-printer" needs the "info"
1996      prefix to be installed.  Keep things simple and just do final
1997      script initialization here.  */
1998   finish_ext_lang_initialization ();
1999 }