Replace 'target async' by 'maintenance set remote-async' and
[deliverable/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
1128 fprintf_filtered (stream, "GNU gdb %s\n", version);
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, "\".");
1157}
9e0b60a8
JM
1158\f
1159/* get_prompt: access method for the GDB prompt string. */
1160
9e0b60a8 1161char *
fba45db2 1162get_prompt (void)
9e0b60a8 1163{
362646f5 1164 return PROMPT (0);
9e0b60a8
JM
1165}
1166
1167void
fba45db2 1168set_prompt (char *s)
9e0b60a8
JM
1169{
1170/* ??rehrauer: I don't know why this fails, since it looks as though
1171 assignments to prompt are wrapped in calls to savestring...
c5aa993b 1172 if (prompt != NULL)
b8c9b27d 1173 xfree (prompt);
c5aa993b 1174 */
362646f5 1175 PROMPT (0) = savestring (s, strlen (s));
9e0b60a8 1176}
9e0b60a8 1177\f
c5aa993b 1178
9e0b60a8
JM
1179/* If necessary, make the user confirm that we should quit. Return
1180 non-zero if we should quit, zero if we shouldn't. */
1181
1182int
fba45db2 1183quit_confirm (void)
9e0b60a8 1184{
39f77062 1185 if (! ptid_equal (inferior_ptid, null_ptid) && target_has_execution)
9e0b60a8
JM
1186 {
1187 char *s;
1188
1189 /* This is something of a hack. But there's no reliable way to
c5aa993b
JM
1190 see if a GUI is running. The `use_windows' variable doesn't
1191 cut it. */
9a4105ab 1192 if (deprecated_init_ui_hook)
9e0b60a8
JM
1193 s = "A debugging session is active.\nDo you still want to close the debugger?";
1194 else if (attach_flag)
1195 s = "The program is running. Quit anyway (and detach it)? ";
1196 else
b21991b0 1197 s = "The program is running. Quit anyway (and kill it)? ";
9e0b60a8 1198
306d9ac5 1199 if (!query ("%s", s))
9e0b60a8
JM
1200 return 0;
1201 }
1202
1203 return 1;
1204}
1205
b0abbc58 1206/* Helper routine for quit_force that requires error handling. */
9e0b60a8 1207
b0abbc58 1208struct qt_args
9e0b60a8 1209{
b0abbc58
JJ
1210 char *args;
1211 int from_tty;
1212};
9e0b60a8 1213
b0abbc58
JJ
1214static int
1215quit_target (void *arg)
1216{
1217 struct qt_args *qt = (struct qt_args *)arg;
9e0b60a8 1218
39f77062 1219 if (! ptid_equal (inferior_ptid, null_ptid) && target_has_execution)
9e0b60a8
JM
1220 {
1221 if (attach_flag)
b0abbc58 1222 target_detach (qt->args, qt->from_tty);
9e0b60a8 1223 else
b0abbc58 1224 target_kill ();
9e0b60a8
JM
1225 }
1226
1227 /* UDI wants this, to kill the TIP. */
f1c07ab0 1228 target_close (&current_target, 1);
9e0b60a8
JM
1229
1230 /* Save the history information if it is appropriate to do so. */
1231 if (write_history_p && history_filename)
1232 write_history (history_filename);
1233
c5aa993b 1234 do_final_cleanups (ALL_CLEANUPS); /* Do any final cleanups before exiting */
9e0b60a8 1235
b0abbc58
JJ
1236 return 0;
1237}
1238
1239/* Quit without asking for confirmation. */
1240
1241void
1242quit_force (char *args, int from_tty)
1243{
1244 int exit_code = 0;
365c70b1 1245 struct qt_args qt;
b0abbc58
JJ
1246
1247 /* An optional expression may be used to cause gdb to terminate with the
1248 value of that expression. */
1249 if (args)
1250 {
1251 struct value *val = parse_and_eval (args);
1252
1253 exit_code = (int) value_as_long (val);
1254 }
4b0ad762
AS
1255 else if (return_child_result)
1256 exit_code = return_child_result_value;
b0abbc58 1257
365c70b1
JJ
1258 qt.args = args;
1259 qt.from_tty = from_tty;
1260
b0abbc58 1261 /* We want to handle any quit errors and exit regardless. */
365c70b1 1262 catch_errors (quit_target, &qt,
b0abbc58
JJ
1263 "Quitting: ", RETURN_MASK_ALL);
1264
9e0b60a8
JM
1265 exit (exit_code);
1266}
1267
698ba934
DJ
1268/* Returns whether GDB is running on a terminal and input is
1269 currently coming from that terminal. */
9e0b60a8
JM
1270
1271int
fba45db2 1272input_from_terminal_p (void)
9e0b60a8 1273{
698ba934
DJ
1274 if (gdb_has_a_terminal () && instream == stdin)
1275 return 1;
1276
1277 /* If INSTREAM is unset, and we are not in a user command, we
1278 must be in Insight. That's like having a terminal, for our
1279 purposes. */
1280 if (instream == NULL && !in_user_command)
1281 return 1;
1282
1283 return 0;
9e0b60a8
JM
1284}
1285\f
9e0b60a8 1286static void
fba45db2 1287dont_repeat_command (char *ignored, int from_tty)
9e0b60a8 1288{
c5aa993b
JM
1289 *line = 0; /* Can't call dont_repeat here because we're not
1290 necessarily reading from stdin. */
9e0b60a8
JM
1291}
1292\f
1293/* Functions to manipulate command line editing control variables. */
1294
1295/* Number of commands to print in each call to show_commands. */
1296#define Hist_print 10
d318976c 1297void
fba45db2 1298show_commands (char *args, int from_tty)
9e0b60a8
JM
1299{
1300 /* Index for history commands. Relative to history_base. */
1301 int offset;
1302
1303 /* Number of the history entry which we are planning to display next.
1304 Relative to history_base. */
1305 static int num = 0;
1306
1307 /* The first command in the history which doesn't exist (i.e. one more
1308 than the number of the last command). Relative to history_base. */
1309 int hist_len;
1310
9e0b60a8
JM
1311 /* Print out some of the commands from the command history. */
1312 /* First determine the length of the history list. */
1313 hist_len = history_size;
1314 for (offset = 0; offset < history_size; offset++)
1315 {
1316 if (!history_get (history_base + offset))
1317 {
1318 hist_len = offset;
1319 break;
1320 }
1321 }
1322
1323 if (args)
1324 {
1325 if (args[0] == '+' && args[1] == '\0')
1326 /* "info editing +" should print from the stored position. */
1327 ;
1328 else
1329 /* "info editing <exp>" should print around command number <exp>. */
0e828ed1 1330 num = (parse_and_eval_long (args) - history_base) - Hist_print / 2;
9e0b60a8
JM
1331 }
1332 /* "show commands" means print the last Hist_print commands. */
1333 else
1334 {
1335 num = hist_len - Hist_print;
1336 }
1337
1338 if (num < 0)
1339 num = 0;
1340
1341 /* If there are at least Hist_print commands, we want to display the last
1342 Hist_print rather than, say, the last 6. */
1343 if (hist_len - num < Hist_print)
1344 {
1345 num = hist_len - Hist_print;
1346 if (num < 0)
1347 num = 0;
1348 }
1349
1350 for (offset = num; offset < num + Hist_print && offset < hist_len; offset++)
1351 {
1352 printf_filtered ("%5d %s\n", history_base + offset,
c5aa993b 1353 (history_get (history_base + offset))->line);
9e0b60a8
JM
1354 }
1355
1356 /* The next command we want to display is the next one that we haven't
1357 displayed yet. */
1358 num += Hist_print;
1359
1360 /* If the user repeats this command with return, it should do what
1361 "show commands +" does. This is unnecessary if arg is null,
1362 because "show commands +" is not useful after "show commands". */
1363 if (from_tty && args)
1364 {
1365 args[0] = '+';
1366 args[1] = '\0';
1367 }
1368}
1369
1370/* Called by do_setshow_command. */
9e0b60a8 1371static void
fba45db2 1372set_history_size_command (char *args, int from_tty, struct cmd_list_element *c)
9e0b60a8
JM
1373{
1374 if (history_size == INT_MAX)
1375 unstifle_history ();
1376 else if (history_size >= 0)
1377 stifle_history (history_size);
1378 else
1379 {
1380 history_size = INT_MAX;
8a3fe4f8 1381 error (_("History size must be non-negative"));
9e0b60a8
JM
1382 }
1383}
1384
d318976c 1385void
fba45db2 1386set_history (char *args, int from_tty)
9e0b60a8 1387{
a3f17187 1388 printf_unfiltered (_("\"set history\" must be followed by the name of a history subcommand.\n"));
9e0b60a8
JM
1389 help_list (sethistlist, "set history ", -1, gdb_stdout);
1390}
1391
d318976c 1392void
fba45db2 1393show_history (char *args, int from_tty)
9e0b60a8
JM
1394{
1395 cmd_show_list (showhistlist, from_tty, "");
1396}
1397
1398int info_verbose = 0; /* Default verbose msgs off */
1399
1400/* Called by do_setshow_command. An elaborate joke. */
d318976c 1401void
fba45db2 1402set_verbose (char *args, int from_tty, struct cmd_list_element *c)
9e0b60a8
JM
1403{
1404 char *cmdname = "verbose";
1405 struct cmd_list_element *showcmd;
1406
1407 showcmd = lookup_cmd_1 (&cmdname, showlist, NULL, 1);
1408
1409 if (info_verbose)
1410 {
1411 c->doc = "Set verbose printing of informational messages.";
1412 showcmd->doc = "Show verbose printing of informational messages.";
1413 }
1414 else
1415 {
1416 c->doc = "Set verbosity.";
1417 showcmd->doc = "Show verbosity.";
1418 }
1419}
1420
9e0b60a8
JM
1421/* Init the history buffer. Note that we are called after the init file(s)
1422 * have been read so that the user can change the history file via his
1423 * .gdbinit file (for instance). The GDBHISTFILE environment variable
1424 * overrides all of this.
1425 */
1426
1427void
fba45db2 1428init_history (void)
9e0b60a8
JM
1429{
1430 char *tmpenv;
1431
1432 tmpenv = getenv ("HISTSIZE");
1433 if (tmpenv)
1434 history_size = atoi (tmpenv);
1435 else if (!history_size)
1436 history_size = 256;
1437
1438 stifle_history (history_size);
1439
1440 tmpenv = getenv ("GDBHISTFILE");
1441 if (tmpenv)
c5aa993b
JM
1442 history_filename = savestring (tmpenv, strlen (tmpenv));
1443 else if (!history_filename)
1444 {
1445 /* We include the current directory so that if the user changes
1446 directories the file written will be the same as the one
1447 that was read. */
a0b3c4fd 1448#ifdef __MSDOS__
eb2f494a 1449 /* No leading dots in file names are allowed on MSDOS. */
1754f103
MK
1450 history_filename = concat (current_directory, "/_gdb_history",
1451 (char *)NULL);
a0b3c4fd 1452#else
1754f103
MK
1453 history_filename = concat (current_directory, "/.gdb_history",
1454 (char *)NULL);
a0b3c4fd 1455#endif
c5aa993b 1456 }
9e0b60a8
JM
1457 read_history (history_filename);
1458}
1459
920d2a44
AC
1460static void
1461show_new_async_prompt (struct ui_file *file, int from_tty,
1462 struct cmd_list_element *c, const char *value)
1463{
1464 fprintf_filtered (file, _("Gdb's prompt is \"%s\".\n"), value);
1465}
1466
1467static void
1468show_async_command_editing_p (struct ui_file *file, int from_tty,
1469 struct cmd_list_element *c, const char *value)
1470{
1471 fprintf_filtered (file, _("\
1472Editing of command lines as they are typed is %s.\n"),
1473 value);
1474}
1475
1476static void
1477show_annotation_level (struct ui_file *file, int from_tty,
1478 struct cmd_list_element *c, const char *value)
1479{
1480 fprintf_filtered (file, _("Annotation_level is %s.\n"), value);
1481}
1482
1483static void
1484show_exec_done_display_p (struct ui_file *file, int from_tty,
1485 struct cmd_list_element *c, const char *value)
1486{
1487 fprintf_filtered (file, _("\
1488Notification of completion for asynchronous execution commands is %s.\n"),
1489 value);
1490}
9e0b60a8 1491static void
fba45db2 1492init_main (void)
9e0b60a8
JM
1493{
1494 struct cmd_list_element *c;
1495
362646f5
AC
1496 /* initialize the prompt stack to a simple "(gdb) " prompt or to
1497 whatever the DEFAULT_PROMPT is. */
1498 the_prompts.top = 0;
1499 PREFIX (0) = "";
1500 PROMPT (0) = savestring (DEFAULT_PROMPT, strlen (DEFAULT_PROMPT));
1501 SUFFIX (0) = "";
1502 /* Set things up for annotation_level > 1, if the user ever decides
1503 to use it. */
1504 async_annotation_suffix = "prompt";
1505 /* Set the variable associated with the setshow prompt command. */
1506 new_async_prompt = savestring (PROMPT (0), strlen (PROMPT (0)));
1507
1508 /* If gdb was started with --annotate=2, this is equivalent to the
1509 user entering the command 'set annotate 2' at the gdb prompt, so
1510 we need to do extra processing. */
1511 if (annotation_level > 1)
1512 set_async_annotation_level (NULL, 0, NULL);
9e0b60a8
JM
1513
1514 /* Set the important stuff up for command editing. */
1515 command_editing_p = 1;
9e0b60a8
JM
1516 history_expansion_p = 0;
1517 write_history_p = 0;
1518
1519 /* Setup important stuff for command line editing. */
38017ce8 1520 rl_completion_entry_function = readline_line_completion_function;
51065942 1521 rl_completer_word_break_characters = default_word_break_characters ();
d318976c 1522 rl_completer_quote_characters = get_gdb_completer_quote_characters ();
9e0b60a8 1523 rl_readline_name = "gdb";
7cb3ec5e 1524 rl_terminal_name = getenv ("TERM");
9e0b60a8 1525
467d8519
TT
1526 /* The name for this defun comes from Bash, where it originated.
1527 15 is Control-o, the same binding this function has in Bash. */
1528 rl_add_defun ("operate-and-get-next", gdb_rl_operate_and_get_next, 15);
1529
4d28ad1e
AC
1530 add_setshow_string_cmd ("prompt", class_support,
1531 &new_async_prompt, _("\
1532Set gdb's prompt"), _("\
1533Show gdb's prompt"), NULL,
1534 set_async_prompt,
920d2a44 1535 show_new_async_prompt,
4d28ad1e 1536 &setlist, &showlist);
9e0b60a8 1537
1bedd215
AC
1538 add_com ("dont-repeat", class_support, dont_repeat_command, _("\
1539Don't repeat this command.\n\
9e0b60a8 1540Primarily used inside of user-defined commands that should not be repeated when\n\
1bedd215 1541hitting return."));
9e0b60a8 1542
5bf193a2
AC
1543 add_setshow_boolean_cmd ("editing", class_support,
1544 &async_command_editing_p, _("\
1545Set editing of command lines as they are typed."), _("\
1546Show editing of command lines as they are typed."), _("\
9e0b60a8
JM
1547Use \"on\" to enable the editing, and \"off\" to disable it.\n\
1548Without an argument, command line editing is enabled. To edit, use\n\
5bf193a2
AC
1549EMACS-like or VI-like commands like control-P or ESC."),
1550 set_async_editing_command,
920d2a44 1551 show_async_command_editing_p,
5bf193a2
AC
1552 &setlist, &showlist);
1553
1554 add_setshow_boolean_cmd ("save", no_class, &write_history_p, _("\
1555Set saving of the history record on exit."), _("\
1556Show saving of the history record on exit."), _("\
9e0b60a8 1557Use \"on\" to enable the saving, and \"off\" to disable it.\n\
5bf193a2
AC
1558Without an argument, saving is enabled."),
1559 NULL,
920d2a44 1560 show_write_history_p,
5bf193a2 1561 &sethistlist, &showhistlist);
9e0b60a8 1562
4d28ad1e
AC
1563 add_setshow_integer_cmd ("size", no_class, &history_size, _("\
1564Set the size of the command history,"), _("\
1565Show the size of the command history,"), _("\
1566ie. the number of previous commands to keep a record of."),
1567 set_history_size_command,
920d2a44 1568 show_history_size,
4d28ad1e
AC
1569 &sethistlist, &showhistlist);
1570
1571 add_setshow_filename_cmd ("filename", no_class, &history_filename, _("\
1572Set the filename in which to record the command history"), _("\
1573Show the filename in which to record the command history"), _("\
1574(the list of previous commands of which a record is kept)."),
1575 NULL,
920d2a44 1576 show_history_filename,
4d28ad1e 1577 &sethistlist, &showhistlist);
9e0b60a8 1578
5bf193a2
AC
1579 add_setshow_boolean_cmd ("confirm", class_support, &caution, _("\
1580Set whether to confirm potentially dangerous operations."), _("\
1581Show whether to confirm potentially dangerous operations."), NULL,
1582 NULL,
920d2a44 1583 show_caution,
5bf193a2 1584 &setlist, &showlist);
9e0b60a8 1585
85c07804
AC
1586 add_setshow_zinteger_cmd ("annotate", class_obscure, &annotation_level, _("\
1587Set annotation_level."), _("\
1588Show annotation_level."), _("\
9e0b60a8 15890 == normal; 1 == fullname (for use when running under emacs)\n\
85c07804
AC
15902 == output annotated suitably for use by programs that control GDB."),
1591 set_async_annotation_level,
920d2a44 1592 show_annotation_level,
85c07804 1593 &setlist, &showlist);
362646f5 1594
5bf193a2
AC
1595 add_setshow_boolean_cmd ("exec-done-display", class_support,
1596 &exec_done_display_p, _("\
1597Set notification of completion for asynchronous execution commands."), _("\
1598Show notification of completion for asynchronous execution commands."), _("\
1599Use \"on\" to enable the notification, and \"off\" to disable it."),
1600 NULL,
920d2a44 1601 show_exec_done_display_p,
5bf193a2 1602 &setlist, &showlist);
9e0b60a8 1603}
64cdedad
EZ
1604
1605void
1606gdb_init (char *argv0)
1607{
1608 if (pre_init_ui_hook)
1609 pre_init_ui_hook ();
1610
1611 /* Run the init function of each source file */
1612
1613 getcwd (gdb_dirbuf, sizeof (gdb_dirbuf));
1614 current_directory = gdb_dirbuf;
1615
1616#ifdef __MSDOS__
1617 /* Make sure we return to the original directory upon exit, come
1618 what may, since the OS doesn't do that for us. */
1619 make_final_cleanup (do_chdir_cleanup, xstrdup (current_directory));
1620#endif
1621
1622 init_cmd_lists (); /* This needs to be done first */
1623 initialize_targets (); /* Setup target_terminal macros for utils.c */
1624 initialize_utils (); /* Make errors and warnings possible */
1625 initialize_all_files ();
1626 initialize_current_architecture ();
1627 init_cli_cmds();
1628 init_main (); /* But that omits this file! Do it now */
1629
0ea3f30e
DJ
1630 initialize_stdin_serial ();
1631
362646f5 1632 async_init_signals ();
64cdedad
EZ
1633
1634 /* We need a default language for parsing expressions, so simple things like
1635 "set width 0" won't fail if no language is explicitly set in a config file
1636 or implicitly set by reading an executable during startup. */
1637 set_language (language_c);
1638 expected_language = current_language; /* don't warn about the change. */
1639
9a4105ab
AC
1640 /* Allow another UI to initialize. If the UI fails to initialize,
1641 and it wants GDB to revert to the CLI, it should clear
1642 deprecated_init_ui_hook. */
1643 if (deprecated_init_ui_hook)
1644 deprecated_init_ui_hook (argv0);
64cdedad 1645}
This page took 0.839054 seconds and 4 git commands to generate.