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