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