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