]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/top.c
Implement *running.
[thirdparty/binutils-gdb.git] / gdb / top.c
CommitLineData
c906108c 1/* Top level stuff for GDB, the GNU debugger.
a752853e 2
6aba47ca 3 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
9b254dd1
DJ
4 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
5 2008 Free Software Foundation, Inc.
c906108c 6
c5aa993b 7 This file is part of GDB.
c906108c 8
c5aa993b
JM
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
a9762ec7 11 the Free Software Foundation; either version 3 of the License, or
c5aa993b 12 (at your option) any later version.
c906108c 13
c5aa993b
JM
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
c906108c 18
c5aa993b 19 You should have received a copy of the GNU General Public License
a9762ec7 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
21
22#include "defs.h"
23#include "gdbcmd.h"
24#include "call-cmds.h"
210661e7
EZ
25#include "cli/cli-cmds.h"
26#include "cli/cli-script.h"
27#include "cli/cli-setshow.h"
18a642a1 28#include "cli/cli-decode.h"
c906108c
SS
29#include "symtab.h"
30#include "inferior.h"
60250e8b 31#include "exceptions.h"
042be3a9 32#include <signal.h>
c906108c
SS
33#include "target.h"
34#include "breakpoint.h"
35#include "gdbtypes.h"
36#include "expression.h"
37#include "value.h"
38#include "language.h"
c5aa993b 39#include "terminal.h" /* For job_control. */
c906108c 40#include "annotate.h"
c5f0f3d0 41#include "completer.h"
c906108c 42#include "top.h"
d4f3574e 43#include "version.h"
210661e7 44#include "serial.h"
d16aafd8 45#include "doublest.h"
f9c696d2 46#include "gdb_assert.h"
f17517ea 47#include "main.h"
2e03ee74 48#include "event-loop.h"
c906108c
SS
49
50/* readline include files */
dbda9972
AC
51#include "readline/readline.h"
52#include "readline/history.h"
c906108c
SS
53
54/* readline defines this. */
55#undef savestring
56
57#include <sys/types.h>
c906108c 58
c2c6d25f 59#include "event-top.h"
c906108c
SS
60#include "gdb_string.h"
61#include "gdb_stat.h"
62#include <ctype.h>
8b93c638
JM
63#include "ui-out.h"
64#include "cli-out.h"
c906108c 65
104c1213
JM
66/* Default command line prompt. This is overriden in some configs. */
67
68#ifndef DEFAULT_PROMPT
69#define DEFAULT_PROMPT "(gdb) "
c906108c
SS
70#endif
71
72/* Initialization file name for gdb. This is overridden in some configs. */
73
eaae3919
EZ
74#ifndef PATH_MAX
75# ifdef FILENAME_MAX
76# define PATH_MAX FILENAME_MAX
77# else
78# define PATH_MAX 512
79# endif
80#endif
81
c906108c
SS
82#ifndef GDBINIT_FILENAME
83#define GDBINIT_FILENAME ".gdbinit"
84#endif
eaae3919 85char gdbinit[PATH_MAX + 1] = GDBINIT_FILENAME;
c906108c
SS
86
87int inhibit_gdbinit = 0;
88
89/* If nonzero, and GDB has been configured to be able to use windows,
90 attempt to open them upon startup. */
91
f15ab4a7 92int use_windows = 0;
c906108c 93
c906108c
SS
94extern char lang_frame_mismatch_warn[]; /* language.c */
95
96/* Flag for whether we want all the "from_tty" gubbish printed. */
97
c5aa993b 98int caution = 1; /* Default is yes, sigh. */
920d2a44
AC
99static void
100show_caution (struct ui_file *file, int from_tty,
101 struct cmd_list_element *c, const char *value)
102{
103 fprintf_filtered (file, _("\
104Whether to confirm potentially dangerous operations is %s.\n"),
105 value);
106}
c906108c 107
c906108c
SS
108/* stdio stream that command input is being read from. Set to stdin normally.
109 Set by source_command to the file we are sourcing. Set to NULL if we are
110 executing a user-defined command or interacting via a GUI. */
111
112FILE *instream;
113
698ba934
DJ
114/* Flag to indicate whether a user defined command is currently running. */
115
116int in_user_command;
117
c906108c
SS
118/* Current working directory. */
119
120char *current_directory;
121
122/* The directory name is actually stored here (usually). */
123char gdb_dirbuf[1024];
124
125/* Function to call before reading a command, if nonzero.
126 The function receives two args: an input stream,
127 and a prompt string. */
128
507f3c78 129void (*window_hook) (FILE *, char *);
c906108c
SS
130
131int epoch_interface;
132int xgdb_verbose;
133
134/* gdb prints this when reading a command interactively */
c5aa993b 135static char *gdb_prompt_string; /* the global prompt string */
c906108c
SS
136
137/* Buffer used for reading command lines, and the size
138 allocated for it so far. */
139
140char *line;
141int linesize = 100;
142
143/* Nonzero if the current command is modified by "server ". This
c2d11a7d 144 affects things like recording into the command history, commands
c906108c
SS
145 repeating on RETURN, etc. This is so a user interface (emacs, GUI,
146 whatever) can issue its own commands and also send along commands
147 from the user, and have the user not notice that the user interface
148 is issuing commands too. */
149int server_command;
150
151/* Baud rate specified for talking to serial target systems. Default
152 is left as -1, so targets can choose their own defaults. */
153/* FIXME: This means that "show remotebaud" and gr_files_info can print -1
154 or (unsigned int)-1. This is a Bad User Interface. */
155
156int baud_rate = -1;
157
158/* Timeout limit for response from target. */
159
ce808e91
AC
160/* The default value has been changed many times over the years. It
161 was originally 5 seconds. But that was thought to be a long time
162 to sit and wait, so it was changed to 2 seconds. That was thought
163 to be plenty unless the connection was going through some terminal
164 server or multiplexer or other form of hairy serial connection.
165
166 In mid-1996, remote_timeout was moved from remote.c to top.c and
167 it began being used in other remote-* targets. It appears that the
168 default was changed to 20 seconds at that time, perhaps because the
85a453d5 169 Renesas E7000 ICE didn't always respond in a timely manner.
ce808e91
AC
170
171 But if 5 seconds is a long time to sit and wait for retransmissions,
172 20 seconds is far worse. This demonstrates the difficulty of using
173 a single variable for all protocol timeouts.
174
175 As remote.c is used much more than remote-e7000.c, it was changed
176 back to 2 seconds in 1999. */
177
178int remote_timeout = 2;
c906108c
SS
179
180/* Non-zero tells remote* modules to output debugging info. */
181
182int remote_debug = 0;
183
43ff13b4
JM
184/* Non-zero means the target is running. Note: this is different from
185 saying that there is an active target and we are stopped at a
186 breakpoint, for instance. This is a real indicator whether the
187 target is off and running, which gdb is doing something else. */
188int target_executing = 0;
189
6dd77b81
RH
190/* Sbrk location on entry to main. Used for statistics only. */
191#ifdef HAVE_SBRK
192char *lim_at_start;
193#endif
194
c906108c
SS
195/* Signal to catch ^Z typed while reading a command: SIGTSTP or SIGCONT. */
196
197#ifndef STOP_SIGNAL
198#ifdef SIGTSTP
199#define STOP_SIGNAL SIGTSTP
a14ed312 200static void stop_sig (int);
c906108c
SS
201#endif
202#endif
203
c906108c
SS
204/* Hooks for alternate command interfaces. */
205
206/* Called after most modules have been initialized, but before taking users
1ad24239
KS
207 command file.
208
209 If the UI fails to initialize and it wants GDB to continue
210 using the default UI, then it should clear this hook before returning. */
c906108c 211
9a4105ab 212void (*deprecated_init_ui_hook) (char *argv0);
7a292a7a
SS
213
214/* This hook is called from within gdb's many mini-event loops which could
215 steal control from a real user interface's event loop. It returns
216 non-zero if the user is requesting a detach, zero otherwise. */
217
98bbd631 218int (*deprecated_ui_loop_hook) (int);
c906108c
SS
219
220/* Called instead of command_loop at top level. Can be invoked via
b5a2688f 221 throw_exception(). */
c906108c 222
9a4105ab 223void (*deprecated_command_loop_hook) (void);
c906108c
SS
224
225
c906108c
SS
226/* Called from print_frame_info to list the line we stopped in. */
227
9a4105ab
AC
228void (*deprecated_print_frame_info_listing_hook) (struct symtab * s, int line,
229 int stopline, int noerror);
c906108c
SS
230/* Replaces most of query. */
231
9a4105ab 232int (*deprecated_query_hook) (const char *, va_list);
c906108c
SS
233
234/* Replaces most of warning. */
235
9a4105ab 236void (*deprecated_warning_hook) (const char *, va_list);
c906108c 237
9a4105ab
AC
238/* These three functions support getting lines of text from the user.
239 They are used in sequence. First deprecated_readline_begin_hook is
240 called with a text string that might be (for example) a message for
241 the user to type in a sequence of commands to be executed at a
242 breakpoint. If this function calls back to a GUI, it might take
243 this opportunity to pop up a text interaction window with this
244 message. Next, deprecated_readline_hook is called with a prompt
245 that is emitted prior to collecting the user input. It can be
246 called multiple times. Finally, deprecated_readline_end_hook is
247 called to notify the GUI that we are done with the interaction
248 window and it can close it. */
c906108c 249
9a4105ab
AC
250void (*deprecated_readline_begin_hook) (char *, ...);
251char *(*deprecated_readline_hook) (char *);
252void (*deprecated_readline_end_hook) (void);
c906108c
SS
253
254/* Called as appropriate to notify the interface of the specified breakpoint
255 conditions. */
256
9a4105ab
AC
257void (*deprecated_create_breakpoint_hook) (struct breakpoint * bpt);
258void (*deprecated_delete_breakpoint_hook) (struct breakpoint * bpt);
259void (*deprecated_modify_breakpoint_hook) (struct breakpoint * bpt);
c906108c 260
6426a772
JM
261/* Called as appropriate to notify the interface that we have attached
262 to or detached from an already running process. */
263
9a4105ab
AC
264void (*deprecated_attach_hook) (void);
265void (*deprecated_detach_hook) (void);
6426a772 266
c906108c
SS
267/* Called during long calculations to allow GUI to repair window damage, and to
268 check for stop buttons, etc... */
269
9a4105ab 270void (*deprecated_interactive_hook) (void);
c906108c 271
c906108c
SS
272/* Tell the GUI someone changed the register REGNO. -1 means
273 that the caller does not know which register changed or
c5aa993b 274 that several registers have changed (see value_assign). */
9a4105ab 275void (*deprecated_register_changed_hook) (int regno);
c906108c
SS
276
277/* Tell the GUI someone changed LEN bytes of memory at ADDR */
9a4105ab 278void (*deprecated_memory_changed_hook) (CORE_ADDR addr, int len);
c906108c
SS
279
280/* Called when going to wait for the target. Usually allows the GUI to run
281 while waiting for target events. */
282
9a4105ab
AC
283ptid_t (*deprecated_target_wait_hook) (ptid_t ptid,
284 struct target_waitstatus * status);
c906108c
SS
285
286/* Used by UI as a wrapper around command execution. May do various things
287 like enabling/disabling buttons, etc... */
288
9a4105ab
AC
289void (*deprecated_call_command_hook) (struct cmd_list_element * c, char *cmd,
290 int from_tty);
c906108c 291
96baa820
JM
292/* Called after a `set' command has finished. Is only run if the
293 `set' command succeeded. */
294
9a4105ab 295void (*deprecated_set_hook) (struct cmd_list_element * c);
96baa820 296
c906108c
SS
297/* Called when the current thread changes. Argument is thread id. */
298
9a4105ab 299void (*deprecated_context_hook) (int id);
c906108c
SS
300
301/* Takes control from error (). Typically used to prevent longjmps out of the
302 middle of the GUI. Usually used in conjunction with a catch routine. */
303
c40d0d10 304void (*deprecated_error_hook) (void);
11cf8741 305
c906108c
SS
306/* Handler for SIGHUP. */
307
308#ifdef SIGHUP
392a587b 309/* NOTE 1999-04-29: This function will be static again, once we modify
cd0fc7c3
SS
310 gdb to use the event loop as the default command loop and we merge
311 event-top.c into this file, top.c */
312/* static */ int
d0c8cdfb 313quit_cover (void *s)
c906108c 314{
c5aa993b
JM
315 caution = 0; /* Throw caution to the wind -- we're exiting.
316 This prevents asking the user dumb questions. */
317 quit_command ((char *) 0, 0);
c906108c
SS
318 return 0;
319}
320#endif /* defined SIGHUP */
321\f
322/* Line number we are currently in in a file which is being sourced. */
392a587b 323/* NOTE 1999-04-29: This variable will be static again, once we modify
cd0fc7c3
SS
324 gdb to use the event loop as the default command loop and we merge
325 event-top.c into this file, top.c */
326/* static */ int source_line_number;
c906108c
SS
327
328/* Name of the file we are sourcing. */
392a587b 329/* NOTE 1999-04-29: This variable will be static again, once we modify
cd0fc7c3
SS
330 gdb to use the event loop as the default command loop and we merge
331 event-top.c into this file, top.c */
332/* static */ char *source_file_name;
c906108c 333
c906108c
SS
334/* Clean up on error during a "source" command (or execution of a
335 user-defined command). */
336
d318976c 337void
e41a3b1a 338do_restore_instream_cleanup (void *stream)
c906108c
SS
339{
340 /* Restore the previous input stream. */
341 instream = stream;
342}
343
344/* Read commands from STREAM. */
345void
fba45db2 346read_command_file (FILE *stream)
c906108c
SS
347{
348 struct cleanup *cleanups;
349
e41a3b1a 350 cleanups = make_cleanup (do_restore_instream_cleanup, instream);
c906108c 351 instream = stream;
c5aa993b 352 command_loop ();
c906108c
SS
353 do_cleanups (cleanups);
354}
355\f
507f3c78 356void (*pre_init_ui_hook) (void);
c906108c 357
e41a3b1a
AC
358#ifdef __MSDOS__
359void
360do_chdir_cleanup (void *old_dir)
361{
362 chdir (old_dir);
b8c9b27d 363 xfree (old_dir);
e41a3b1a
AC
364}
365#endif
366
d318976c
FN
367/* Execute the line P as a command.
368 Pass FROM_TTY as second argument to the defining function. */
c906108c 369
d318976c
FN
370void
371execute_command (char *p, int from_tty)
c906108c 372{
52f0bd74
AC
373 struct cmd_list_element *c;
374 enum language flang;
d318976c
FN
375 static int warned = 0;
376 char *line;
32c1e744
VP
377 struct continuation_arg *arg1;
378 struct continuation_arg *arg2;
2f77b315 379 long time_at_cmd_start = 0;
32c1e744
VP
380#ifdef HAVE_SBRK
381 long space_at_cmd_start = 0;
382#endif
383 extern int display_time;
384 extern int display_space;
385
386 if (target_can_async_p ())
387 {
388 time_at_cmd_start = get_run_time ();
389
390 if (display_space)
391 {
392#ifdef HAVE_SBRK
393 char *lim = (char *) sbrk (0);
394 space_at_cmd_start = lim - lim_at_start;
395#endif
396 }
397 }
67e1e03a 398
d318976c 399 free_all_values ();
c906108c 400
d318976c
FN
401 /* Force cleanup of any alloca areas if using C alloca instead of
402 a builtin alloca. */
403 alloca (0);
c906108c 404
d318976c
FN
405 /* This can happen when command_line_input hits end of file. */
406 if (p == NULL)
407 return;
c906108c 408
49d03eab 409 target_log_command (p);
8b93c638 410
d318976c
FN
411 while (*p == ' ' || *p == '\t')
412 p++;
413 if (*p)
8b93c638 414 {
d318976c
FN
415 char *arg;
416 line = p;
8b93c638 417
16026cd7
AS
418 /* If trace-commands is set then this will print this command. */
419 print_command_trace (p);
420
d318976c 421 c = lookup_cmd (&p, cmdlist, "", 0, 1);
8b93c638 422
d318976c
FN
423 /* If the target is running, we allow only a limited set of
424 commands. */
700b53b1
TT
425 if (target_can_async_p () && target_executing && !get_cmd_async_ok (c))
426 error (_("Cannot execute this command while the target is running."));
8b93c638 427
d318976c
FN
428 /* Pass null arg rather than an empty one. */
429 arg = *p ? p : 0;
8b93c638 430
9f60d481
AC
431 /* FIXME: cagney/2002-02-02: The c->type test is pretty dodgy
432 while the is_complete_command(cfunc) test is just plain
433 bogus. They should both be replaced by a test of the form
434 c->strip_trailing_white_space_p. */
435 /* NOTE: cagney/2002-02-02: The function.cfunc in the below
436 can't be replaced with func. This is because it is the
437 cfunc, and not the func, that has the value that the
438 is_complete_command hack is testing for. */
439 /* Clear off trailing whitespace, except for set and complete
440 command. */
d318976c
FN
441 if (arg
442 && c->type != set_cmd
bbaca940 443 && !is_complete_command (c))
8b93c638 444 {
d318976c
FN
445 p = arg + strlen (arg) - 1;
446 while (p >= arg && (*p == ' ' || *p == '\t'))
447 p--;
448 *(p + 1) = '\0';
8b93c638
JM
449 }
450
d318976c 451 /* If this command has been pre-hooked, run the hook first. */
5913bcb0 452 execute_cmd_pre_hook (c);
c906108c 453
d318976c
FN
454 if (c->flags & DEPRECATED_WARN_USER)
455 deprecated_cmd_warning (&line);
c906108c 456
d318976c
FN
457 if (c->class == class_user)
458 execute_user_command (c, arg);
459 else if (c->type == set_cmd || c->type == show_cmd)
460 do_setshow_command (arg, from_tty & caution, c);
f436dd25 461 else if (!cmd_func_p (c))
8a3fe4f8 462 error (_("That is not a command, just a help topic."));
9a4105ab
AC
463 else if (deprecated_call_command_hook)
464 deprecated_call_command_hook (c, arg, from_tty & caution);
d318976c 465 else
f436dd25 466 cmd_func (c, arg, from_tty & caution);
d318976c
FN
467
468 /* If this command has been post-hooked, run the hook last. */
5913bcb0 469 execute_cmd_post_hook (c);
c906108c 470
c906108c
SS
471 }
472
d318976c
FN
473 /* Tell the user if the language has changed (except first time). */
474 if (current_language != expected_language)
c906108c 475 {
d318976c 476 if (language_mode == language_mode_auto)
c906108c 477 {
d318976c 478 language_info (1); /* Print what changed. */
c906108c 479 }
d318976c 480 warned = 0;
c906108c
SS
481 }
482
d318976c
FN
483 /* Warn the user if the working language does not match the
484 language of the current frame. Only warn the user if we are
485 actually running the program, i.e. there is a stack. */
486 /* FIXME: This should be cacheing the frame and only running when
487 the frame changes. */
488
32c1e744 489 if (!target_executing && target_has_stack)
c906108c 490 {
d318976c
FN
491 flang = get_frame_language ();
492 if (!warned
493 && flang != language_unknown
494 && flang != current_language->la_language)
c906108c 495 {
d318976c
FN
496 printf_filtered ("%s\n", lang_frame_mismatch_warn);
497 warned = 1;
c906108c 498 }
c906108c
SS
499 }
500}
501
d318976c
FN
502/* Read commands from `instream' and execute them
503 until end of file or error reading instream. */
c906108c 504
d318976c
FN
505void
506command_loop (void)
c906108c 507{
d318976c
FN
508 struct cleanup *old_chain;
509 char *command;
510 int stdin_is_tty = ISATTY (stdin);
511 long time_at_cmd_start;
512#ifdef HAVE_SBRK
513 long space_at_cmd_start = 0;
514#endif
515 extern int display_time;
516 extern int display_space;
c5aa993b 517
d318976c
FN
518 while (instream && !feof (instream))
519 {
d318976c
FN
520 if (window_hook && instream == stdin)
521 (*window_hook) (instream, get_prompt ());
c906108c 522
d318976c
FN
523 quit_flag = 0;
524 if (instream == stdin && stdin_is_tty)
525 reinitialize_more_filter ();
526 old_chain = make_cleanup (null_cleanup, 0);
c906108c 527
d318976c
FN
528 /* Get a command-line. This calls the readline package. */
529 command = command_line_input (instream == stdin ?
530 get_prompt () : (char *) NULL,
531 instream == stdin, "prompt");
d318976c
FN
532 if (command == 0)
533 return;
c906108c 534
d318976c 535 time_at_cmd_start = get_run_time ();
c906108c 536
d318976c 537 if (display_space)
9e0b60a8 538 {
d318976c 539#ifdef HAVE_SBRK
d318976c 540 char *lim = (char *) sbrk (0);
6dd77b81 541 space_at_cmd_start = lim - lim_at_start;
9e0b60a8 542#endif
d318976c 543 }
9e0b60a8 544
d318976c
FN
545 execute_command (command, instream == stdin);
546 /* Do any commands attached to breakpoint we stopped at. */
547 bpstat_do_actions (&stop_bpstat);
548 do_cleanups (old_chain);
9e0b60a8 549
d318976c 550 if (display_time)
9e0b60a8 551 {
d318976c 552 long cmd_time = get_run_time () - time_at_cmd_start;
9e0b60a8 553
a3f17187 554 printf_unfiltered (_("Command execution time: %ld.%06ld\n"),
d318976c 555 cmd_time / 1000000, cmd_time % 1000000);
9e0b60a8 556 }
9e0b60a8 557
d318976c 558 if (display_space)
9e0b60a8 559 {
d318976c 560#ifdef HAVE_SBRK
d318976c 561 char *lim = (char *) sbrk (0);
6dd77b81 562 long space_now = lim - lim_at_start;
d318976c
FN
563 long space_diff = space_now - space_at_cmd_start;
564
57ee890f 565 printf_unfiltered (_("Space used: %ld (%s%ld for this command)\n"),
d318976c 566 space_now,
57ee890f 567 (space_diff >= 0 ? "+" : ""),
d318976c
FN
568 space_diff);
569#endif
9e0b60a8 570 }
9e0b60a8 571 }
9e0b60a8 572}
d318976c
FN
573\f
574/* Commands call this if they do not want to be repeated by null lines. */
9e0b60a8 575
d318976c
FN
576void
577dont_repeat (void)
9e0b60a8 578{
d318976c
FN
579 if (server_command)
580 return;
9e0b60a8 581
d318976c
FN
582 /* If we aren't reading from standard input, we are saving the last
583 thing read from stdin in line and don't want to delete it. Null lines
584 won't repeat here in any case. */
585 if (instream == stdin)
586 *line = 0;
9e0b60a8 587}
d318976c
FN
588\f
589/* Read a line from the stream "instream" without command line editing.
9e0b60a8 590
d318976c
FN
591 It prints PROMPT_ARG once at the start.
592 Action is compatible with "readline", e.g. space for the result is
593 malloc'd and should be freed by the caller.
9e0b60a8 594
d318976c
FN
595 A NULL return means end of file. */
596char *
597gdb_readline (char *prompt_arg)
9e0b60a8 598{
d318976c
FN
599 int c;
600 char *result;
601 int input_index = 0;
602 int result_size = 80;
9e0b60a8 603
d318976c 604 if (prompt_arg)
9e0b60a8 605 {
d318976c
FN
606 /* Don't use a _filtered function here. It causes the assumed
607 character position to be off, since the newline we read from
608 the user is not accounted for. */
609 fputs_unfiltered (prompt_arg, gdb_stdout);
9e0b60a8
JM
610 gdb_flush (gdb_stdout);
611 }
612
d318976c 613 result = (char *) xmalloc (result_size);
9e0b60a8
JM
614
615 while (1)
616 {
d318976c
FN
617 /* Read from stdin if we are executing a user defined command.
618 This is the right thing for prompt_for_continue, at least. */
619 c = fgetc (instream ? instream : stdin);
9e0b60a8 620
d318976c 621 if (c == EOF)
9e0b60a8 622 {
d318976c
FN
623 if (input_index > 0)
624 /* The last line does not end with a newline. Return it, and
625 if we are called again fgetc will still return EOF and
626 we'll return NULL then. */
9e0b60a8 627 break;
b8c9b27d 628 xfree (result);
d318976c 629 return NULL;
9e0b60a8 630 }
c5aa993b 631
d318976c 632 if (c == '\n')
9e0b60a8 633 {
d318976c
FN
634 if (input_index > 0 && result[input_index - 1] == '\r')
635 input_index--;
636 break;
9e0b60a8 637 }
9e0b60a8 638
d318976c
FN
639 result[input_index++] = c;
640 while (input_index >= result_size)
9e0b60a8 641 {
d318976c
FN
642 result_size *= 2;
643 result = (char *) xrealloc (result, result_size);
9e0b60a8 644 }
9e0b60a8
JM
645 }
646
d318976c
FN
647 result[input_index++] = '\0';
648 return result;
9e0b60a8
JM
649}
650
d318976c
FN
651/* Variables which control command line editing and history
652 substitution. These variables are given default values at the end
653 of this file. */
654static int command_editing_p;
920d2a44 655
d318976c
FN
656/* NOTE 1999-04-29: This variable will be static again, once we modify
657 gdb to use the event loop as the default command loop and we merge
658 event-top.c into this file, top.c */
920d2a44 659
d318976c 660/* static */ int history_expansion_p;
920d2a44 661
d318976c 662static int write_history_p;
920d2a44
AC
663static void
664show_write_history_p (struct ui_file *file, int from_tty,
665 struct cmd_list_element *c, const char *value)
666{
667 fprintf_filtered (file, _("Saving of the history record on exit is %s.\n"),
668 value);
669}
670
d318976c 671static int history_size;
920d2a44
AC
672static void
673show_history_size (struct ui_file *file, int from_tty,
674 struct cmd_list_element *c, const char *value)
675{
676 fprintf_filtered (file, _("The size of the command history is %s.\n"),
677 value);
678}
679
d318976c 680static char *history_filename;
920d2a44
AC
681static void
682show_history_filename (struct ui_file *file, int from_tty,
683 struct cmd_list_element *c, const char *value)
684{
685 fprintf_filtered (file, _("\
686The filename in which to record the command history is \"%s\".\n"),
687 value);
688}
9e0b60a8 689
b4f5539f 690/* This is like readline(), but it has some gdb-specific behavior.
2e03ee74 691 gdb may want readline in both the synchronous and async modes during
b4f5539f
TT
692 a single gdb invocation. At the ordinary top-level prompt we might
693 be using the async readline. That means we can't use
694 rl_pre_input_hook, since it doesn't work properly in async mode.
695 However, for a secondary prompt (" >", such as occurs during a
2e03ee74
DJ
696 `define'), gdb wants a synchronous response.
697
698 We used to call readline() directly, running it in synchronous
699 mode. But mixing modes this way is not supported, and as of
700 readline 5.x it no longer works; the arrow keys come unbound during
701 the synchronous call. So we make a nested call into the event
702 loop. That's what gdb_readline_wrapper is for. */
703
704/* A flag set as soon as gdb_readline_wrapper_line is called; we can't
705 rely on gdb_readline_wrapper_result, which might still be NULL if
706 the user types Control-D for EOF. */
707static int gdb_readline_wrapper_done;
708
709/* The result of the current call to gdb_readline_wrapper, once a newline
710 is seen. */
711static char *gdb_readline_wrapper_result;
712
713/* Any intercepted hook. Operate-and-get-next sets this, expecting it
714 to be called after the newline is processed (which will redisplay
715 the prompt). But in gdb_readline_wrapper we will not get a new
716 prompt until the next call, or until we return to the event loop.
717 So we disable this hook around the newline and restore it before we
718 return. */
719static void (*saved_after_char_processing_hook) (void);
720
721/* This function is called when readline has seen a complete line of
722 text. */
723
724static void
725gdb_readline_wrapper_line (char *line)
726{
727 gdb_assert (!gdb_readline_wrapper_done);
728 gdb_readline_wrapper_result = line;
729 gdb_readline_wrapper_done = 1;
730
731 /* Prevent operate-and-get-next from acting too early. */
732 saved_after_char_processing_hook = after_char_processing_hook;
733 after_char_processing_hook = NULL;
1b05479a
DJ
734
735 /* Prevent parts of the prompt from being redisplayed if annotations
736 are enabled, and readline's state getting out of sync. */
737 if (async_command_editing_p)
738 rl_callback_handler_remove ();
2e03ee74
DJ
739}
740
741struct gdb_readline_wrapper_cleanup
742 {
743 void (*handler_orig) (char *);
2e03ee74
DJ
744 int already_prompted_orig;
745 };
746
747static void
748gdb_readline_wrapper_cleanup (void *arg)
749{
750 struct gdb_readline_wrapper_cleanup *cleanup = arg;
751
2e03ee74 752 rl_already_prompted = cleanup->already_prompted_orig;
2e03ee74
DJ
753
754 gdb_assert (input_handler == gdb_readline_wrapper_line);
755 input_handler = cleanup->handler_orig;
756 gdb_readline_wrapper_result = NULL;
757 gdb_readline_wrapper_done = 0;
758
759 after_char_processing_hook = saved_after_char_processing_hook;
760 saved_after_char_processing_hook = NULL;
761
762 xfree (cleanup);
763}
764
b4f5539f
TT
765char *
766gdb_readline_wrapper (char *prompt)
767{
2e03ee74
DJ
768 struct cleanup *back_to;
769 struct gdb_readline_wrapper_cleanup *cleanup;
770 char *retval;
771
772 cleanup = xmalloc (sizeof (*cleanup));
773 cleanup->handler_orig = input_handler;
774 input_handler = gdb_readline_wrapper_line;
775
2e03ee74
DJ
776 cleanup->already_prompted_orig = rl_already_prompted;
777
778 back_to = make_cleanup (gdb_readline_wrapper_cleanup, cleanup);
779
780 /* Display our prompt and prevent double prompt display. */
1b05479a 781 display_gdb_prompt (prompt);
2e03ee74
DJ
782 rl_already_prompted = 1;
783
362646f5 784 if (after_char_processing_hook)
2e03ee74
DJ
785 (*after_char_processing_hook) ();
786 gdb_assert (after_char_processing_hook == NULL);
787
788 /* gdb_do_one_event argument is unused. */
789 while (gdb_do_one_event (NULL) >= 0)
790 if (gdb_readline_wrapper_done)
791 break;
b4f5539f 792
2e03ee74
DJ
793 retval = gdb_readline_wrapper_result;
794 do_cleanups (back_to);
795 return retval;
b4f5539f
TT
796}
797
9e0b60a8 798\f
d318976c
FN
799#ifdef STOP_SIGNAL
800static void
801stop_sig (int signo)
9e0b60a8 802{
d318976c
FN
803#if STOP_SIGNAL == SIGTSTP
804 signal (SIGTSTP, SIG_DFL);
46711df8
MK
805#if HAVE_SIGPROCMASK
806 {
807 sigset_t zero;
808
809 sigemptyset (&zero);
810 sigprocmask (SIG_SETMASK, &zero, 0);
811 }
812#elif HAVE_SIGSETMASK
d318976c 813 sigsetmask (0);
46711df8 814#endif
d318976c
FN
815 kill (getpid (), SIGTSTP);
816 signal (SIGTSTP, stop_sig);
817#else
818 signal (STOP_SIGNAL, stop_sig);
819#endif
820 printf_unfiltered ("%s", get_prompt ());
821 gdb_flush (gdb_stdout);
9e0b60a8 822
d318976c
FN
823 /* Forget about any previous command -- null line now will do nothing. */
824 dont_repeat ();
9e0b60a8 825}
d318976c 826#endif /* STOP_SIGNAL */
9e0b60a8 827
d318976c 828/* Initialize signal handlers. */
64cdedad
EZ
829static void
830float_handler (int signo)
831{
832 /* This message is based on ANSI C, section 4.7. Note that integer
833 divide by zero causes this, so "float" is a misnomer. */
834 signal (SIGFPE, float_handler);
8a3fe4f8 835 error (_("Erroneous arithmetic operation."));
64cdedad
EZ
836}
837
9e0b60a8 838static void
d318976c 839do_nothing (int signo)
9e0b60a8 840{
d318976c
FN
841 /* Under System V the default disposition of a signal is reinstated after
842 the signal is caught and delivered to an application process. On such
843 systems one must restore the replacement signal handler if one wishes
844 to continue handling the signal in one's program. On BSD systems this
845 is not needed but it is harmless, and it simplifies the code to just do
846 it unconditionally. */
847 signal (signo, do_nothing);
9e0b60a8
JM
848}
849
467d8519
TT
850/* The current saved history number from operate-and-get-next.
851 This is -1 if not valid. */
852static int operate_saved_history = -1;
853
854/* This is put on the appropriate hook and helps operate-and-get-next
855 do its work. */
b9362cc7 856static void
5ae5f592 857gdb_rl_operate_and_get_next_completion (void)
467d8519
TT
858{
859 int delta = where_history () - operate_saved_history;
860 /* The `key' argument to rl_get_previous_history is ignored. */
861 rl_get_previous_history (delta, 0);
862 operate_saved_history = -1;
863
864 /* readline doesn't automatically update the display for us. */
12f4afab 865 rl_redisplay ();
467d8519
TT
866
867 after_char_processing_hook = NULL;
868 rl_pre_input_hook = NULL;
869}
870
871/* This is a gdb-local readline command handler. It accepts the
872 current command line (like RET does) and, if this command was taken
873 from the history, arranges for the next command in the history to
874 appear on the command line when the prompt returns.
875 We ignore the arguments. */
876static int
877gdb_rl_operate_and_get_next (int count, int key)
878{
b5686e99
MK
879 int where;
880
362646f5
AC
881 /* Use the async hook. */
882 after_char_processing_hook = gdb_rl_operate_and_get_next_completion;
467d8519 883
b5686e99
MK
884 /* Find the current line, and find the next line to use. */
885 where = where_history();
886
887 /* FIXME: kettenis/20020817: max_input_history is renamed into
888 history_max_entries in readline-4.2. When we do a new readline
889 import, we should probably change it here too, even though
890 readline maintains backwards compatibility for now by still
891 defining max_input_history. */
892 if ((history_is_stifled () && (history_length >= max_input_history)) ||
893 (where >= history_length - 1))
894 operate_saved_history = where;
895 else
896 operate_saved_history = where + 1;
897
467d8519
TT
898 return rl_newline (1, key);
899}
900\f
d318976c
FN
901/* Read one line from the command input stream `instream'
902 into the local static buffer `linebuffer' (whose current length
903 is `linelength').
904 The buffer is made bigger as necessary.
905 Returns the address of the start of the line.
9e0b60a8 906
d318976c 907 NULL is returned for end of file.
9e0b60a8 908
d318976c
FN
909 *If* the instream == stdin & stdin is a terminal, the line read
910 is copied into the file line saver (global var char *line,
911 length linesize) so that it can be duplicated.
9e0b60a8 912
d318976c
FN
913 This routine either uses fancy command line editing or
914 simple input as the user has requested. */
10689f25 915
d318976c
FN
916char *
917command_line_input (char *prompt_arg, int repeat, char *annotation_suffix)
9e0b60a8 918{
d318976c
FN
919 static char *linebuffer = 0;
920 static unsigned linelength = 0;
52f0bd74 921 char *p;
d318976c
FN
922 char *p1;
923 char *rl;
924 char *local_prompt = prompt_arg;
925 char *nline;
926 char got_eof = 0;
927
928 /* The annotation suffix must be non-NULL. */
929 if (annotation_suffix == NULL)
930 annotation_suffix = "";
9e0b60a8 931
d318976c
FN
932 if (annotation_level > 1 && instream == stdin)
933 {
934 local_prompt = alloca ((prompt_arg == NULL ? 0 : strlen (prompt_arg))
935 + strlen (annotation_suffix) + 40);
936 if (prompt_arg == NULL)
937 local_prompt[0] = '\0';
938 else
939 strcpy (local_prompt, prompt_arg);
940 strcat (local_prompt, "\n\032\032");
941 strcat (local_prompt, annotation_suffix);
942 strcat (local_prompt, "\n");
943 }
9e0b60a8 944
d318976c 945 if (linebuffer == 0)
9e0b60a8 946 {
d318976c
FN
947 linelength = 80;
948 linebuffer = (char *) xmalloc (linelength);
9e0b60a8 949 }
9e0b60a8 950
d318976c 951 p = linebuffer;
9e0b60a8 952
d318976c
FN
953 /* Control-C quits instantly if typed while in this loop
954 since it should not wait until the user types a newline. */
955 immediate_quit++;
956#ifdef STOP_SIGNAL
957 if (job_control)
362646f5 958 signal (STOP_SIGNAL, handle_stop_sig);
d318976c
FN
959#endif
960
961 while (1)
9e0b60a8 962 {
d318976c
FN
963 /* Make sure that all output has been output. Some machines may let
964 you get away with leaving out some of the gdb_flush, but not all. */
965 wrap_here ("");
966 gdb_flush (gdb_stdout);
967 gdb_flush (gdb_stderr);
968
969 if (source_file_name != NULL)
637537d0 970 ++source_line_number;
d318976c
FN
971
972 if (annotation_level > 1 && instream == stdin)
973 {
306d9ac5
DC
974 puts_unfiltered ("\n\032\032pre-");
975 puts_unfiltered (annotation_suffix);
976 puts_unfiltered ("\n");
d318976c
FN
977 }
978
979 /* Don't use fancy stuff if not talking to stdin. */
698ba934 980 if (deprecated_readline_hook && input_from_terminal_p ())
d318976c 981 {
9a4105ab 982 rl = (*deprecated_readline_hook) (local_prompt);
d318976c 983 }
698ba934 984 else if (command_editing_p && input_from_terminal_p ())
d318976c 985 {
b4f5539f 986 rl = gdb_readline_wrapper (local_prompt);
d318976c 987 }
9e0b60a8 988 else
d318976c
FN
989 {
990 rl = gdb_readline (local_prompt);
991 }
9e0b60a8 992
d318976c
FN
993 if (annotation_level > 1 && instream == stdin)
994 {
306d9ac5
DC
995 puts_unfiltered ("\n\032\032post-");
996 puts_unfiltered (annotation_suffix);
997 puts_unfiltered ("\n");
d318976c 998 }
9e0b60a8 999
d318976c 1000 if (!rl || rl == (char *) EOF)
9e0b60a8 1001 {
d318976c
FN
1002 got_eof = 1;
1003 break;
9e0b60a8 1004 }
d318976c
FN
1005 if (strlen (rl) + 1 + (p - linebuffer) > linelength)
1006 {
1007 linelength = strlen (rl) + 1 + (p - linebuffer);
1008 nline = (char *) xrealloc (linebuffer, linelength);
1009 p += nline - linebuffer;
1010 linebuffer = nline;
1011 }
1012 p1 = rl;
1013 /* Copy line. Don't copy null at end. (Leaves line alone
1014 if this was just a newline) */
1015 while (*p1)
1016 *p++ = *p1++;
9e0b60a8 1017
b8c9b27d 1018 xfree (rl); /* Allocated in readline. */
9e0b60a8 1019
d318976c
FN
1020 if (p == linebuffer || *(p - 1) != '\\')
1021 break;
9e0b60a8 1022
d318976c
FN
1023 p--; /* Put on top of '\'. */
1024 local_prompt = (char *) 0;
1025 }
9e0b60a8 1026
d318976c
FN
1027#ifdef STOP_SIGNAL
1028 if (job_control)
1029 signal (STOP_SIGNAL, SIG_DFL);
1030#endif
1031 immediate_quit--;
9e0b60a8 1032
d318976c
FN
1033 if (got_eof)
1034 return NULL;
9e0b60a8 1035
d318976c
FN
1036#define SERVER_COMMAND_LENGTH 7
1037 server_command =
1038 (p - linebuffer > SERVER_COMMAND_LENGTH)
bf896cb0 1039 && strncmp (linebuffer, "server ", SERVER_COMMAND_LENGTH) == 0;
d318976c 1040 if (server_command)
9e0b60a8 1041 {
d318976c
FN
1042 /* Note that we don't set `line'. Between this and the check in
1043 dont_repeat, this insures that repeating will still do the
1044 right thing. */
1045 *p = '\0';
1046 return linebuffer + SERVER_COMMAND_LENGTH;
9e0b60a8 1047 }
9e0b60a8 1048
d318976c
FN
1049 /* Do history expansion if that is wished. */
1050 if (history_expansion_p && instream == stdin
1051 && ISATTY (instream))
1052 {
1053 char *history_value;
1054 int expanded;
9e0b60a8 1055
d318976c
FN
1056 *p = '\0'; /* Insert null now. */
1057 expanded = history_expand (linebuffer, &history_value);
1058 if (expanded)
1059 {
1060 /* Print the changes. */
1061 printf_unfiltered ("%s\n", history_value);
9e0b60a8 1062
d318976c
FN
1063 /* If there was an error, call this function again. */
1064 if (expanded < 0)
1065 {
b8c9b27d 1066 xfree (history_value);
d318976c
FN
1067 return command_line_input (prompt_arg, repeat, annotation_suffix);
1068 }
1069 if (strlen (history_value) > linelength)
1070 {
1071 linelength = strlen (history_value) + 1;
1072 linebuffer = (char *) xrealloc (linebuffer, linelength);
1073 }
1074 strcpy (linebuffer, history_value);
1075 p = linebuffer + strlen (linebuffer);
d318976c 1076 }
91d2803c 1077 xfree (history_value);
d318976c 1078 }
9e0b60a8 1079
d318976c
FN
1080 /* If we just got an empty line, and that is supposed
1081 to repeat the previous command, return the value in the
1082 global buffer. */
1083 if (repeat && p == linebuffer)
1084 return line;
1085 for (p1 = linebuffer; *p1 == ' ' || *p1 == '\t'; p1++);
1086 if (repeat && !*p1)
1087 return line;
9e0b60a8 1088
d318976c 1089 *p = 0;
9e0b60a8 1090
d318976c
FN
1091 /* Add line to history if appropriate. */
1092 if (instream == stdin
1093 && ISATTY (stdin) && *linebuffer)
1094 add_history (linebuffer);
9e0b60a8 1095
d318976c
FN
1096 /* Note: lines consisting solely of comments are added to the command
1097 history. This is useful when you type a command, and then
1098 realize you don't want to execute it quite yet. You can comment
1099 out the command and then later fetch it from the value history
1100 and remove the '#'. The kill ring is probably better, but some
1101 people are in the habit of commenting things out. */
1102 if (*p1 == '#')
1103 *p1 = '\0'; /* Found a comment. */
9e0b60a8 1104
d318976c
FN
1105 /* Save into global buffer if appropriate. */
1106 if (repeat)
1107 {
1108 if (linelength > linesize)
1109 {
1110 line = xrealloc (line, linelength);
1111 linesize = linelength;
1112 }
1113 strcpy (line, linebuffer);
1114 return line;
1115 }
9e0b60a8 1116
d318976c 1117 return linebuffer;
9e0b60a8
JM
1118}
1119\f
1120/* Print the GDB banner. */
1121void
fba45db2 1122print_gdb_version (struct ui_file *stream)
9e0b60a8
JM
1123{
1124 /* From GNU coding standards, first line is meant to be easy for a
1125 program to parse, and is just canonical program name and version
1126 number, which starts after last space. */
1127
c16158bc 1128 fprintf_filtered (stream, "GNU gdb %s%s\n", PKGVERSION, version);
9e0b60a8
JM
1129
1130 /* Second line is a copyright notice. */
1131
636265b6 1132 fprintf_filtered (stream, "Copyright (C) 2008 Free Software Foundation, Inc.\n");
9e0b60a8
JM
1133
1134 /* Following the copyright is a brief statement that the program is
1135 free software, that users are free to copy and change it on
1136 certain conditions, that it is covered by the GNU GPL, and that
1137 there is no warranty. */
1138
1139 fprintf_filtered (stream, "\
b8533aec
DJ
1140License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n\
1141This is free software: you are free to change and redistribute it.\n\
0b93d57c 1142There is NO WARRANTY, to the extent permitted by law. Type \"show copying\"\n\
b8533aec 1143and \"show warranty\" for details.\n");
9e0b60a8
JM
1144
1145 /* After the required info we print the configuration information. */
1146
1147 fprintf_filtered (stream, "This GDB was configured as \"");
6314a349 1148 if (strcmp (host_name, target_name) != 0)
9e0b60a8
JM
1149 {
1150 fprintf_filtered (stream, "--host=%s --target=%s", host_name, target_name);
1151 }
1152 else
1153 {
1154 fprintf_filtered (stream, "%s", host_name);
1155 }
1156 fprintf_filtered (stream, "\".");
c16158bc
JM
1157
1158 if (REPORT_BUGS_TO[0])
1159 {
1160 fprintf_filtered (stream,
1161 _("\nFor bug reporting instructions, please see:\n"));
1162 fprintf_filtered (stream, "%s.\n", REPORT_BUGS_TO);
1163 }
9e0b60a8 1164}
9e0b60a8
JM
1165\f
1166/* get_prompt: access method for the GDB prompt string. */
1167
9e0b60a8 1168char *
fba45db2 1169get_prompt (void)
9e0b60a8 1170{
362646f5 1171 return PROMPT (0);
9e0b60a8
JM
1172}
1173
1174void
fba45db2 1175set_prompt (char *s)
9e0b60a8
JM
1176{
1177/* ??rehrauer: I don't know why this fails, since it looks as though
1178 assignments to prompt are wrapped in calls to savestring...
c5aa993b 1179 if (prompt != NULL)
b8c9b27d 1180 xfree (prompt);
c5aa993b 1181 */
362646f5 1182 PROMPT (0) = savestring (s, strlen (s));
9e0b60a8 1183}
9e0b60a8 1184\f
c5aa993b 1185
9e0b60a8
JM
1186/* If necessary, make the user confirm that we should quit. Return
1187 non-zero if we should quit, zero if we shouldn't. */
1188
1189int
fba45db2 1190quit_confirm (void)
9e0b60a8 1191{
39f77062 1192 if (! ptid_equal (inferior_ptid, null_ptid) && target_has_execution)
9e0b60a8
JM
1193 {
1194 char *s;
1195
1196 /* This is something of a hack. But there's no reliable way to
c5aa993b
JM
1197 see if a GUI is running. The `use_windows' variable doesn't
1198 cut it. */
9a4105ab 1199 if (deprecated_init_ui_hook)
9e0b60a8
JM
1200 s = "A debugging session is active.\nDo you still want to close the debugger?";
1201 else if (attach_flag)
1202 s = "The program is running. Quit anyway (and detach it)? ";
1203 else
b21991b0 1204 s = "The program is running. Quit anyway (and kill it)? ";
9e0b60a8 1205
306d9ac5 1206 if (!query ("%s", s))
9e0b60a8
JM
1207 return 0;
1208 }
1209
1210 return 1;
1211}
1212
b0abbc58 1213/* Helper routine for quit_force that requires error handling. */
9e0b60a8 1214
b0abbc58 1215struct qt_args
9e0b60a8 1216{
b0abbc58
JJ
1217 char *args;
1218 int from_tty;
1219};
9e0b60a8 1220
b0abbc58
JJ
1221static int
1222quit_target (void *arg)
1223{
1224 struct qt_args *qt = (struct qt_args *)arg;
9e0b60a8 1225
39f77062 1226 if (! ptid_equal (inferior_ptid, null_ptid) && target_has_execution)
9e0b60a8
JM
1227 {
1228 if (attach_flag)
b0abbc58 1229 target_detach (qt->args, qt->from_tty);
9e0b60a8 1230 else
b0abbc58 1231 target_kill ();
9e0b60a8
JM
1232 }
1233
1234 /* UDI wants this, to kill the TIP. */
f1c07ab0 1235 target_close (&current_target, 1);
9e0b60a8
JM
1236
1237 /* Save the history information if it is appropriate to do so. */
1238 if (write_history_p && history_filename)
1239 write_history (history_filename);
1240
c5aa993b 1241 do_final_cleanups (ALL_CLEANUPS); /* Do any final cleanups before exiting */
9e0b60a8 1242
b0abbc58
JJ
1243 return 0;
1244}
1245
1246/* Quit without asking for confirmation. */
1247
1248void
1249quit_force (char *args, int from_tty)
1250{
1251 int exit_code = 0;
365c70b1 1252 struct qt_args qt;
b0abbc58
JJ
1253
1254 /* An optional expression may be used to cause gdb to terminate with the
1255 value of that expression. */
1256 if (args)
1257 {
1258 struct value *val = parse_and_eval (args);
1259
1260 exit_code = (int) value_as_long (val);
1261 }
4b0ad762
AS
1262 else if (return_child_result)
1263 exit_code = return_child_result_value;
b0abbc58 1264
365c70b1
JJ
1265 qt.args = args;
1266 qt.from_tty = from_tty;
1267
b0abbc58 1268 /* We want to handle any quit errors and exit regardless. */
365c70b1 1269 catch_errors (quit_target, &qt,
b0abbc58
JJ
1270 "Quitting: ", RETURN_MASK_ALL);
1271
9e0b60a8
JM
1272 exit (exit_code);
1273}
1274
698ba934
DJ
1275/* Returns whether GDB is running on a terminal and input is
1276 currently coming from that terminal. */
9e0b60a8
JM
1277
1278int
fba45db2 1279input_from_terminal_p (void)
9e0b60a8 1280{
698ba934
DJ
1281 if (gdb_has_a_terminal () && instream == stdin)
1282 return 1;
1283
1284 /* If INSTREAM is unset, and we are not in a user command, we
1285 must be in Insight. That's like having a terminal, for our
1286 purposes. */
1287 if (instream == NULL && !in_user_command)
1288 return 1;
1289
1290 return 0;
9e0b60a8
JM
1291}
1292\f
9e0b60a8 1293static void
fba45db2 1294dont_repeat_command (char *ignored, int from_tty)
9e0b60a8 1295{
c5aa993b
JM
1296 *line = 0; /* Can't call dont_repeat here because we're not
1297 necessarily reading from stdin. */
9e0b60a8
JM
1298}
1299\f
1300/* Functions to manipulate command line editing control variables. */
1301
1302/* Number of commands to print in each call to show_commands. */
1303#define Hist_print 10
d318976c 1304void
fba45db2 1305show_commands (char *args, int from_tty)
9e0b60a8
JM
1306{
1307 /* Index for history commands. Relative to history_base. */
1308 int offset;
1309
1310 /* Number of the history entry which we are planning to display next.
1311 Relative to history_base. */
1312 static int num = 0;
1313
1314 /* The first command in the history which doesn't exist (i.e. one more
1315 than the number of the last command). Relative to history_base. */
1316 int hist_len;
1317
9e0b60a8
JM
1318 /* Print out some of the commands from the command history. */
1319 /* First determine the length of the history list. */
1320 hist_len = history_size;
1321 for (offset = 0; offset < history_size; offset++)
1322 {
1323 if (!history_get (history_base + offset))
1324 {
1325 hist_len = offset;
1326 break;
1327 }
1328 }
1329
1330 if (args)
1331 {
1332 if (args[0] == '+' && args[1] == '\0')
1333 /* "info editing +" should print from the stored position. */
1334 ;
1335 else
1336 /* "info editing <exp>" should print around command number <exp>. */
0e828ed1 1337 num = (parse_and_eval_long (args) - history_base) - Hist_print / 2;
9e0b60a8
JM
1338 }
1339 /* "show commands" means print the last Hist_print commands. */
1340 else
1341 {
1342 num = hist_len - Hist_print;
1343 }
1344
1345 if (num < 0)
1346 num = 0;
1347
1348 /* If there are at least Hist_print commands, we want to display the last
1349 Hist_print rather than, say, the last 6. */
1350 if (hist_len - num < Hist_print)
1351 {
1352 num = hist_len - Hist_print;
1353 if (num < 0)
1354 num = 0;
1355 }
1356
1357 for (offset = num; offset < num + Hist_print && offset < hist_len; offset++)
1358 {
1359 printf_filtered ("%5d %s\n", history_base + offset,
c5aa993b 1360 (history_get (history_base + offset))->line);
9e0b60a8
JM
1361 }
1362
1363 /* The next command we want to display is the next one that we haven't
1364 displayed yet. */
1365 num += Hist_print;
1366
1367 /* If the user repeats this command with return, it should do what
1368 "show commands +" does. This is unnecessary if arg is null,
1369 because "show commands +" is not useful after "show commands". */
1370 if (from_tty && args)
1371 {
1372 args[0] = '+';
1373 args[1] = '\0';
1374 }
1375}
1376
1377/* Called by do_setshow_command. */
9e0b60a8 1378static void
fba45db2 1379set_history_size_command (char *args, int from_tty, struct cmd_list_element *c)
9e0b60a8
JM
1380{
1381 if (history_size == INT_MAX)
1382 unstifle_history ();
1383 else if (history_size >= 0)
1384 stifle_history (history_size);
1385 else
1386 {
1387 history_size = INT_MAX;
8a3fe4f8 1388 error (_("History size must be non-negative"));
9e0b60a8
JM
1389 }
1390}
1391
d318976c 1392void
fba45db2 1393set_history (char *args, int from_tty)
9e0b60a8 1394{
a3f17187 1395 printf_unfiltered (_("\"set history\" must be followed by the name of a history subcommand.\n"));
9e0b60a8
JM
1396 help_list (sethistlist, "set history ", -1, gdb_stdout);
1397}
1398
d318976c 1399void
fba45db2 1400show_history (char *args, int from_tty)
9e0b60a8
JM
1401{
1402 cmd_show_list (showhistlist, from_tty, "");
1403}
1404
1405int info_verbose = 0; /* Default verbose msgs off */
1406
1407/* Called by do_setshow_command. An elaborate joke. */
d318976c 1408void
fba45db2 1409set_verbose (char *args, int from_tty, struct cmd_list_element *c)
9e0b60a8
JM
1410{
1411 char *cmdname = "verbose";
1412 struct cmd_list_element *showcmd;
1413
1414 showcmd = lookup_cmd_1 (&cmdname, showlist, NULL, 1);
1415
1416 if (info_verbose)
1417 {
1418 c->doc = "Set verbose printing of informational messages.";
1419 showcmd->doc = "Show verbose printing of informational messages.";
1420 }
1421 else
1422 {
1423 c->doc = "Set verbosity.";
1424 showcmd->doc = "Show verbosity.";
1425 }
1426}
1427
9e0b60a8
JM
1428/* Init the history buffer. Note that we are called after the init file(s)
1429 * have been read so that the user can change the history file via his
1430 * .gdbinit file (for instance). The GDBHISTFILE environment variable
1431 * overrides all of this.
1432 */
1433
1434void
fba45db2 1435init_history (void)
9e0b60a8
JM
1436{
1437 char *tmpenv;
1438
1439 tmpenv = getenv ("HISTSIZE");
1440 if (tmpenv)
1441 history_size = atoi (tmpenv);
1442 else if (!history_size)
1443 history_size = 256;
1444
1445 stifle_history (history_size);
1446
1447 tmpenv = getenv ("GDBHISTFILE");
1448 if (tmpenv)
c5aa993b
JM
1449 history_filename = savestring (tmpenv, strlen (tmpenv));
1450 else if (!history_filename)
1451 {
1452 /* We include the current directory so that if the user changes
1453 directories the file written will be the same as the one
1454 that was read. */
a0b3c4fd 1455#ifdef __MSDOS__
eb2f494a 1456 /* No leading dots in file names are allowed on MSDOS. */
1754f103
MK
1457 history_filename = concat (current_directory, "/_gdb_history",
1458 (char *)NULL);
a0b3c4fd 1459#else
1754f103
MK
1460 history_filename = concat (current_directory, "/.gdb_history",
1461 (char *)NULL);
a0b3c4fd 1462#endif
c5aa993b 1463 }
9e0b60a8
JM
1464 read_history (history_filename);
1465}
1466
920d2a44
AC
1467static void
1468show_new_async_prompt (struct ui_file *file, int from_tty,
1469 struct cmd_list_element *c, const char *value)
1470{
1471 fprintf_filtered (file, _("Gdb's prompt is \"%s\".\n"), value);
1472}
1473
1474static void
1475show_async_command_editing_p (struct ui_file *file, int from_tty,
1476 struct cmd_list_element *c, const char *value)
1477{
1478 fprintf_filtered (file, _("\
1479Editing of command lines as they are typed is %s.\n"),
1480 value);
1481}
1482
1483static void
1484show_annotation_level (struct ui_file *file, int from_tty,
1485 struct cmd_list_element *c, const char *value)
1486{
1487 fprintf_filtered (file, _("Annotation_level is %s.\n"), value);
1488}
1489
1490static void
1491show_exec_done_display_p (struct ui_file *file, int from_tty,
1492 struct cmd_list_element *c, const char *value)
1493{
1494 fprintf_filtered (file, _("\
1495Notification of completion for asynchronous execution commands is %s.\n"),
1496 value);
1497}
9e0b60a8 1498static void
fba45db2 1499init_main (void)
9e0b60a8
JM
1500{
1501 struct cmd_list_element *c;
1502
362646f5
AC
1503 /* initialize the prompt stack to a simple "(gdb) " prompt or to
1504 whatever the DEFAULT_PROMPT is. */
1505 the_prompts.top = 0;
1506 PREFIX (0) = "";
1507 PROMPT (0) = savestring (DEFAULT_PROMPT, strlen (DEFAULT_PROMPT));
1508 SUFFIX (0) = "";
1509 /* Set things up for annotation_level > 1, if the user ever decides
1510 to use it. */
1511 async_annotation_suffix = "prompt";
1512 /* Set the variable associated with the setshow prompt command. */
1513 new_async_prompt = savestring (PROMPT (0), strlen (PROMPT (0)));
1514
1515 /* If gdb was started with --annotate=2, this is equivalent to the
1516 user entering the command 'set annotate 2' at the gdb prompt, so
1517 we need to do extra processing. */
1518 if (annotation_level > 1)
1519 set_async_annotation_level (NULL, 0, NULL);
9e0b60a8
JM
1520
1521 /* Set the important stuff up for command editing. */
1522 command_editing_p = 1;
9e0b60a8
JM
1523 history_expansion_p = 0;
1524 write_history_p = 0;
1525
1526 /* Setup important stuff for command line editing. */
38017ce8 1527 rl_completion_entry_function = readline_line_completion_function;
51065942 1528 rl_completer_word_break_characters = default_word_break_characters ();
d318976c 1529 rl_completer_quote_characters = get_gdb_completer_quote_characters ();
9e0b60a8 1530 rl_readline_name = "gdb";
7cb3ec5e 1531 rl_terminal_name = getenv ("TERM");
9e0b60a8 1532
467d8519
TT
1533 /* The name for this defun comes from Bash, where it originated.
1534 15 is Control-o, the same binding this function has in Bash. */
1535 rl_add_defun ("operate-and-get-next", gdb_rl_operate_and_get_next, 15);
1536
4d28ad1e
AC
1537 add_setshow_string_cmd ("prompt", class_support,
1538 &new_async_prompt, _("\
1539Set gdb's prompt"), _("\
1540Show gdb's prompt"), NULL,
1541 set_async_prompt,
920d2a44 1542 show_new_async_prompt,
4d28ad1e 1543 &setlist, &showlist);
9e0b60a8 1544
1bedd215
AC
1545 add_com ("dont-repeat", class_support, dont_repeat_command, _("\
1546Don't repeat this command.\n\
9e0b60a8 1547Primarily used inside of user-defined commands that should not be repeated when\n\
1bedd215 1548hitting return."));
9e0b60a8 1549
5bf193a2
AC
1550 add_setshow_boolean_cmd ("editing", class_support,
1551 &async_command_editing_p, _("\
1552Set editing of command lines as they are typed."), _("\
1553Show editing of command lines as they are typed."), _("\
9e0b60a8
JM
1554Use \"on\" to enable the editing, and \"off\" to disable it.\n\
1555Without an argument, command line editing is enabled. To edit, use\n\
5bf193a2
AC
1556EMACS-like or VI-like commands like control-P or ESC."),
1557 set_async_editing_command,
920d2a44 1558 show_async_command_editing_p,
5bf193a2
AC
1559 &setlist, &showlist);
1560
1561 add_setshow_boolean_cmd ("save", no_class, &write_history_p, _("\
1562Set saving of the history record on exit."), _("\
1563Show saving of the history record on exit."), _("\
9e0b60a8 1564Use \"on\" to enable the saving, and \"off\" to disable it.\n\
5bf193a2
AC
1565Without an argument, saving is enabled."),
1566 NULL,
920d2a44 1567 show_write_history_p,
5bf193a2 1568 &sethistlist, &showhistlist);
9e0b60a8 1569
4d28ad1e
AC
1570 add_setshow_integer_cmd ("size", no_class, &history_size, _("\
1571Set the size of the command history,"), _("\
1572Show the size of the command history,"), _("\
1573ie. the number of previous commands to keep a record of."),
1574 set_history_size_command,
920d2a44 1575 show_history_size,
4d28ad1e
AC
1576 &sethistlist, &showhistlist);
1577
1578 add_setshow_filename_cmd ("filename", no_class, &history_filename, _("\
1579Set the filename in which to record the command history"), _("\
1580Show the filename in which to record the command history"), _("\
1581(the list of previous commands of which a record is kept)."),
1582 NULL,
920d2a44 1583 show_history_filename,
4d28ad1e 1584 &sethistlist, &showhistlist);
9e0b60a8 1585
5bf193a2
AC
1586 add_setshow_boolean_cmd ("confirm", class_support, &caution, _("\
1587Set whether to confirm potentially dangerous operations."), _("\
1588Show whether to confirm potentially dangerous operations."), NULL,
1589 NULL,
920d2a44 1590 show_caution,
5bf193a2 1591 &setlist, &showlist);
9e0b60a8 1592
85c07804
AC
1593 add_setshow_zinteger_cmd ("annotate", class_obscure, &annotation_level, _("\
1594Set annotation_level."), _("\
1595Show annotation_level."), _("\
9e0b60a8 15960 == normal; 1 == fullname (for use when running under emacs)\n\
85c07804
AC
15972 == output annotated suitably for use by programs that control GDB."),
1598 set_async_annotation_level,
920d2a44 1599 show_annotation_level,
85c07804 1600 &setlist, &showlist);
362646f5 1601
5bf193a2
AC
1602 add_setshow_boolean_cmd ("exec-done-display", class_support,
1603 &exec_done_display_p, _("\
1604Set notification of completion for asynchronous execution commands."), _("\
1605Show notification of completion for asynchronous execution commands."), _("\
1606Use \"on\" to enable the notification, and \"off\" to disable it."),
1607 NULL,
920d2a44 1608 show_exec_done_display_p,
5bf193a2 1609 &setlist, &showlist);
9e0b60a8 1610}
64cdedad
EZ
1611
1612void
1613gdb_init (char *argv0)
1614{
1615 if (pre_init_ui_hook)
1616 pre_init_ui_hook ();
1617
1618 /* Run the init function of each source file */
1619
1620 getcwd (gdb_dirbuf, sizeof (gdb_dirbuf));
1621 current_directory = gdb_dirbuf;
1622
1623#ifdef __MSDOS__
1624 /* Make sure we return to the original directory upon exit, come
1625 what may, since the OS doesn't do that for us. */
1626 make_final_cleanup (do_chdir_cleanup, xstrdup (current_directory));
1627#endif
1628
1629 init_cmd_lists (); /* This needs to be done first */
1630 initialize_targets (); /* Setup target_terminal macros for utils.c */
1631 initialize_utils (); /* Make errors and warnings possible */
1632 initialize_all_files ();
1633 initialize_current_architecture ();
1634 init_cli_cmds();
1635 init_main (); /* But that omits this file! Do it now */
1636
0ea3f30e
DJ
1637 initialize_stdin_serial ();
1638
362646f5 1639 async_init_signals ();
64cdedad
EZ
1640
1641 /* We need a default language for parsing expressions, so simple things like
1642 "set width 0" won't fail if no language is explicitly set in a config file
1643 or implicitly set by reading an executable during startup. */
1644 set_language (language_c);
1645 expected_language = current_language; /* don't warn about the change. */
1646
9a4105ab
AC
1647 /* Allow another UI to initialize. If the UI fails to initialize,
1648 and it wants GDB to revert to the CLI, it should clear
1649 deprecated_init_ui_hook. */
1650 if (deprecated_init_ui_hook)
1651 deprecated_init_ui_hook (argv0);
64cdedad 1652}