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