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
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 <signal.h>
34 #include "target.h"
35 #include "breakpoint.h"
36 #include "gdbtypes.h"
37 #include "expression.h"
38 #include "value.h"
39 #include "language.h"
40 #include "terminal.h"		/* For job_control.  */
41 #include "annotate.h"
42 #include "completer.h"
43 #include "top.h"
44 #include "version.h"
45 #include "serial.h"
46 #include "doublest.h"
47 #include "gdb_assert.h"
48 
49 /* readline include files */
50 #include "readline/readline.h"
51 
52 /* readline defines this.  */
53 #undef savestring
54 
55 #include <sys/types.h>
56 
57 #include <setjmp.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 (*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 (*ui_loop_hook) (int);
202 
203 /* Called instead of command_loop at top level.  Can be invoked via
204    throw_exception().  */
205 
206 void (*command_loop_hook) (void);
207 
208 
209 /* Called from print_frame_info to list the line we stopped in.  */
210 
211 void (*print_frame_info_listing_hook) (struct symtab * s, int line,
212 				       int stopline, int noerror);
213 /* Replaces most of query.  */
214 
215 int (*query_hook) (const char *, va_list);
216 
217 /* Replaces most of warning.  */
218 
219 void (*warning_hook) (const char *, va_list);
220 
221 /* These three functions support getting lines of text from the user.  They
222    are used in sequence.  First readline_begin_hook is called with a text
223    string that might be (for example) a message for the user to type in a
224    sequence of commands to be executed at a breakpoint.  If this function
225    calls back to a GUI, it might take this opportunity to pop up a text
226    interaction window with this message.  Next, readline_hook is called
227    with a prompt that is emitted prior to collecting the user input.
228    It can be called multiple times.  Finally, readline_end_hook is called
229    to notify the GUI that we are done with the interaction window and it
230    can close it. */
231 
232 void (*readline_begin_hook) (char *, ...);
233 char *(*readline_hook) (char *);
234 void (*readline_end_hook) (void);
235 
236 /* Called as appropriate to notify the interface of the specified breakpoint
237    conditions.  */
238 
239 void (*create_breakpoint_hook) (struct breakpoint * bpt);
240 void (*delete_breakpoint_hook) (struct breakpoint * bpt);
241 void (*modify_breakpoint_hook) (struct breakpoint * bpt);
242 
243 /* Called as appropriate to notify the interface that we have attached
244    to or detached from an already running process. */
245 
246 void (*attach_hook) (void);
247 void (*detach_hook) (void);
248 
249 /* Called during long calculations to allow GUI to repair window damage, and to
250    check for stop buttons, etc... */
251 
252 void (*interactive_hook) (void);
253 
254 /* Called when the registers have changed, as a hint to a GUI
255    to minimize window update. */
256 
257 void (*registers_changed_hook) (void);
258 
259 /* Tell the GUI someone changed the register REGNO. -1 means
260    that the caller does not know which register changed or
261    that several registers have changed (see value_assign). */
262 void (*register_changed_hook) (int regno);
263 
264 /* Tell the GUI someone changed LEN bytes of memory at ADDR */
265 void (*memory_changed_hook) (CORE_ADDR addr, int len);
266 
267 /* Called when going to wait for the target.  Usually allows the GUI to run
268    while waiting for target events.  */
269 
270 ptid_t (*target_wait_hook) (ptid_t ptid,
271                             struct target_waitstatus * status);
272 
273 /* Used by UI as a wrapper around command execution.  May do various things
274    like enabling/disabling buttons, etc...  */
275 
276 void (*call_command_hook) (struct cmd_list_element * c, char *cmd,
277 			   int from_tty);
278 
279 /* Called after a `set' command has finished.  Is only run if the
280    `set' command succeeded.  */
281 
282 void (*set_hook) (struct cmd_list_element * c);
283 
284 /* Called when the current thread changes.  Argument is thread id.  */
285 
286 void (*context_hook) (int id);
287 
288 /* Takes control from error ().  Typically used to prevent longjmps out of the
289    middle of the GUI.  Usually used in conjunction with a catch routine.  */
290 
291 NORETURN void (*error_hook) (void) ATTR_NORETURN;
292 
293 
294 /* One should use catch_errors rather than manipulating these
295    directly.  */
296 #if defined(HAVE_SIGSETJMP)
297 #define SIGJMP_BUF		sigjmp_buf
298 #define SIGSETJMP(buf)		sigsetjmp((buf), 1)
299 #define SIGLONGJMP(buf,val)	siglongjmp((buf), (val))
300 #else
301 #define SIGJMP_BUF		jmp_buf
302 #define SIGSETJMP(buf)		setjmp(buf)
303 #define SIGLONGJMP(buf,val)	longjmp((buf), (val))
304 #endif
305 
306 /* Where to go for throw_exception().  */
307 static SIGJMP_BUF *catch_return;
308 
309 /* Return for reason REASON to the nearest containing catch_errors().  */
310 
311 NORETURN void
throw_exception(enum return_reason reason)312 throw_exception (enum return_reason reason)
313 {
314   quit_flag = 0;
315   immediate_quit = 0;
316 
317   /* Perhaps it would be cleaner to do this via the cleanup chain (not sure
318      I can think of a reason why that is vital, though).  */
319   bpstat_clear_actions (stop_bpstat);	/* Clear queued breakpoint commands */
320 
321   disable_current_display ();
322   do_cleanups (ALL_CLEANUPS);
323   if (event_loop_p && target_can_async_p () && !target_executing)
324     do_exec_cleanups (ALL_CLEANUPS);
325   if (event_loop_p && sync_execution)
326     do_exec_error_cleanups (ALL_CLEANUPS);
327 
328   if (annotation_level > 1)
329     switch (reason)
330       {
331       case RETURN_QUIT:
332 	annotate_quit ();
333 	break;
334       case RETURN_ERROR:
335 	annotate_error ();
336 	break;
337       }
338 
339   /* Jump to the containing catch_errors() call, communicating REASON
340      to that call via setjmp's return value.  Note that REASON can't
341      be zero, by definition in defs.h. */
342 
343   (NORETURN void) SIGLONGJMP (*catch_return, (int) reason);
344 }
345 
346 /* Call FUNC() with args FUNC_UIOUT and FUNC_ARGS, catching any
347    errors.  Set FUNC_CAUGHT to an ``enum return_reason'' if the
348    function is aborted (using throw_exception() or zero if the
349    function returns normally.  Set FUNC_VAL to the value returned by
350    the function or 0 if the function was aborted.
351 
352    Must not be called with immediate_quit in effect (bad things might
353    happen, say we got a signal in the middle of a memcpy to quit_return).
354    This is an OK restriction; with very few exceptions immediate_quit can
355    be replaced by judicious use of QUIT.
356 
357    MASK specifies what to catch; it is normally set to
358    RETURN_MASK_ALL, if for no other reason than that the code which
359    calls catch_errors might not be set up to deal with a quit which
360    isn't caught.  But if the code can deal with it, it generally
361    should be RETURN_MASK_ERROR, unless for some reason it is more
362    useful to abort only the portion of the operation inside the
363    catch_errors.  Note that quit should return to the command line
364    fairly quickly, even if some further processing is being done.  */
365 
366 /* MAYBE: cagney/1999-11-05: catch_errors() in conjunction with
367    error() et.al. could maintain a set of flags that indicate the the
368    current state of each of the longjmp buffers.  This would give the
369    longjmp code the chance to detect a longjmp botch (before it gets
370    to longjmperror()).  Prior to 1999-11-05 this wasn't possible as
371    code also randomly used a SET_TOP_LEVEL macro that directly
372    initialize the longjmp buffers. */
373 
374 /* MAYBE: cagney/1999-11-05: Should the catch_errors and cleanups code
375    be consolidated into a single file instead of being distributed
376    between utils.c and top.c? */
377 
378 static void
catcher(catch_exceptions_ftype * func,struct ui_out * func_uiout,void * func_args,int * func_val,enum return_reason * func_caught,char * errstring,char ** gdberrmsg,return_mask mask)379 catcher (catch_exceptions_ftype *func,
380 	 struct ui_out *func_uiout,
381 	 void *func_args,
382 	 int *func_val,
383 	 enum return_reason *func_caught,
384 	 char *errstring,
385 	 char **gdberrmsg,
386 	 return_mask mask)
387 {
388   SIGJMP_BUF *saved_catch;
389   SIGJMP_BUF catch;
390   struct cleanup *saved_cleanup_chain;
391   char *saved_error_pre_print;
392   char *saved_quit_pre_print;
393   struct ui_out *saved_uiout;
394 
395   /* Return value from SIGSETJMP(): enum return_reason if error or
396      quit caught, 0 otherwise. */
397   int caught;
398 
399   /* Return value from FUNC(): Hopefully non-zero. Explicitly set to
400      zero if an error quit was caught.  */
401   int val;
402 
403   /* Override error/quit messages during FUNC. */
404 
405   saved_error_pre_print = error_pre_print;
406   saved_quit_pre_print = quit_pre_print;
407 
408   if (mask & RETURN_MASK_ERROR)
409     error_pre_print = errstring;
410   if (mask & RETURN_MASK_QUIT)
411     quit_pre_print = errstring;
412 
413   /* Override the global ``struct ui_out'' builder.  */
414 
415   saved_uiout = uiout;
416   uiout = func_uiout;
417 
418   /* Prevent error/quit during FUNC from calling cleanups established
419      prior to here. */
420 
421   saved_cleanup_chain = save_cleanups ();
422 
423   /* Call FUNC, catching error/quit events. */
424 
425   saved_catch = catch_return;
426   catch_return = &catch;
427   caught = SIGSETJMP (catch);
428   if (!caught)
429     val = (*func) (func_uiout, func_args);
430   else
431     {
432       val = 0;
433       /* If caller wants a copy of the low-level error message, make one.
434          This is used in the case of a silent error whereby the caller
435          may optionally want to issue the message.  */
436       if (gdberrmsg)
437 	*gdberrmsg = error_last_message ();
438     }
439   catch_return = saved_catch;
440 
441   /* FIXME: cagney/1999-11-05: A correct FUNC implementation will
442      clean things up (restoring the cleanup chain) to the state they
443      were just prior to the call.  Unfortunately, many FUNC's are not
444      that well behaved.  This could be fixed by adding either a
445      do_cleanups call (to cover the problem) or an assertion check to
446      detect bad FUNCs code. */
447 
448   /* Restore the cleanup chain, the error/quit messages, and the uiout
449      builder, to their original states. */
450 
451   restore_cleanups (saved_cleanup_chain);
452 
453   uiout = saved_uiout;
454 
455   if (mask & RETURN_MASK_QUIT)
456     quit_pre_print = saved_quit_pre_print;
457   if (mask & RETURN_MASK_ERROR)
458     error_pre_print = saved_error_pre_print;
459 
460   /* Return normally if no error/quit event occurred or this catcher
461      can handle this exception.  The caller analyses the func return
462      values.  */
463 
464   if (!caught || (mask & RETURN_MASK (caught)))
465     {
466       *func_val = val;
467       *func_caught = caught;
468       return;
469     }
470 
471   /* The caller didn't request that the event be caught, relay the
472      event to the next containing catch_errors(). */
473 
474   throw_exception (caught);
475 }
476 
477 int
catch_exceptions(struct ui_out * uiout,catch_exceptions_ftype * func,void * func_args,char * errstring,return_mask mask)478 catch_exceptions (struct ui_out *uiout,
479 		  catch_exceptions_ftype *func,
480 		  void *func_args,
481 		  char *errstring,
482 		  return_mask mask)
483 {
484   int val;
485   enum return_reason caught;
486   catcher (func, uiout, func_args, &val, &caught, errstring, NULL, mask);
487   gdb_assert (val >= 0);
488   gdb_assert (caught <= 0);
489   if (caught < 0)
490     return caught;
491   return val;
492 }
493 
494 int
catch_exceptions_with_msg(struct ui_out * uiout,catch_exceptions_ftype * func,void * func_args,char * errstring,char ** gdberrmsg,return_mask mask)495 catch_exceptions_with_msg (struct ui_out *uiout,
496 		  	   catch_exceptions_ftype *func,
497 		  	   void *func_args,
498 		  	   char *errstring,
499 			   char **gdberrmsg,
500 		  	   return_mask mask)
501 {
502   int val;
503   enum return_reason caught;
504   catcher (func, uiout, func_args, &val, &caught, errstring, gdberrmsg, mask);
505   gdb_assert (val >= 0);
506   gdb_assert (caught <= 0);
507   if (caught < 0)
508     return caught;
509   return val;
510 }
511 
512 struct catch_errors_args
513 {
514   catch_errors_ftype *func;
515   void *func_args;
516 };
517 
518 static int
do_catch_errors(struct ui_out * uiout,void * data)519 do_catch_errors (struct ui_out *uiout, void *data)
520 {
521   struct catch_errors_args *args = data;
522   return args->func (args->func_args);
523 }
524 
525 int
catch_errors(catch_errors_ftype * func,void * func_args,char * errstring,return_mask mask)526 catch_errors (catch_errors_ftype *func, void *func_args, char *errstring,
527 	      return_mask mask)
528 {
529   int val;
530   enum return_reason caught;
531   struct catch_errors_args args;
532   args.func = func;
533   args.func_args = func_args;
534   catcher (do_catch_errors, uiout, &args, &val, &caught, errstring,
535 	   NULL, mask);
536   if (caught != 0)
537     return 0;
538   return val;
539 }
540 
541 struct captured_command_args
542   {
543     catch_command_errors_ftype *command;
544     char *arg;
545     int from_tty;
546   };
547 
548 static int
do_captured_command(void * data)549 do_captured_command (void *data)
550 {
551   struct captured_command_args *context = data;
552   context->command (context->arg, context->from_tty);
553   /* FIXME: cagney/1999-11-07: Technically this do_cleanups() call
554      isn't needed.  Instead an assertion check could be made that
555      simply confirmed that the called function correctly cleaned up
556      after itself.  Unfortunately, old code (prior to 1999-11-04) in
557      main.c was calling SET_TOP_LEVEL(), calling the command function,
558      and then *always* calling do_cleanups().  For the moment we
559      remain ``bug compatible'' with that old code..  */
560   do_cleanups (ALL_CLEANUPS);
561   return 1;
562 }
563 
564 int
catch_command_errors(catch_command_errors_ftype * command,char * arg,int from_tty,return_mask mask)565 catch_command_errors (catch_command_errors_ftype * command,
566 		      char *arg, int from_tty, return_mask mask)
567 {
568   struct captured_command_args args;
569   args.command = command;
570   args.arg = arg;
571   args.from_tty = from_tty;
572   return catch_errors (do_captured_command, &args, "", mask);
573 }
574 
575 
576 /* Handler for SIGHUP.  */
577 
578 #ifdef SIGHUP
579 /* Just a little helper function for disconnect().  */
580 
581 /* NOTE 1999-04-29: This function will be static again, once we modify
582    gdb to use the event loop as the default command loop and we merge
583    event-top.c into this file, top.c */
584 /* static */ int
quit_cover(void * s)585 quit_cover (void *s)
586 {
587   caution = 0;			/* Throw caution to the wind -- we're exiting.
588 				   This prevents asking the user dumb questions.  */
589   quit_command ((char *) 0, 0);
590   return 0;
591 }
592 
593 static void
disconnect(int signo)594 disconnect (int signo)
595 {
596   catch_errors (quit_cover, NULL,
597 	      "Could not kill the program being debugged", RETURN_MASK_ALL);
598   signal (SIGHUP, SIG_DFL);
599   kill (getpid (), SIGHUP);
600 }
601 #endif /* defined SIGHUP */
602 
603 /* Line number we are currently in in a file which is being sourced.  */
604 /* NOTE 1999-04-29: This variable will be static again, once we modify
605    gdb to use the event loop as the default command loop and we merge
606    event-top.c into this file, top.c */
607 /* static */ int source_line_number;
608 
609 /* Name of the file we are sourcing.  */
610 /* NOTE 1999-04-29: This variable will be static again, once we modify
611    gdb to use the event loop as the default command loop and we merge
612    event-top.c into this file, top.c */
613 /* static */ char *source_file_name;
614 
615 /* Buffer containing the error_pre_print used by the source stuff.
616    Malloc'd.  */
617 /* NOTE 1999-04-29: This variable will be static again, once we modify
618    gdb to use the event loop as the default command loop and we merge
619    event-top.c into this file, top.c */
620 /* static */ char *source_error;
621 static int source_error_allocated;
622 
623 /* Something to glom on to the start of error_pre_print if source_file_name
624    is set.  */
625 /* NOTE 1999-04-29: This variable will be static again, once we modify
626    gdb to use the event loop as the default command loop and we merge
627    event-top.c into this file, top.c */
628 /* static */ char *source_pre_error;
629 
630 /* Clean up on error during a "source" command (or execution of a
631    user-defined command).  */
632 
633 void
do_restore_instream_cleanup(void * stream)634 do_restore_instream_cleanup (void *stream)
635 {
636   /* Restore the previous input stream.  */
637   instream = stream;
638 }
639 
640 /* Read commands from STREAM.  */
641 void
read_command_file(FILE * stream)642 read_command_file (FILE *stream)
643 {
644   struct cleanup *cleanups;
645 
646   cleanups = make_cleanup (do_restore_instream_cleanup, instream);
647   instream = stream;
648   command_loop ();
649   do_cleanups (cleanups);
650 }
651 
652 void (*pre_init_ui_hook) (void);
653 
654 #ifdef __MSDOS__
655 void
do_chdir_cleanup(void * old_dir)656 do_chdir_cleanup (void *old_dir)
657 {
658   chdir (old_dir);
659   xfree (old_dir);
660 }
661 #endif
662 
663 /* Execute the line P as a command.
664    Pass FROM_TTY as second argument to the defining function.  */
665 
666 void
execute_command(char * p,int from_tty)667 execute_command (char *p, int from_tty)
668 {
669   struct cmd_list_element *c;
670   enum language flang;
671   static int warned = 0;
672   char *line;
673 
674   free_all_values ();
675 
676   /* Force cleanup of any alloca areas if using C alloca instead of
677      a builtin alloca.  */
678   alloca (0);
679 
680   /* This can happen when command_line_input hits end of file.  */
681   if (p == NULL)
682     return;
683 
684   serial_log_command (p);
685 
686   while (*p == ' ' || *p == '\t')
687     p++;
688   if (*p)
689     {
690       char *arg;
691       line = p;
692 
693       c = lookup_cmd (&p, cmdlist, "", 0, 1);
694 
695       /* If the target is running, we allow only a limited set of
696          commands. */
697       if (event_loop_p && target_can_async_p () && target_executing)
698 	if (strcmp (c->name, "help") != 0
699 	    && strcmp (c->name, "pwd") != 0
700 	    && strcmp (c->name, "show") != 0
701 	    && strcmp (c->name, "stop") != 0)
702 	  error ("Cannot execute this command while the target is running.");
703 
704       /* Pass null arg rather than an empty one.  */
705       arg = *p ? p : 0;
706 
707       /* FIXME: cagney/2002-02-02: The c->type test is pretty dodgy
708          while the is_complete_command(cfunc) test is just plain
709          bogus.  They should both be replaced by a test of the form
710          c->strip_trailing_white_space_p.  */
711       /* NOTE: cagney/2002-02-02: The function.cfunc in the below
712          can't be replaced with func.  This is because it is the
713          cfunc, and not the func, that has the value that the
714          is_complete_command hack is testing for.  */
715       /* Clear off trailing whitespace, except for set and complete
716          command.  */
717       if (arg
718 	  && c->type != set_cmd
719 	  && !is_complete_command (c))
720 	{
721 	  p = arg + strlen (arg) - 1;
722 	  while (p >= arg && (*p == ' ' || *p == '\t'))
723 	    p--;
724 	  *(p + 1) = '\0';
725 	}
726 
727       /* If this command has been pre-hooked, run the hook first. */
728       execute_cmd_pre_hook (c);
729 
730       if (c->flags & DEPRECATED_WARN_USER)
731 	deprecated_cmd_warning (&line);
732 
733       if (c->class == class_user)
734 	execute_user_command (c, arg);
735       else if (c->type == set_cmd || c->type == show_cmd)
736 	do_setshow_command (arg, from_tty & caution, c);
737       else if (!cmd_func_p (c))
738 	error ("That is not a command, just a help topic.");
739       else if (call_command_hook)
740 	call_command_hook (c, arg, from_tty & caution);
741       else
742 	cmd_func (c, arg, from_tty & caution);
743 
744       /* If this command has been post-hooked, run the hook last. */
745       execute_cmd_post_hook (c);
746 
747     }
748 
749   /* Tell the user if the language has changed (except first time).  */
750   if (current_language != expected_language)
751     {
752       if (language_mode == language_mode_auto)
753 	{
754 	  language_info (1);	/* Print what changed.  */
755 	}
756       warned = 0;
757     }
758 
759   /* Warn the user if the working language does not match the
760      language of the current frame.  Only warn the user if we are
761      actually running the program, i.e. there is a stack. */
762   /* FIXME:  This should be cacheing the frame and only running when
763      the frame changes.  */
764 
765   if (target_has_stack)
766     {
767       flang = get_frame_language ();
768       if (!warned
769 	  && flang != language_unknown
770 	  && flang != current_language->la_language)
771 	{
772 	  printf_filtered ("%s\n", lang_frame_mismatch_warn);
773 	  warned = 1;
774 	}
775     }
776 }
777 
778 /* Read commands from `instream' and execute them
779    until end of file or error reading instream.  */
780 
781 void
command_loop(void)782 command_loop (void)
783 {
784   struct cleanup *old_chain;
785   char *command;
786   int stdin_is_tty = ISATTY (stdin);
787   long time_at_cmd_start;
788 #ifdef HAVE_SBRK
789   long space_at_cmd_start = 0;
790 #endif
791   extern int display_time;
792   extern int display_space;
793 
794   while (instream && !feof (instream))
795     {
796       if (window_hook && instream == stdin)
797 	(*window_hook) (instream, get_prompt ());
798 
799       quit_flag = 0;
800       if (instream == stdin && stdin_is_tty)
801 	reinitialize_more_filter ();
802       old_chain = make_cleanup (null_cleanup, 0);
803 
804       /* Get a command-line. This calls the readline package. */
805       command = command_line_input (instream == stdin ?
806 				    get_prompt () : (char *) NULL,
807 				    instream == stdin, "prompt");
808       if (command == 0)
809 	return;
810 
811       time_at_cmd_start = get_run_time ();
812 
813       if (display_space)
814 	{
815 #ifdef HAVE_SBRK
816 	  char *lim = (char *) sbrk (0);
817 	  space_at_cmd_start = lim - lim_at_start;
818 #endif
819 	}
820 
821       execute_command (command, instream == stdin);
822       /* Do any commands attached to breakpoint we stopped at.  */
823       bpstat_do_actions (&stop_bpstat);
824       do_cleanups (old_chain);
825 
826       if (display_time)
827 	{
828 	  long cmd_time = get_run_time () - time_at_cmd_start;
829 
830 	  printf_unfiltered ("Command execution time: %ld.%06ld\n",
831 			     cmd_time / 1000000, cmd_time % 1000000);
832 	}
833 
834       if (display_space)
835 	{
836 #ifdef HAVE_SBRK
837 	  char *lim = (char *) sbrk (0);
838 	  long space_now = lim - lim_at_start;
839 	  long space_diff = space_now - space_at_cmd_start;
840 
841 	  printf_unfiltered ("Space used: %ld (%c%ld for this command)\n",
842 			     space_now,
843 			     (space_diff >= 0 ? '+' : '-'),
844 			     space_diff);
845 #endif
846 	}
847     }
848 }
849 
850 /* Read commands from `instream' and execute them until end of file or
851    error reading instream. This command loop doesnt care about any
852    such things as displaying time and space usage. If the user asks
853    for those, they won't work. */
854 void
simplified_command_loop(char * (* read_input_func)(char *),void (* execute_command_func)(char *,int))855 simplified_command_loop (char *(*read_input_func) (char *),
856 			 void (*execute_command_func) (char *, int))
857 {
858   struct cleanup *old_chain;
859   char *command;
860   int stdin_is_tty = ISATTY (stdin);
861 
862   while (instream && !feof (instream))
863     {
864       quit_flag = 0;
865       if (instream == stdin && stdin_is_tty)
866 	reinitialize_more_filter ();
867       old_chain = make_cleanup (null_cleanup, 0);
868 
869       /* Get a command-line. */
870       command = (*read_input_func) (instream == stdin ?
871 				    get_prompt () : (char *) NULL);
872 
873       if (command == 0)
874 	return;
875 
876       (*execute_command_func) (command, instream == stdin);
877 
878       /* Do any commands attached to breakpoint we stopped at.  */
879       bpstat_do_actions (&stop_bpstat);
880 
881       do_cleanups (old_chain);
882     }
883 }
884 
885 /* Commands call this if they do not want to be repeated by null lines.  */
886 
887 void
dont_repeat(void)888 dont_repeat (void)
889 {
890   if (server_command)
891     return;
892 
893   /* If we aren't reading from standard input, we are saving the last
894      thing read from stdin in line and don't want to delete it.  Null lines
895      won't repeat here in any case.  */
896   if (instream == stdin)
897     *line = 0;
898 }
899 
900 /* Read a line from the stream "instream" without command line editing.
901 
902    It prints PROMPT_ARG once at the start.
903    Action is compatible with "readline", e.g. space for the result is
904    malloc'd and should be freed by the caller.
905 
906    A NULL return means end of file.  */
907 char *
gdb_readline(char * prompt_arg)908 gdb_readline (char *prompt_arg)
909 {
910   int c;
911   char *result;
912   int input_index = 0;
913   int result_size = 80;
914 
915   if (prompt_arg)
916     {
917       /* Don't use a _filtered function here.  It causes the assumed
918          character position to be off, since the newline we read from
919          the user is not accounted for.  */
920       fputs_unfiltered (prompt_arg, gdb_stdout);
921       gdb_flush (gdb_stdout);
922     }
923 
924   result = (char *) xmalloc (result_size);
925 
926   while (1)
927     {
928       /* Read from stdin if we are executing a user defined command.
929          This is the right thing for prompt_for_continue, at least.  */
930       c = fgetc (instream ? instream : stdin);
931 
932       if (c == EOF)
933 	{
934 	  if (input_index > 0)
935 	    /* The last line does not end with a newline.  Return it, and
936 	       if we are called again fgetc will still return EOF and
937 	       we'll return NULL then.  */
938 	    break;
939 	  xfree (result);
940 	  return NULL;
941 	}
942 
943       if (c == '\n')
944 #ifndef CRLF_SOURCE_FILES
945 	break;
946 #else
947 	{
948 	  if (input_index > 0 && result[input_index - 1] == '\r')
949 	    input_index--;
950 	  break;
951 	}
952 #endif
953 
954       result[input_index++] = c;
955       while (input_index >= result_size)
956 	{
957 	  result_size *= 2;
958 	  result = (char *) xrealloc (result, result_size);
959 	}
960     }
961 
962   result[input_index++] = '\0';
963   return result;
964 }
965 
966 /* Variables which control command line editing and history
967    substitution.  These variables are given default values at the end
968    of this file.  */
969 static int command_editing_p;
970 /* NOTE 1999-04-29: This variable will be static again, once we modify
971    gdb to use the event loop as the default command loop and we merge
972    event-top.c into this file, top.c */
973 /* static */ int history_expansion_p;
974 static int write_history_p;
975 static int history_size;
976 static char *history_filename;
977 
978 /* This is like readline(), but it has some gdb-specific behavior.
979    gdb can use readline in both the synchronous and async modes during
980    a single gdb invocation.  At the ordinary top-level prompt we might
981    be using the async readline.  That means we can't use
982    rl_pre_input_hook, since it doesn't work properly in async mode.
983    However, for a secondary prompt (" >", such as occurs during a
984    `define'), gdb just calls readline() directly, running it in
985    synchronous mode.  So for operate-and-get-next to work in this
986    situation, we have to switch the hooks around.  That is what
987    gdb_readline_wrapper is for.  */
988 char *
gdb_readline_wrapper(char * prompt)989 gdb_readline_wrapper (char *prompt)
990 {
991   /* Set the hook that works in this case.  */
992   if (event_loop_p && after_char_processing_hook)
993     {
994       rl_pre_input_hook = (Function *) after_char_processing_hook;
995       after_char_processing_hook = NULL;
996     }
997 
998   return readline (prompt);
999 }
1000 
1001 
1002 #ifdef STOP_SIGNAL
1003 static void
stop_sig(int signo)1004 stop_sig (int signo)
1005 {
1006 #if STOP_SIGNAL == SIGTSTP
1007   signal (SIGTSTP, SIG_DFL);
1008 #if HAVE_SIGPROCMASK
1009   {
1010     sigset_t zero;
1011 
1012     sigemptyset (&zero);
1013     sigprocmask (SIG_SETMASK, &zero, 0);
1014   }
1015 #elif HAVE_SIGSETMASK
1016   sigsetmask (0);
1017 #endif
1018   kill (getpid (), SIGTSTP);
1019   signal (SIGTSTP, stop_sig);
1020 #else
1021   signal (STOP_SIGNAL, stop_sig);
1022 #endif
1023   printf_unfiltered ("%s", get_prompt ());
1024   gdb_flush (gdb_stdout);
1025 
1026   /* Forget about any previous command -- null line now will do nothing.  */
1027   dont_repeat ();
1028 }
1029 #endif /* STOP_SIGNAL */
1030 
1031 /* Initialize signal handlers. */
1032 static void
float_handler(int signo)1033 float_handler (int signo)
1034 {
1035   /* This message is based on ANSI C, section 4.7.  Note that integer
1036      divide by zero causes this, so "float" is a misnomer.  */
1037   signal (SIGFPE, float_handler);
1038   error ("Erroneous arithmetic operation.");
1039 }
1040 
1041 static void
do_nothing(int signo)1042 do_nothing (int signo)
1043 {
1044   /* Under System V the default disposition of a signal is reinstated after
1045      the signal is caught and delivered to an application process.  On such
1046      systems one must restore the replacement signal handler if one wishes
1047      to continue handling the signal in one's program.  On BSD systems this
1048      is not needed but it is harmless, and it simplifies the code to just do
1049      it unconditionally. */
1050   signal (signo, do_nothing);
1051 }
1052 
1053 static void
init_signals(void)1054 init_signals (void)
1055 {
1056   signal (SIGINT, request_quit);
1057 
1058   /* If SIGTRAP was set to SIG_IGN, then the SIG_IGN will get passed
1059      to the inferior and breakpoints will be ignored.  */
1060 #ifdef SIGTRAP
1061   signal (SIGTRAP, SIG_DFL);
1062 #endif
1063 
1064   /* If we initialize SIGQUIT to SIG_IGN, then the SIG_IGN will get
1065      passed to the inferior, which we don't want.  It would be
1066      possible to do a "signal (SIGQUIT, SIG_DFL)" after we fork, but
1067      on BSD4.3 systems using vfork, that can affect the
1068      GDB process as well as the inferior (the signal handling tables
1069      might be in memory, shared between the two).  Since we establish
1070      a handler for SIGQUIT, when we call exec it will set the signal
1071      to SIG_DFL for us.  */
1072   signal (SIGQUIT, do_nothing);
1073 #ifdef SIGHUP
1074   if (signal (SIGHUP, do_nothing) != SIG_IGN)
1075     signal (SIGHUP, disconnect);
1076 #endif
1077   signal (SIGFPE, float_handler);
1078 
1079 #if defined(SIGWINCH) && defined(SIGWINCH_HANDLER)
1080   signal (SIGWINCH, SIGWINCH_HANDLER);
1081 #endif
1082 }
1083 
1084 /* The current saved history number from operate-and-get-next.
1085    This is -1 if not valid.  */
1086 static int operate_saved_history = -1;
1087 
1088 /* This is put on the appropriate hook and helps operate-and-get-next
1089    do its work.  */
1090 static void
gdb_rl_operate_and_get_next_completion(void)1091 gdb_rl_operate_and_get_next_completion (void)
1092 {
1093   int delta = where_history () - operate_saved_history;
1094   /* The `key' argument to rl_get_previous_history is ignored.  */
1095   rl_get_previous_history (delta, 0);
1096   operate_saved_history = -1;
1097 
1098   /* readline doesn't automatically update the display for us.  */
1099   rl_redisplay ();
1100 
1101   after_char_processing_hook = NULL;
1102   rl_pre_input_hook = NULL;
1103 }
1104 
1105 /* This is a gdb-local readline command handler.  It accepts the
1106    current command line (like RET does) and, if this command was taken
1107    from the history, arranges for the next command in the history to
1108    appear on the command line when the prompt returns.
1109    We ignore the arguments.  */
1110 static int
gdb_rl_operate_and_get_next(int count,int key)1111 gdb_rl_operate_and_get_next (int count, int key)
1112 {
1113   int where;
1114 
1115   if (event_loop_p)
1116     {
1117       /* Use the async hook.  */
1118       after_char_processing_hook = gdb_rl_operate_and_get_next_completion;
1119     }
1120   else
1121     {
1122       /* This hook only works correctly when we are using the
1123 	 synchronous readline.  */
1124       rl_pre_input_hook = (Function *) gdb_rl_operate_and_get_next_completion;
1125     }
1126 
1127   /* Find the current line, and find the next line to use.  */
1128   where = where_history();
1129 
1130   /* FIXME: kettenis/20020817: max_input_history is renamed into
1131      history_max_entries in readline-4.2.  When we do a new readline
1132      import, we should probably change it here too, even though
1133      readline maintains backwards compatibility for now by still
1134      defining max_input_history.  */
1135   if ((history_is_stifled () && (history_length >= max_input_history)) ||
1136       (where >= history_length - 1))
1137     operate_saved_history = where;
1138   else
1139     operate_saved_history = where + 1;
1140 
1141   return rl_newline (1, key);
1142 }
1143 
1144 /* Read one line from the command input stream `instream'
1145    into the local static buffer `linebuffer' (whose current length
1146    is `linelength').
1147    The buffer is made bigger as necessary.
1148    Returns the address of the start of the line.
1149 
1150    NULL is returned for end of file.
1151 
1152    *If* the instream == stdin & stdin is a terminal, the line read
1153    is copied into the file line saver (global var char *line,
1154    length linesize) so that it can be duplicated.
1155 
1156    This routine either uses fancy command line editing or
1157    simple input as the user has requested.  */
1158 
1159 char *
command_line_input(char * prompt_arg,int repeat,char * annotation_suffix)1160 command_line_input (char *prompt_arg, int repeat, char *annotation_suffix)
1161 {
1162   static char *linebuffer = 0;
1163   static unsigned linelength = 0;
1164   char *p;
1165   char *p1;
1166   char *rl;
1167   char *local_prompt = prompt_arg;
1168   char *nline;
1169   char got_eof = 0;
1170 
1171   /* The annotation suffix must be non-NULL.  */
1172   if (annotation_suffix == NULL)
1173     annotation_suffix = "";
1174 
1175   if (annotation_level > 1 && instream == stdin)
1176     {
1177       local_prompt = alloca ((prompt_arg == NULL ? 0 : strlen (prompt_arg))
1178 			     + strlen (annotation_suffix) + 40);
1179       if (prompt_arg == NULL)
1180 	local_prompt[0] = '\0';
1181       else
1182 	strcpy (local_prompt, prompt_arg);
1183       strcat (local_prompt, "\n\032\032");
1184       strcat (local_prompt, annotation_suffix);
1185       strcat (local_prompt, "\n");
1186     }
1187 
1188   if (linebuffer == 0)
1189     {
1190       linelength = 80;
1191       linebuffer = (char *) xmalloc (linelength);
1192     }
1193 
1194   p = linebuffer;
1195 
1196   /* Control-C quits instantly if typed while in this loop
1197      since it should not wait until the user types a newline.  */
1198   immediate_quit++;
1199 #ifdef STOP_SIGNAL
1200   if (job_control)
1201     {
1202       if (event_loop_p)
1203 	signal (STOP_SIGNAL, handle_stop_sig);
1204       else
1205 	signal (STOP_SIGNAL, stop_sig);
1206     }
1207 #endif
1208 
1209   while (1)
1210     {
1211       /* Make sure that all output has been output.  Some machines may let
1212          you get away with leaving out some of the gdb_flush, but not all.  */
1213       wrap_here ("");
1214       gdb_flush (gdb_stdout);
1215       gdb_flush (gdb_stderr);
1216 
1217       if (source_file_name != NULL)
1218 	{
1219 	  ++source_line_number;
1220 	  sprintf (source_error,
1221 		   "%s%s:%d: Error in sourced command file:\n",
1222 		   source_pre_error,
1223 		   source_file_name,
1224 		   source_line_number);
1225 	  error_pre_print = source_error;
1226 	}
1227 
1228       if (annotation_level > 1 && instream == stdin)
1229 	{
1230 	  puts_unfiltered ("\n\032\032pre-");
1231 	  puts_unfiltered (annotation_suffix);
1232 	  puts_unfiltered ("\n");
1233 	}
1234 
1235       /* Don't use fancy stuff if not talking to stdin.  */
1236       if (readline_hook && instream == NULL)
1237 	{
1238 	  rl = (*readline_hook) (local_prompt);
1239 	}
1240       else if (command_editing_p && instream == stdin && ISATTY (instream))
1241 	{
1242 	  rl = gdb_readline_wrapper (local_prompt);
1243 	}
1244       else
1245 	{
1246 	  rl = gdb_readline (local_prompt);
1247 	}
1248 
1249       if (annotation_level > 1 && instream == stdin)
1250 	{
1251 	  puts_unfiltered ("\n\032\032post-");
1252 	  puts_unfiltered (annotation_suffix);
1253 	  puts_unfiltered ("\n");
1254 	}
1255 
1256       if (!rl || rl == (char *) EOF)
1257 	{
1258 	  got_eof = 1;
1259 	  break;
1260 	}
1261       if (strlen (rl) + 1 + (p - linebuffer) > linelength)
1262 	{
1263 	  linelength = strlen (rl) + 1 + (p - linebuffer);
1264 	  nline = (char *) xrealloc (linebuffer, linelength);
1265 	  p += nline - linebuffer;
1266 	  linebuffer = nline;
1267 	}
1268       p1 = rl;
1269       /* Copy line.  Don't copy null at end.  (Leaves line alone
1270          if this was just a newline)  */
1271       while (*p1)
1272 	*p++ = *p1++;
1273 
1274       xfree (rl);		/* Allocated in readline.  */
1275 
1276       if (p == linebuffer || *(p - 1) != '\\')
1277 	break;
1278 
1279       p--;			/* Put on top of '\'.  */
1280       local_prompt = (char *) 0;
1281     }
1282 
1283 #ifdef STOP_SIGNAL
1284   if (job_control)
1285     signal (STOP_SIGNAL, SIG_DFL);
1286 #endif
1287   immediate_quit--;
1288 
1289   if (got_eof)
1290     return NULL;
1291 
1292 #define SERVER_COMMAND_LENGTH 7
1293   server_command =
1294     (p - linebuffer > SERVER_COMMAND_LENGTH)
1295     && strncmp (linebuffer, "server ", SERVER_COMMAND_LENGTH) == 0;
1296   if (server_command)
1297     {
1298       /* Note that we don't set `line'.  Between this and the check in
1299          dont_repeat, this insures that repeating will still do the
1300          right thing.  */
1301       *p = '\0';
1302       return linebuffer + SERVER_COMMAND_LENGTH;
1303     }
1304 
1305   /* Do history expansion if that is wished.  */
1306   if (history_expansion_p && instream == stdin
1307       && ISATTY (instream))
1308     {
1309       char *history_value;
1310       int expanded;
1311 
1312       *p = '\0';		/* Insert null now.  */
1313       expanded = history_expand (linebuffer, &history_value);
1314       if (expanded)
1315 	{
1316 	  /* Print the changes.  */
1317 	  printf_unfiltered ("%s\n", history_value);
1318 
1319 	  /* If there was an error, call this function again.  */
1320 	  if (expanded < 0)
1321 	    {
1322 	      xfree (history_value);
1323 	      return command_line_input (prompt_arg, repeat, annotation_suffix);
1324 	    }
1325 	  if (strlen (history_value) > linelength)
1326 	    {
1327 	      linelength = strlen (history_value) + 1;
1328 	      linebuffer = (char *) xrealloc (linebuffer, linelength);
1329 	    }
1330 	  strcpy (linebuffer, history_value);
1331 	  p = linebuffer + strlen (linebuffer);
1332 	  xfree (history_value);
1333 	}
1334     }
1335 
1336   /* If we just got an empty line, and that is supposed
1337      to repeat the previous command, return the value in the
1338      global buffer.  */
1339   if (repeat && p == linebuffer)
1340     return line;
1341   for (p1 = linebuffer; *p1 == ' ' || *p1 == '\t'; p1++);
1342   if (repeat && !*p1)
1343     return line;
1344 
1345   *p = 0;
1346 
1347   /* Add line to history if appropriate.  */
1348   if (instream == stdin
1349       && ISATTY (stdin) && *linebuffer)
1350     add_history (linebuffer);
1351 
1352   /* Note: lines consisting solely of comments are added to the command
1353      history.  This is useful when you type a command, and then
1354      realize you don't want to execute it quite yet.  You can comment
1355      out the command and then later fetch it from the value history
1356      and remove the '#'.  The kill ring is probably better, but some
1357      people are in the habit of commenting things out.  */
1358   if (*p1 == '#')
1359     *p1 = '\0';			/* Found a comment. */
1360 
1361   /* Save into global buffer if appropriate.  */
1362   if (repeat)
1363     {
1364       if (linelength > linesize)
1365 	{
1366 	  line = xrealloc (line, linelength);
1367 	  linesize = linelength;
1368 	}
1369       strcpy (line, linebuffer);
1370       return line;
1371     }
1372 
1373   return linebuffer;
1374 }
1375 
1376 /* Print the GDB banner. */
1377 void
print_gdb_version(struct ui_file * stream)1378 print_gdb_version (struct ui_file *stream)
1379 {
1380   /* From GNU coding standards, first line is meant to be easy for a
1381      program to parse, and is just canonical program name and version
1382      number, which starts after last space. */
1383 
1384   fprintf_filtered (stream, "GNU gdb %s\n", version);
1385 
1386   /* Second line is a copyright notice. */
1387 
1388   fprintf_filtered (stream, "Copyright 2004 Free Software Foundation, Inc.\n");
1389 
1390   /* Following the copyright is a brief statement that the program is
1391      free software, that users are free to copy and change it on
1392      certain conditions, that it is covered by the GNU GPL, and that
1393      there is no warranty. */
1394 
1395   fprintf_filtered (stream, "\
1396 GDB is free software, covered by the GNU General Public License, and you are\n\
1397 welcome to change it and/or distribute copies of it under certain conditions.\n\
1398 Type \"show copying\" to see the conditions.\n\
1399 There is absolutely no warranty for GDB.  Type \"show warranty\" for details.\n");
1400 
1401   /* After the required info we print the configuration information. */
1402 
1403   fprintf_filtered (stream, "This GDB was configured as \"");
1404   if (strcmp (host_name, target_name) != 0)
1405     {
1406       fprintf_filtered (stream, "--host=%s --target=%s", host_name, target_name);
1407     }
1408   else
1409     {
1410       fprintf_filtered (stream, "%s", host_name);
1411     }
1412   fprintf_filtered (stream, "\".");
1413 }
1414 
1415 /* get_prompt: access method for the GDB prompt string.  */
1416 
1417 char *
get_prompt(void)1418 get_prompt (void)
1419 {
1420   if (event_loop_p)
1421     return PROMPT (0);
1422   else
1423     return gdb_prompt_string;
1424 }
1425 
1426 void
set_prompt(char * s)1427 set_prompt (char *s)
1428 {
1429 /* ??rehrauer: I don't know why this fails, since it looks as though
1430    assignments to prompt are wrapped in calls to savestring...
1431    if (prompt != NULL)
1432    xfree (prompt);
1433  */
1434   if (event_loop_p)
1435     PROMPT (0) = savestring (s, strlen (s));
1436   else
1437     gdb_prompt_string = savestring (s, strlen (s));
1438 }
1439 
1440 
1441 /* If necessary, make the user confirm that we should quit.  Return
1442    non-zero if we should quit, zero if we shouldn't.  */
1443 
1444 int
quit_confirm(void)1445 quit_confirm (void)
1446 {
1447   if (! ptid_equal (inferior_ptid, null_ptid) && target_has_execution)
1448     {
1449       char *s;
1450 
1451       /* This is something of a hack.  But there's no reliable way to
1452          see if a GUI is running.  The `use_windows' variable doesn't
1453          cut it.  */
1454       if (init_ui_hook)
1455 	s = "A debugging session is active.\nDo you still want to close the debugger?";
1456       else if (attach_flag)
1457 	s = "The program is running.  Quit anyway (and detach it)? ";
1458       else
1459 	s = "The program is running.  Exit anyway? ";
1460 
1461       if (!query ("%s", s))
1462 	return 0;
1463     }
1464 
1465   return 1;
1466 }
1467 
1468 /* Helper routine for quit_force that requires error handling.  */
1469 
1470 struct qt_args
1471 {
1472   char *args;
1473   int from_tty;
1474 };
1475 
1476 static int
quit_target(void * arg)1477 quit_target (void *arg)
1478 {
1479   struct qt_args *qt = (struct qt_args *)arg;
1480 
1481   if (! ptid_equal (inferior_ptid, null_ptid) && target_has_execution)
1482     {
1483       if (attach_flag)
1484         target_detach (qt->args, qt->from_tty);
1485       else
1486         target_kill ();
1487     }
1488 
1489   /* UDI wants this, to kill the TIP.  */
1490   target_close (&current_target, 1);
1491 
1492   /* Save the history information if it is appropriate to do so.  */
1493   if (write_history_p && history_filename)
1494     write_history (history_filename);
1495 
1496   do_final_cleanups (ALL_CLEANUPS);	/* Do any final cleanups before exiting */
1497 
1498   return 0;
1499 }
1500 
1501 /* Quit without asking for confirmation.  */
1502 
1503 void
quit_force(char * args,int from_tty)1504 quit_force (char *args, int from_tty)
1505 {
1506   int exit_code = 0;
1507   struct qt_args qt;
1508 
1509   /* An optional expression may be used to cause gdb to terminate with the
1510      value of that expression. */
1511   if (args)
1512     {
1513       struct value *val = parse_and_eval (args);
1514 
1515       exit_code = (int) value_as_long (val);
1516     }
1517 
1518   qt.args = args;
1519   qt.from_tty = from_tty;
1520 
1521   /* We want to handle any quit errors and exit regardless.  */
1522   catch_errors (quit_target, &qt,
1523 	        "Quitting: ", RETURN_MASK_ALL);
1524 
1525   exit (exit_code);
1526 }
1527 
1528 /* Returns whether GDB is running on a terminal and whether the user
1529    desires that questions be asked of them on that terminal.  */
1530 
1531 int
input_from_terminal_p(void)1532 input_from_terminal_p (void)
1533 {
1534   return gdb_has_a_terminal () && (instream == stdin) & caution;
1535 }
1536 
1537 static void
dont_repeat_command(char * ignored,int from_tty)1538 dont_repeat_command (char *ignored, int from_tty)
1539 {
1540   *line = 0;			/* Can't call dont_repeat here because we're not
1541 				   necessarily reading from stdin.  */
1542 }
1543 
1544 /* Functions to manipulate command line editing control variables.  */
1545 
1546 /* Number of commands to print in each call to show_commands.  */
1547 #define Hist_print 10
1548 void
show_commands(char * args,int from_tty)1549 show_commands (char *args, int from_tty)
1550 {
1551   /* Index for history commands.  Relative to history_base.  */
1552   int offset;
1553 
1554   /* Number of the history entry which we are planning to display next.
1555      Relative to history_base.  */
1556   static int num = 0;
1557 
1558   /* The first command in the history which doesn't exist (i.e. one more
1559      than the number of the last command).  Relative to history_base.  */
1560   int hist_len;
1561 
1562   /* Print out some of the commands from the command history.  */
1563   /* First determine the length of the history list.  */
1564   hist_len = history_size;
1565   for (offset = 0; offset < history_size; offset++)
1566     {
1567       if (!history_get (history_base + offset))
1568 	{
1569 	  hist_len = offset;
1570 	  break;
1571 	}
1572     }
1573 
1574   if (args)
1575     {
1576       if (args[0] == '+' && args[1] == '\0')
1577 	/* "info editing +" should print from the stored position.  */
1578 	;
1579       else
1580 	/* "info editing <exp>" should print around command number <exp>.  */
1581 	num = (parse_and_eval_long (args) - history_base) - Hist_print / 2;
1582     }
1583   /* "show commands" means print the last Hist_print commands.  */
1584   else
1585     {
1586       num = hist_len - Hist_print;
1587     }
1588 
1589   if (num < 0)
1590     num = 0;
1591 
1592   /* If there are at least Hist_print commands, we want to display the last
1593      Hist_print rather than, say, the last 6.  */
1594   if (hist_len - num < Hist_print)
1595     {
1596       num = hist_len - Hist_print;
1597       if (num < 0)
1598 	num = 0;
1599     }
1600 
1601   for (offset = num; offset < num + Hist_print && offset < hist_len; offset++)
1602     {
1603       printf_filtered ("%5d  %s\n", history_base + offset,
1604 		       (history_get (history_base + offset))->line);
1605     }
1606 
1607   /* The next command we want to display is the next one that we haven't
1608      displayed yet.  */
1609   num += Hist_print;
1610 
1611   /* If the user repeats this command with return, it should do what
1612      "show commands +" does.  This is unnecessary if arg is null,
1613      because "show commands +" is not useful after "show commands".  */
1614   if (from_tty && args)
1615     {
1616       args[0] = '+';
1617       args[1] = '\0';
1618     }
1619 }
1620 
1621 /* Called by do_setshow_command.  */
1622 static void
set_history_size_command(char * args,int from_tty,struct cmd_list_element * c)1623 set_history_size_command (char *args, int from_tty, struct cmd_list_element *c)
1624 {
1625   if (history_size == INT_MAX)
1626     unstifle_history ();
1627   else if (history_size >= 0)
1628     stifle_history (history_size);
1629   else
1630     {
1631       history_size = INT_MAX;
1632       error ("History size must be non-negative");
1633     }
1634 }
1635 
1636 void
set_history(char * args,int from_tty)1637 set_history (char *args, int from_tty)
1638 {
1639   printf_unfiltered ("\"set history\" must be followed by the name of a history subcommand.\n");
1640   help_list (sethistlist, "set history ", -1, gdb_stdout);
1641 }
1642 
1643 void
show_history(char * args,int from_tty)1644 show_history (char *args, int from_tty)
1645 {
1646   cmd_show_list (showhistlist, from_tty, "");
1647 }
1648 
1649 int info_verbose = 0;		/* Default verbose msgs off */
1650 
1651 /* Called by do_setshow_command.  An elaborate joke.  */
1652 void
set_verbose(char * args,int from_tty,struct cmd_list_element * c)1653 set_verbose (char *args, int from_tty, struct cmd_list_element *c)
1654 {
1655   char *cmdname = "verbose";
1656   struct cmd_list_element *showcmd;
1657 
1658   showcmd = lookup_cmd_1 (&cmdname, showlist, NULL, 1);
1659 
1660   if (info_verbose)
1661     {
1662       c->doc = "Set verbose printing of informational messages.";
1663       showcmd->doc = "Show verbose printing of informational messages.";
1664     }
1665   else
1666     {
1667       c->doc = "Set verbosity.";
1668       showcmd->doc = "Show verbosity.";
1669     }
1670 }
1671 
1672 /* Init the history buffer.  Note that we are called after the init file(s)
1673  * have been read so that the user can change the history file via his
1674  * .gdbinit file (for instance).  The GDBHISTFILE environment variable
1675  * overrides all of this.
1676  */
1677 
1678 void
init_history(void)1679 init_history (void)
1680 {
1681   char *tmpenv;
1682 
1683   tmpenv = getenv ("HISTSIZE");
1684   if (tmpenv)
1685     history_size = atoi (tmpenv);
1686   else if (!history_size)
1687     history_size = 256;
1688 
1689   stifle_history (history_size);
1690 
1691   tmpenv = getenv ("GDBHISTFILE");
1692   if (tmpenv)
1693     history_filename = savestring (tmpenv, strlen (tmpenv));
1694   else if (!history_filename)
1695     {
1696       /* We include the current directory so that if the user changes
1697          directories the file written will be the same as the one
1698          that was read.  */
1699 #ifdef __MSDOS__
1700       /* No leading dots in file names are allowed on MSDOS.  */
1701       history_filename = concat (current_directory, "/_gdb_history", NULL);
1702 #else
1703       history_filename = concat (current_directory, "/.gdb_history", NULL);
1704 #endif
1705     }
1706   read_history (history_filename);
1707 }
1708 
1709 static void
init_main(void)1710 init_main (void)
1711 {
1712   struct cmd_list_element *c;
1713 
1714   /* If we are running the asynchronous version,
1715      we initialize the prompts differently. */
1716   if (!event_loop_p)
1717     {
1718       gdb_prompt_string = savestring (DEFAULT_PROMPT, strlen (DEFAULT_PROMPT));
1719     }
1720   else
1721     {
1722       /* initialize the prompt stack to a simple "(gdb) " prompt or to
1723          whatever the DEFAULT_PROMPT is. */
1724       the_prompts.top = 0;
1725       PREFIX (0) = "";
1726       PROMPT (0) = savestring (DEFAULT_PROMPT, strlen (DEFAULT_PROMPT));
1727       SUFFIX (0) = "";
1728       /* Set things up for annotation_level > 1, if the user ever decides
1729          to use it. */
1730       async_annotation_suffix = "prompt";
1731       /* Set the variable associated with the setshow prompt command. */
1732       new_async_prompt = savestring (PROMPT (0), strlen (PROMPT (0)));
1733 
1734       /* If gdb was started with --annotate=2, this is equivalent to
1735 	 the user entering the command 'set annotate 2' at the gdb
1736 	 prompt, so we need to do extra processing. */
1737       if (annotation_level > 1)
1738         set_async_annotation_level (NULL, 0, NULL);
1739     }
1740 
1741   /* Set the important stuff up for command editing.  */
1742   command_editing_p = 1;
1743   history_expansion_p = 0;
1744   write_history_p = 0;
1745 
1746   /* Setup important stuff for command line editing.  */
1747   rl_completion_entry_function = readline_line_completion_function;
1748   rl_completer_word_break_characters = default_word_break_characters ();
1749   rl_completer_quote_characters = get_gdb_completer_quote_characters ();
1750   rl_readline_name = "gdb";
1751   rl_terminal_name = getenv ("TERM");
1752 
1753   /* The name for this defun comes from Bash, where it originated.
1754      15 is Control-o, the same binding this function has in Bash.  */
1755   rl_add_defun ("operate-and-get-next", gdb_rl_operate_and_get_next, 15);
1756 
1757   /* The set prompt command is different depending whether or not the
1758      async version is run. NOTE: this difference is going to
1759      disappear as we make the event loop be the default engine of
1760      gdb. */
1761   if (!event_loop_p)
1762     {
1763       add_show_from_set
1764 	(add_set_cmd ("prompt", class_support, var_string,
1765 		      (char *) &gdb_prompt_string, "Set gdb's prompt",
1766 		      &setlist),
1767 	 &showlist);
1768     }
1769   else
1770     {
1771       c = add_set_cmd ("prompt", class_support, var_string,
1772 		       (char *) &new_async_prompt, "Set gdb's prompt",
1773 		       &setlist);
1774       add_show_from_set (c, &showlist);
1775       set_cmd_sfunc (c, set_async_prompt);
1776     }
1777 
1778   add_com ("dont-repeat", class_support, dont_repeat_command, "Don't repeat this command.\n\
1779 Primarily used inside of user-defined commands that should not be repeated when\n\
1780 hitting return.");
1781 
1782   /* The set editing command is different depending whether or not the
1783      async version is run. NOTE: this difference is going to disappear
1784      as we make the event loop be the default engine of gdb. */
1785   if (!event_loop_p)
1786     {
1787       add_show_from_set
1788 	(add_set_cmd ("editing", class_support, var_boolean, (char *) &command_editing_p,
1789 		      "Set editing of command lines as they are typed.\n\
1790 Use \"on\" to enable the editing, and \"off\" to disable it.\n\
1791 Without an argument, command line editing is enabled.  To edit, use\n\
1792 EMACS-like or VI-like commands like control-P or ESC.", &setlist),
1793 	 &showlist);
1794     }
1795   else
1796     {
1797       c = add_set_cmd ("editing", class_support, var_boolean, (char *) &async_command_editing_p,
1798 		       "Set editing of command lines as they are typed.\n\
1799 Use \"on\" to enable the editing, and \"off\" to disable it.\n\
1800 Without an argument, command line editing is enabled.  To edit, use\n\
1801 EMACS-like or VI-like commands like control-P or ESC.", &setlist);
1802 
1803       add_show_from_set (c, &showlist);
1804       set_cmd_sfunc (c, set_async_editing_command);
1805     }
1806 
1807   add_show_from_set
1808     (add_set_cmd ("save", no_class, var_boolean, (char *) &write_history_p,
1809 		  "Set saving of the history record on exit.\n\
1810 Use \"on\" to enable the saving, and \"off\" to disable it.\n\
1811 Without an argument, saving is enabled.", &sethistlist),
1812      &showhistlist);
1813 
1814   c = add_set_cmd ("size", no_class, var_integer, (char *) &history_size,
1815 		   "Set the size of the command history,\n\
1816 ie. the number of previous commands to keep a record of.", &sethistlist);
1817   add_show_from_set (c, &showhistlist);
1818   set_cmd_sfunc (c, set_history_size_command);
1819 
1820   c = add_set_cmd ("filename", no_class, var_filename,
1821 		   (char *) &history_filename,
1822 		   "Set the filename in which to record the command history\n\
1823 (the list of previous commands of which a record is kept).", &sethistlist);
1824   set_cmd_completer (c, filename_completer);
1825   add_show_from_set (c, &showhistlist);
1826 
1827   add_show_from_set
1828     (add_set_cmd ("confirm", class_support, var_boolean,
1829 		  (char *) &caution,
1830 		  "Set whether to confirm potentially dangerous operations.",
1831 		  &setlist),
1832      &showlist);
1833 
1834   /* The set annotate command is different depending whether or not
1835      the async version is run. NOTE: this difference is going to
1836      disappear as we make the event loop be the default engine of
1837      gdb. */
1838   if (!event_loop_p)
1839     {
1840       c = add_set_cmd ("annotate", class_obscure, var_zinteger,
1841 		       (char *) &annotation_level, "Set annotation_level.\n\
1842 0 == normal;     1 == fullname (for use when running under emacs)\n\
1843 2 == output annotated suitably for use by programs that control GDB.",
1844 		       &setlist);
1845       c = add_show_from_set (c, &showlist);
1846     }
1847   else
1848     {
1849       c = add_set_cmd ("annotate", class_obscure, var_zinteger,
1850 		       (char *) &annotation_level, "Set annotation_level.\n\
1851 0 == normal;     1 == fullname (for use when running under emacs)\n\
1852 2 == output annotated suitably for use by programs that control GDB.",
1853 		       &setlist);
1854       add_show_from_set (c, &showlist);
1855       set_cmd_sfunc (c, set_async_annotation_level);
1856     }
1857   if (event_loop_p)
1858     {
1859       add_show_from_set
1860 	(add_set_cmd ("exec-done-display", class_support, var_boolean, (char *) &exec_done_display_p,
1861 		      "Set notification of completion for asynchronous execution commands.\n\
1862 Use \"on\" to enable the notification, and \"off\" to disable it.", &setlist),
1863 	 &showlist);
1864     }
1865 }
1866 
1867 void
gdb_init(char * argv0)1868 gdb_init (char *argv0)
1869 {
1870   if (pre_init_ui_hook)
1871     pre_init_ui_hook ();
1872 
1873   /* Run the init function of each source file */
1874 
1875   getcwd (gdb_dirbuf, sizeof (gdb_dirbuf));
1876   current_directory = gdb_dirbuf;
1877 
1878 #ifdef __MSDOS__
1879   /* Make sure we return to the original directory upon exit, come
1880      what may, since the OS doesn't do that for us.  */
1881   make_final_cleanup (do_chdir_cleanup, xstrdup (current_directory));
1882 #endif
1883 
1884   init_cmd_lists ();		/* This needs to be done first */
1885   initialize_targets ();	/* Setup target_terminal macros for utils.c */
1886   initialize_utils ();		/* Make errors and warnings possible */
1887   initialize_all_files ();
1888   initialize_current_architecture ();
1889   init_cli_cmds();
1890   init_main ();			/* But that omits this file!  Do it now */
1891 
1892   /* The signal handling mechanism is different depending whether or
1893      not the async version is run. NOTE: in the future we plan to make
1894      the event loop be the default engine of gdb, and this difference
1895      will disappear. */
1896   if (event_loop_p)
1897     async_init_signals ();
1898   else
1899     init_signals ();
1900 
1901   /* We need a default language for parsing expressions, so simple things like
1902      "set width 0" won't fail if no language is explicitly set in a config file
1903      or implicitly set by reading an executable during startup. */
1904   set_language (language_c);
1905   expected_language = current_language;		/* don't warn about the change.  */
1906 
1907   /* Allow another UI to initialize. If the UI fails to initialize, and
1908      it wants GDB to revert to the CLI, it should clear init_ui_hook. */
1909   if (init_ui_hook)
1910     init_ui_hook (argv0);
1911 }
1912