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