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