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