gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gdb / top.c
CommitLineData
c906108c 1/* Top level stuff for GDB, the GNU debugger.
a752853e 2
b811d2c2 3 Copyright (C) 1986-2020 Free Software Foundation, Inc.
c906108c 4
c5aa993b 5 This file is part of GDB.
c906108c 6
c5aa993b
JM
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
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
c5aa993b 10 (at your option) any later version.
c906108c 11
c5aa993b
JM
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.
c906108c 16
c5aa993b 17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
19
20#include "defs.h"
21#include "gdbcmd.h"
210661e7
EZ
22#include "cli/cli-cmds.h"
23#include "cli/cli-script.h"
24#include "cli/cli-setshow.h"
18a642a1 25#include "cli/cli-decode.h"
c906108c
SS
26#include "symtab.h"
27#include "inferior.h"
45741a9c 28#include "infrun.h"
042be3a9 29#include <signal.h>
c906108c 30#include "target.h"
68c765e2 31#include "target-dcache.h"
c906108c
SS
32#include "breakpoint.h"
33#include "gdbtypes.h"
34#include "expression.h"
35#include "value.h"
36#include "language.h"
766f8836 37#include "terminal.h"
268a13a5 38#include "gdbsupport/job-control.h"
c906108c 39#include "annotate.h"
c5f0f3d0 40#include "completer.h"
c906108c 41#include "top.h"
268a13a5 42#include "gdbsupport/version.h"
210661e7 43#include "serial.h"
f17517ea 44#include "main.h"
400b5eca 45#include "gdbsupport/event-loop.h"
8ea051c5 46#include "gdbthread.h"
6dddc817 47#include "extension.h"
b4a14fd0 48#include "interps.h"
76727919 49#include "observable.h"
bd712aed 50#include "maint.h"
97c85fc6 51#include "filenames.h"
06096720 52#include "frame.h"
268a13a5 53#include "gdbsupport/buffer.h"
06cc9596 54#include "gdbsupport/gdb_select.h"
268a13a5 55#include "gdbsupport/scope-exit.h"
0d12e84c 56#include "gdbarch.h"
ff8577f6 57#include "gdbsupport/pathstuff.h"
6ec1d75e 58#include "cli/cli-style.h"
c906108c 59
371d5dec 60/* readline include files. */
dbda9972
AC
61#include "readline/readline.h"
62#include "readline/history.h"
c906108c
SS
63
64/* readline defines this. */
65#undef savestring
66
67#include <sys/types.h>
c906108c 68
c2c6d25f 69#include "event-top.h"
53ce3c39 70#include <sys/stat.h>
c906108c 71#include <ctype.h>
8b93c638
JM
72#include "ui-out.h"
73#include "cli-out.h"
2f9d54cf 74#include "tracepoint.h"
93d6eb10 75#include "inf-loop.h"
c906108c 76
18206ca3
PP
77#if defined(TUI)
78# include "tui/tui.h"
79#endif
80
60eb5395
PA
81#ifndef O_NOCTTY
82# define O_NOCTTY 0
83#endif
84
ca7b0bbc
TT
85extern void initialize_all_files (void);
86
63e163f2
AB
87static bool history_filename_empty (void);
88
95298e72
PM
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
405feb71 93/* Default command line prompt. This is overridden in some configs. */
104c1213
JM
94
95#ifndef DEFAULT_PROMPT
96#define DEFAULT_PROMPT "(gdb) "
c906108c
SS
97#endif
98
87fb00ea
SM
99struct ui_file **
100current_ui_gdb_stdout_ptr ()
101{
102 return &current_ui->m_gdb_stdout;
79aa2fe8
PA
103}
104
87fb00ea
SM
105struct ui_file **
106current_ui_gdb_stdin_ptr ()
107{
108 return &current_ui->m_gdb_stdin;
109}
110
111struct ui_file **
112current_ui_gdb_stderr_ptr ()
113{
114 return &current_ui->m_gdb_stderr;
115}
116
117struct ui_file **
118current_ui_gdb_stdlog_ptr ()
119{
120 return &current_ui->m_gdb_stdlog;
121}
122
123struct ui_out **
124current_ui_current_uiout_ptr ()
125{
126 return &current_ui->m_current_uiout;
127}
79aa2fe8 128
c906108c
SS
129int inhibit_gdbinit = 0;
130
050a2e1d
PA
131/* Flag for whether we want to confirm potentially dangerous
132 operations. Default is yes. */
133
491144b5 134bool confirm = true;
c906108c 135
920d2a44 136static void
e360902b 137show_confirm (struct ui_file *file, int from_tty,
920d2a44
AC
138 struct cmd_list_element *c, const char *value)
139{
3e43a32a
MS
140 fprintf_filtered (file, _("Whether to confirm potentially "
141 "dangerous operations is %s.\n"),
920d2a44
AC
142 value);
143}
c906108c 144
c906108c
SS
145/* Current working directory. */
146
147char *current_directory;
148
2669cade 149/* The last command line executed on the console. Used for command
68bb5386
PW
150 repetitions when the user enters an empty line. */
151
152static char *saved_command_line;
153
154/* If not NULL, the arguments that should be passed if
155 saved_command_line is repeated. */
156
157static 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
164char *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
169static const char *previous_repeat_arguments;
c906108c
SS
170
171/* Nonzero if the current command is modified by "server ". This
c2d11a7d 172 affects things like recording into the command history, commands
c906108c
SS
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. */
2f78cffc 177bool server_command;
c906108c 178
371d5dec 179/* Timeout limit for response from target. */
c906108c 180
7734102d
EZ
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
ce808e91 183 to sit and wait, so it was changed to 2 seconds. That was thought
7734102d 184 to be plenty unless the connection was going through some terminal
ce808e91
AC
185 server or multiplexer or other form of hairy serial connection.
186
7734102d 187 In mid-1996, remote_timeout was moved from remote.c to top.c and
ce808e91
AC
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
85a453d5 190 Renesas E7000 ICE didn't always respond in a timely manner.
ce808e91
AC
191
192 But if 5 seconds is a long time to sit and wait for retransmissions,
7734102d 193 20 seconds is far worse. This demonstrates the difficulty of using
ce808e91
AC
194 a single variable for all protocol timeouts.
195
7734102d 196 As remote.c is used much more than remote-e7000.c, it was changed
371d5dec 197 back to 2 seconds in 1999. */
ce808e91
AC
198
199int remote_timeout = 2;
c906108c
SS
200
201/* Non-zero tells remote* modules to output debugging info. */
202
203int remote_debug = 0;
204
6dd77b81 205/* Sbrk location on entry to main. Used for statistics only. */
6242c6a6 206#ifdef HAVE_USEFUL_SBRK
6dd77b81
RH
207char *lim_at_start;
208#endif
209
c906108c
SS
210/* Hooks for alternate command interfaces. */
211
371d5dec
MS
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. */
7a292a7a 216
98bbd631 217int (*deprecated_ui_loop_hook) (int);
c906108c 218
c906108c 219
c906108c
SS
220/* Called from print_frame_info to list the line we stopped in. */
221
7734102d 222void (*deprecated_print_frame_info_listing_hook) (struct symtab * s,
371d5dec 223 int line,
7734102d 224 int stopline,
371d5dec 225 int noerror);
c906108c
SS
226/* Replaces most of query. */
227
9a4105ab 228int (*deprecated_query_hook) (const char *, va_list);
c906108c
SS
229
230/* Replaces most of warning. */
231
9a4105ab 232void (*deprecated_warning_hook) (const char *, va_list);
c906108c 233
9a4105ab
AC
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. */
c906108c 245
a121b7c1 246void (*deprecated_readline_begin_hook) (const char *, ...);
38bcc89d 247char *(*deprecated_readline_hook) (const char *);
9a4105ab 248void (*deprecated_readline_end_hook) (void);
c906108c 249
6426a772 250/* Called as appropriate to notify the interface that we have attached
371d5dec 251 to or detached from an already running process. */
6426a772 252
9a4105ab
AC
253void (*deprecated_attach_hook) (void);
254void (*deprecated_detach_hook) (void);
6426a772 255
371d5dec
MS
256/* Called when going to wait for the target. Usually allows the GUI
257 to run while waiting for target events. */
c906108c 258
9a4105ab 259ptid_t (*deprecated_target_wait_hook) (ptid_t ptid,
47608cb1
PA
260 struct target_waitstatus *status,
261 int options);
c906108c 262
371d5dec
MS
263/* Used by UI as a wrapper around command execution. May do various
264 things like enabling/disabling buttons, etc... */
c906108c 265
7734102d 266void (*deprecated_call_command_hook) (struct cmd_list_element * c,
95a6b0a1 267 const char *cmd, int from_tty);
c906108c
SS
268
269/* Called when the current thread changes. Argument is thread id. */
270
9a4105ab 271void (*deprecated_context_hook) (int id);
c906108c 272
98d9f24e
PA
273/* The highest UI number ever assigned. */
274static int highest_ui_num;
275
276/* See top.h. */
277
895b8f30
TT
278ui::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)
98d9f24e 299{
895b8f30 300 buffer_init (&line_buffer);
98d9f24e
PA
301
302 if (ui_list == NULL)
895b8f30 303 ui_list = this;
98d9f24e
PA
304 else
305 {
306 struct ui *last;
307
308 for (last = ui_list; last->next != NULL; last = last->next)
309 ;
895b8f30 310 last->next = this;
98d9f24e 311 }
07169ff7
PA
312}
313
895b8f30 314ui::~ui ()
07169ff7
PA
315{
316 struct ui *ui, *uiprev;
317
318 uiprev = NULL;
319
320 for (ui = ui_list; ui != NULL; uiprev = ui, ui = ui->next)
895b8f30 321 if (ui == this)
07169ff7
PA
322 break;
323
324 gdb_assert (ui != NULL);
325
326 if (uiprev != NULL)
895b8f30 327 uiprev->next = next;
07169ff7 328 else
895b8f30 329 ui_list = next;
07169ff7 330
895b8f30
TT
331 delete m_gdb_stdin;
332 delete m_gdb_stdout;
333 delete m_gdb_stderr;
8194e927
SM
334}
335
60eb5395
PA
336/* Open file named NAME for read/write, making sure not to make it the
337 controlling terminal. */
338
6e7bc05c 339static gdb_file_up
60eb5395
PA
340open_terminal_stream (const char *name)
341{
342 int fd;
343
6e7bc05c 344 fd = gdb_open_cloexec (name, O_RDWR | O_NOCTTY, 0);
60eb5395
PA
345 if (fd < 0)
346 perror_with_name (_("opening terminal failed"));
347
6e7bc05c 348 return gdb_file_up (fdopen (fd, "w+"));
60eb5395
PA
349}
350
351/* Implementation of the "new-ui" command. */
352
353static void
32faf971 354new_ui_command (const char *args, int from_tty)
60eb5395 355{
60eb5395 356 int argc;
60eb5395
PA
357 const char *interpreter_name;
358 const char *tty_name;
60eb5395
PA
359
360 dont_repeat ();
361
773a1edc
TT
362 gdb_argv argv (args);
363 argc = argv.count ();
60eb5395
PA
364
365 if (argc < 2)
65e65158 366 error (_("Usage: new-ui INTERPRETER TTY"));
60eb5395
PA
367
368 interpreter_name = argv[0];
369 tty_name = argv[1];
370
4b6749b9
TT
371 {
372 scoped_restore save_ui = make_scoped_restore (&current_ui);
8194e927 373
afe09f0b
GL
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);
60eb5395 378
895b8f30 379 std::unique_ptr<ui> ui
afe09f0b 380 (new struct ui (stream.get (), stream.get (), stream.get ()));
60eb5395 381
4b6749b9 382 ui->async = 1;
60eb5395 383
895b8f30 384 current_ui = ui.get ();
60eb5395 385
4b6749b9 386 set_top_level_interpreter (interpreter_name);
60eb5395 387
4b6749b9 388 interp_pre_command_loop (top_level_interpreter ());
60eb5395 389
afe09f0b
GL
390 /* Make sure the file is not closed. */
391 stream.release ();
6e7bc05c 392
895b8f30 393 ui.release ();
4b6749b9 394 }
60eb5395
PA
395
396 printf_unfiltered ("New UI allocated\n");
397}
398
c906108c
SS
399/* Handler for SIGHUP. */
400
401#ifdef SIGHUP
392a587b 402/* NOTE 1999-04-29: This function will be static again, once we modify
cd0fc7c3 403 gdb to use the event loop as the default command loop and we merge
c378eb4e 404 event-top.c into this file, top.c. */
b2cd6b29
JM
405/* static */ void
406quit_cover (void)
c906108c 407{
e360902b
PA
408 /* Stop asking user for confirmation --- we're exiting. This
409 prevents asking the user dumb questions. */
410 confirm = 0;
c5aa993b 411 quit_command ((char *) 0, 0);
c906108c
SS
412}
413#endif /* defined SIGHUP */
414\f
7a9dd1b2 415/* Line number we are currently in, in a file which is being sourced. */
392a587b 416/* NOTE 1999-04-29: This variable will be static again, once we modify
cd0fc7c3 417 gdb to use the event loop as the default command loop and we merge
c378eb4e 418 event-top.c into this file, top.c. */
cd0fc7c3 419/* static */ int source_line_number;
c906108c
SS
420
421/* Name of the file we are sourcing. */
392a587b 422/* NOTE 1999-04-29: This variable will be static again, once we modify
cd0fc7c3 423 gdb to use the event loop as the default command loop and we merge
c378eb4e 424 event-top.c into this file, top.c. */
6caa91b6 425/* static */ std::string source_file_name;
c906108c 426
c906108c
SS
427/* Read commands from STREAM. */
428void
fba45db2 429read_command_file (FILE *stream)
c906108c 430{
f38d3ad1 431 struct ui *ui = current_ui;
c906108c 432
3c9ebddd
TT
433 scoped_restore save_instream
434 = make_scoped_restore (&ui->instream, stream);
faa4ebe1
PA
435
436 /* Read commands from `instream' and execute them until end of file
437 or error reading instream. */
438
f38d3ad1 439 while (ui->instream != NULL && !feof (ui->instream))
faa4ebe1 440 {
992a7040 441 const char *command;
faa4ebe1
PA
442
443 /* Get a command-line. This calls the readline package. */
89fbedf3 444 command = command_line_input (NULL, NULL);
faa4ebe1
PA
445 if (command == NULL)
446 break;
447 command_handler (command);
448 }
c906108c
SS
449}
450\f
507f3c78 451void (*pre_init_ui_hook) (void);
c906108c 452
e41a3b1a 453#ifdef __MSDOS__
70976b65 454static void
e41a3b1a
AC
455do_chdir_cleanup (void *old_dir)
456{
f515a1d6 457 chdir ((const char *) old_dir);
b8c9b27d 458 xfree (old_dir);
e41a3b1a
AC
459}
460#endif
461
54f70bc1
TT
462scoped_value_mark
463prepare_execute_command ()
4e5d721f 464{
371d5dec
MS
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. */
4e5d721f
DE
469 if (non_stop)
470 target_dcache_invalidate ();
028d0ed5 471
54f70bc1 472 return scoped_value_mark ();
4e5d721f
DE
473}
474
77cce10f
PA
475/* Tell the user if the language has changed (except first time) after
476 executing a command. */
477
478void
479check_frame_language_change (void)
480{
481 static int warned = 0;
7ff38b1c 482 struct frame_info *frame;
77cce10f
PA
483
484 /* First make sure that a new frame has been selected, in case the
485 command or the hooks changed the program state. */
7ff38b1c 486 frame = deprecated_safe_get_selected_frame ();
77cce10f
PA
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
7ff38b1c 506 flang = get_frame_language (frame);
77cce10f
PA
507 if (!warned
508 && flang != language_unknown
509 && flang != current_language->la_language)
510 {
34916edc 511 printf_filtered ("%s\n", _(lang_frame_mismatch_warn));
77cce10f
PA
512 warned = 1;
513 }
514 }
515}
516
98880d46
PA
517/* See top.h. */
518
0b333c5e
PA
519void
520wait_sync_command_done (void)
521{
4295e285 522 /* Processing events may change the current UI. */
4b6749b9 523 scoped_restore save_ui = make_scoped_restore (&current_ui);
4295e285
PA
524 struct ui *ui = current_ui;
525
0b333c5e 526 while (gdb_do_one_event () >= 0)
4295e285 527 if (ui->prompt_state != PROMPT_BLOCKED)
0b333c5e
PA
528 break;
529}
530
531/* See top.h. */
532
98880d46
PA
533void
534maybe_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. */
3b12939d
PA
540 if (!current_ui->async
541 && !was_sync
542 && current_ui->prompt_state == PROMPT_BLOCKED)
0b333c5e 543 wait_sync_command_done ();
98880d46
PA
544}
545
85c4be7c
TT
546/* See command.h. */
547
548void
549set_repeat_arguments (const char *args)
550{
551 repeat_arguments = args;
552}
553
648bf667 554/* Execute the line P as a command, in the current user context.
d318976c 555 Pass FROM_TTY as second argument to the defining function. */
c906108c 556
d318976c 557void
95a6b0a1 558execute_command (const char *p, int from_tty)
c906108c 559{
52f0bd74 560 struct cmd_list_element *c;
95a6b0a1
TT
561 const char *line;
562 const char *cmd_start = p;
4e5d721f 563
694c6bf5 564 auto cleanup_if_error = make_scope_exit (bpstat_clear_actions);
54f70bc1 565 scoped_value_mark cleanup = prepare_execute_command ();
c906108c 566
d318976c
FN
567 /* This can happen when command_line_input hits end of file. */
568 if (p == NULL)
5fe41fbf 569 {
694c6bf5 570 cleanup_if_error.release ();
5fe41fbf
TT
571 return;
572 }
c906108c 573
49d03eab 574 target_log_command (p);
8b93c638 575
d318976c
FN
576 while (*p == ' ' || *p == '\t')
577 p++;
578 if (*p)
8b93c638 579 {
6f937416 580 const char *cmd = p;
95a6b0a1 581 const char *arg;
3b12939d 582 int was_sync = current_ui->prompt_state == PROMPT_BLOCKED;
90e28950 583
d318976c 584 line = p;
8b93c638 585
16026cd7 586 /* If trace-commands is set then this will print this command. */
1263a9d5 587 print_command_trace ("%s", p);
16026cd7 588
6f937416 589 c = lookup_cmd (&cmd, cmdlist, "", 0, 1);
95a6b0a1 590 p = cmd;
8b93c638 591
85c4be7c
TT
592 scoped_restore save_repeat_args
593 = make_scoped_restore (&repeat_arguments, nullptr);
95a6b0a1 594 const char *args_pointer = p;
85c4be7c 595
d318976c
FN
596 /* Pass null arg rather than an empty one. */
597 arg = *p ? p : 0;
8b93c638 598
9f60d481
AC
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. */
95a6b0a1 609 std::string without_whitespace;
d318976c
FN
610 if (arg
611 && c->type != set_cmd
bbaca940 612 && !is_complete_command (c))
8b93c638 613 {
95a6b0a1
TT
614 const char *old_end = arg + strlen (arg) - 1;
615 p = old_end;
d318976c
FN
616 while (p >= arg && (*p == ' ' || *p == '\t'))
617 p--;
95a6b0a1
TT
618 if (p != old_end)
619 {
620 without_whitespace = std::string (arg, p + 1);
621 arg = without_whitespace.c_str ();
622 }
8b93c638
JM
623 }
624
371d5dec 625 /* If this command has been pre-hooked, run the hook first. */
5913bcb0 626 execute_cmd_pre_hook (c);
c906108c 627
1f2bdf09 628 if (c->deprecated_warn_user)
6f937416 629 deprecated_cmd_warning (line);
c906108c 630
7d74f244 631 /* c->user_commands would be NULL in the case of a python command. */
fe978cb0 632 if (c->theclass == class_user && c->user_commands)
d318976c 633 execute_user_command (c, arg);
c6ac7fc9
PW
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 }
5b9afe8a
YQ
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);
f436dd25 650 else if (!cmd_func_p (c))
8a3fe4f8 651 error (_("That is not a command, just a help topic."));
9a4105ab 652 else if (deprecated_call_command_hook)
050a2e1d 653 deprecated_call_command_hook (c, arg, from_tty);
d318976c 654 else
050a2e1d 655 cmd_func (c, arg, from_tty);
b4a14fd0 656
98880d46 657 maybe_wait_sync_command_done (was_sync);
b4a14fd0 658
371d5dec 659 /* If this command has been post-hooked, run the hook last. */
5913bcb0 660 execute_cmd_post_hook (c);
c906108c 661
95a6b0a1 662 if (repeat_arguments != NULL && cmd_start == saved_command_line)
85c4be7c
TT
663 {
664 gdb_assert (strlen (args_pointer) >= strlen (repeat_arguments));
95a6b0a1
TT
665 strcpy (saved_command_line + (args_pointer - cmd_start),
666 repeat_arguments);
85c4be7c 667 }
c906108c
SS
668 }
669
0ca1fc29
JB
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. */
00431a78 674 if (has_stack_frames () && inferior_thread ()->state != THREAD_RUNNING)
0ca1fc29 675 check_frame_language_change ();
028d0ed5 676
694c6bf5 677 cleanup_if_error.release ();
c906108c
SS
678}
679
b8fd0918
PW
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
5da1313b
JK
682 temporarily set to true. */
683
b8fd0918
PW
684void
685execute_command_to_ui_file (struct ui_file *file, const char *p, int from_tty)
5da1313b 686{
5da1313b
JK
687 /* GDB_STDOUT should be better already restored during these
688 restoration callbacks. */
b95de2b7 689 set_batch_flag_and_restore_page_info save_page_info;
5da1313b 690
b7b633e9 691 scoped_restore save_async = make_scoped_restore (&current_ui->async, 0);
b4a14fd0 692
ca5909c7 693 {
b8fd0918 694 current_uiout->redirect (file);
ca5909c7
TT
695 ui_out_redirect_pop redirect_popper (current_uiout);
696
697 scoped_restore save_stdout
b8fd0918 698 = make_scoped_restore (&gdb_stdout, file);
ca5909c7 699 scoped_restore save_stderr
b8fd0918 700 = make_scoped_restore (&gdb_stderr, file);
ca5909c7 701 scoped_restore save_stdlog
b8fd0918 702 = make_scoped_restore (&gdb_stdlog, file);
ca5909c7 703 scoped_restore save_stdtarg
b8fd0918 704 = make_scoped_restore (&gdb_stdtarg, file);
ca5909c7 705 scoped_restore save_stdtargerr
b8fd0918 706 = make_scoped_restore (&gdb_stdtargerr, file);
ca5909c7
TT
707
708 execute_command (p, from_tty);
709 }
b8fd0918
PW
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
716std::string
717execute_command_to_string (const char *p, int from_tty,
718 bool term_out)
719{
720 string_file str_file (term_out);
5da1313b 721
b8fd0918 722 execute_command_to_ui_file (&str_file, p, from_tty);
d7e74731 723 return std::move (str_file.string ());
5da1313b
JK
724}
725
d318976c 726\f
47a80e90
TT
727/* When nonzero, cause dont_repeat to do nothing. This should only be
728 set via prevent_dont_repeat. */
729
730static int suppress_dont_repeat = 0;
731
68bb5386 732/* See command.h */
9e0b60a8 733
d318976c
FN
734void
735dont_repeat (void)
9e0b60a8 736{
f38d3ad1
PA
737 struct ui *ui = current_ui;
738
47a80e90 739 if (suppress_dont_repeat || server_command)
d318976c 740 return;
9e0b60a8 741
d318976c 742 /* If we aren't reading from standard input, we are saving the last
371d5dec
MS
743 thing read from stdin in line and don't want to delete it. Null
744 lines won't repeat here in any case. */
268a799a 745 if (ui->instream == ui->stdin_stream)
68bb5386
PW
746 {
747 *saved_command_line = 0;
748 repeat_arguments = NULL;
749 }
750}
751
752/* See command.h */
753
fdbc9870 754const char *
68bb5386
PW
755repeat_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);
fdbc9870
PA
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;
9e0b60a8 769}
47a80e90 770
68bb5386 771/* See command.h. */
47a80e90 772
1ac32117 773scoped_restore_tmpl<int>
47a80e90
TT
774prevent_dont_repeat (void)
775{
1ac32117 776 return make_scoped_restore (&suppress_dont_repeat, 1);
47a80e90
TT
777}
778
68bb5386
PW
779/* See command.h. */
780
781char *
782get_saved_command_line ()
783{
784 return saved_command_line;
785}
786
787/* See command.h. */
788
789void
790save_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
d318976c
FN
799\f
800/* Read a line from the stream "instream" without command line editing.
9e0b60a8 801
7a3bde34 802 It prints PROMPT once at the start.
d318976c
FN
803 Action is compatible with "readline", e.g. space for the result is
804 malloc'd and should be freed by the caller.
9e0b60a8 805
d318976c 806 A NULL return means end of file. */
c5c136ea
PA
807
808static char *
7a3bde34 809gdb_readline_no_editing (const char *prompt)
9e0b60a8 810{
7a3bde34 811 struct buffer line_buffer;
f38d3ad1 812 struct ui *ui = current_ui;
3212b858
PA
813 /* Read from stdin if we are executing a user defined command. This
814 is the right thing for prompt_for_continue, at least. */
f38d3ad1 815 FILE *stream = ui->instream != NULL ? ui->instream : stdin;
3212b858 816 int fd = fileno (stream);
9e0b60a8 817
7a3bde34
PA
818 buffer_init (&line_buffer);
819
820 if (prompt != NULL)
9e0b60a8 821 {
d318976c
FN
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. */
7a3bde34 825 fputs_unfiltered (prompt, gdb_stdout);
9e0b60a8
JM
826 gdb_flush (gdb_stdout);
827 }
828
9e0b60a8
JM
829 while (1)
830 {
7a3bde34 831 int c;
3212b858 832 fd_set readfds;
7a3bde34 833
3212b858
PA
834 QUIT;
835
836 /* Wait until at least one byte of data is available. Control-C
f0881b37 837 can interrupt interruptible_select, but not fgetc. */
3212b858
PA
838 FD_ZERO (&readfds);
839 FD_SET (fd, &readfds);
f0881b37 840 if (interruptible_select (fd + 1, &readfds, NULL, NULL, NULL) == -1)
3212b858
PA
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);
9e0b60a8 851
d318976c 852 if (c == EOF)
9e0b60a8 853 {
7a3bde34 854 if (line_buffer.used_size > 0)
d318976c
FN
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. */
9e0b60a8 858 break;
7a3bde34 859 xfree (buffer_finish (&line_buffer));
d318976c 860 return NULL;
9e0b60a8 861 }
c5aa993b 862
d318976c 863 if (c == '\n')
9e0b60a8 864 {
7a3bde34
PA
865 if (line_buffer.used_size > 0
866 && line_buffer.buffer[line_buffer.used_size - 1] == '\r')
867 line_buffer.used_size--;
d318976c 868 break;
9e0b60a8 869 }
9e0b60a8 870
7a3bde34 871 buffer_grow_char (&line_buffer, c);
9e0b60a8
JM
872 }
873
7a3bde34
PA
874 buffer_grow_char (&line_buffer, '\0');
875 return buffer_finish (&line_buffer);
9e0b60a8
JM
876}
877
d318976c
FN
878/* Variables which control command line editing and history
879 substitution. These variables are given default values at the end
880 of this file. */
491144b5 881static bool command_editing_p;
920d2a44 882
d318976c
FN
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
c378eb4e 885 event-top.c into this file, top.c. */
920d2a44 886
491144b5 887/* static */ bool history_expansion_p;
920d2a44 888
63e163f2
AB
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. */
491144b5 892static bool write_history_p;
63e163f2
AB
893
894/* Implement 'show history save'. */
920d2a44
AC
895static void
896show_write_history_p (struct ui_file *file, int from_tty,
897 struct cmd_list_element *c, const char *value)
898{
63e163f2
AB
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"));
920d2a44
AC
905}
906
840a9a1f 907/* The variable associated with the "set/show history size"
ebfd00d2
PP
908 command. The value -1 means unlimited, and -2 means undefined. */
909static int history_size_setshow_var = -2;
840a9a1f 910
920d2a44
AC
911static void
912show_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
fc637f04
PP
919/* Variable associated with the "history remove-duplicates" option.
920 The value -1 means unlimited. */
921static int history_remove_duplicates = 0;
922
923static void
924show_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
63e163f2
AB
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. */
d318976c 935static char *history_filename;
63e163f2
AB
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. */
939static bool
940history_filename_empty (void)
941{
942 return (history_filename == nullptr || *history_filename == '\0');
943}
944
945/* Implement 'show history filename'. */
920d2a44
AC
946static void
947show_history_filename (struct ui_file *file, int from_tty,
948 struct cmd_list_element *c, const char *value)
949{
63e163f2
AB
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"));
920d2a44 957}
9e0b60a8 958
b4f5539f 959/* This is like readline(), but it has some gdb-specific behavior.
2e03ee74 960 gdb may want readline in both the synchronous and async modes during
b4f5539f
TT
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
2e03ee74
DJ
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. */
976static int gdb_readline_wrapper_done;
977
978/* The result of the current call to gdb_readline_wrapper, once a newline
979 is seen. */
980static 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. */
988static void (*saved_after_char_processing_hook) (void);
989
948578a9 990
948578a9
PP
991/* See top.h. */
992
993int
dbf30ca3 994gdb_in_secondary_prompt_p (struct ui *ui)
948578a9 995{
dbf30ca3 996 return ui->secondary_prompt_depth > 0;
948578a9
PP
997}
998
999
2e03ee74
DJ
1000/* This function is called when readline has seen a complete line of
1001 text. */
1002
1003static void
95bc9f0b 1004gdb_readline_wrapper_line (gdb::unique_xmalloc_ptr<char> &&line)
2e03ee74
DJ
1005{
1006 gdb_assert (!gdb_readline_wrapper_done);
95bc9f0b 1007 gdb_readline_wrapper_result = line.release ();
2e03ee74
DJ
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;
1b05479a
DJ
1013
1014 /* Prevent parts of the prompt from being redisplayed if annotations
0017922d 1015 are enabled, and readline's state getting out of sync. We'll
d3d4baed
PA
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). */
3c216924 1022 if (current_ui->command_editing)
d3d4baed 1023 gdb_rl_callback_handler_remove ();
2e03ee74
DJ
1024}
1025
1dbeed45 1026class gdb_readline_wrapper_cleanup
2e03ee74 1027{
1dbeed45
TT
1028public:
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++;
2e03ee74 1038
1dbeed45
TT
1039 if (m_target_is_async_orig)
1040 target_async (0);
1041 }
2e03ee74 1042
1dbeed45
TT
1043 ~gdb_readline_wrapper_cleanup ()
1044 {
1045 struct ui *ui = current_ui;
0017922d 1046
1dbeed45
TT
1047 if (ui->command_editing)
1048 rl_already_prompted = m_already_prompted_orig;
0017922d 1049
1dbeed45
TT
1050 gdb_assert (ui->input_handler == gdb_readline_wrapper_line);
1051 ui->input_handler = m_handler_orig;
2e03ee74 1052
1dbeed45
TT
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. */
2e03ee74 1059
1dbeed45
TT
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);
93d6eb10 1064
1dbeed45
TT
1065 after_char_processing_hook = saved_after_char_processing_hook;
1066 saved_after_char_processing_hook = NULL;
2e03ee74 1067
1dbeed45
TT
1068 if (m_target_is_async_orig)
1069 target_async (1);
1070 }
2e03ee74 1071
1dbeed45 1072 DISABLE_COPY_AND_ASSIGN (gdb_readline_wrapper_cleanup);
2e03ee74 1073
1dbeed45 1074private:
2e03ee74 1075
95bc9f0b 1076 void (*m_handler_orig) (gdb::unique_xmalloc_ptr<char> &&);
1dbeed45 1077 int m_already_prompted_orig;
93d6eb10 1078
1dbeed45
TT
1079 /* Whether the target was async. */
1080 int m_target_is_async_orig;
2e03ee74 1081
4295e285 1082 /* Processing events may change the current UI. */
1dbeed45
TT
1083 scoped_restore_tmpl<struct ui *> m_save_ui;
1084};
1085
1086char *
1087gdb_readline_wrapper (const char *prompt)
1088{
1089 struct ui *ui = current_ui;
4295e285 1090
1dbeed45 1091 gdb_readline_wrapper_cleanup cleanup;
93d6eb10 1092
6e5d74e7
PA
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 : "");
3c216924
PA
1098 if (ui->command_editing)
1099 rl_already_prompted = 1;
2e03ee74 1100
362646f5 1101 if (after_char_processing_hook)
2e03ee74
DJ
1102 (*after_char_processing_hook) ();
1103 gdb_assert (after_char_processing_hook == NULL);
1104
e0dd0826 1105 while (gdb_do_one_event () >= 0)
2e03ee74
DJ
1106 if (gdb_readline_wrapper_done)
1107 break;
b4f5539f 1108
1dbeed45 1109 return gdb_readline_wrapper_result;
b4f5539f
TT
1110}
1111
9e0b60a8 1112\f
467d8519
TT
1113/* The current saved history number from operate-and-get-next.
1114 This is -1 if not valid. */
1115static int operate_saved_history = -1;
1116
1117/* This is put on the appropriate hook and helps operate-and-get-next
1118 do its work. */
b9362cc7 1119static void
5ae5f592 1120gdb_rl_operate_and_get_next_completion (void)
467d8519
TT
1121{
1122 int delta = where_history () - operate_saved_history;
5d502164 1123
467d8519
TT
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. */
12f4afab 1129 rl_redisplay ();
467d8519
TT
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. */
1140static int
1141gdb_rl_operate_and_get_next (int count, int key)
1142{
b5686e99
MK
1143 int where;
1144
362646f5
AC
1145 /* Use the async hook. */
1146 after_char_processing_hook = gdb_rl_operate_and_get_next_completion;
467d8519 1147
b5686e99
MK
1148 /* Find the current line, and find the next line to use. */
1149 where = where_history();
1150
1fb2e2b5
PA
1151 if ((history_is_stifled () && (history_length >= history_max_entries))
1152 || (where >= history_length - 1))
b5686e99
MK
1153 operate_saved_history = where;
1154 else
1155 operate_saved_history = where + 1;
1156
467d8519
TT
1157 return rl_newline (1, key);
1158}
08b13bdd
PP
1159
1160/* Number of user commands executed during this session. */
1161
1162static int command_count = 0;
1163
1164/* Add the user command COMMAND to the input history list. */
1165
1166void
1167gdb_add_history (const char *command)
1168{
08b13bdd 1169 command_count++;
fc637f04
PP
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);
08b13bdd
PP
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
1211static void
1212gdb_safe_append_history (void)
1213{
1214 int ret, saved_errno;
08b13bdd 1215
8cff8730
TT
1216 std::string local_history_filename
1217 = string_printf ("%s-gdb%ld~", history_filename, (long) getpid ());
08b13bdd 1218
8cff8730 1219 ret = rename (history_filename, local_history_filename.c_str ());
08b13bdd
PP
1220 saved_errno = errno;
1221 if (ret < 0 && saved_errno != ENOENT)
1222 {
6ec1d75e
PW
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 ()),
08b13bdd
PP
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);
8cff8730 1242 write_history (local_history_filename.c_str ());
08b13bdd
PP
1243 }
1244 else
1245 {
8cff8730 1246 append_history (command_count, local_history_filename.c_str ());
2093d2d3 1247 if (history_is_stifled ())
8cff8730
TT
1248 history_truncate_file (local_history_filename.c_str (),
1249 history_max_entries);
08b13bdd
PP
1250 }
1251
8cff8730 1252 ret = rename (local_history_filename.c_str (), history_filename);
08b13bdd
PP
1253 saved_errno = errno;
1254 if (ret < 0 && saved_errno != EEXIST)
1255 warning (_("Could not rename %s to %s: %s"),
8cff8730 1256 local_history_filename.c_str (), history_filename,
08b13bdd
PP
1257 safe_strerror (saved_errno));
1258 }
08b13bdd
PP
1259}
1260
b69d38af
PA
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.
9e0b60a8 1264
d318976c 1265 NULL is returned for end of file.
9e0b60a8 1266
b69d38af
PA
1267 This routine either uses fancy command line editing or simple input
1268 as the user has requested. */
10689f25 1269
992a7040 1270const char *
89fbedf3 1271command_line_input (const char *prompt_arg, const char *annotation_suffix)
9e0b60a8 1272{
b69d38af
PA
1273 static struct buffer cmd_line_buffer;
1274 static int cmd_line_buffer_initialized;
f38d3ad1 1275 struct ui *ui = current_ui;
38bcc89d 1276 const char *prompt = prompt_arg;
b69d38af 1277 char *cmd;
268a799a 1278 int from_tty = ui->instream == ui->stdin_stream;
d318976c
FN
1279
1280 /* The annotation suffix must be non-NULL. */
1281 if (annotation_suffix == NULL)
1282 annotation_suffix = "";
9e0b60a8 1283
268a799a 1284 if (from_tty && annotation_level > 1)
d318976c 1285 {
38bcc89d
SM
1286 char *local_prompt;
1287
224c3ddb
SM
1288 local_prompt
1289 = (char *) alloca ((prompt == NULL ? 0 : strlen (prompt))
1290 + strlen (annotation_suffix) + 40);
38bcc89d 1291 if (prompt == NULL)
d318976c
FN
1292 local_prompt[0] = '\0';
1293 else
38bcc89d 1294 strcpy (local_prompt, prompt);
d318976c
FN
1295 strcat (local_prompt, "\n\032\032");
1296 strcat (local_prompt, annotation_suffix);
1297 strcat (local_prompt, "\n");
38bcc89d
SM
1298
1299 prompt = local_prompt;
d318976c 1300 }
9e0b60a8 1301
b69d38af 1302 if (!cmd_line_buffer_initialized)
9e0b60a8 1303 {
b69d38af
PA
1304 buffer_init (&cmd_line_buffer);
1305 cmd_line_buffer_initialized = 1;
9e0b60a8 1306 }
9e0b60a8 1307
b69d38af
PA
1308 /* Starting a new command line. */
1309 cmd_line_buffer.used_size = 0;
9e0b60a8 1310
6aa899ce 1311#ifdef SIGTSTP
d318976c 1312 if (job_control)
6aa899ce 1313 signal (SIGTSTP, handle_sigtstp);
d318976c
FN
1314#endif
1315
1316 while (1)
9e0b60a8 1317 {
2139e8dc 1318 gdb::unique_xmalloc_ptr<char> rl;
b69d38af 1319
371d5dec
MS
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. */
d318976c
FN
1323 wrap_here ("");
1324 gdb_flush (gdb_stdout);
1325 gdb_flush (gdb_stderr);
1326
6caa91b6 1327 if (!source_file_name.empty ())
637537d0 1328 ++source_line_number;
d318976c 1329
268a799a 1330 if (from_tty && annotation_level > 1)
d318976c 1331 {
306d9ac5
DC
1332 puts_unfiltered ("\n\032\032pre-");
1333 puts_unfiltered (annotation_suffix);
1334 puts_unfiltered ("\n");
d318976c
FN
1335 }
1336
1337 /* Don't use fancy stuff if not talking to stdin. */
268a799a
PA
1338 if (deprecated_readline_hook
1339 && from_tty
1340 && input_interactive_p (current_ui))
d318976c 1341 {
2139e8dc 1342 rl.reset ((*deprecated_readline_hook) (prompt));
d318976c 1343 }
268a799a
PA
1344 else if (command_editing_p
1345 && from_tty
1346 && input_interactive_p (current_ui))
d318976c 1347 {
2139e8dc 1348 rl.reset (gdb_readline_wrapper (prompt));
d318976c 1349 }
9e0b60a8 1350 else
d318976c 1351 {
2139e8dc 1352 rl.reset (gdb_readline_no_editing (prompt));
d318976c 1353 }
9e0b60a8 1354
2139e8dc 1355 cmd = handle_line_of_input (&cmd_line_buffer, rl.get (),
89fbedf3 1356 0, annotation_suffix);
b69d38af 1357 if (cmd == (char *) EOF)
d318976c 1358 {
b69d38af 1359 cmd = NULL;
d318976c 1360 break;
9e0b60a8 1361 }
b69d38af 1362 if (cmd != NULL)
d318976c 1363 break;
9e0b60a8 1364
6e5d74e7
PA
1365 /* Got partial input. I.e., got a line that ends with a
1366 continuation character (backslash). Suppress printing the
1367 prompt again. */
38bcc89d 1368 prompt = NULL;
d318976c 1369 }
9e0b60a8 1370
6aa899ce 1371#ifdef SIGTSTP
d318976c 1372 if (job_control)
6aa899ce 1373 signal (SIGTSTP, SIG_DFL);
d318976c 1374#endif
9e0b60a8 1375
b69d38af 1376 return cmd;
9e0b60a8
JM
1377}
1378\f
c61b06a1 1379/* See top.h. */
9e0b60a8 1380void
c61b06a1 1381print_gdb_version (struct ui_file *stream, bool interactive)
9e0b60a8
JM
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
371d5dec 1385 number, which starts after last space. */
9e0b60a8 1386
d47032b7
TT
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);
9e0b60a8 1395
371d5dec 1396 /* Second line is a copyright notice. */
9e0b60a8 1397
3e43a32a 1398 fprintf_filtered (stream,
5dd8bf88 1399 "Copyright (C) 2020 Free Software Foundation, Inc.\n");
9e0b60a8
JM
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
371d5dec 1404 there is no warranty. */
9e0b60a8
JM
1405
1406 fprintf_filtered (stream, "\
3e43a32a
MS
1407License 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\
c61b06a1
TT
1409There 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"));
9e0b60a8 1416
371d5dec 1417 /* After the required info we print the configuration information. */
9e0b60a8
JM
1418
1419 fprintf_filtered (stream, "This GDB was configured as \"");
6314a349 1420 if (strcmp (host_name, target_name) != 0)
9e0b60a8 1421 {
3e43a32a
MS
1422 fprintf_filtered (stream, "--host=%s --target=%s",
1423 host_name, target_name);
9e0b60a8
JM
1424 }
1425 else
1426 {
1427 fprintf_filtered (stream, "%s", host_name);
1428 }
c61b06a1
TT
1429 fprintf_filtered (stream, "\".\n");
1430
1431 fprintf_filtered (stream, _("Type \"show configuration\" "
1432 "for configuration details.\n"));
c16158bc
JM
1433
1434 if (REPORT_BUGS_TO[0])
1435 {
6eaaf48b 1436 fprintf_filtered (stream,
c61b06a1 1437 _("For bug reporting instructions, please see:\n"));
1cf55f60 1438 fprintf_filtered (stream, "%s.\n", REPORT_BUGS_TO);
c16158bc 1439 }
1cf55f60
PM
1440 fprintf_filtered (stream,
1441 _("Find the GDB manual and other documentation \
c61b06a1
TT
1442resources online at:\n <http://www.gnu.org/software/gdb/documentation/>."));
1443 fprintf_filtered (stream, "\n\n");
1cf55f60 1444 fprintf_filtered (stream, _("For help, type \"help\".\n"));
7734102d
EZ
1445 fprintf_filtered (stream,
1446 _("Type \"apropos word\" to search for commands \
1447related to \"word\"."));
9e0b60a8 1448}
6eaaf48b
EZ
1449
1450/* Print the details of GDB build-time configuration. */
1451void
1452print_gdb_configuration (struct ui_file *stream)
1453{
1454 fprintf_filtered (stream, _("\
1455This GDB was configured as follows:\n\
1456 configure --host=%s --target=%s\n\
1457"), host_name, target_name);
bbde7025 1458
6eaaf48b
EZ
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);
bbde7025 1463
6eaaf48b
EZ
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
bbde7025 1473
6eaaf48b
EZ
1474 if (GDB_DATADIR[0])
1475 fprintf_filtered (stream, _("\
1476 --with-gdb-datadir=%s%s\n\
1477"), GDB_DATADIR, GDB_DATADIR_RELOCATABLE ? " (relocatable)" : "");
bbde7025 1478
6eaaf48b
EZ
1479#ifdef ICONV_BIN
1480 fprintf_filtered (stream, _("\
1481 --with-iconv-bin=%s%s\n\
1482"), ICONV_BIN, ICONV_BIN_RELOCATABLE ? " (relocatable)" : "");
1483#endif
bbde7025 1484
6eaaf48b
EZ
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)" : "");
bbde7025 1489
6eaaf48b
EZ
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
bbde7025 1499
6eaaf48b
EZ
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
bbde7025 1509
9bd8e0b0 1510#if HAVE_LIBBABELTRACE
15b07e4f 1511 fprintf_filtered (stream, _("\
9bd8e0b0
EZ
1512 --with-babeltrace\n\
1513"));
1514#else
15b07e4f 1515 fprintf_filtered (stream, _("\
0ea8adde 1516 --without-babeltrace\n\
9bd8e0b0
EZ
1517"));
1518#endif
bbde7025 1519
9bd8e0b0 1520#if HAVE_LIBIPT
15b07e4f 1521 fprintf_filtered (stream, _("\
9bd8e0b0
EZ
1522 --with-intel-pt\n\
1523"));
1524#else
15b07e4f 1525 fprintf_filtered (stream, _("\
9bd8e0b0
EZ
1526 --without-intel-pt\n\
1527"));
1528#endif
bbde7025 1529
9bd8e0b0 1530#if HAVE_LIBMPFR
15b07e4f 1531 fprintf_filtered (stream, _("\
9bd8e0b0
EZ
1532 --with-mpfr\n\
1533"));
1534#else
15b07e4f 1535 fprintf_filtered (stream, _("\
9bd8e0b0
EZ
1536 --without-mpfr\n\
1537"));
1538#endif
15b07e4f
EZ
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
6eaaf48b
EZ
1548#ifdef WITH_PYTHON_PATH
1549 fprintf_filtered (stream, _("\
1550 --with-python=%s%s\n\
1551"), WITH_PYTHON_PATH, PYTHON_PATH_RELOCATABLE ? " (relocatable)" : "");
50c7c5b8
ДП
1552#else
1553 fprintf_filtered (stream, _("\
1554 --without-python\n\
1555"));
6eaaf48b 1556#endif
bbde7025 1557
0d79cdc4
AM
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
97d66cc6
EZ
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
bbde7025 1577
189b8c2e
ST
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
bbde7025 1587
6eaaf48b
EZ
1588#ifdef RELOC_SRCDIR
1589 fprintf_filtered (stream, _("\
1590 --with-relocated-sources=%s\n\
1591"), RELOC_SRCDIR);
1592#endif
bbde7025 1593
6eaaf48b
EZ
1594 if (DEBUGDIR[0])
1595 fprintf_filtered (stream, _("\
1596 --with-separate-debug-dir=%s%s\n\
1597"), DEBUGDIR, DEBUGDIR_RELOCATABLE ? " (relocatable)" : "");
bbde7025 1598
6eaaf48b
EZ
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)" : "");
bbde7025 1603
6eaaf48b
EZ
1604 if (SYSTEM_GDBINIT[0])
1605 fprintf_filtered (stream, _("\
1606 --with-system-gdbinit=%s%s\n\
1607"), SYSTEM_GDBINIT, SYSTEM_GDBINIT_RELOCATABLE ? " (relocatable)" : "");
bbde7025 1608
ed2a2229
CB
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)" : "");
bbde7025
SM
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\
48d1d6f5
EZ
1617(\"Relocatable\" means the directory can be moved with the GDB installation\n\
1618tree, and GDB will still find it.)\n\
1619"));
6eaaf48b 1620}
9e0b60a8 1621\f
95298e72 1622
ab821bc6
PA
1623/* The current top level prompt, settable with "set prompt", and/or
1624 with the python `gdb.prompt_hook' hook. */
1625static char *top_prompt;
9e0b60a8 1626
ab821bc6 1627/* Access method for the GDB prompt string. */
95298e72
PM
1628
1629char *
ab821bc6 1630get_prompt (void)
95298e72 1631{
ab821bc6 1632 return top_prompt;
95298e72
PM
1633}
1634
ab821bc6 1635/* Set method for the GDB prompt string. */
95298e72
PM
1636
1637void
ab821bc6 1638set_prompt (const char *s)
95298e72 1639{
ab821bc6 1640 char *p = xstrdup (s);
95298e72 1641
ab821bc6
PA
1642 xfree (top_prompt);
1643 top_prompt = p;
9e0b60a8 1644}
9e0b60a8 1645\f
c5aa993b 1646
26f42329
SM
1647/* Kills or detaches the given inferior, depending on how we originally
1648 gained control of it. */
9e0b60a8 1649
26f42329
SM
1650static void
1651kill_or_detach (inferior *inf, int from_tty)
54a012c9 1652{
6c95b8df 1653 if (inf->pid == 0)
26f42329 1654 return;
6c95b8df 1655
00431a78 1656 thread_info *thread = any_thread_of_inferior (inf);
b8fa0bfa 1657 if (thread != NULL)
9e0b60a8 1658 {
00431a78 1659 switch_to_thread (thread);
c35b1492
PA
1660
1661 /* Leave core files alone. */
1662 if (target_has_execution)
1663 {
1664 if (inf->attach_flag)
26f42329 1665 target_detach (inf, from_tty);
c35b1492
PA
1666 else
1667 target_kill ();
1668 }
9e0b60a8 1669 }
54a012c9
PA
1670}
1671
26f42329
SM
1672/* Prints info about what GDB will do to inferior INF on a "quit". OUT is
1673 where to collect the output. */
b8fa0bfa 1674
26f42329
SM
1675static void
1676print_inferior_quit_action (inferior *inf, ui_file *out)
b8fa0bfa 1677{
6c95b8df 1678 if (inf->pid == 0)
26f42329 1679 return;
6c95b8df 1680
b8fa0bfa 1681 if (inf->attach_flag)
26f42329 1682 fprintf_filtered (out,
b8fa0bfa 1683 _("\tInferior %d [%s] will be detached.\n"), inf->num,
a068643d 1684 target_pid_to_str (ptid_t (inf->pid)).c_str ());
b8fa0bfa 1685 else
26f42329 1686 fprintf_filtered (out,
b8fa0bfa 1687 _("\tInferior %d [%s] will be killed.\n"), inf->num,
a068643d 1688 target_pid_to_str (ptid_t (inf->pid)).c_str ());
b8fa0bfa
PA
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
1694int
1695quit_confirm (void)
1696{
b8fa0bfa
PA
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. */
d7e74731 1702 string_file stb;
b8fa0bfa 1703
d7e74731 1704 stb.puts (_("A debugging session is active.\n\n"));
26f42329
SM
1705
1706 for (inferior *inf : all_inferiors ())
1707 print_inferior_quit_action (inf, &stb);
1708
d7e74731 1709 stb.puts (_("\nQuit anyway? "));
7b01d34b 1710
d7e74731 1711 return query ("%s", stb.c_str ());
b8fa0bfa
PA
1712}
1713
18206ca3
PP
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
1717static void
1718undo_terminal_modifications_before_exit (void)
1719{
3c216924
PA
1720 struct ui *saved_top_level = current_ui;
1721
223ffa71 1722 target_terminal::ours ();
3c216924
PA
1723
1724 current_ui = main_ui;
1725
18206ca3
PP
1726#if defined(TUI)
1727 tui_disable ();
1728#endif
3c216924
PA
1729 gdb_disable_readline ();
1730
1731 current_ui = saved_top_level;
18206ca3
PP
1732}
1733
1734
b0abbc58
JJ
1735/* Quit without asking for confirmation. */
1736
1737void
36cf1806 1738quit_force (int *exit_arg, int from_tty)
b0abbc58
JJ
1739{
1740 int exit_code = 0;
1741
18206ca3
PP
1742 undo_terminal_modifications_before_exit ();
1743
7734102d 1744 /* An optional expression may be used to cause gdb to terminate with the
371d5dec 1745 value of that expression. */
36cf1806
TT
1746 if (exit_arg)
1747 exit_code = *exit_arg;
4b0ad762
AS
1748 else if (return_child_result)
1749 exit_code = return_child_result_value;
b0abbc58
JJ
1750
1751 /* We want to handle any quit errors and exit regardless. */
2f9d54cf
PA
1752
1753 /* Get out of tfind mode, and kill or detach all inferiors. */
a70b8144 1754 try
2f9d54cf
PA
1755 {
1756 disconnect_tracing ();
26f42329
SM
1757 for (inferior *inf : all_inferiors ())
1758 kill_or_detach (inf, from_tty);
2f9d54cf 1759 }
230d2906 1760 catch (const gdb_exception &ex)
492d29ea
PA
1761 {
1762 exception_print (gdb_stderr, ex);
1763 }
2f9d54cf
PA
1764
1765 /* Give all pushed targets a chance to do minimal cleanup, and pop
1766 them all out. */
5b6d1e4f 1767 for (inferior *inf : all_inferiors ())
2f9d54cf 1768 {
5b6d1e4f
PA
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 }
492d29ea 1778 }
2f9d54cf
PA
1779
1780 /* Save the history information if it is appropriate to do so. */
a70b8144 1781 try
2f9d54cf 1782 {
268a799a
PA
1783 if (write_history_p && history_filename)
1784 {
268a799a
PA
1785 int save = 0;
1786
1787 /* History is currently shared between all UIs. If there's
1788 any UI with a terminal, save history. */
2dab0c7b 1789 for (ui *ui : all_uis ())
268a799a
PA
1790 {
1791 if (input_interactive_p (ui))
1792 {
1793 save = 1;
1794 break;
1795 }
1796 }
1797
1798 if (save)
1799 gdb_safe_append_history ();
1800 }
2f9d54cf 1801 }
230d2906 1802 catch (const gdb_exception &ex)
492d29ea
PA
1803 {
1804 exception_print (gdb_stderr, ex);
1805 }
2f9d54cf 1806
9d1447e0
SDJ
1807 /* Destroy any values currently allocated now instead of leaving it
1808 to global destructors, because that may be too late. For
1809 example, the destructors of xmethod values call into the Python
1810 runtime, which is finalized via a final cleanup. */
1811 finalize_values ();
1812
2f9d54cf 1813 /* Do any final cleanups before exiting. */
a70b8144 1814 try
2f9d54cf 1815 {
fe7b42e5 1816 do_final_cleanups ();
2f9d54cf 1817 }
230d2906 1818 catch (const gdb_exception &ex)
492d29ea
PA
1819 {
1820 exception_print (gdb_stderr, ex);
1821 }
b0abbc58 1822
9e0b60a8
JM
1823 exit (exit_code);
1824}
1825
268a799a
PA
1826/* The value of the "interactive-mode" setting. */
1827static enum auto_boolean interactive_mode = AUTO_BOOLEAN_AUTO;
9e0b60a8 1828
268a799a
PA
1829/* Implement the "show interactive-mode" option. */
1830
1831static void
1832show_interactive_mode (struct ui_file *file, int from_tty,
1833 struct cmd_list_element *c,
1834 const char *value)
9e0b60a8 1835{
268a799a
PA
1836 if (interactive_mode == AUTO_BOOLEAN_AUTO)
1837 fprintf_filtered (file, "Debugger's interactive mode "
1838 "is %s (currently %s).\n",
d9de1fe3 1839 value, input_interactive_p (current_ui) ? "on" : "off");
268a799a
PA
1840 else
1841 fprintf_filtered (file, "Debugger's interactive mode is %s.\n", value);
1842}
1843
1844/* Returns whether GDB is running on an interactive terminal. */
f38d3ad1 1845
268a799a
PA
1846int
1847input_interactive_p (struct ui *ui)
1848{
c63a1f86
JK
1849 if (batch_flag)
1850 return 0;
1851
268a799a
PA
1852 if (interactive_mode != AUTO_BOOLEAN_AUTO)
1853 return interactive_mode == AUTO_BOOLEAN_TRUE;
698ba934 1854
268a799a 1855 return ui->input_interactive_p;
9e0b60a8
JM
1856}
1857\f
9e0b60a8 1858static void
0b39b52e 1859dont_repeat_command (const char *ignored, int from_tty)
9e0b60a8 1860{
dc7eb48e
PA
1861 /* Can't call dont_repeat here because we're not necessarily reading
1862 from stdin. */
1863 *saved_command_line = 0;
9e0b60a8
JM
1864}
1865\f
1866/* Functions to manipulate command line editing control variables. */
1867
1868/* Number of commands to print in each call to show_commands. */
1869#define Hist_print 10
d318976c 1870void
85c4be7c 1871show_commands (const char *args, int from_tty)
9e0b60a8
JM
1872{
1873 /* Index for history commands. Relative to history_base. */
1874 int offset;
1875
1876 /* Number of the history entry which we are planning to display next.
1877 Relative to history_base. */
1878 static int num = 0;
1879
9e0b60a8 1880 /* Print out some of the commands from the command history. */
9e0b60a8
JM
1881
1882 if (args)
1883 {
1884 if (args[0] == '+' && args[1] == '\0')
1885 /* "info editing +" should print from the stored position. */
1886 ;
1887 else
1888 /* "info editing <exp>" should print around command number <exp>. */
0e828ed1 1889 num = (parse_and_eval_long (args) - history_base) - Hist_print / 2;
9e0b60a8
JM
1890 }
1891 /* "show commands" means print the last Hist_print commands. */
1892 else
1893 {
840a9a1f 1894 num = history_length - Hist_print;
9e0b60a8
JM
1895 }
1896
1897 if (num < 0)
1898 num = 0;
1899
1900 /* If there are at least Hist_print commands, we want to display the last
1901 Hist_print rather than, say, the last 6. */
840a9a1f 1902 if (history_length - num < Hist_print)
9e0b60a8 1903 {
840a9a1f 1904 num = history_length - Hist_print;
9e0b60a8
JM
1905 if (num < 0)
1906 num = 0;
1907 }
1908
840a9a1f
PA
1909 for (offset = num;
1910 offset < num + Hist_print && offset < history_length;
1911 offset++)
9e0b60a8
JM
1912 {
1913 printf_filtered ("%5d %s\n", history_base + offset,
c5aa993b 1914 (history_get (history_base + offset))->line);
9e0b60a8
JM
1915 }
1916
1917 /* The next command we want to display is the next one that we haven't
1918 displayed yet. */
1919 num += Hist_print;
1920
1921 /* If the user repeats this command with return, it should do what
1922 "show commands +" does. This is unnecessary if arg is null,
1923 because "show commands +" is not useful after "show commands". */
1924 if (from_tty && args)
85c4be7c 1925 set_repeat_arguments ("+");
9e0b60a8
JM
1926}
1927
ebfd00d2 1928/* Update the size of our command history file to HISTORY_SIZE.
840a9a1f 1929
ebfd00d2 1930 A HISTORY_SIZE of -1 stands for unlimited. */
840a9a1f 1931
ebfd00d2
PP
1932static void
1933set_readline_history_size (int history_size)
1934{
1935 gdb_assert (history_size >= -1);
840a9a1f 1936
ebfd00d2 1937 if (history_size == -1)
840a9a1f 1938 unstifle_history ();
883b9c6c 1939 else
ebfd00d2
PP
1940 stifle_history (history_size);
1941}
1942
1943/* Called by do_setshow_command. */
1944static void
eb4c3f4a
TT
1945set_history_size_command (const char *args,
1946 int from_tty, struct cmd_list_element *c)
ebfd00d2
PP
1947{
1948 set_readline_history_size (history_size_setshow_var);
9e0b60a8
JM
1949}
1950
491144b5 1951bool info_verbose = false; /* Default verbose msgs off. */
9e0b60a8 1952
94f2c730 1953/* Called by do_set_command. An elaborate joke. */
d318976c 1954void
eb4c3f4a 1955set_verbose (const char *args, int from_tty, struct cmd_list_element *c)
9e0b60a8 1956{
6f937416 1957 const char *cmdname = "verbose";
9e0b60a8
JM
1958 struct cmd_list_element *showcmd;
1959
1960 showcmd = lookup_cmd_1 (&cmdname, showlist, NULL, 1);
1427fe5e 1961 gdb_assert (showcmd != NULL && showcmd != CMD_LIST_AMBIGUOUS);
9e0b60a8 1962
94f2c730
PW
1963 if (c->doc && c->doc_allocated)
1964 xfree ((char *) c->doc);
1965 if (showcmd->doc && showcmd->doc_allocated)
1966 xfree ((char *) showcmd->doc);
9e0b60a8
JM
1967 if (info_verbose)
1968 {
94f2c730
PW
1969 c->doc = _("Set verbose printing of informational messages.");
1970 showcmd->doc = _("Show verbose printing of informational messages.");
9e0b60a8
JM
1971 }
1972 else
1973 {
94f2c730
PW
1974 c->doc = _("Set verbosity.");
1975 showcmd->doc = _("Show verbosity.");
9e0b60a8 1976 }
94f2c730
PW
1977 c->doc_allocated = 0;
1978 showcmd->doc_allocated = 0;
9e0b60a8
JM
1979}
1980
9e0b60a8 1981/* Init the history buffer. Note that we are called after the init file(s)
371d5dec
MS
1982 have been read so that the user can change the history file via his
1983 .gdbinit file (for instance). The GDBHISTFILE environment variable
1984 overrides all of this. */
9e0b60a8
JM
1985
1986void
fba45db2 1987init_history (void)
9e0b60a8 1988{
b5a9bfbe 1989 const char *tmpenv;
9e0b60a8 1990
b58c513b 1991 tmpenv = getenv ("GDBHISTSIZE");
9e0b60a8 1992 if (tmpenv)
840a9a1f 1993 {
bc460514 1994 long var;
0fc26caf 1995 int saved_errno;
bc460514
PP
1996 char *endptr;
1997
1998 tmpenv = skip_spaces (tmpenv);
0fc26caf 1999 errno = 0;
bc460514 2000 var = strtol (tmpenv, &endptr, 10);
0fc26caf 2001 saved_errno = errno;
bc460514
PP
2002 endptr = skip_spaces (endptr);
2003
2004 /* If GDBHISTSIZE is non-numeric then ignore it. If GDBHISTSIZE is the
2005 empty string, a negative number or a huge positive number (larger than
2006 INT_MAX) then set the history size to unlimited. Otherwise set our
2007 history size to the number we have read. This behavior is consistent
2008 with how bash handles HISTSIZE. */
2009 if (*endptr != '\0')
2010 ;
2011 else if (*tmpenv == '\0'
2012 || var < 0
0fc26caf
PP
2013 || var > INT_MAX
2014 /* On targets where INT_MAX == LONG_MAX, we have to look at
2015 errno after calling strtol to distinguish between a value that
2016 is exactly INT_MAX and an overflowing value that was clamped
2017 to INT_MAX. */
2018 || (var == INT_MAX && saved_errno == ERANGE))
bc460514
PP
2019 history_size_setshow_var = -1;
2020 else
2021 history_size_setshow_var = var;
840a9a1f 2022 }
bc460514
PP
2023
2024 /* If neither the init file nor GDBHISTSIZE has set a size yet, pick the
2025 default. */
2026 if (history_size_setshow_var == -2)
840a9a1f 2027 history_size_setshow_var = 256;
9e0b60a8 2028
ebfd00d2 2029 set_readline_history_size (history_size_setshow_var);
9e0b60a8
JM
2030
2031 tmpenv = getenv ("GDBHISTFILE");
63e163f2 2032 if (tmpenv != nullptr)
1b36a34b 2033 history_filename = xstrdup (tmpenv);
63e163f2 2034 else if (history_filename == nullptr)
c5aa993b
JM
2035 {
2036 /* We include the current directory so that if the user changes
2037 directories the file written will be the same as the one
2038 that was read. */
a0b3c4fd 2039#ifdef __MSDOS__
eb2f494a 2040 /* No leading dots in file names are allowed on MSDOS. */
ff8577f6 2041 const char *fname = "_gdb_history";
a0b3c4fd 2042#else
ff8577f6 2043 const char *fname = ".gdb_history";
a0b3c4fd 2044#endif
ff8577f6
SDJ
2045
2046 gdb::unique_xmalloc_ptr<char> temp (gdb_abspath (fname));
2047 history_filename = temp.release ();
c5aa993b 2048 }
63e163f2
AB
2049
2050 if (!history_filename_empty ())
2051 read_history (history_filename);
9e0b60a8
JM
2052}
2053
920d2a44 2054static void
ab821bc6
PA
2055show_prompt (struct ui_file *file, int from_tty,
2056 struct cmd_list_element *c, const char *value)
920d2a44
AC
2057{
2058 fprintf_filtered (file, _("Gdb's prompt is \"%s\".\n"), value);
2059}
2060
3c216924
PA
2061/* "set editing" command. */
2062
2063static void
eb4c3f4a 2064set_editing (const char *args, int from_tty, struct cmd_list_element *c)
3c216924
PA
2065{
2066 change_line_handler (set_editing_cmd_var);
2067 /* Update the control variable so that MI's =cmd-param-changed event
2068 shows the correct value. */
2069 set_editing_cmd_var = current_ui->command_editing;
2070}
2071
920d2a44 2072static void
3c216924
PA
2073show_editing (struct ui_file *file, int from_tty,
2074 struct cmd_list_element *c, const char *value)
920d2a44 2075{
3e43a32a
MS
2076 fprintf_filtered (file, _("Editing of command lines as "
2077 "they are typed is %s.\n"),
3c216924 2078 current_ui->command_editing ? _("on") : _("off"));
920d2a44
AC
2079}
2080
2081static void
2082show_annotation_level (struct ui_file *file, int from_tty,
2083 struct cmd_list_element *c, const char *value)
2084{
2085 fprintf_filtered (file, _("Annotation_level is %s.\n"), value);
2086}
2087
2088static void
2089show_exec_done_display_p (struct ui_file *file, int from_tty,
2090 struct cmd_list_element *c, const char *value)
2091{
3e43a32a
MS
2092 fprintf_filtered (file, _("Notification of completion for "
2093 "asynchronous execution commands is %s.\n"),
920d2a44
AC
2094 value);
2095}
6dea1fbd 2096
8d551b02
DE
2097/* New values of the "data-directory" parameter are staged here. */
2098static char *staged_gdb_datadir;
2099
6dea1fbd
JK
2100/* "set" command for the gdb_datadir configuration variable. */
2101
2102static void
eb4c3f4a 2103set_gdb_datadir (const char *args, int from_tty, struct cmd_list_element *c)
6dea1fbd 2104{
8d551b02 2105 set_gdb_data_directory (staged_gdb_datadir);
76727919 2106 gdb::observers::gdb_datadir_changed.notify ();
6dea1fbd
JK
2107}
2108
8d551b02
DE
2109/* "show" command for the gdb_datadir configuration variable. */
2110
2111static void
2112show_gdb_datadir (struct ui_file *file, int from_tty,
2113 struct cmd_list_element *c, const char *value)
2114{
6ec1d75e
PW
2115 fprintf_filtered (file, _("GDB's data directory is \"%ps\".\n"),
2116 styled_string (file_name_style.style (),
2117 gdb_datadir.c_str ()));
8d551b02
DE
2118}
2119
63e163f2
AB
2120/* Implement 'set history filename'. */
2121
97c85fc6 2122static void
eb4c3f4a
TT
2123set_history_filename (const char *args,
2124 int from_tty, struct cmd_list_element *c)
97c85fc6
MB
2125{
2126 /* We include the current directory so that if the user changes
2127 directories the file written will be the same as the one
2128 that was read. */
63e163f2 2129 if (!history_filename_empty () && !IS_ABSOLUTE_PATH (history_filename))
ff8577f6
SDJ
2130 {
2131 gdb::unique_xmalloc_ptr<char> temp (gdb_abspath (history_filename));
2132
2133 xfree (history_filename);
2134 history_filename = temp.release ();
2135 }
97c85fc6
MB
2136}
2137
7734102d
EZ
2138static void
2139init_gdb_version_vars (void)
2140{
2141 struct internalvar *major_version_var = create_internalvar ("_gdb_major");
2142 struct internalvar *minor_version_var = create_internalvar ("_gdb_minor");
2143 int vmajor = 0, vminor = 0, vrevision = 0;
2144 sscanf (version, "%d.%d.%d", &vmajor, &vminor, &vrevision);
2145 set_internalvar_integer (major_version_var, vmajor);
2146 set_internalvar_integer (minor_version_var, vminor + (vrevision > 0));
2147}
2148
9e0b60a8 2149static void
fba45db2 2150init_main (void)
9e0b60a8 2151{
60eb5395
PA
2152 struct cmd_list_element *c;
2153
ab821bc6
PA
2154 /* Initialize the prompt to a simple "(gdb) " prompt or to whatever
2155 the DEFAULT_PROMPT is. */
2156 set_prompt (DEFAULT_PROMPT);
2157
9e0b60a8
JM
2158 /* Set the important stuff up for command editing. */
2159 command_editing_p = 1;
9e0b60a8 2160 history_expansion_p = 0;
452a569e 2161 write_history_p = 0;
9e0b60a8
JM
2162
2163 /* Setup important stuff for command line editing. */
67c296a2 2164 rl_completion_word_break_hook = gdb_completion_word_break_characters;
eb3ff9a5 2165 rl_attempted_completion_function = gdb_rl_attempted_completion_function;
67cb5b2d 2166 set_rl_completer_word_break_characters (default_word_break_characters ());
d318976c 2167 rl_completer_quote_characters = get_gdb_completer_quote_characters ();
82083d6d 2168 rl_completion_display_matches_hook = cli_display_match_list;
9e0b60a8 2169 rl_readline_name = "gdb";
7cb3ec5e 2170 rl_terminal_name = getenv ("TERM");
9e0b60a8 2171
467d8519
TT
2172 /* The name for this defun comes from Bash, where it originated.
2173 15 is Control-o, the same binding this function has in Bash. */
2174 rl_add_defun ("operate-and-get-next", gdb_rl_operate_and_get_next, 15);
2175
4d28ad1e 2176 add_setshow_string_cmd ("prompt", class_support,
ab821bc6 2177 &top_prompt,
590042fc
PW
2178 _("Set gdb's prompt."),
2179 _("Show gdb's prompt."),
ab821bc6
PA
2180 NULL, NULL,
2181 show_prompt,
4d28ad1e 2182 &setlist, &showlist);
9e0b60a8 2183
1bedd215 2184 add_com ("dont-repeat", class_support, dont_repeat_command, _("\
3e43a32a
MS
2185Don't repeat this command.\nPrimarily \
2186used inside of user-defined commands that should not be repeated when\n\
1bedd215 2187hitting return."));
9e0b60a8 2188
5bf193a2 2189 add_setshow_boolean_cmd ("editing", class_support,
3c216924 2190 &set_editing_cmd_var, _("\
5bf193a2
AC
2191Set editing of command lines as they are typed."), _("\
2192Show editing of command lines as they are typed."), _("\
9e0b60a8
JM
2193Use \"on\" to enable the editing, and \"off\" to disable it.\n\
2194Without an argument, command line editing is enabled. To edit, use\n\
5bf193a2 2195EMACS-like or VI-like commands like control-P or ESC."),
3c216924
PA
2196 set_editing,
2197 show_editing,
5bf193a2
AC
2198 &setlist, &showlist);
2199
2200 add_setshow_boolean_cmd ("save", no_class, &write_history_p, _("\
2201Set saving of the history record on exit."), _("\
2202Show saving of the history record on exit."), _("\
9e0b60a8 2203Use \"on\" to enable the saving, and \"off\" to disable it.\n\
5bf193a2
AC
2204Without an argument, saving is enabled."),
2205 NULL,
920d2a44 2206 show_write_history_p,
5bf193a2 2207 &sethistlist, &showhistlist);
9e0b60a8 2208
ebfd00d2
PP
2209 add_setshow_zuinteger_unlimited_cmd ("size", no_class,
2210 &history_size_setshow_var, _("\
590042fc
PW
2211Set the size of the command history."), _("\
2212Show the size of the command history."), _("\
2213This is the number of previous commands to keep a record of.\n\
f81d1120
PA
2214If set to \"unlimited\", the number of commands kept in the history\n\
2215list is unlimited. This defaults to the value of the environment\n\
b58c513b 2216variable \"GDBHISTSIZE\", or to 256 if this variable is not set."),
883b9c6c
YQ
2217 set_history_size_command,
2218 show_history_size,
2219 &sethistlist, &showhistlist);
4d28ad1e 2220
fc637f04
PP
2221 add_setshow_zuinteger_unlimited_cmd ("remove-duplicates", no_class,
2222 &history_remove_duplicates, _("\
2223Set how far back in history to look for and remove duplicate entries."), _("\
2224Show how far back in history to look for and remove duplicate entries."), _("\
2225If set to a nonzero value N, GDB will look back at the last N history entries\n\
2226and remove the first history entry that is a duplicate of the most recent\n\
2227entry, each time a new history entry is added.\n\
2228If set to \"unlimited\", this lookbehind is unbounded.\n\
2229Only history entries added during this session are considered for removal.\n\
2230If set to 0, removal of duplicate history entries is disabled.\n\
2231By default this option is set to 0."),
2232 NULL,
2233 show_history_remove_duplicates,
2234 &sethistlist, &showhistlist);
2235
63e163f2 2236 add_setshow_optional_filename_cmd ("filename", no_class, &history_filename, _("\
590042fc
PW
2237Set the filename in which to record the command history."), _("\
2238Show the filename in which to record the command history."), _("\
4d28ad1e 2239(the list of previous commands of which a record is kept)."),
97c85fc6 2240 set_history_filename,
920d2a44 2241 show_history_filename,
4d28ad1e 2242 &sethistlist, &showhistlist);
9e0b60a8 2243
e360902b 2244 add_setshow_boolean_cmd ("confirm", class_support, &confirm, _("\
5bf193a2
AC
2245Set whether to confirm potentially dangerous operations."), _("\
2246Show whether to confirm potentially dangerous operations."), NULL,
2247 NULL,
e360902b 2248 show_confirm,
5bf193a2 2249 &setlist, &showlist);
9e0b60a8 2250
85c07804
AC
2251 add_setshow_zinteger_cmd ("annotate", class_obscure, &annotation_level, _("\
2252Set annotation_level."), _("\
2253Show annotation_level."), _("\
9e0b60a8 22540 == normal; 1 == fullname (for use when running under emacs)\n\
85c07804 22552 == output annotated suitably for use by programs that control GDB."),
ab821bc6 2256 NULL,
920d2a44 2257 show_annotation_level,
85c07804 2258 &setlist, &showlist);
362646f5 2259
5bf193a2
AC
2260 add_setshow_boolean_cmd ("exec-done-display", class_support,
2261 &exec_done_display_p, _("\
2262Set notification of completion for asynchronous execution commands."), _("\
2263Show notification of completion for asynchronous execution commands."), _("\
2264Use \"on\" to enable the notification, and \"off\" to disable it."),
2265 NULL,
920d2a44 2266 show_exec_done_display_p,
5bf193a2 2267 &setlist, &showlist);
b14b1491
TT
2268
2269 add_setshow_filename_cmd ("data-directory", class_maintenance,
8d551b02 2270 &staged_gdb_datadir, _("Set GDB's data directory."),
b14b1491
TT
2271 _("Show GDB's data directory."),
2272 _("\
2273When set, GDB uses the specified path to search for data files."),
8d551b02 2274 set_gdb_datadir, show_gdb_datadir,
b14b1491
TT
2275 &setlist,
2276 &showlist);
268a799a
PA
2277
2278 add_setshow_auto_boolean_cmd ("interactive-mode", class_support,
2279 &interactive_mode, _("\
2280Set whether GDB's standard input is a terminal."), _("\
2281Show whether GDB's standard input is a terminal."), _("\
2282If on, GDB assumes that standard input is a terminal. In practice, it\n\
2283means that GDB should wait for the user to answer queries associated to\n\
2284commands entered at the command prompt. If off, GDB assumes that standard\n\
2285input is not a terminal, and uses the default answer to all queries.\n\
2286If auto (the default), determine which mode to use based on the standard\n\
2287input settings."),
2288 NULL,
2289 show_interactive_mode,
2290 &setlist, &showlist);
60eb5395
PA
2291
2292 c = add_cmd ("new-ui", class_support, new_ui_command, _("\
590042fc
PW
2293Create a new UI.\n\
2294Usage: new-ui INTERPRETER TTY\n\
60eb5395 2295The first argument is the name of the interpreter to run.\n\
89549d7f 2296The second argument is the terminal the UI runs on."), &cmdlist);
60eb5395 2297 set_cmd_completer (c, interpreter_completer);
9e0b60a8 2298}
64cdedad
EZ
2299
2300void
2301gdb_init (char *argv0)
2302{
68bb5386
PW
2303 saved_command_line = xstrdup ("");
2304 previous_saved_command_line = xstrdup ("");
2305
64cdedad
EZ
2306 if (pre_init_ui_hook)
2307 pre_init_ui_hook ();
2308
371d5dec 2309 /* Run the init function of each source file. */
64cdedad 2310
64cdedad
EZ
2311#ifdef __MSDOS__
2312 /* Make sure we return to the original directory upon exit, come
2313 what may, since the OS doesn't do that for us. */
2314 make_final_cleanup (do_chdir_cleanup, xstrdup (current_directory));
2315#endif
2316
371d5dec 2317 init_cmd_lists (); /* This needs to be done first. */
9dea9163 2318
24b73f8e
PP
2319 init_page_info ();
2320
9dea9163 2321 /* Here is where we call all the _initialize_foo routines. */
64cdedad 2322 initialize_all_files ();
9dea9163 2323
6c95b8df
PA
2324 /* This creates the current_program_space. Do this after all the
2325 _initialize_foo routines have had a chance to install their
2326 per-sspace data keys. Also do this before
2327 initialize_current_architecture is called, because it accesses
2328 exec_bfd of the current program space. */
2329 initialize_progspace ();
2330 initialize_inferiors ();
64cdedad 2331 initialize_current_architecture ();
371d5dec 2332 init_main (); /* But that omits this file! Do it now. */
64cdedad 2333
0ea3f30e
DJ
2334 initialize_stdin_serial ();
2335
6a06d660
PP
2336 /* Take a snapshot of our tty state before readline/ncurses have had a chance
2337 to alter it. */
2338 set_initial_gdb_ttystate ();
2339
362646f5 2340 async_init_signals ();
64cdedad 2341
371d5dec
MS
2342 /* We need a default language for parsing expressions, so simple
2343 things like "set width 0" won't fail if no language is explicitly
2344 set in a config file or implicitly set by reading an executable
2345 during startup. */
64cdedad 2346 set_language (language_c);
371d5dec 2347 expected_language = current_language; /* Don't warn about the change. */
64cdedad 2348
6dddc817 2349 /* Python initialization, for example, can require various commands to be
371d5dec
MS
2350 installed. For example "info pretty-printer" needs the "info"
2351 prefix to be installed. Keep things simple and just do final
6dddc817
DE
2352 script initialization here. */
2353 finish_ext_lang_initialization ();
7734102d
EZ
2354
2355 /* Create $_gdb_major and $_gdb_minor convenience variables. */
2356 init_gdb_version_vars ();
64cdedad 2357}
This page took 2.368244 seconds and 4 git commands to generate.