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