Use ui_out_emit_list in more places
[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
d7e74731 682 current_uiout->redirect (&str_file);
7becfd03 683 make_cleanup_ui_out_redirect_pop (current_uiout);
5da1313b 684
97468094 685 scoped_restore save_stdout
d7e74731 686 = make_scoped_restore (&gdb_stdout, &str_file);
97468094 687 scoped_restore save_stderr
d7e74731 688 = make_scoped_restore (&gdb_stderr, &str_file);
97468094 689 scoped_restore save_stdlog
d7e74731 690 = make_scoped_restore (&gdb_stdlog, &str_file);
97468094 691 scoped_restore save_stdtarg
d7e74731 692 = make_scoped_restore (&gdb_stdtarg, &str_file);
97468094 693 scoped_restore save_stdtargerr
d7e74731 694 = make_scoped_restore (&gdb_stdtargerr, &str_file);
5da1313b
JK
695
696 execute_command (p, from_tty);
697
5da1313b
JK
698 do_cleanups (cleanup);
699
d7e74731 700 return std::move (str_file.string ());
5da1313b
JK
701}
702
d318976c 703\f
47a80e90
TT
704/* When nonzero, cause dont_repeat to do nothing. This should only be
705 set via prevent_dont_repeat. */
706
707static int suppress_dont_repeat = 0;
708
d318976c 709/* Commands call this if they do not want to be repeated by null lines. */
9e0b60a8 710
d318976c
FN
711void
712dont_repeat (void)
9e0b60a8 713{
f38d3ad1
PA
714 struct ui *ui = current_ui;
715
47a80e90 716 if (suppress_dont_repeat || server_command)
d318976c 717 return;
9e0b60a8 718
d318976c 719 /* If we aren't reading from standard input, we are saving the last
371d5dec
MS
720 thing read from stdin in line and don't want to delete it. Null
721 lines won't repeat here in any case. */
268a799a 722 if (ui->instream == ui->stdin_stream)
dc7eb48e 723 *saved_command_line = 0;
9e0b60a8 724}
47a80e90
TT
725
726/* Prevent dont_repeat from working, and return a cleanup that
727 restores the previous state. */
728
1ac32117 729scoped_restore_tmpl<int>
47a80e90
TT
730prevent_dont_repeat (void)
731{
1ac32117 732 return make_scoped_restore (&suppress_dont_repeat, 1);
47a80e90
TT
733}
734
d318976c
FN
735\f
736/* Read a line from the stream "instream" without command line editing.
9e0b60a8 737
7a3bde34 738 It prints PROMPT once at the start.
d318976c
FN
739 Action is compatible with "readline", e.g. space for the result is
740 malloc'd and should be freed by the caller.
9e0b60a8 741
d318976c 742 A NULL return means end of file. */
c5c136ea
PA
743
744static char *
7a3bde34 745gdb_readline_no_editing (const char *prompt)
9e0b60a8 746{
7a3bde34 747 struct buffer line_buffer;
f38d3ad1 748 struct ui *ui = current_ui;
3212b858
PA
749 /* Read from stdin if we are executing a user defined command. This
750 is the right thing for prompt_for_continue, at least. */
f38d3ad1 751 FILE *stream = ui->instream != NULL ? ui->instream : stdin;
3212b858 752 int fd = fileno (stream);
9e0b60a8 753
7a3bde34
PA
754 buffer_init (&line_buffer);
755
756 if (prompt != NULL)
9e0b60a8 757 {
d318976c
FN
758 /* Don't use a _filtered function here. It causes the assumed
759 character position to be off, since the newline we read from
760 the user is not accounted for. */
7a3bde34 761 fputs_unfiltered (prompt, gdb_stdout);
9e0b60a8
JM
762 gdb_flush (gdb_stdout);
763 }
764
9e0b60a8
JM
765 while (1)
766 {
7a3bde34 767 int c;
3212b858
PA
768 int numfds;
769 fd_set readfds;
7a3bde34 770
3212b858
PA
771 QUIT;
772
773 /* Wait until at least one byte of data is available. Control-C
f0881b37 774 can interrupt interruptible_select, but not fgetc. */
3212b858
PA
775 FD_ZERO (&readfds);
776 FD_SET (fd, &readfds);
f0881b37 777 if (interruptible_select (fd + 1, &readfds, NULL, NULL, NULL) == -1)
3212b858
PA
778 {
779 if (errno == EINTR)
780 {
781 /* If this was ctrl-c, the QUIT above handles it. */
782 continue;
783 }
784 perror_with_name (("select"));
785 }
786
787 c = fgetc (stream);
9e0b60a8 788
d318976c 789 if (c == EOF)
9e0b60a8 790 {
7a3bde34 791 if (line_buffer.used_size > 0)
d318976c
FN
792 /* The last line does not end with a newline. Return it, and
793 if we are called again fgetc will still return EOF and
794 we'll return NULL then. */
9e0b60a8 795 break;
7a3bde34 796 xfree (buffer_finish (&line_buffer));
d318976c 797 return NULL;
9e0b60a8 798 }
c5aa993b 799
d318976c 800 if (c == '\n')
9e0b60a8 801 {
7a3bde34
PA
802 if (line_buffer.used_size > 0
803 && line_buffer.buffer[line_buffer.used_size - 1] == '\r')
804 line_buffer.used_size--;
d318976c 805 break;
9e0b60a8 806 }
9e0b60a8 807
7a3bde34 808 buffer_grow_char (&line_buffer, c);
9e0b60a8
JM
809 }
810
7a3bde34
PA
811 buffer_grow_char (&line_buffer, '\0');
812 return buffer_finish (&line_buffer);
9e0b60a8
JM
813}
814
d318976c
FN
815/* Variables which control command line editing and history
816 substitution. These variables are given default values at the end
817 of this file. */
818static int command_editing_p;
920d2a44 819
d318976c
FN
820/* NOTE 1999-04-29: This variable will be static again, once we modify
821 gdb to use the event loop as the default command loop and we merge
c378eb4e 822 event-top.c into this file, top.c. */
920d2a44 823
d318976c 824/* static */ int history_expansion_p;
920d2a44 825
d318976c 826static int write_history_p;
920d2a44
AC
827static void
828show_write_history_p (struct ui_file *file, int from_tty,
829 struct cmd_list_element *c, const char *value)
830{
831 fprintf_filtered (file, _("Saving of the history record on exit is %s.\n"),
832 value);
833}
834
840a9a1f 835/* The variable associated with the "set/show history size"
ebfd00d2
PP
836 command. The value -1 means unlimited, and -2 means undefined. */
837static int history_size_setshow_var = -2;
840a9a1f 838
920d2a44
AC
839static void
840show_history_size (struct ui_file *file, int from_tty,
841 struct cmd_list_element *c, const char *value)
842{
843 fprintf_filtered (file, _("The size of the command history is %s.\n"),
844 value);
845}
846
fc637f04
PP
847/* Variable associated with the "history remove-duplicates" option.
848 The value -1 means unlimited. */
849static int history_remove_duplicates = 0;
850
851static void
852show_history_remove_duplicates (struct ui_file *file, int from_tty,
853 struct cmd_list_element *c, const char *value)
854{
855 fprintf_filtered (file,
856 _("The number of history entries to look back at for "
857 "duplicates is %s.\n"),
858 value);
859}
860
d318976c 861static char *history_filename;
920d2a44
AC
862static void
863show_history_filename (struct ui_file *file, int from_tty,
864 struct cmd_list_element *c, const char *value)
865{
3e43a32a
MS
866 fprintf_filtered (file, _("The filename in which to record "
867 "the command history is \"%s\".\n"),
920d2a44
AC
868 value);
869}
9e0b60a8 870
b4f5539f 871/* This is like readline(), but it has some gdb-specific behavior.
2e03ee74 872 gdb may want readline in both the synchronous and async modes during
b4f5539f
TT
873 a single gdb invocation. At the ordinary top-level prompt we might
874 be using the async readline. That means we can't use
875 rl_pre_input_hook, since it doesn't work properly in async mode.
876 However, for a secondary prompt (" >", such as occurs during a
2e03ee74
DJ
877 `define'), gdb wants a synchronous response.
878
879 We used to call readline() directly, running it in synchronous
880 mode. But mixing modes this way is not supported, and as of
881 readline 5.x it no longer works; the arrow keys come unbound during
882 the synchronous call. So we make a nested call into the event
883 loop. That's what gdb_readline_wrapper is for. */
884
885/* A flag set as soon as gdb_readline_wrapper_line is called; we can't
886 rely on gdb_readline_wrapper_result, which might still be NULL if
887 the user types Control-D for EOF. */
888static int gdb_readline_wrapper_done;
889
890/* The result of the current call to gdb_readline_wrapper, once a newline
891 is seen. */
892static char *gdb_readline_wrapper_result;
893
894/* Any intercepted hook. Operate-and-get-next sets this, expecting it
895 to be called after the newline is processed (which will redisplay
896 the prompt). But in gdb_readline_wrapper we will not get a new
897 prompt until the next call, or until we return to the event loop.
898 So we disable this hook around the newline and restore it before we
899 return. */
900static void (*saved_after_char_processing_hook) (void);
901
948578a9 902
948578a9
PP
903/* See top.h. */
904
905int
dbf30ca3 906gdb_in_secondary_prompt_p (struct ui *ui)
948578a9 907{
dbf30ca3 908 return ui->secondary_prompt_depth > 0;
948578a9
PP
909}
910
911
2e03ee74
DJ
912/* This function is called when readline has seen a complete line of
913 text. */
914
915static void
916gdb_readline_wrapper_line (char *line)
917{
918 gdb_assert (!gdb_readline_wrapper_done);
919 gdb_readline_wrapper_result = line;
920 gdb_readline_wrapper_done = 1;
921
922 /* Prevent operate-and-get-next from acting too early. */
923 saved_after_char_processing_hook = after_char_processing_hook;
924 after_char_processing_hook = NULL;
1b05479a
DJ
925
926 /* Prevent parts of the prompt from being redisplayed if annotations
0017922d 927 are enabled, and readline's state getting out of sync. We'll
d3d4baed
PA
928 reinstall the callback handler, which puts the terminal in raw
929 mode (or in readline lingo, in prepped state), when we're next
930 ready to process user input, either in display_gdb_prompt, or if
931 we're handling an asynchronous target event and running in the
932 background, just before returning to the event loop to process
933 further input (or more target events). */
3c216924 934 if (current_ui->command_editing)
d3d4baed 935 gdb_rl_callback_handler_remove ();
2e03ee74
DJ
936}
937
938struct gdb_readline_wrapper_cleanup
939 {
940 void (*handler_orig) (char *);
2e03ee74 941 int already_prompted_orig;
93d6eb10
PA
942
943 /* Whether the target was async. */
944 int target_is_async_orig;
2e03ee74
DJ
945 };
946
947static void
948gdb_readline_wrapper_cleanup (void *arg)
949{
a74e1786 950 struct ui *ui = current_ui;
19ba03f4
SM
951 struct gdb_readline_wrapper_cleanup *cleanup
952 = (struct gdb_readline_wrapper_cleanup *) arg;
2e03ee74 953
3c216924
PA
954 if (ui->command_editing)
955 rl_already_prompted = cleanup->already_prompted_orig;
2e03ee74 956
a74e1786
PA
957 gdb_assert (ui->input_handler == gdb_readline_wrapper_line);
958 ui->input_handler = cleanup->handler_orig;
0017922d 959
d3d4baed
PA
960 /* Don't restore our input handler in readline yet. That would make
961 readline prep the terminal (putting it in raw mode), while the
962 line we just read may trigger execution of a command that expects
963 the terminal in the default cooked/canonical mode, such as e.g.,
964 running Python's interactive online help utility. See
965 gdb_readline_wrapper_line for when we'll reinstall it. */
0017922d 966
2e03ee74
DJ
967 gdb_readline_wrapper_result = NULL;
968 gdb_readline_wrapper_done = 0;
dbf30ca3
PA
969 ui->secondary_prompt_depth--;
970 gdb_assert (ui->secondary_prompt_depth >= 0);
2e03ee74
DJ
971
972 after_char_processing_hook = saved_after_char_processing_hook;
973 saved_after_char_processing_hook = NULL;
974
93d6eb10 975 if (cleanup->target_is_async_orig)
6a3753b3 976 target_async (1);
93d6eb10 977
2e03ee74
DJ
978 xfree (cleanup);
979}
980
b4f5539f 981char *
38bcc89d 982gdb_readline_wrapper (const char *prompt)
b4f5539f 983{
a74e1786 984 struct ui *ui = current_ui;
2e03ee74
DJ
985 struct cleanup *back_to;
986 struct gdb_readline_wrapper_cleanup *cleanup;
987 char *retval;
988
8d749320 989 cleanup = XNEW (struct gdb_readline_wrapper_cleanup);
a74e1786
PA
990 cleanup->handler_orig = ui->input_handler;
991 ui->input_handler = gdb_readline_wrapper_line;
2e03ee74 992
3c216924
PA
993 if (ui->command_editing)
994 cleanup->already_prompted_orig = rl_already_prompted;
995 else
996 cleanup->already_prompted_orig = 0;
2e03ee74 997
93d6eb10
PA
998 cleanup->target_is_async_orig = target_is_async_p ();
999
dbf30ca3 1000 ui->secondary_prompt_depth++;
2e03ee74
DJ
1001 back_to = make_cleanup (gdb_readline_wrapper_cleanup, cleanup);
1002
4295e285 1003 /* Processing events may change the current UI. */
4b6749b9 1004 scoped_restore save_ui = make_scoped_restore (&current_ui);
4295e285 1005
93d6eb10 1006 if (cleanup->target_is_async_orig)
6a3753b3 1007 target_async (0);
93d6eb10 1008
6e5d74e7
PA
1009 /* Display our prompt and prevent double prompt display. Don't pass
1010 down a NULL prompt, since that has special meaning for
1011 display_gdb_prompt -- it indicates a request to print the primary
1012 prompt, while we want a secondary prompt here. */
1013 display_gdb_prompt (prompt != NULL ? prompt : "");
3c216924
PA
1014 if (ui->command_editing)
1015 rl_already_prompted = 1;
2e03ee74 1016
362646f5 1017 if (after_char_processing_hook)
2e03ee74
DJ
1018 (*after_char_processing_hook) ();
1019 gdb_assert (after_char_processing_hook == NULL);
1020
e0dd0826 1021 while (gdb_do_one_event () >= 0)
2e03ee74
DJ
1022 if (gdb_readline_wrapper_done)
1023 break;
b4f5539f 1024
2e03ee74
DJ
1025 retval = gdb_readline_wrapper_result;
1026 do_cleanups (back_to);
1027 return retval;
b4f5539f
TT
1028}
1029
9e0b60a8 1030\f
467d8519
TT
1031/* The current saved history number from operate-and-get-next.
1032 This is -1 if not valid. */
1033static int operate_saved_history = -1;
1034
1035/* This is put on the appropriate hook and helps operate-and-get-next
1036 do its work. */
b9362cc7 1037static void
5ae5f592 1038gdb_rl_operate_and_get_next_completion (void)
467d8519
TT
1039{
1040 int delta = where_history () - operate_saved_history;
5d502164 1041
467d8519
TT
1042 /* The `key' argument to rl_get_previous_history is ignored. */
1043 rl_get_previous_history (delta, 0);
1044 operate_saved_history = -1;
1045
1046 /* readline doesn't automatically update the display for us. */
12f4afab 1047 rl_redisplay ();
467d8519
TT
1048
1049 after_char_processing_hook = NULL;
1050 rl_pre_input_hook = NULL;
1051}
1052
1053/* This is a gdb-local readline command handler. It accepts the
1054 current command line (like RET does) and, if this command was taken
1055 from the history, arranges for the next command in the history to
1056 appear on the command line when the prompt returns.
1057 We ignore the arguments. */
1058static int
1059gdb_rl_operate_and_get_next (int count, int key)
1060{
b5686e99
MK
1061 int where;
1062
362646f5
AC
1063 /* Use the async hook. */
1064 after_char_processing_hook = gdb_rl_operate_and_get_next_completion;
467d8519 1065
b5686e99
MK
1066 /* Find the current line, and find the next line to use. */
1067 where = where_history();
1068
1fb2e2b5
PA
1069 if ((history_is_stifled () && (history_length >= history_max_entries))
1070 || (where >= history_length - 1))
b5686e99
MK
1071 operate_saved_history = where;
1072 else
1073 operate_saved_history = where + 1;
1074
467d8519
TT
1075 return rl_newline (1, key);
1076}
08b13bdd
PP
1077
1078/* Number of user commands executed during this session. */
1079
1080static int command_count = 0;
1081
1082/* Add the user command COMMAND to the input history list. */
1083
1084void
1085gdb_add_history (const char *command)
1086{
08b13bdd 1087 command_count++;
fc637f04
PP
1088
1089 if (history_remove_duplicates != 0)
1090 {
1091 int lookbehind;
1092 int lookbehind_threshold;
1093
1094 /* The lookbehind threshold for finding a duplicate history entry is
1095 bounded by command_count because we can't meaningfully delete
1096 history entries that are already stored in the history file since
1097 the history file is appended to. */
1098 if (history_remove_duplicates == -1
1099 || history_remove_duplicates > command_count)
1100 lookbehind_threshold = command_count;
1101 else
1102 lookbehind_threshold = history_remove_duplicates;
1103
1104 using_history ();
1105 for (lookbehind = 0; lookbehind < lookbehind_threshold; lookbehind++)
1106 {
1107 HIST_ENTRY *temp = previous_history ();
1108
1109 if (temp == NULL)
1110 break;
1111
1112 if (strcmp (temp->line, command) == 0)
1113 {
1114 HIST_ENTRY *prev = remove_history (where_history ());
1115 command_count--;
1116 free_history_entry (prev);
1117 break;
1118 }
1119 }
1120 using_history ();
1121 }
1122
1123 add_history (command);
08b13bdd
PP
1124}
1125
1126/* Safely append new history entries to the history file in a corruption-free
1127 way using an intermediate local history file. */
1128
1129static void
1130gdb_safe_append_history (void)
1131{
1132 int ret, saved_errno;
1133 char *local_history_filename;
1134 struct cleanup *old_chain;
1135
1136 local_history_filename
b196bc4c 1137 = xstrprintf ("%s-gdb%ld~", history_filename, (long) getpid ());
08b13bdd
PP
1138 old_chain = make_cleanup (xfree, local_history_filename);
1139
1140 ret = rename (history_filename, local_history_filename);
1141 saved_errno = errno;
1142 if (ret < 0 && saved_errno != ENOENT)
1143 {
1144 warning (_("Could not rename %s to %s: %s"),
1145 history_filename, local_history_filename,
1146 safe_strerror (saved_errno));
1147 }
1148 else
1149 {
1150 if (ret < 0)
1151 {
1152 /* If the rename failed with ENOENT then either the global history
1153 file never existed in the first place or another GDB process is
1154 currently appending to it (and has thus temporarily renamed it).
1155 Since we can't distinguish between these two cases, we have to
1156 conservatively assume the first case and therefore must write out
1157 (not append) our known history to our local history file and try
1158 to move it back anyway. Otherwise a global history file would
1159 never get created! */
1160 gdb_assert (saved_errno == ENOENT);
1161 write_history (local_history_filename);
1162 }
1163 else
1164 {
1165 append_history (command_count, local_history_filename);
2093d2d3
PP
1166 if (history_is_stifled ())
1167 history_truncate_file (local_history_filename, history_max_entries);
08b13bdd
PP
1168 }
1169
1170 ret = rename (local_history_filename, history_filename);
1171 saved_errno = errno;
1172 if (ret < 0 && saved_errno != EEXIST)
1173 warning (_("Could not rename %s to %s: %s"),
1174 local_history_filename, history_filename,
1175 safe_strerror (saved_errno));
1176 }
1177
1178 do_cleanups (old_chain);
1179}
1180
b69d38af
PA
1181/* Read one line from the command input stream `instream' into a local
1182 static buffer. The buffer is made bigger as necessary. Returns
1183 the address of the start of the line.
9e0b60a8 1184
d318976c 1185 NULL is returned for end of file.
9e0b60a8 1186
268a799a 1187 *If* input is from an interactive stream (stdin), the line read is
b69d38af
PA
1188 copied into the global 'saved_command_line' so that it can be
1189 repeated.
9e0b60a8 1190
b69d38af
PA
1191 This routine either uses fancy command line editing or simple input
1192 as the user has requested. */
10689f25 1193
d318976c 1194char *
a121b7c1
PA
1195command_line_input (const char *prompt_arg, int repeat,
1196 const char *annotation_suffix)
9e0b60a8 1197{
b69d38af
PA
1198 static struct buffer cmd_line_buffer;
1199 static int cmd_line_buffer_initialized;
f38d3ad1 1200 struct ui *ui = current_ui;
38bcc89d 1201 const char *prompt = prompt_arg;
b69d38af 1202 char *cmd;
268a799a 1203 int from_tty = ui->instream == ui->stdin_stream;
d318976c
FN
1204
1205 /* The annotation suffix must be non-NULL. */
1206 if (annotation_suffix == NULL)
1207 annotation_suffix = "";
9e0b60a8 1208
268a799a 1209 if (from_tty && annotation_level > 1)
d318976c 1210 {
38bcc89d
SM
1211 char *local_prompt;
1212
224c3ddb
SM
1213 local_prompt
1214 = (char *) alloca ((prompt == NULL ? 0 : strlen (prompt))
1215 + strlen (annotation_suffix) + 40);
38bcc89d 1216 if (prompt == NULL)
d318976c
FN
1217 local_prompt[0] = '\0';
1218 else
38bcc89d 1219 strcpy (local_prompt, prompt);
d318976c
FN
1220 strcat (local_prompt, "\n\032\032");
1221 strcat (local_prompt, annotation_suffix);
1222 strcat (local_prompt, "\n");
38bcc89d
SM
1223
1224 prompt = local_prompt;
d318976c 1225 }
9e0b60a8 1226
b69d38af 1227 if (!cmd_line_buffer_initialized)
9e0b60a8 1228 {
b69d38af
PA
1229 buffer_init (&cmd_line_buffer);
1230 cmd_line_buffer_initialized = 1;
9e0b60a8 1231 }
9e0b60a8 1232
b69d38af
PA
1233 /* Starting a new command line. */
1234 cmd_line_buffer.used_size = 0;
9e0b60a8 1235
d318976c
FN
1236#ifdef STOP_SIGNAL
1237 if (job_control)
362646f5 1238 signal (STOP_SIGNAL, handle_stop_sig);
d318976c
FN
1239#endif
1240
1241 while (1)
9e0b60a8 1242 {
b69d38af
PA
1243 char *rl;
1244
371d5dec
MS
1245 /* Make sure that all output has been output. Some machines may
1246 let you get away with leaving out some of the gdb_flush, but
1247 not all. */
d318976c
FN
1248 wrap_here ("");
1249 gdb_flush (gdb_stdout);
1250 gdb_flush (gdb_stderr);
1251
1252 if (source_file_name != NULL)
637537d0 1253 ++source_line_number;
d318976c 1254
268a799a 1255 if (from_tty && annotation_level > 1)
d318976c 1256 {
306d9ac5
DC
1257 puts_unfiltered ("\n\032\032pre-");
1258 puts_unfiltered (annotation_suffix);
1259 puts_unfiltered ("\n");
d318976c
FN
1260 }
1261
1262 /* Don't use fancy stuff if not talking to stdin. */
268a799a
PA
1263 if (deprecated_readline_hook
1264 && from_tty
1265 && input_interactive_p (current_ui))
d318976c 1266 {
38bcc89d 1267 rl = (*deprecated_readline_hook) (prompt);
d318976c 1268 }
268a799a
PA
1269 else if (command_editing_p
1270 && from_tty
1271 && input_interactive_p (current_ui))
d318976c 1272 {
38bcc89d 1273 rl = gdb_readline_wrapper (prompt);
d318976c 1274 }
9e0b60a8 1275 else
d318976c 1276 {
c5c136ea 1277 rl = gdb_readline_no_editing (prompt);
d318976c 1278 }
9e0b60a8 1279
b69d38af
PA
1280 cmd = handle_line_of_input (&cmd_line_buffer, rl,
1281 repeat, annotation_suffix);
1282 if (cmd == (char *) EOF)
d318976c 1283 {
b69d38af 1284 cmd = NULL;
d318976c 1285 break;
9e0b60a8 1286 }
b69d38af 1287 if (cmd != NULL)
d318976c 1288 break;
9e0b60a8 1289
6e5d74e7
PA
1290 /* Got partial input. I.e., got a line that ends with a
1291 continuation character (backslash). Suppress printing the
1292 prompt again. */
38bcc89d 1293 prompt = NULL;
d318976c 1294 }
9e0b60a8 1295
d318976c
FN
1296#ifdef STOP_SIGNAL
1297 if (job_control)
1298 signal (STOP_SIGNAL, SIG_DFL);
1299#endif
9e0b60a8 1300
b69d38af 1301 return cmd;
9e0b60a8
JM
1302}
1303\f
371d5dec 1304/* Print the GDB banner. */
9e0b60a8 1305void
fba45db2 1306print_gdb_version (struct ui_file *stream)
9e0b60a8
JM
1307{
1308 /* From GNU coding standards, first line is meant to be easy for a
1309 program to parse, and is just canonical program name and version
371d5dec 1310 number, which starts after last space. */
9e0b60a8 1311
c16158bc 1312 fprintf_filtered (stream, "GNU gdb %s%s\n", PKGVERSION, version);
9e0b60a8 1313
371d5dec 1314 /* Second line is a copyright notice. */
9e0b60a8 1315
3e43a32a 1316 fprintf_filtered (stream,
61baf725 1317 "Copyright (C) 2017 Free Software Foundation, Inc.\n");
9e0b60a8
JM
1318
1319 /* Following the copyright is a brief statement that the program is
1320 free software, that users are free to copy and change it on
1321 certain conditions, that it is covered by the GNU GPL, and that
371d5dec 1322 there is no warranty. */
9e0b60a8
JM
1323
1324 fprintf_filtered (stream, "\
3e43a32a
MS
1325License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\
1326\nThis is free software: you are free to change and redistribute it.\n\
0b93d57c 1327There is NO WARRANTY, to the extent permitted by law. Type \"show copying\"\n\
b8533aec 1328and \"show warranty\" for details.\n");
9e0b60a8 1329
371d5dec 1330 /* After the required info we print the configuration information. */
9e0b60a8
JM
1331
1332 fprintf_filtered (stream, "This GDB was configured as \"");
6314a349 1333 if (strcmp (host_name, target_name) != 0)
9e0b60a8 1334 {
3e43a32a
MS
1335 fprintf_filtered (stream, "--host=%s --target=%s",
1336 host_name, target_name);
9e0b60a8
JM
1337 }
1338 else
1339 {
1340 fprintf_filtered (stream, "%s", host_name);
1341 }
6eaaf48b
EZ
1342 fprintf_filtered (stream, "\".\n\
1343Type \"show configuration\" for configuration details.");
c16158bc
JM
1344
1345 if (REPORT_BUGS_TO[0])
1346 {
6eaaf48b 1347 fprintf_filtered (stream,
c16158bc 1348 _("\nFor bug reporting instructions, please see:\n"));
1cf55f60 1349 fprintf_filtered (stream, "%s.\n", REPORT_BUGS_TO);
c16158bc 1350 }
1cf55f60
PM
1351 fprintf_filtered (stream,
1352 _("Find the GDB manual and other documentation \
1353resources online at:\n<http://www.gnu.org/software/gdb/documentation/>.\n"));
1354 fprintf_filtered (stream, _("For help, type \"help\".\n"));
1355 fprintf_filtered (stream, _("Type \"apropos word\" to search for \
af4c453a 1356commands related to \"word\"."));
9e0b60a8 1357}
6eaaf48b
EZ
1358
1359/* Print the details of GDB build-time configuration. */
1360void
1361print_gdb_configuration (struct ui_file *stream)
1362{
1363 fprintf_filtered (stream, _("\
1364This GDB was configured as follows:\n\
1365 configure --host=%s --target=%s\n\
1366"), host_name, target_name);
1367 fprintf_filtered (stream, _("\
1368 --with-auto-load-dir=%s\n\
1369 --with-auto-load-safe-path=%s\n\
1370"), AUTO_LOAD_DIR, AUTO_LOAD_SAFE_PATH);
1371#if HAVE_LIBEXPAT
1372 fprintf_filtered (stream, _("\
1373 --with-expat\n\
1374"));
1375#else
1376 fprintf_filtered (stream, _("\
1377 --without-expat\n\
1378"));
1379#endif
1380 if (GDB_DATADIR[0])
1381 fprintf_filtered (stream, _("\
1382 --with-gdb-datadir=%s%s\n\
1383"), GDB_DATADIR, GDB_DATADIR_RELOCATABLE ? " (relocatable)" : "");
1384#ifdef ICONV_BIN
1385 fprintf_filtered (stream, _("\
1386 --with-iconv-bin=%s%s\n\
1387"), ICONV_BIN, ICONV_BIN_RELOCATABLE ? " (relocatable)" : "");
1388#endif
1389 if (JIT_READER_DIR[0])
1390 fprintf_filtered (stream, _("\
1391 --with-jit-reader-dir=%s%s\n\
1392"), JIT_READER_DIR, JIT_READER_DIR_RELOCATABLE ? " (relocatable)" : "");
1393#if HAVE_LIBUNWIND_IA64_H
1394 fprintf_filtered (stream, _("\
1395 --with-libunwind-ia64\n\
1396"));
1397#else
1398 fprintf_filtered (stream, _("\
1399 --without-libunwind-ia64\n\
1400"));
1401#endif
1402#if HAVE_LIBLZMA
1403 fprintf_filtered (stream, _("\
1404 --with-lzma\n\
1405"));
1406#else
1407 fprintf_filtered (stream, _("\
1408 --without-lzma\n\
1409"));
1410#endif
1411#ifdef WITH_PYTHON_PATH
1412 fprintf_filtered (stream, _("\
1413 --with-python=%s%s\n\
1414"), WITH_PYTHON_PATH, PYTHON_PATH_RELOCATABLE ? " (relocatable)" : "");
1415#endif
97d66cc6
EZ
1416#if HAVE_GUILE
1417 fprintf_filtered (stream, _("\
1418 --with-guile\n\
1419"));
1420#else
1421 fprintf_filtered (stream, _("\
1422 --without-guile\n\
1423"));
1424#endif
6eaaf48b
EZ
1425#ifdef RELOC_SRCDIR
1426 fprintf_filtered (stream, _("\
1427 --with-relocated-sources=%s\n\
1428"), RELOC_SRCDIR);
1429#endif
1430 if (DEBUGDIR[0])
1431 fprintf_filtered (stream, _("\
1432 --with-separate-debug-dir=%s%s\n\
1433"), DEBUGDIR, DEBUGDIR_RELOCATABLE ? " (relocatable)" : "");
1434 if (TARGET_SYSTEM_ROOT[0])
1435 fprintf_filtered (stream, _("\
1436 --with-sysroot=%s%s\n\
1437"), TARGET_SYSTEM_ROOT, TARGET_SYSTEM_ROOT_RELOCATABLE ? " (relocatable)" : "");
1438 if (SYSTEM_GDBINIT[0])
1439 fprintf_filtered (stream, _("\
1440 --with-system-gdbinit=%s%s\n\
1441"), SYSTEM_GDBINIT, SYSTEM_GDBINIT_RELOCATABLE ? " (relocatable)" : "");
ab116149
YQ
1442#if HAVE_LIBBABELTRACE
1443 fprintf_filtered (stream, _("\
1444 --with-babeltrace\n\
1445"));
1446#else
1447 fprintf_filtered (stream, _("\
1448 --without-babeltrace\n\
1449"));
1450#endif
48d1d6f5
EZ
1451 /* We assume "relocatable" will be printed at least once, thus we always
1452 print this text. It's a reasonably safe assumption for now. */
1453 fprintf_filtered (stream, _("\n\
1454(\"Relocatable\" means the directory can be moved with the GDB installation\n\
1455tree, and GDB will still find it.)\n\
1456"));
6eaaf48b 1457}
9e0b60a8 1458\f
95298e72 1459
ab821bc6
PA
1460/* The current top level prompt, settable with "set prompt", and/or
1461 with the python `gdb.prompt_hook' hook. */
1462static char *top_prompt;
9e0b60a8 1463
ab821bc6 1464/* Access method for the GDB prompt string. */
95298e72
PM
1465
1466char *
ab821bc6 1467get_prompt (void)
95298e72 1468{
ab821bc6 1469 return top_prompt;
95298e72
PM
1470}
1471
ab821bc6 1472/* Set method for the GDB prompt string. */
95298e72
PM
1473
1474void
ab821bc6 1475set_prompt (const char *s)
95298e72 1476{
ab821bc6 1477 char *p = xstrdup (s);
95298e72 1478
ab821bc6
PA
1479 xfree (top_prompt);
1480 top_prompt = p;
9e0b60a8 1481}
9e0b60a8 1482\f
c5aa993b 1483
b0abbc58 1484struct qt_args
9e0b60a8 1485{
b0abbc58
JJ
1486 char *args;
1487 int from_tty;
1488};
9e0b60a8 1489
54a012c9
PA
1490/* Callback for iterate_over_inferiors. Kills or detaches the given
1491 inferior, depending on how we originally gained control of it. */
1492
1493static int
1494kill_or_detach (struct inferior *inf, void *args)
1495{
19ba03f4 1496 struct qt_args *qt = (struct qt_args *) args;
54a012c9
PA
1497 struct thread_info *thread;
1498
6c95b8df
PA
1499 if (inf->pid == 0)
1500 return 0;
1501
b8fa0bfa
PA
1502 thread = any_thread_of_process (inf->pid);
1503 if (thread != NULL)
9e0b60a8 1504 {
54a012c9 1505 switch_to_thread (thread->ptid);
c35b1492
PA
1506
1507 /* Leave core files alone. */
1508 if (target_has_execution)
1509 {
1510 if (inf->attach_flag)
1511 target_detach (qt->args, qt->from_tty);
1512 else
1513 target_kill ();
1514 }
9e0b60a8
JM
1515 }
1516
54a012c9
PA
1517 return 0;
1518}
1519
b8fa0bfa
PA
1520/* Callback for iterate_over_inferiors. Prints info about what GDB
1521 will do to each inferior on a "quit". ARG points to a struct
1522 ui_out where output is to be collected. */
1523
1524static int
1525print_inferior_quit_action (struct inferior *inf, void *arg)
1526{
19ba03f4 1527 struct ui_file *stb = (struct ui_file *) arg;
b8fa0bfa 1528
6c95b8df
PA
1529 if (inf->pid == 0)
1530 return 0;
1531
b8fa0bfa
PA
1532 if (inf->attach_flag)
1533 fprintf_filtered (stb,
1534 _("\tInferior %d [%s] will be detached.\n"), inf->num,
1535 target_pid_to_str (pid_to_ptid (inf->pid)));
1536 else
1537 fprintf_filtered (stb,
1538 _("\tInferior %d [%s] will be killed.\n"), inf->num,
1539 target_pid_to_str (pid_to_ptid (inf->pid)));
1540
1541 return 0;
1542}
1543
1544/* If necessary, make the user confirm that we should quit. Return
1545 non-zero if we should quit, zero if we shouldn't. */
1546
1547int
1548quit_confirm (void)
1549{
b8fa0bfa
PA
1550 /* Don't even ask if we're only debugging a core file inferior. */
1551 if (!have_live_inferiors ())
1552 return 1;
1553
1554 /* Build the query string as a single string. */
d7e74731 1555 string_file stb;
b8fa0bfa 1556
d7e74731
PA
1557 stb.puts (_("A debugging session is active.\n\n"));
1558 iterate_over_inferiors (print_inferior_quit_action, &stb);
1559 stb.puts (_("\nQuit anyway? "));
7b01d34b 1560
d7e74731 1561 return query ("%s", stb.c_str ());
b8fa0bfa
PA
1562}
1563
18206ca3
PP
1564/* Prepare to exit GDB cleanly by undoing any changes made to the
1565 terminal so that we leave the terminal in the state we acquired it. */
1566
1567static void
1568undo_terminal_modifications_before_exit (void)
1569{
3c216924
PA
1570 struct ui *saved_top_level = current_ui;
1571
18206ca3 1572 target_terminal_ours ();
3c216924
PA
1573
1574 current_ui = main_ui;
1575
18206ca3
PP
1576#if defined(TUI)
1577 tui_disable ();
1578#endif
3c216924
PA
1579 gdb_disable_readline ();
1580
1581 current_ui = saved_top_level;
18206ca3
PP
1582}
1583
1584
b0abbc58
JJ
1585/* Quit without asking for confirmation. */
1586
1587void
36cf1806 1588quit_force (int *exit_arg, int from_tty)
b0abbc58
JJ
1589{
1590 int exit_code = 0;
365c70b1 1591 struct qt_args qt;
b0abbc58 1592
18206ca3
PP
1593 undo_terminal_modifications_before_exit ();
1594
b0abbc58 1595 /* An optional expression may be used to cause gdb to terminate with the
371d5dec 1596 value of that expression. */
36cf1806
TT
1597 if (exit_arg)
1598 exit_code = *exit_arg;
4b0ad762
AS
1599 else if (return_child_result)
1600 exit_code = return_child_result_value;
b0abbc58 1601
36cf1806 1602 qt.args = NULL;
365c70b1
JJ
1603 qt.from_tty = from_tty;
1604
b0abbc58 1605 /* We want to handle any quit errors and exit regardless. */
2f9d54cf
PA
1606
1607 /* Get out of tfind mode, and kill or detach all inferiors. */
492d29ea 1608 TRY
2f9d54cf
PA
1609 {
1610 disconnect_tracing ();
1611 iterate_over_inferiors (kill_or_detach, &qt);
1612 }
492d29ea
PA
1613 CATCH (ex, RETURN_MASK_ALL)
1614 {
1615 exception_print (gdb_stderr, ex);
1616 }
1617 END_CATCH
2f9d54cf
PA
1618
1619 /* Give all pushed targets a chance to do minimal cleanup, and pop
1620 them all out. */
492d29ea 1621 TRY
2f9d54cf
PA
1622 {
1623 pop_all_targets ();
1624 }
492d29ea
PA
1625 CATCH (ex, RETURN_MASK_ALL)
1626 {
1627 exception_print (gdb_stderr, ex);
1628 }
1629 END_CATCH
2f9d54cf
PA
1630
1631 /* Save the history information if it is appropriate to do so. */
492d29ea 1632 TRY
2f9d54cf 1633 {
268a799a
PA
1634 if (write_history_p && history_filename)
1635 {
1636 struct ui *ui;
1637 int save = 0;
1638
1639 /* History is currently shared between all UIs. If there's
1640 any UI with a terminal, save history. */
1641 ALL_UIS (ui)
1642 {
1643 if (input_interactive_p (ui))
1644 {
1645 save = 1;
1646 break;
1647 }
1648 }
1649
1650 if (save)
1651 gdb_safe_append_history ();
1652 }
2f9d54cf 1653 }
492d29ea
PA
1654 CATCH (ex, RETURN_MASK_ALL)
1655 {
1656 exception_print (gdb_stderr, ex);
1657 }
1658 END_CATCH
2f9d54cf
PA
1659
1660 /* Do any final cleanups before exiting. */
492d29ea 1661 TRY
2f9d54cf
PA
1662 {
1663 do_final_cleanups (all_cleanups ());
1664 }
492d29ea
PA
1665 CATCH (ex, RETURN_MASK_ALL)
1666 {
1667 exception_print (gdb_stderr, ex);
1668 }
1669 END_CATCH
b0abbc58 1670
9e0b60a8
JM
1671 exit (exit_code);
1672}
1673
268a799a
PA
1674/* The value of the "interactive-mode" setting. */
1675static enum auto_boolean interactive_mode = AUTO_BOOLEAN_AUTO;
9e0b60a8 1676
268a799a
PA
1677/* Implement the "show interactive-mode" option. */
1678
1679static void
1680show_interactive_mode (struct ui_file *file, int from_tty,
1681 struct cmd_list_element *c,
1682 const char *value)
9e0b60a8 1683{
268a799a
PA
1684 if (interactive_mode == AUTO_BOOLEAN_AUTO)
1685 fprintf_filtered (file, "Debugger's interactive mode "
1686 "is %s (currently %s).\n",
d9de1fe3 1687 value, input_interactive_p (current_ui) ? "on" : "off");
268a799a
PA
1688 else
1689 fprintf_filtered (file, "Debugger's interactive mode is %s.\n", value);
1690}
1691
1692/* Returns whether GDB is running on an interactive terminal. */
f38d3ad1 1693
268a799a
PA
1694int
1695input_interactive_p (struct ui *ui)
1696{
c63a1f86
JK
1697 if (batch_flag)
1698 return 0;
1699
268a799a
PA
1700 if (interactive_mode != AUTO_BOOLEAN_AUTO)
1701 return interactive_mode == AUTO_BOOLEAN_TRUE;
698ba934 1702
268a799a 1703 return ui->input_interactive_p;
9e0b60a8
JM
1704}
1705\f
9e0b60a8 1706static void
fba45db2 1707dont_repeat_command (char *ignored, int from_tty)
9e0b60a8 1708{
dc7eb48e
PA
1709 /* Can't call dont_repeat here because we're not necessarily reading
1710 from stdin. */
1711 *saved_command_line = 0;
9e0b60a8
JM
1712}
1713\f
1714/* Functions to manipulate command line editing control variables. */
1715
1716/* Number of commands to print in each call to show_commands. */
1717#define Hist_print 10
d318976c 1718void
fba45db2 1719show_commands (char *args, int from_tty)
9e0b60a8
JM
1720{
1721 /* Index for history commands. Relative to history_base. */
1722 int offset;
1723
1724 /* Number of the history entry which we are planning to display next.
1725 Relative to history_base. */
1726 static int num = 0;
1727
9e0b60a8 1728 /* Print out some of the commands from the command history. */
9e0b60a8
JM
1729
1730 if (args)
1731 {
1732 if (args[0] == '+' && args[1] == '\0')
1733 /* "info editing +" should print from the stored position. */
1734 ;
1735 else
1736 /* "info editing <exp>" should print around command number <exp>. */
0e828ed1 1737 num = (parse_and_eval_long (args) - history_base) - Hist_print / 2;
9e0b60a8
JM
1738 }
1739 /* "show commands" means print the last Hist_print commands. */
1740 else
1741 {
840a9a1f 1742 num = history_length - Hist_print;
9e0b60a8
JM
1743 }
1744
1745 if (num < 0)
1746 num = 0;
1747
1748 /* If there are at least Hist_print commands, we want to display the last
1749 Hist_print rather than, say, the last 6. */
840a9a1f 1750 if (history_length - num < Hist_print)
9e0b60a8 1751 {
840a9a1f 1752 num = history_length - Hist_print;
9e0b60a8
JM
1753 if (num < 0)
1754 num = 0;
1755 }
1756
840a9a1f
PA
1757 for (offset = num;
1758 offset < num + Hist_print && offset < history_length;
1759 offset++)
9e0b60a8
JM
1760 {
1761 printf_filtered ("%5d %s\n", history_base + offset,
c5aa993b 1762 (history_get (history_base + offset))->line);
9e0b60a8
JM
1763 }
1764
1765 /* The next command we want to display is the next one that we haven't
1766 displayed yet. */
1767 num += Hist_print;
1768
1769 /* If the user repeats this command with return, it should do what
1770 "show commands +" does. This is unnecessary if arg is null,
1771 because "show commands +" is not useful after "show commands". */
1772 if (from_tty && args)
1773 {
1774 args[0] = '+';
1775 args[1] = '\0';
1776 }
1777}
1778
ebfd00d2 1779/* Update the size of our command history file to HISTORY_SIZE.
840a9a1f 1780
ebfd00d2 1781 A HISTORY_SIZE of -1 stands for unlimited. */
840a9a1f 1782
ebfd00d2
PP
1783static void
1784set_readline_history_size (int history_size)
1785{
1786 gdb_assert (history_size >= -1);
840a9a1f 1787
ebfd00d2 1788 if (history_size == -1)
840a9a1f 1789 unstifle_history ();
883b9c6c 1790 else
ebfd00d2
PP
1791 stifle_history (history_size);
1792}
1793
1794/* Called by do_setshow_command. */
1795static void
1796set_history_size_command (char *args, int from_tty, struct cmd_list_element *c)
1797{
1798 set_readline_history_size (history_size_setshow_var);
9e0b60a8
JM
1799}
1800
d318976c 1801void
fba45db2 1802set_history (char *args, int from_tty)
9e0b60a8 1803{
3e43a32a
MS
1804 printf_unfiltered (_("\"set history\" must be followed "
1805 "by the name of a history subcommand.\n"));
635c7e8a 1806 help_list (sethistlist, "set history ", all_commands, gdb_stdout);
9e0b60a8
JM
1807}
1808
d318976c 1809void
fba45db2 1810show_history (char *args, int from_tty)
9e0b60a8
JM
1811{
1812 cmd_show_list (showhistlist, from_tty, "");
1813}
1814
371d5dec 1815int info_verbose = 0; /* Default verbose msgs off. */
9e0b60a8
JM
1816
1817/* Called by do_setshow_command. An elaborate joke. */
d318976c 1818void
fba45db2 1819set_verbose (char *args, int from_tty, struct cmd_list_element *c)
9e0b60a8 1820{
6f937416 1821 const char *cmdname = "verbose";
9e0b60a8
JM
1822 struct cmd_list_element *showcmd;
1823
1824 showcmd = lookup_cmd_1 (&cmdname, showlist, NULL, 1);
1427fe5e 1825 gdb_assert (showcmd != NULL && showcmd != CMD_LIST_AMBIGUOUS);
9e0b60a8
JM
1826
1827 if (info_verbose)
1828 {
1829 c->doc = "Set verbose printing of informational messages.";
1830 showcmd->doc = "Show verbose printing of informational messages.";
1831 }
1832 else
1833 {
1834 c->doc = "Set verbosity.";
1835 showcmd->doc = "Show verbosity.";
1836 }
1837}
1838
9e0b60a8 1839/* Init the history buffer. Note that we are called after the init file(s)
371d5dec
MS
1840 have been read so that the user can change the history file via his
1841 .gdbinit file (for instance). The GDBHISTFILE environment variable
1842 overrides all of this. */
9e0b60a8
JM
1843
1844void
fba45db2 1845init_history (void)
9e0b60a8
JM
1846{
1847 char *tmpenv;
1848
b58c513b 1849 tmpenv = getenv ("GDBHISTSIZE");
9e0b60a8 1850 if (tmpenv)
840a9a1f 1851 {
bc460514 1852 long var;
0fc26caf 1853 int saved_errno;
bc460514
PP
1854 char *endptr;
1855
1856 tmpenv = skip_spaces (tmpenv);
0fc26caf 1857 errno = 0;
bc460514 1858 var = strtol (tmpenv, &endptr, 10);
0fc26caf 1859 saved_errno = errno;
bc460514
PP
1860 endptr = skip_spaces (endptr);
1861
1862 /* If GDBHISTSIZE is non-numeric then ignore it. If GDBHISTSIZE is the
1863 empty string, a negative number or a huge positive number (larger than
1864 INT_MAX) then set the history size to unlimited. Otherwise set our
1865 history size to the number we have read. This behavior is consistent
1866 with how bash handles HISTSIZE. */
1867 if (*endptr != '\0')
1868 ;
1869 else if (*tmpenv == '\0'
1870 || var < 0
0fc26caf
PP
1871 || var > INT_MAX
1872 /* On targets where INT_MAX == LONG_MAX, we have to look at
1873 errno after calling strtol to distinguish between a value that
1874 is exactly INT_MAX and an overflowing value that was clamped
1875 to INT_MAX. */
1876 || (var == INT_MAX && saved_errno == ERANGE))
bc460514
PP
1877 history_size_setshow_var = -1;
1878 else
1879 history_size_setshow_var = var;
840a9a1f 1880 }
bc460514
PP
1881
1882 /* If neither the init file nor GDBHISTSIZE has set a size yet, pick the
1883 default. */
1884 if (history_size_setshow_var == -2)
840a9a1f 1885 history_size_setshow_var = 256;
9e0b60a8 1886
ebfd00d2 1887 set_readline_history_size (history_size_setshow_var);
9e0b60a8
JM
1888
1889 tmpenv = getenv ("GDBHISTFILE");
1890 if (tmpenv)
1b36a34b 1891 history_filename = xstrdup (tmpenv);
c5aa993b
JM
1892 else if (!history_filename)
1893 {
1894 /* We include the current directory so that if the user changes
1895 directories the file written will be the same as the one
1896 that was read. */
a0b3c4fd 1897#ifdef __MSDOS__
eb2f494a 1898 /* No leading dots in file names are allowed on MSDOS. */
1754f103
MK
1899 history_filename = concat (current_directory, "/_gdb_history",
1900 (char *)NULL);
a0b3c4fd 1901#else
1754f103
MK
1902 history_filename = concat (current_directory, "/.gdb_history",
1903 (char *)NULL);
a0b3c4fd 1904#endif
c5aa993b 1905 }
9e0b60a8
JM
1906 read_history (history_filename);
1907}
1908
920d2a44 1909static void
ab821bc6
PA
1910show_prompt (struct ui_file *file, int from_tty,
1911 struct cmd_list_element *c, const char *value)
920d2a44
AC
1912{
1913 fprintf_filtered (file, _("Gdb's prompt is \"%s\".\n"), value);
1914}
1915
3c216924
PA
1916/* "set editing" command. */
1917
1918static void
1919set_editing (char *args, int from_tty, struct cmd_list_element *c)
1920{
1921 change_line_handler (set_editing_cmd_var);
1922 /* Update the control variable so that MI's =cmd-param-changed event
1923 shows the correct value. */
1924 set_editing_cmd_var = current_ui->command_editing;
1925}
1926
920d2a44 1927static void
3c216924
PA
1928show_editing (struct ui_file *file, int from_tty,
1929 struct cmd_list_element *c, const char *value)
920d2a44 1930{
3e43a32a
MS
1931 fprintf_filtered (file, _("Editing of command lines as "
1932 "they are typed is %s.\n"),
3c216924 1933 current_ui->command_editing ? _("on") : _("off"));
920d2a44
AC
1934}
1935
1936static void
1937show_annotation_level (struct ui_file *file, int from_tty,
1938 struct cmd_list_element *c, const char *value)
1939{
1940 fprintf_filtered (file, _("Annotation_level is %s.\n"), value);
1941}
1942
1943static void
1944show_exec_done_display_p (struct ui_file *file, int from_tty,
1945 struct cmd_list_element *c, const char *value)
1946{
3e43a32a
MS
1947 fprintf_filtered (file, _("Notification of completion for "
1948 "asynchronous execution commands is %s.\n"),
920d2a44
AC
1949 value);
1950}
6dea1fbd 1951
8d551b02
DE
1952/* New values of the "data-directory" parameter are staged here. */
1953static char *staged_gdb_datadir;
1954
6dea1fbd
JK
1955/* "set" command for the gdb_datadir configuration variable. */
1956
1957static void
1958set_gdb_datadir (char *args, int from_tty, struct cmd_list_element *c)
1959{
8d551b02 1960 set_gdb_data_directory (staged_gdb_datadir);
6dea1fbd
JK
1961 observer_notify_gdb_datadir_changed ();
1962}
1963
8d551b02
DE
1964/* "show" command for the gdb_datadir configuration variable. */
1965
1966static void
1967show_gdb_datadir (struct ui_file *file, int from_tty,
1968 struct cmd_list_element *c, const char *value)
1969{
1970 fprintf_filtered (file, _("GDB's data directory is \"%s\".\n"),
1971 gdb_datadir);
1972}
1973
97c85fc6
MB
1974static void
1975set_history_filename (char *args, int from_tty, struct cmd_list_element *c)
1976{
1977 /* We include the current directory so that if the user changes
1978 directories the file written will be the same as the one
1979 that was read. */
1980 if (!IS_ABSOLUTE_PATH (history_filename))
1981 history_filename = reconcat (history_filename, current_directory, "/",
1982 history_filename, (char *) NULL);
1983}
1984
9e0b60a8 1985static void
fba45db2 1986init_main (void)
9e0b60a8 1987{
60eb5395
PA
1988 struct cmd_list_element *c;
1989
ab821bc6
PA
1990 /* Initialize the prompt to a simple "(gdb) " prompt or to whatever
1991 the DEFAULT_PROMPT is. */
1992 set_prompt (DEFAULT_PROMPT);
1993
9e0b60a8
JM
1994 /* Set the important stuff up for command editing. */
1995 command_editing_p = 1;
9e0b60a8 1996 history_expansion_p = 0;
452a569e 1997 write_history_p = 0;
9e0b60a8
JM
1998
1999 /* Setup important stuff for command line editing. */
67c296a2 2000 rl_completion_word_break_hook = gdb_completion_word_break_characters;
eb3ff9a5 2001 rl_attempted_completion_function = gdb_rl_attempted_completion_function;
67cb5b2d 2002 set_rl_completer_word_break_characters (default_word_break_characters ());
d318976c 2003 rl_completer_quote_characters = get_gdb_completer_quote_characters ();
82083d6d 2004 rl_completion_display_matches_hook = cli_display_match_list;
9e0b60a8 2005 rl_readline_name = "gdb";
7cb3ec5e 2006 rl_terminal_name = getenv ("TERM");
9e0b60a8 2007
467d8519
TT
2008 /* The name for this defun comes from Bash, where it originated.
2009 15 is Control-o, the same binding this function has in Bash. */
2010 rl_add_defun ("operate-and-get-next", gdb_rl_operate_and_get_next, 15);
2011
4d28ad1e 2012 add_setshow_string_cmd ("prompt", class_support,
ab821bc6 2013 &top_prompt,
3e43a32a
MS
2014 _("Set gdb's prompt"),
2015 _("Show gdb's prompt"),
ab821bc6
PA
2016 NULL, NULL,
2017 show_prompt,
4d28ad1e 2018 &setlist, &showlist);
9e0b60a8 2019
1bedd215 2020 add_com ("dont-repeat", class_support, dont_repeat_command, _("\
3e43a32a
MS
2021Don't repeat this command.\nPrimarily \
2022used inside of user-defined commands that should not be repeated when\n\
1bedd215 2023hitting return."));
9e0b60a8 2024
5bf193a2 2025 add_setshow_boolean_cmd ("editing", class_support,
3c216924 2026 &set_editing_cmd_var, _("\
5bf193a2
AC
2027Set editing of command lines as they are typed."), _("\
2028Show editing of command lines as they are typed."), _("\
9e0b60a8
JM
2029Use \"on\" to enable the editing, and \"off\" to disable it.\n\
2030Without an argument, command line editing is enabled. To edit, use\n\
5bf193a2 2031EMACS-like or VI-like commands like control-P or ESC."),
3c216924
PA
2032 set_editing,
2033 show_editing,
5bf193a2
AC
2034 &setlist, &showlist);
2035
2036 add_setshow_boolean_cmd ("save", no_class, &write_history_p, _("\
2037Set saving of the history record on exit."), _("\
2038Show saving of the history record on exit."), _("\
9e0b60a8 2039Use \"on\" to enable the saving, and \"off\" to disable it.\n\
5bf193a2
AC
2040Without an argument, saving is enabled."),
2041 NULL,
920d2a44 2042 show_write_history_p,
5bf193a2 2043 &sethistlist, &showhistlist);
9e0b60a8 2044
ebfd00d2
PP
2045 add_setshow_zuinteger_unlimited_cmd ("size", no_class,
2046 &history_size_setshow_var, _("\
4d28ad1e
AC
2047Set the size of the command history,"), _("\
2048Show the size of the command history,"), _("\
f81d1120
PA
2049ie. the number of previous commands to keep a record of.\n\
2050If set to \"unlimited\", the number of commands kept in the history\n\
2051list is unlimited. This defaults to the value of the environment\n\
b58c513b 2052variable \"GDBHISTSIZE\", or to 256 if this variable is not set."),
883b9c6c
YQ
2053 set_history_size_command,
2054 show_history_size,
2055 &sethistlist, &showhistlist);
4d28ad1e 2056
fc637f04
PP
2057 add_setshow_zuinteger_unlimited_cmd ("remove-duplicates", no_class,
2058 &history_remove_duplicates, _("\
2059Set how far back in history to look for and remove duplicate entries."), _("\
2060Show how far back in history to look for and remove duplicate entries."), _("\
2061If set to a nonzero value N, GDB will look back at the last N history entries\n\
2062and remove the first history entry that is a duplicate of the most recent\n\
2063entry, each time a new history entry is added.\n\
2064If set to \"unlimited\", this lookbehind is unbounded.\n\
2065Only history entries added during this session are considered for removal.\n\
2066If set to 0, removal of duplicate history entries is disabled.\n\
2067By default this option is set to 0."),
2068 NULL,
2069 show_history_remove_duplicates,
2070 &sethistlist, &showhistlist);
2071
4d28ad1e
AC
2072 add_setshow_filename_cmd ("filename", no_class, &history_filename, _("\
2073Set the filename in which to record the command history"), _("\
2074Show the filename in which to record the command history"), _("\
2075(the list of previous commands of which a record is kept)."),
97c85fc6 2076 set_history_filename,
920d2a44 2077 show_history_filename,
4d28ad1e 2078 &sethistlist, &showhistlist);
9e0b60a8 2079
e360902b 2080 add_setshow_boolean_cmd ("confirm", class_support, &confirm, _("\
5bf193a2
AC
2081Set whether to confirm potentially dangerous operations."), _("\
2082Show whether to confirm potentially dangerous operations."), NULL,
2083 NULL,
e360902b 2084 show_confirm,
5bf193a2 2085 &setlist, &showlist);
9e0b60a8 2086
85c07804
AC
2087 add_setshow_zinteger_cmd ("annotate", class_obscure, &annotation_level, _("\
2088Set annotation_level."), _("\
2089Show annotation_level."), _("\
9e0b60a8 20900 == normal; 1 == fullname (for use when running under emacs)\n\
85c07804 20912 == output annotated suitably for use by programs that control GDB."),
ab821bc6 2092 NULL,
920d2a44 2093 show_annotation_level,
85c07804 2094 &setlist, &showlist);
362646f5 2095
5bf193a2
AC
2096 add_setshow_boolean_cmd ("exec-done-display", class_support,
2097 &exec_done_display_p, _("\
2098Set notification of completion for asynchronous execution commands."), _("\
2099Show notification of completion for asynchronous execution commands."), _("\
2100Use \"on\" to enable the notification, and \"off\" to disable it."),
2101 NULL,
920d2a44 2102 show_exec_done_display_p,
5bf193a2 2103 &setlist, &showlist);
b14b1491
TT
2104
2105 add_setshow_filename_cmd ("data-directory", class_maintenance,
8d551b02 2106 &staged_gdb_datadir, _("Set GDB's data directory."),
b14b1491
TT
2107 _("Show GDB's data directory."),
2108 _("\
2109When set, GDB uses the specified path to search for data files."),
8d551b02 2110 set_gdb_datadir, show_gdb_datadir,
b14b1491
TT
2111 &setlist,
2112 &showlist);
268a799a
PA
2113
2114 add_setshow_auto_boolean_cmd ("interactive-mode", class_support,
2115 &interactive_mode, _("\
2116Set whether GDB's standard input is a terminal."), _("\
2117Show whether GDB's standard input is a terminal."), _("\
2118If on, GDB assumes that standard input is a terminal. In practice, it\n\
2119means that GDB should wait for the user to answer queries associated to\n\
2120commands entered at the command prompt. If off, GDB assumes that standard\n\
2121input is not a terminal, and uses the default answer to all queries.\n\
2122If auto (the default), determine which mode to use based on the standard\n\
2123input settings."),
2124 NULL,
2125 show_interactive_mode,
2126 &setlist, &showlist);
60eb5395
PA
2127
2128 c = add_cmd ("new-ui", class_support, new_ui_command, _("\
2129Create a new UI. It takes two arguments:\n\
2130The first argument is the name of the interpreter to run.\n\
2131The second argument is the terminal the UI runs on.\n"), &cmdlist);
2132 set_cmd_completer (c, interpreter_completer);
9e0b60a8 2133}
64cdedad
EZ
2134
2135void
2136gdb_init (char *argv0)
2137{
2138 if (pre_init_ui_hook)
2139 pre_init_ui_hook ();
2140
371d5dec 2141 /* Run the init function of each source file. */
64cdedad 2142
64cdedad
EZ
2143#ifdef __MSDOS__
2144 /* Make sure we return to the original directory upon exit, come
2145 what may, since the OS doesn't do that for us. */
2146 make_final_cleanup (do_chdir_cleanup, xstrdup (current_directory));
2147#endif
2148
371d5dec
MS
2149 init_cmd_lists (); /* This needs to be done first. */
2150 initialize_targets (); /* Setup target_terminal macros for utils.c. */
2151 initialize_utils (); /* Make errors and warnings possible. */
9dea9163 2152
24b73f8e
PP
2153 init_page_info ();
2154
9dea9163 2155 /* Here is where we call all the _initialize_foo routines. */
64cdedad 2156 initialize_all_files ();
9dea9163 2157
6c95b8df
PA
2158 /* This creates the current_program_space. Do this after all the
2159 _initialize_foo routines have had a chance to install their
2160 per-sspace data keys. Also do this before
2161 initialize_current_architecture is called, because it accesses
2162 exec_bfd of the current program space. */
2163 initialize_progspace ();
2164 initialize_inferiors ();
64cdedad
EZ
2165 initialize_current_architecture ();
2166 init_cli_cmds();
371d5dec 2167 init_main (); /* But that omits this file! Do it now. */
64cdedad 2168
0ea3f30e
DJ
2169 initialize_stdin_serial ();
2170
6a06d660
PP
2171 /* Take a snapshot of our tty state before readline/ncurses have had a chance
2172 to alter it. */
2173 set_initial_gdb_ttystate ();
2174
362646f5 2175 async_init_signals ();
64cdedad 2176
371d5dec
MS
2177 /* We need a default language for parsing expressions, so simple
2178 things like "set width 0" won't fail if no language is explicitly
2179 set in a config file or implicitly set by reading an executable
2180 during startup. */
64cdedad 2181 set_language (language_c);
371d5dec 2182 expected_language = current_language; /* Don't warn about the change. */
64cdedad 2183
6dddc817 2184 /* Python initialization, for example, can require various commands to be
371d5dec
MS
2185 installed. For example "info pretty-printer" needs the "info"
2186 prefix to be installed. Keep things simple and just do final
6dddc817
DE
2187 script initialization here. */
2188 finish_ext_lang_initialization ();
64cdedad 2189}
This page took 2.064566 seconds and 4 git commands to generate.