Change server_command to bool
[deliverable/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 struct ui *ui;
1786 int save = 0;
1787
1788 /* History is currently shared between all UIs. If there's
1789 any UI with a terminal, save history. */
1790 ALL_UIS (ui)
1791 {
1792 if (input_interactive_p (ui))
1793 {
1794 save = 1;
1795 break;
1796 }
1797 }
1798
1799 if (save)
1800 gdb_safe_append_history ();
1801 }
1802 }
1803 catch (const gdb_exception &ex)
1804 {
1805 exception_print (gdb_stderr, ex);
1806 }
1807
1808 /* Destroy any values currently allocated now instead of leaving it
1809 to global destructors, because that may be too late. For
1810 example, the destructors of xmethod values call into the Python
1811 runtime, which is finalized via a final cleanup. */
1812 finalize_values ();
1813
1814 /* Do any final cleanups before exiting. */
1815 try
1816 {
1817 do_final_cleanups ();
1818 }
1819 catch (const gdb_exception &ex)
1820 {
1821 exception_print (gdb_stderr, ex);
1822 }
1823
1824 exit (exit_code);
1825 }
1826
1827 /* The value of the "interactive-mode" setting. */
1828 static enum auto_boolean interactive_mode = AUTO_BOOLEAN_AUTO;
1829
1830 /* Implement the "show interactive-mode" option. */
1831
1832 static void
1833 show_interactive_mode (struct ui_file *file, int from_tty,
1834 struct cmd_list_element *c,
1835 const char *value)
1836 {
1837 if (interactive_mode == AUTO_BOOLEAN_AUTO)
1838 fprintf_filtered (file, "Debugger's interactive mode "
1839 "is %s (currently %s).\n",
1840 value, input_interactive_p (current_ui) ? "on" : "off");
1841 else
1842 fprintf_filtered (file, "Debugger's interactive mode is %s.\n", value);
1843 }
1844
1845 /* Returns whether GDB is running on an interactive terminal. */
1846
1847 int
1848 input_interactive_p (struct ui *ui)
1849 {
1850 if (batch_flag)
1851 return 0;
1852
1853 if (interactive_mode != AUTO_BOOLEAN_AUTO)
1854 return interactive_mode == AUTO_BOOLEAN_TRUE;
1855
1856 return ui->input_interactive_p;
1857 }
1858 \f
1859 static void
1860 dont_repeat_command (const char *ignored, int from_tty)
1861 {
1862 /* Can't call dont_repeat here because we're not necessarily reading
1863 from stdin. */
1864 *saved_command_line = 0;
1865 }
1866 \f
1867 /* Functions to manipulate command line editing control variables. */
1868
1869 /* Number of commands to print in each call to show_commands. */
1870 #define Hist_print 10
1871 void
1872 show_commands (const char *args, int from_tty)
1873 {
1874 /* Index for history commands. Relative to history_base. */
1875 int offset;
1876
1877 /* Number of the history entry which we are planning to display next.
1878 Relative to history_base. */
1879 static int num = 0;
1880
1881 /* Print out some of the commands from the command history. */
1882
1883 if (args)
1884 {
1885 if (args[0] == '+' && args[1] == '\0')
1886 /* "info editing +" should print from the stored position. */
1887 ;
1888 else
1889 /* "info editing <exp>" should print around command number <exp>. */
1890 num = (parse_and_eval_long (args) - history_base) - Hist_print / 2;
1891 }
1892 /* "show commands" means print the last Hist_print commands. */
1893 else
1894 {
1895 num = history_length - Hist_print;
1896 }
1897
1898 if (num < 0)
1899 num = 0;
1900
1901 /* If there are at least Hist_print commands, we want to display the last
1902 Hist_print rather than, say, the last 6. */
1903 if (history_length - num < Hist_print)
1904 {
1905 num = history_length - Hist_print;
1906 if (num < 0)
1907 num = 0;
1908 }
1909
1910 for (offset = num;
1911 offset < num + Hist_print && offset < history_length;
1912 offset++)
1913 {
1914 printf_filtered ("%5d %s\n", history_base + offset,
1915 (history_get (history_base + offset))->line);
1916 }
1917
1918 /* The next command we want to display is the next one that we haven't
1919 displayed yet. */
1920 num += Hist_print;
1921
1922 /* If the user repeats this command with return, it should do what
1923 "show commands +" does. This is unnecessary if arg is null,
1924 because "show commands +" is not useful after "show commands". */
1925 if (from_tty && args)
1926 set_repeat_arguments ("+");
1927 }
1928
1929 /* Update the size of our command history file to HISTORY_SIZE.
1930
1931 A HISTORY_SIZE of -1 stands for unlimited. */
1932
1933 static void
1934 set_readline_history_size (int history_size)
1935 {
1936 gdb_assert (history_size >= -1);
1937
1938 if (history_size == -1)
1939 unstifle_history ();
1940 else
1941 stifle_history (history_size);
1942 }
1943
1944 /* Called by do_setshow_command. */
1945 static void
1946 set_history_size_command (const char *args,
1947 int from_tty, struct cmd_list_element *c)
1948 {
1949 set_readline_history_size (history_size_setshow_var);
1950 }
1951
1952 bool info_verbose = false; /* Default verbose msgs off. */
1953
1954 /* Called by do_set_command. An elaborate joke. */
1955 void
1956 set_verbose (const char *args, int from_tty, struct cmd_list_element *c)
1957 {
1958 const char *cmdname = "verbose";
1959 struct cmd_list_element *showcmd;
1960
1961 showcmd = lookup_cmd_1 (&cmdname, showlist, NULL, 1);
1962 gdb_assert (showcmd != NULL && showcmd != CMD_LIST_AMBIGUOUS);
1963
1964 if (c->doc && c->doc_allocated)
1965 xfree ((char *) c->doc);
1966 if (showcmd->doc && showcmd->doc_allocated)
1967 xfree ((char *) showcmd->doc);
1968 if (info_verbose)
1969 {
1970 c->doc = _("Set verbose printing of informational messages.");
1971 showcmd->doc = _("Show verbose printing of informational messages.");
1972 }
1973 else
1974 {
1975 c->doc = _("Set verbosity.");
1976 showcmd->doc = _("Show verbosity.");
1977 }
1978 c->doc_allocated = 0;
1979 showcmd->doc_allocated = 0;
1980 }
1981
1982 /* Init the history buffer. Note that we are called after the init file(s)
1983 have been read so that the user can change the history file via his
1984 .gdbinit file (for instance). The GDBHISTFILE environment variable
1985 overrides all of this. */
1986
1987 void
1988 init_history (void)
1989 {
1990 const char *tmpenv;
1991
1992 tmpenv = getenv ("GDBHISTSIZE");
1993 if (tmpenv)
1994 {
1995 long var;
1996 int saved_errno;
1997 char *endptr;
1998
1999 tmpenv = skip_spaces (tmpenv);
2000 errno = 0;
2001 var = strtol (tmpenv, &endptr, 10);
2002 saved_errno = errno;
2003 endptr = skip_spaces (endptr);
2004
2005 /* If GDBHISTSIZE is non-numeric then ignore it. If GDBHISTSIZE is the
2006 empty string, a negative number or a huge positive number (larger than
2007 INT_MAX) then set the history size to unlimited. Otherwise set our
2008 history size to the number we have read. This behavior is consistent
2009 with how bash handles HISTSIZE. */
2010 if (*endptr != '\0')
2011 ;
2012 else if (*tmpenv == '\0'
2013 || var < 0
2014 || var > INT_MAX
2015 /* On targets where INT_MAX == LONG_MAX, we have to look at
2016 errno after calling strtol to distinguish between a value that
2017 is exactly INT_MAX and an overflowing value that was clamped
2018 to INT_MAX. */
2019 || (var == INT_MAX && saved_errno == ERANGE))
2020 history_size_setshow_var = -1;
2021 else
2022 history_size_setshow_var = var;
2023 }
2024
2025 /* If neither the init file nor GDBHISTSIZE has set a size yet, pick the
2026 default. */
2027 if (history_size_setshow_var == -2)
2028 history_size_setshow_var = 256;
2029
2030 set_readline_history_size (history_size_setshow_var);
2031
2032 tmpenv = getenv ("GDBHISTFILE");
2033 if (tmpenv != nullptr)
2034 history_filename = xstrdup (tmpenv);
2035 else if (history_filename == nullptr)
2036 {
2037 /* We include the current directory so that if the user changes
2038 directories the file written will be the same as the one
2039 that was read. */
2040 #ifdef __MSDOS__
2041 /* No leading dots in file names are allowed on MSDOS. */
2042 const char *fname = "_gdb_history";
2043 #else
2044 const char *fname = ".gdb_history";
2045 #endif
2046
2047 gdb::unique_xmalloc_ptr<char> temp (gdb_abspath (fname));
2048 history_filename = temp.release ();
2049 }
2050
2051 if (!history_filename_empty ())
2052 read_history (history_filename);
2053 }
2054
2055 static void
2056 show_prompt (struct ui_file *file, int from_tty,
2057 struct cmd_list_element *c, const char *value)
2058 {
2059 fprintf_filtered (file, _("Gdb's prompt is \"%s\".\n"), value);
2060 }
2061
2062 /* "set editing" command. */
2063
2064 static void
2065 set_editing (const char *args, int from_tty, struct cmd_list_element *c)
2066 {
2067 change_line_handler (set_editing_cmd_var);
2068 /* Update the control variable so that MI's =cmd-param-changed event
2069 shows the correct value. */
2070 set_editing_cmd_var = current_ui->command_editing;
2071 }
2072
2073 static void
2074 show_editing (struct ui_file *file, int from_tty,
2075 struct cmd_list_element *c, const char *value)
2076 {
2077 fprintf_filtered (file, _("Editing of command lines as "
2078 "they are typed is %s.\n"),
2079 current_ui->command_editing ? _("on") : _("off"));
2080 }
2081
2082 static void
2083 show_annotation_level (struct ui_file *file, int from_tty,
2084 struct cmd_list_element *c, const char *value)
2085 {
2086 fprintf_filtered (file, _("Annotation_level is %s.\n"), value);
2087 }
2088
2089 static void
2090 show_exec_done_display_p (struct ui_file *file, int from_tty,
2091 struct cmd_list_element *c, const char *value)
2092 {
2093 fprintf_filtered (file, _("Notification of completion for "
2094 "asynchronous execution commands is %s.\n"),
2095 value);
2096 }
2097
2098 /* New values of the "data-directory" parameter are staged here. */
2099 static char *staged_gdb_datadir;
2100
2101 /* "set" command for the gdb_datadir configuration variable. */
2102
2103 static void
2104 set_gdb_datadir (const char *args, int from_tty, struct cmd_list_element *c)
2105 {
2106 set_gdb_data_directory (staged_gdb_datadir);
2107 gdb::observers::gdb_datadir_changed.notify ();
2108 }
2109
2110 /* "show" command for the gdb_datadir configuration variable. */
2111
2112 static void
2113 show_gdb_datadir (struct ui_file *file, int from_tty,
2114 struct cmd_list_element *c, const char *value)
2115 {
2116 fprintf_filtered (file, _("GDB's data directory is \"%ps\".\n"),
2117 styled_string (file_name_style.style (),
2118 gdb_datadir.c_str ()));
2119 }
2120
2121 /* Implement 'set history filename'. */
2122
2123 static void
2124 set_history_filename (const char *args,
2125 int from_tty, struct cmd_list_element *c)
2126 {
2127 /* We include the current directory so that if the user changes
2128 directories the file written will be the same as the one
2129 that was read. */
2130 if (!history_filename_empty () && !IS_ABSOLUTE_PATH (history_filename))
2131 {
2132 gdb::unique_xmalloc_ptr<char> temp (gdb_abspath (history_filename));
2133
2134 xfree (history_filename);
2135 history_filename = temp.release ();
2136 }
2137 }
2138
2139 static void
2140 init_gdb_version_vars (void)
2141 {
2142 struct internalvar *major_version_var = create_internalvar ("_gdb_major");
2143 struct internalvar *minor_version_var = create_internalvar ("_gdb_minor");
2144 int vmajor = 0, vminor = 0, vrevision = 0;
2145 sscanf (version, "%d.%d.%d", &vmajor, &vminor, &vrevision);
2146 set_internalvar_integer (major_version_var, vmajor);
2147 set_internalvar_integer (minor_version_var, vminor + (vrevision > 0));
2148 }
2149
2150 static void
2151 init_main (void)
2152 {
2153 struct cmd_list_element *c;
2154
2155 /* Initialize the prompt to a simple "(gdb) " prompt or to whatever
2156 the DEFAULT_PROMPT is. */
2157 set_prompt (DEFAULT_PROMPT);
2158
2159 /* Set the important stuff up for command editing. */
2160 command_editing_p = 1;
2161 history_expansion_p = 0;
2162 write_history_p = 0;
2163
2164 /* Setup important stuff for command line editing. */
2165 rl_completion_word_break_hook = gdb_completion_word_break_characters;
2166 rl_attempted_completion_function = gdb_rl_attempted_completion_function;
2167 set_rl_completer_word_break_characters (default_word_break_characters ());
2168 rl_completer_quote_characters = get_gdb_completer_quote_characters ();
2169 rl_completion_display_matches_hook = cli_display_match_list;
2170 rl_readline_name = "gdb";
2171 rl_terminal_name = getenv ("TERM");
2172
2173 /* The name for this defun comes from Bash, where it originated.
2174 15 is Control-o, the same binding this function has in Bash. */
2175 rl_add_defun ("operate-and-get-next", gdb_rl_operate_and_get_next, 15);
2176
2177 add_setshow_string_cmd ("prompt", class_support,
2178 &top_prompt,
2179 _("Set gdb's prompt."),
2180 _("Show gdb's prompt."),
2181 NULL, NULL,
2182 show_prompt,
2183 &setlist, &showlist);
2184
2185 add_com ("dont-repeat", class_support, dont_repeat_command, _("\
2186 Don't repeat this command.\nPrimarily \
2187 used inside of user-defined commands that should not be repeated when\n\
2188 hitting return."));
2189
2190 add_setshow_boolean_cmd ("editing", class_support,
2191 &set_editing_cmd_var, _("\
2192 Set editing of command lines as they are typed."), _("\
2193 Show editing of command lines as they are typed."), _("\
2194 Use \"on\" to enable the editing, and \"off\" to disable it.\n\
2195 Without an argument, command line editing is enabled. To edit, use\n\
2196 EMACS-like or VI-like commands like control-P or ESC."),
2197 set_editing,
2198 show_editing,
2199 &setlist, &showlist);
2200
2201 add_setshow_boolean_cmd ("save", no_class, &write_history_p, _("\
2202 Set saving of the history record on exit."), _("\
2203 Show saving of the history record on exit."), _("\
2204 Use \"on\" to enable the saving, and \"off\" to disable it.\n\
2205 Without an argument, saving is enabled."),
2206 NULL,
2207 show_write_history_p,
2208 &sethistlist, &showhistlist);
2209
2210 add_setshow_zuinteger_unlimited_cmd ("size", no_class,
2211 &history_size_setshow_var, _("\
2212 Set the size of the command history."), _("\
2213 Show the size of the command history."), _("\
2214 This is the number of previous commands to keep a record of.\n\
2215 If set to \"unlimited\", the number of commands kept in the history\n\
2216 list is unlimited. This defaults to the value of the environment\n\
2217 variable \"GDBHISTSIZE\", or to 256 if this variable is not set."),
2218 set_history_size_command,
2219 show_history_size,
2220 &sethistlist, &showhistlist);
2221
2222 add_setshow_zuinteger_unlimited_cmd ("remove-duplicates", no_class,
2223 &history_remove_duplicates, _("\
2224 Set how far back in history to look for and remove duplicate entries."), _("\
2225 Show how far back in history to look for and remove duplicate entries."), _("\
2226 If set to a nonzero value N, GDB will look back at the last N history entries\n\
2227 and remove the first history entry that is a duplicate of the most recent\n\
2228 entry, each time a new history entry is added.\n\
2229 If set to \"unlimited\", this lookbehind is unbounded.\n\
2230 Only history entries added during this session are considered for removal.\n\
2231 If set to 0, removal of duplicate history entries is disabled.\n\
2232 By default this option is set to 0."),
2233 NULL,
2234 show_history_remove_duplicates,
2235 &sethistlist, &showhistlist);
2236
2237 add_setshow_optional_filename_cmd ("filename", no_class, &history_filename, _("\
2238 Set the filename in which to record the command history."), _("\
2239 Show the filename in which to record the command history."), _("\
2240 (the list of previous commands of which a record is kept)."),
2241 set_history_filename,
2242 show_history_filename,
2243 &sethistlist, &showhistlist);
2244
2245 add_setshow_boolean_cmd ("confirm", class_support, &confirm, _("\
2246 Set whether to confirm potentially dangerous operations."), _("\
2247 Show whether to confirm potentially dangerous operations."), NULL,
2248 NULL,
2249 show_confirm,
2250 &setlist, &showlist);
2251
2252 add_setshow_zinteger_cmd ("annotate", class_obscure, &annotation_level, _("\
2253 Set annotation_level."), _("\
2254 Show annotation_level."), _("\
2255 0 == normal; 1 == fullname (for use when running under emacs)\n\
2256 2 == output annotated suitably for use by programs that control GDB."),
2257 NULL,
2258 show_annotation_level,
2259 &setlist, &showlist);
2260
2261 add_setshow_boolean_cmd ("exec-done-display", class_support,
2262 &exec_done_display_p, _("\
2263 Set notification of completion for asynchronous execution commands."), _("\
2264 Show notification of completion for asynchronous execution commands."), _("\
2265 Use \"on\" to enable the notification, and \"off\" to disable it."),
2266 NULL,
2267 show_exec_done_display_p,
2268 &setlist, &showlist);
2269
2270 add_setshow_filename_cmd ("data-directory", class_maintenance,
2271 &staged_gdb_datadir, _("Set GDB's data directory."),
2272 _("Show GDB's data directory."),
2273 _("\
2274 When set, GDB uses the specified path to search for data files."),
2275 set_gdb_datadir, show_gdb_datadir,
2276 &setlist,
2277 &showlist);
2278
2279 add_setshow_auto_boolean_cmd ("interactive-mode", class_support,
2280 &interactive_mode, _("\
2281 Set whether GDB's standard input is a terminal."), _("\
2282 Show whether GDB's standard input is a terminal."), _("\
2283 If on, GDB assumes that standard input is a terminal. In practice, it\n\
2284 means that GDB should wait for the user to answer queries associated to\n\
2285 commands entered at the command prompt. If off, GDB assumes that standard\n\
2286 input is not a terminal, and uses the default answer to all queries.\n\
2287 If auto (the default), determine which mode to use based on the standard\n\
2288 input settings."),
2289 NULL,
2290 show_interactive_mode,
2291 &setlist, &showlist);
2292
2293 c = add_cmd ("new-ui", class_support, new_ui_command, _("\
2294 Create a new UI.\n\
2295 Usage: new-ui INTERPRETER TTY\n\
2296 The first argument is the name of the interpreter to run.\n\
2297 The second argument is the terminal the UI runs on."), &cmdlist);
2298 set_cmd_completer (c, interpreter_completer);
2299 }
2300
2301 void
2302 gdb_init (char *argv0)
2303 {
2304 saved_command_line = xstrdup ("");
2305 previous_saved_command_line = xstrdup ("");
2306
2307 if (pre_init_ui_hook)
2308 pre_init_ui_hook ();
2309
2310 /* Run the init function of each source file. */
2311
2312 #ifdef __MSDOS__
2313 /* Make sure we return to the original directory upon exit, come
2314 what may, since the OS doesn't do that for us. */
2315 make_final_cleanup (do_chdir_cleanup, xstrdup (current_directory));
2316 #endif
2317
2318 init_cmd_lists (); /* This needs to be done first. */
2319
2320 init_page_info ();
2321
2322 /* Here is where we call all the _initialize_foo routines. */
2323 initialize_all_files ();
2324
2325 /* This creates the current_program_space. Do this after all the
2326 _initialize_foo routines have had a chance to install their
2327 per-sspace data keys. Also do this before
2328 initialize_current_architecture is called, because it accesses
2329 exec_bfd of the current program space. */
2330 initialize_progspace ();
2331 initialize_inferiors ();
2332 initialize_current_architecture ();
2333 init_main (); /* But that omits this file! Do it now. */
2334
2335 initialize_stdin_serial ();
2336
2337 /* Take a snapshot of our tty state before readline/ncurses have had a chance
2338 to alter it. */
2339 set_initial_gdb_ttystate ();
2340
2341 async_init_signals ();
2342
2343 /* We need a default language for parsing expressions, so simple
2344 things like "set width 0" won't fail if no language is explicitly
2345 set in a config file or implicitly set by reading an executable
2346 during startup. */
2347 set_language (language_c);
2348 expected_language = current_language; /* Don't warn about the change. */
2349
2350 /* Python initialization, for example, can require various commands to be
2351 installed. For example "info pretty-printer" needs the "info"
2352 prefix to be installed. Keep things simple and just do final
2353 script initialization here. */
2354 finish_ext_lang_initialization ();
2355
2356 /* Create $_gdb_major and $_gdb_minor convenience variables. */
2357 init_gdb_version_vars ();
2358 }
This page took 0.076204 seconds and 5 git commands to generate.