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