* gdbarch.sh: Delete dwarf_reg_to_regnum.
[deliverable/binutils-gdb.git] / gdb / top.c
1 /* Top level stuff for GDB, the GNU debugger.
2
3 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
5 2008 Free Software Foundation, Inc.
6
7 This file is part of GDB.
8
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 3 of the License, or
12 (at your option) any later version.
13
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.
18
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
21
22 #include "defs.h"
23 #include "gdbcmd.h"
24 #include "call-cmds.h"
25 #include "cli/cli-cmds.h"
26 #include "cli/cli-script.h"
27 #include "cli/cli-setshow.h"
28 #include "cli/cli-decode.h"
29 #include "symtab.h"
30 #include "inferior.h"
31 #include "exceptions.h"
32 #include <signal.h>
33 #include "target.h"
34 #include "breakpoint.h"
35 #include "gdbtypes.h"
36 #include "expression.h"
37 #include "value.h"
38 #include "language.h"
39 #include "terminal.h" /* For job_control. */
40 #include "annotate.h"
41 #include "completer.h"
42 #include "top.h"
43 #include "version.h"
44 #include "serial.h"
45 #include "doublest.h"
46 #include "gdb_assert.h"
47 #include "main.h"
48 #include "event-loop.h"
49
50 /* readline include files */
51 #include "readline/readline.h"
52 #include "readline/history.h"
53
54 /* readline defines this. */
55 #undef savestring
56
57 #include <sys/types.h>
58
59 #include "event-top.h"
60 #include "gdb_string.h"
61 #include "gdb_stat.h"
62 #include <ctype.h>
63 #include "ui-out.h"
64 #include "cli-out.h"
65
66 /* Default command line prompt. This is overriden in some configs. */
67
68 #ifndef DEFAULT_PROMPT
69 #define DEFAULT_PROMPT "(gdb) "
70 #endif
71
72 /* Initialization file name for gdb. This is overridden in some configs. */
73
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
82 #ifndef GDBINIT_FILENAME
83 #define GDBINIT_FILENAME ".gdbinit"
84 #endif
85 char gdbinit[PATH_MAX + 1] = GDBINIT_FILENAME;
86
87 int 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
92 int use_windows = 0;
93
94 extern char lang_frame_mismatch_warn[]; /* language.c */
95
96 /* Flag for whether we want all the "from_tty" gubbish printed. */
97
98 int caution = 1; /* Default is yes, sigh. */
99 static void
100 show_caution (struct ui_file *file, int from_tty,
101 struct cmd_list_element *c, const char *value)
102 {
103 fprintf_filtered (file, _("\
104 Whether to confirm potentially dangerous operations is %s.\n"),
105 value);
106 }
107
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
112 FILE *instream;
113
114 /* Flag to indicate whether a user defined command is currently running. */
115
116 int in_user_command;
117
118 /* Current working directory. */
119
120 char *current_directory;
121
122 /* The directory name is actually stored here (usually). */
123 char 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
129 void (*window_hook) (FILE *, char *);
130
131 int epoch_interface;
132 int xgdb_verbose;
133
134 /* gdb prints this when reading a command interactively */
135 static char *gdb_prompt_string; /* the global prompt string */
136
137 /* Buffer used for reading command lines, and the size
138 allocated for it so far. */
139
140 char *line;
141 int linesize = 100;
142
143 /* Nonzero if the current command is modified by "server ". This
144 affects things like recording into the command history, commands
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. */
149 int 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
156 int baud_rate = -1;
157
158 /* Timeout limit for response from target. */
159
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
169 Renesas E7000 ICE didn't always respond in a timely manner.
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
178 int remote_timeout = 2;
179
180 /* Non-zero tells remote* modules to output debugging info. */
181
182 int remote_debug = 0;
183
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. */
188 int target_executing = 0;
189
190 /* Sbrk location on entry to main. Used for statistics only. */
191 #ifdef HAVE_SBRK
192 char *lim_at_start;
193 #endif
194
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
200 static void stop_sig (int);
201 #endif
202 #endif
203
204 /* Hooks for alternate command interfaces. */
205
206 /* Called after most modules have been initialized, but before taking users
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. */
211
212 void (*deprecated_init_ui_hook) (char *argv0);
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
218 int (*deprecated_ui_loop_hook) (int);
219
220 /* Called instead of command_loop at top level. Can be invoked via
221 throw_exception(). */
222
223 void (*deprecated_command_loop_hook) (void);
224
225
226 /* Called from print_frame_info to list the line we stopped in. */
227
228 void (*deprecated_print_frame_info_listing_hook) (struct symtab * s, int line,
229 int stopline, int noerror);
230 /* Replaces most of query. */
231
232 int (*deprecated_query_hook) (const char *, va_list);
233
234 /* Replaces most of warning. */
235
236 void (*deprecated_warning_hook) (const char *, va_list);
237
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. */
249
250 void (*deprecated_readline_begin_hook) (char *, ...);
251 char *(*deprecated_readline_hook) (char *);
252 void (*deprecated_readline_end_hook) (void);
253
254 /* Called as appropriate to notify the interface of the specified breakpoint
255 conditions. */
256
257 void (*deprecated_create_breakpoint_hook) (struct breakpoint * bpt);
258 void (*deprecated_delete_breakpoint_hook) (struct breakpoint * bpt);
259 void (*deprecated_modify_breakpoint_hook) (struct breakpoint * bpt);
260
261 /* Called as appropriate to notify the interface that we have attached
262 to or detached from an already running process. */
263
264 void (*deprecated_attach_hook) (void);
265 void (*deprecated_detach_hook) (void);
266
267 /* Called during long calculations to allow GUI to repair window damage, and to
268 check for stop buttons, etc... */
269
270 void (*deprecated_interactive_hook) (void);
271
272 /* Tell the GUI someone changed the register REGNO. -1 means
273 that the caller does not know which register changed or
274 that several registers have changed (see value_assign). */
275 void (*deprecated_register_changed_hook) (int regno);
276
277 /* Tell the GUI someone changed LEN bytes of memory at ADDR */
278 void (*deprecated_memory_changed_hook) (CORE_ADDR addr, int len);
279
280 /* Called when going to wait for the target. Usually allows the GUI to run
281 while waiting for target events. */
282
283 ptid_t (*deprecated_target_wait_hook) (ptid_t ptid,
284 struct target_waitstatus * status);
285
286 /* Used by UI as a wrapper around command execution. May do various things
287 like enabling/disabling buttons, etc... */
288
289 void (*deprecated_call_command_hook) (struct cmd_list_element * c, char *cmd,
290 int from_tty);
291
292 /* Called after a `set' command has finished. Is only run if the
293 `set' command succeeded. */
294
295 void (*deprecated_set_hook) (struct cmd_list_element * c);
296
297 /* Called when the current thread changes. Argument is thread id. */
298
299 void (*deprecated_context_hook) (int id);
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
304 void (*deprecated_error_hook) (void);
305
306 /* Handler for SIGHUP. */
307
308 #ifdef SIGHUP
309 /* NOTE 1999-04-29: This function will be static again, once we modify
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
313 quit_cover (void *s)
314 {
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);
318 return 0;
319 }
320 #endif /* defined SIGHUP */
321 \f
322 /* Line number we are currently in in a file which is being sourced. */
323 /* NOTE 1999-04-29: This variable will be static again, once we modify
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;
327
328 /* Name of the file we are sourcing. */
329 /* NOTE 1999-04-29: This variable will be static again, once we modify
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;
333
334 /* Clean up on error during a "source" command (or execution of a
335 user-defined command). */
336
337 void
338 do_restore_instream_cleanup (void *stream)
339 {
340 /* Restore the previous input stream. */
341 instream = stream;
342 }
343
344 /* Read commands from STREAM. */
345 void
346 read_command_file (FILE *stream)
347 {
348 struct cleanup *cleanups;
349
350 cleanups = make_cleanup (do_restore_instream_cleanup, instream);
351 instream = stream;
352 command_loop ();
353 do_cleanups (cleanups);
354 }
355 \f
356 void (*pre_init_ui_hook) (void);
357
358 #ifdef __MSDOS__
359 void
360 do_chdir_cleanup (void *old_dir)
361 {
362 chdir (old_dir);
363 xfree (old_dir);
364 }
365 #endif
366
367 /* Execute the line P as a command.
368 Pass FROM_TTY as second argument to the defining function. */
369
370 void
371 execute_command (char *p, int from_tty)
372 {
373 struct cmd_list_element *c;
374 enum language flang;
375 static int warned = 0;
376 char *line;
377 struct continuation_arg *arg1;
378 struct continuation_arg *arg2;
379 long time_at_cmd_start = 0;
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 }
398
399 free_all_values ();
400
401 /* Force cleanup of any alloca areas if using C alloca instead of
402 a builtin alloca. */
403 alloca (0);
404
405 /* This can happen when command_line_input hits end of file. */
406 if (p == NULL)
407 return;
408
409 target_log_command (p);
410
411 while (*p == ' ' || *p == '\t')
412 p++;
413 if (*p)
414 {
415 char *arg;
416 line = p;
417
418 /* If trace-commands is set then this will print this command. */
419 print_command_trace (p);
420
421 c = lookup_cmd (&p, cmdlist, "", 0, 1);
422
423 /* If the target is running, we allow only a limited set of
424 commands. */
425 if (target_can_async_p () && target_executing && !get_cmd_async_ok (c))
426 error (_("Cannot execute this command while the target is running."));
427
428 /* Pass null arg rather than an empty one. */
429 arg = *p ? p : 0;
430
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. */
441 if (arg
442 && c->type != set_cmd
443 && !is_complete_command (c))
444 {
445 p = arg + strlen (arg) - 1;
446 while (p >= arg && (*p == ' ' || *p == '\t'))
447 p--;
448 *(p + 1) = '\0';
449 }
450
451 /* If this command has been pre-hooked, run the hook first. */
452 execute_cmd_pre_hook (c);
453
454 if (c->flags & DEPRECATED_WARN_USER)
455 deprecated_cmd_warning (&line);
456
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);
461 else if (!cmd_func_p (c))
462 error (_("That is not a command, just a help topic."));
463 else if (deprecated_call_command_hook)
464 deprecated_call_command_hook (c, arg, from_tty & caution);
465 else
466 cmd_func (c, arg, from_tty & caution);
467
468 /* If this command has been post-hooked, run the hook last. */
469 execute_cmd_post_hook (c);
470
471 }
472
473 /* Tell the user if the language has changed (except first time). */
474 if (current_language != expected_language)
475 {
476 if (language_mode == language_mode_auto)
477 {
478 language_info (1); /* Print what changed. */
479 }
480 warned = 0;
481 }
482
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
489 if (!target_executing && target_has_stack)
490 {
491 flang = get_frame_language ();
492 if (!warned
493 && flang != language_unknown
494 && flang != current_language->la_language)
495 {
496 printf_filtered ("%s\n", lang_frame_mismatch_warn);
497 warned = 1;
498 }
499 }
500 }
501
502 /* Read commands from `instream' and execute them
503 until end of file or error reading instream. */
504
505 void
506 command_loop (void)
507 {
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;
517
518 while (instream && !feof (instream))
519 {
520 if (window_hook && instream == stdin)
521 (*window_hook) (instream, get_prompt ());
522
523 quit_flag = 0;
524 if (instream == stdin && stdin_is_tty)
525 reinitialize_more_filter ();
526 old_chain = make_cleanup (null_cleanup, 0);
527
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");
532 if (command == 0)
533 return;
534
535 time_at_cmd_start = get_run_time ();
536
537 if (display_space)
538 {
539 #ifdef HAVE_SBRK
540 char *lim = (char *) sbrk (0);
541 space_at_cmd_start = lim - lim_at_start;
542 #endif
543 }
544
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);
549
550 if (display_time)
551 {
552 long cmd_time = get_run_time () - time_at_cmd_start;
553
554 printf_unfiltered (_("Command execution time: %ld.%06ld\n"),
555 cmd_time / 1000000, cmd_time % 1000000);
556 }
557
558 if (display_space)
559 {
560 #ifdef HAVE_SBRK
561 char *lim = (char *) sbrk (0);
562 long space_now = lim - lim_at_start;
563 long space_diff = space_now - space_at_cmd_start;
564
565 printf_unfiltered (_("Space used: %ld (%s%ld for this command)\n"),
566 space_now,
567 (space_diff >= 0 ? "+" : ""),
568 space_diff);
569 #endif
570 }
571 }
572 }
573 \f
574 /* Commands call this if they do not want to be repeated by null lines. */
575
576 void
577 dont_repeat (void)
578 {
579 if (server_command)
580 return;
581
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;
587 }
588 \f
589 /* Read a line from the stream "instream" without command line editing.
590
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.
594
595 A NULL return means end of file. */
596 char *
597 gdb_readline (char *prompt_arg)
598 {
599 int c;
600 char *result;
601 int input_index = 0;
602 int result_size = 80;
603
604 if (prompt_arg)
605 {
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);
610 gdb_flush (gdb_stdout);
611 }
612
613 result = (char *) xmalloc (result_size);
614
615 while (1)
616 {
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);
620
621 if (c == EOF)
622 {
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. */
627 break;
628 xfree (result);
629 return NULL;
630 }
631
632 if (c == '\n')
633 {
634 if (input_index > 0 && result[input_index - 1] == '\r')
635 input_index--;
636 break;
637 }
638
639 result[input_index++] = c;
640 while (input_index >= result_size)
641 {
642 result_size *= 2;
643 result = (char *) xrealloc (result, result_size);
644 }
645 }
646
647 result[input_index++] = '\0';
648 return result;
649 }
650
651 /* Variables which control command line editing and history
652 substitution. These variables are given default values at the end
653 of this file. */
654 static int command_editing_p;
655
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 */
659
660 /* static */ int history_expansion_p;
661
662 static int write_history_p;
663 static void
664 show_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
671 static int history_size;
672 static void
673 show_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
680 static char *history_filename;
681 static void
682 show_history_filename (struct ui_file *file, int from_tty,
683 struct cmd_list_element *c, const char *value)
684 {
685 fprintf_filtered (file, _("\
686 The filename in which to record the command history is \"%s\".\n"),
687 value);
688 }
689
690 /* This is like readline(), but it has some gdb-specific behavior.
691 gdb may want readline in both the synchronous and async modes during
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
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. */
707 static int gdb_readline_wrapper_done;
708
709 /* The result of the current call to gdb_readline_wrapper, once a newline
710 is seen. */
711 static 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. */
719 static void (*saved_after_char_processing_hook) (void);
720
721 /* This function is called when readline has seen a complete line of
722 text. */
723
724 static void
725 gdb_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;
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 ();
739 }
740
741 struct gdb_readline_wrapper_cleanup
742 {
743 void (*handler_orig) (char *);
744 int already_prompted_orig;
745 };
746
747 static void
748 gdb_readline_wrapper_cleanup (void *arg)
749 {
750 struct gdb_readline_wrapper_cleanup *cleanup = arg;
751
752 rl_already_prompted = cleanup->already_prompted_orig;
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
765 char *
766 gdb_readline_wrapper (char *prompt)
767 {
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
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. */
781 display_gdb_prompt (prompt);
782 rl_already_prompted = 1;
783
784 if (after_char_processing_hook)
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;
792
793 retval = gdb_readline_wrapper_result;
794 do_cleanups (back_to);
795 return retval;
796 }
797
798 \f
799 #ifdef STOP_SIGNAL
800 static void
801 stop_sig (int signo)
802 {
803 #if STOP_SIGNAL == SIGTSTP
804 signal (SIGTSTP, SIG_DFL);
805 #if HAVE_SIGPROCMASK
806 {
807 sigset_t zero;
808
809 sigemptyset (&zero);
810 sigprocmask (SIG_SETMASK, &zero, 0);
811 }
812 #elif HAVE_SIGSETMASK
813 sigsetmask (0);
814 #endif
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);
822
823 /* Forget about any previous command -- null line now will do nothing. */
824 dont_repeat ();
825 }
826 #endif /* STOP_SIGNAL */
827
828 /* Initialize signal handlers. */
829 static void
830 float_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);
835 error (_("Erroneous arithmetic operation."));
836 }
837
838 static void
839 do_nothing (int signo)
840 {
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);
848 }
849
850 /* The current saved history number from operate-and-get-next.
851 This is -1 if not valid. */
852 static int operate_saved_history = -1;
853
854 /* This is put on the appropriate hook and helps operate-and-get-next
855 do its work. */
856 static void
857 gdb_rl_operate_and_get_next_completion (void)
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. */
865 rl_redisplay ();
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. */
876 static int
877 gdb_rl_operate_and_get_next (int count, int key)
878 {
879 int where;
880
881 /* Use the async hook. */
882 after_char_processing_hook = gdb_rl_operate_and_get_next_completion;
883
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
898 return rl_newline (1, key);
899 }
900 \f
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.
906
907 NULL is returned for end of file.
908
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.
912
913 This routine either uses fancy command line editing or
914 simple input as the user has requested. */
915
916 char *
917 command_line_input (char *prompt_arg, int repeat, char *annotation_suffix)
918 {
919 static char *linebuffer = 0;
920 static unsigned linelength = 0;
921 char *p;
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 = "";
931
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 }
944
945 if (linebuffer == 0)
946 {
947 linelength = 80;
948 linebuffer = (char *) xmalloc (linelength);
949 }
950
951 p = linebuffer;
952
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)
958 signal (STOP_SIGNAL, handle_stop_sig);
959 #endif
960
961 while (1)
962 {
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)
970 ++source_line_number;
971
972 if (annotation_level > 1 && instream == stdin)
973 {
974 puts_unfiltered ("\n\032\032pre-");
975 puts_unfiltered (annotation_suffix);
976 puts_unfiltered ("\n");
977 }
978
979 /* Don't use fancy stuff if not talking to stdin. */
980 if (deprecated_readline_hook && input_from_terminal_p ())
981 {
982 rl = (*deprecated_readline_hook) (local_prompt);
983 }
984 else if (command_editing_p && input_from_terminal_p ())
985 {
986 rl = gdb_readline_wrapper (local_prompt);
987 }
988 else
989 {
990 rl = gdb_readline (local_prompt);
991 }
992
993 if (annotation_level > 1 && instream == stdin)
994 {
995 puts_unfiltered ("\n\032\032post-");
996 puts_unfiltered (annotation_suffix);
997 puts_unfiltered ("\n");
998 }
999
1000 if (!rl || rl == (char *) EOF)
1001 {
1002 got_eof = 1;
1003 break;
1004 }
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++;
1017
1018 xfree (rl); /* Allocated in readline. */
1019
1020 if (p == linebuffer || *(p - 1) != '\\')
1021 break;
1022
1023 p--; /* Put on top of '\'. */
1024 local_prompt = (char *) 0;
1025 }
1026
1027 #ifdef STOP_SIGNAL
1028 if (job_control)
1029 signal (STOP_SIGNAL, SIG_DFL);
1030 #endif
1031 immediate_quit--;
1032
1033 if (got_eof)
1034 return NULL;
1035
1036 #define SERVER_COMMAND_LENGTH 7
1037 server_command =
1038 (p - linebuffer > SERVER_COMMAND_LENGTH)
1039 && strncmp (linebuffer, "server ", SERVER_COMMAND_LENGTH) == 0;
1040 if (server_command)
1041 {
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;
1047 }
1048
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;
1055
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);
1062
1063 /* If there was an error, call this function again. */
1064 if (expanded < 0)
1065 {
1066 xfree (history_value);
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);
1076 }
1077 xfree (history_value);
1078 }
1079
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;
1088
1089 *p = 0;
1090
1091 /* Add line to history if appropriate. */
1092 if (instream == stdin
1093 && ISATTY (stdin) && *linebuffer)
1094 add_history (linebuffer);
1095
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. */
1104
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 }
1116
1117 return linebuffer;
1118 }
1119 \f
1120 /* Print the GDB banner. */
1121 void
1122 print_gdb_version (struct ui_file *stream)
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
1132 fprintf_filtered (stream, "Copyright (C) 2008 Free Software Foundation, Inc.\n");
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, "\
1140 License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n\
1141 This is free software: you are free to change and redistribute it.\n\
1142 There is NO WARRANTY, to the extent permitted by law. Type \"show copying\"\n\
1143 and \"show warranty\" for details.\n");
1144
1145 /* After the required info we print the configuration information. */
1146
1147 fprintf_filtered (stream, "This GDB was configured as \"");
1148 if (strcmp (host_name, target_name) != 0)
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 }
1158 \f
1159 /* get_prompt: access method for the GDB prompt string. */
1160
1161 char *
1162 get_prompt (void)
1163 {
1164 return PROMPT (0);
1165 }
1166
1167 void
1168 set_prompt (char *s)
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...
1172 if (prompt != NULL)
1173 xfree (prompt);
1174 */
1175 PROMPT (0) = savestring (s, strlen (s));
1176 }
1177 \f
1178
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
1182 int
1183 quit_confirm (void)
1184 {
1185 if (! ptid_equal (inferior_ptid, null_ptid) && target_has_execution)
1186 {
1187 char *s;
1188
1189 /* This is something of a hack. But there's no reliable way to
1190 see if a GUI is running. The `use_windows' variable doesn't
1191 cut it. */
1192 if (deprecated_init_ui_hook)
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
1197 s = "The program is running. Quit anyway (and kill it)? ";
1198
1199 if (!query ("%s", s))
1200 return 0;
1201 }
1202
1203 return 1;
1204 }
1205
1206 /* Helper routine for quit_force that requires error handling. */
1207
1208 struct qt_args
1209 {
1210 char *args;
1211 int from_tty;
1212 };
1213
1214 static int
1215 quit_target (void *arg)
1216 {
1217 struct qt_args *qt = (struct qt_args *)arg;
1218
1219 if (! ptid_equal (inferior_ptid, null_ptid) && target_has_execution)
1220 {
1221 if (attach_flag)
1222 target_detach (qt->args, qt->from_tty);
1223 else
1224 target_kill ();
1225 }
1226
1227 /* UDI wants this, to kill the TIP. */
1228 target_close (&current_target, 1);
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
1234 do_final_cleanups (ALL_CLEANUPS); /* Do any final cleanups before exiting */
1235
1236 return 0;
1237 }
1238
1239 /* Quit without asking for confirmation. */
1240
1241 void
1242 quit_force (char *args, int from_tty)
1243 {
1244 int exit_code = 0;
1245 struct qt_args qt;
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 }
1255 else if (return_child_result)
1256 exit_code = return_child_result_value;
1257
1258 qt.args = args;
1259 qt.from_tty = from_tty;
1260
1261 /* We want to handle any quit errors and exit regardless. */
1262 catch_errors (quit_target, &qt,
1263 "Quitting: ", RETURN_MASK_ALL);
1264
1265 exit (exit_code);
1266 }
1267
1268 /* Returns whether GDB is running on a terminal and input is
1269 currently coming from that terminal. */
1270
1271 int
1272 input_from_terminal_p (void)
1273 {
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;
1284 }
1285 \f
1286 static void
1287 dont_repeat_command (char *ignored, int from_tty)
1288 {
1289 *line = 0; /* Can't call dont_repeat here because we're not
1290 necessarily reading from stdin. */
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
1297 void
1298 show_commands (char *args, int from_tty)
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
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>. */
1330 num = (parse_and_eval_long (args) - history_base) - Hist_print / 2;
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,
1353 (history_get (history_base + offset))->line);
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. */
1371 static void
1372 set_history_size_command (char *args, int from_tty, struct cmd_list_element *c)
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;
1381 error (_("History size must be non-negative"));
1382 }
1383 }
1384
1385 void
1386 set_history (char *args, int from_tty)
1387 {
1388 printf_unfiltered (_("\"set history\" must be followed by the name of a history subcommand.\n"));
1389 help_list (sethistlist, "set history ", -1, gdb_stdout);
1390 }
1391
1392 void
1393 show_history (char *args, int from_tty)
1394 {
1395 cmd_show_list (showhistlist, from_tty, "");
1396 }
1397
1398 int info_verbose = 0; /* Default verbose msgs off */
1399
1400 /* Called by do_setshow_command. An elaborate joke. */
1401 void
1402 set_verbose (char *args, int from_tty, struct cmd_list_element *c)
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
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
1427 void
1428 init_history (void)
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)
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. */
1448 #ifdef __MSDOS__
1449 /* No leading dots in file names are allowed on MSDOS. */
1450 history_filename = concat (current_directory, "/_gdb_history",
1451 (char *)NULL);
1452 #else
1453 history_filename = concat (current_directory, "/.gdb_history",
1454 (char *)NULL);
1455 #endif
1456 }
1457 read_history (history_filename);
1458 }
1459
1460 static void
1461 show_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
1467 static void
1468 show_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, _("\
1472 Editing of command lines as they are typed is %s.\n"),
1473 value);
1474 }
1475
1476 static void
1477 show_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
1483 static void
1484 show_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, _("\
1488 Notification of completion for asynchronous execution commands is %s.\n"),
1489 value);
1490 }
1491 static void
1492 init_main (void)
1493 {
1494 struct cmd_list_element *c;
1495
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);
1513
1514 /* Set the important stuff up for command editing. */
1515 command_editing_p = 1;
1516 history_expansion_p = 0;
1517 write_history_p = 0;
1518
1519 /* Setup important stuff for command line editing. */
1520 rl_completion_entry_function = readline_line_completion_function;
1521 rl_completer_word_break_characters = default_word_break_characters ();
1522 rl_completer_quote_characters = get_gdb_completer_quote_characters ();
1523 rl_readline_name = "gdb";
1524 rl_terminal_name = getenv ("TERM");
1525
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
1530 add_setshow_string_cmd ("prompt", class_support,
1531 &new_async_prompt, _("\
1532 Set gdb's prompt"), _("\
1533 Show gdb's prompt"), NULL,
1534 set_async_prompt,
1535 show_new_async_prompt,
1536 &setlist, &showlist);
1537
1538 add_com ("dont-repeat", class_support, dont_repeat_command, _("\
1539 Don't repeat this command.\n\
1540 Primarily used inside of user-defined commands that should not be repeated when\n\
1541 hitting return."));
1542
1543 add_setshow_boolean_cmd ("editing", class_support,
1544 &async_command_editing_p, _("\
1545 Set editing of command lines as they are typed."), _("\
1546 Show editing of command lines as they are typed."), _("\
1547 Use \"on\" to enable the editing, and \"off\" to disable it.\n\
1548 Without an argument, command line editing is enabled. To edit, use\n\
1549 EMACS-like or VI-like commands like control-P or ESC."),
1550 set_async_editing_command,
1551 show_async_command_editing_p,
1552 &setlist, &showlist);
1553
1554 add_setshow_boolean_cmd ("save", no_class, &write_history_p, _("\
1555 Set saving of the history record on exit."), _("\
1556 Show saving of the history record on exit."), _("\
1557 Use \"on\" to enable the saving, and \"off\" to disable it.\n\
1558 Without an argument, saving is enabled."),
1559 NULL,
1560 show_write_history_p,
1561 &sethistlist, &showhistlist);
1562
1563 add_setshow_integer_cmd ("size", no_class, &history_size, _("\
1564 Set the size of the command history,"), _("\
1565 Show the size of the command history,"), _("\
1566 ie. the number of previous commands to keep a record of."),
1567 set_history_size_command,
1568 show_history_size,
1569 &sethistlist, &showhistlist);
1570
1571 add_setshow_filename_cmd ("filename", no_class, &history_filename, _("\
1572 Set the filename in which to record the command history"), _("\
1573 Show the filename in which to record the command history"), _("\
1574 (the list of previous commands of which a record is kept)."),
1575 NULL,
1576 show_history_filename,
1577 &sethistlist, &showhistlist);
1578
1579 add_setshow_boolean_cmd ("confirm", class_support, &caution, _("\
1580 Set whether to confirm potentially dangerous operations."), _("\
1581 Show whether to confirm potentially dangerous operations."), NULL,
1582 NULL,
1583 show_caution,
1584 &setlist, &showlist);
1585
1586 add_setshow_zinteger_cmd ("annotate", class_obscure, &annotation_level, _("\
1587 Set annotation_level."), _("\
1588 Show annotation_level."), _("\
1589 0 == normal; 1 == fullname (for use when running under emacs)\n\
1590 2 == output annotated suitably for use by programs that control GDB."),
1591 set_async_annotation_level,
1592 show_annotation_level,
1593 &setlist, &showlist);
1594
1595 add_setshow_boolean_cmd ("exec-done-display", class_support,
1596 &exec_done_display_p, _("\
1597 Set notification of completion for asynchronous execution commands."), _("\
1598 Show notification of completion for asynchronous execution commands."), _("\
1599 Use \"on\" to enable the notification, and \"off\" to disable it."),
1600 NULL,
1601 show_exec_done_display_p,
1602 &setlist, &showlist);
1603 }
1604
1605 void
1606 gdb_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
1630 initialize_stdin_serial ();
1631
1632 async_init_signals ();
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
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);
1645 }
This page took 0.143361 seconds and 4 git commands to generate.