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