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