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