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