OSDN Git Service

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