Add --binary-architecture switch to objcopy to allow the output architecture
[deliverable/binutils-gdb.git] / gdb / top.c
1 /* Top level stuff for GDB, the GNU debugger.
2 Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
3 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA. */
21
22 #include "defs.h"
23 #include "gdbcmd.h"
24 #include "call-cmds.h"
25 #include "symtab.h"
26 #include "inferior.h"
27 #include <signal.h>
28 #include "target.h"
29 #include "breakpoint.h"
30 #include "gdbtypes.h"
31 #include "expression.h"
32 #include "value.h"
33 #include "language.h"
34 #include "terminal.h" /* For job_control. */
35 #include "annotate.h"
36 #include "completer.h"
37 #include "top.h"
38 #include "version.h"
39
40 /* readline include files */
41 #include <readline/readline.h>
42 #include <readline/history.h>
43
44 /* readline defines this. */
45 #undef savestring
46
47 #include <sys/types.h>
48
49 #include <setjmp.h>
50
51 #include "event-top.h"
52 #include "gdb_string.h"
53 #include "gdb_stat.h"
54 #include <ctype.h>
55 #ifdef UI_OUT
56 #include "ui-out.h"
57 #include "cli-out.h"
58 #endif
59
60 /* From completer.c */
61
62 extern int is_complete_command (void (*func) (char *args, int from_tty));
63
64 /* From cli/cli-cmds.c */
65
66 extern void init_cmd_lists (void);
67
68 extern void init_cli_cmds (void);
69
70 extern void execute_user_command (struct cmd_list_element *c, char *args);
71
72 /* From cli/cli-setshow.c */
73
74 extern void do_setshow_command (char *, int, struct cmd_list_element *);
75
76 /* Exported to CLI cli/cli-cmds.c. */
77
78 void set_verbose (char *, int, struct cmd_list_element *);
79
80 void show_history (char *, int);
81
82 void set_history (char *, int);
83
84 void show_commands (char *, int);
85
86 void do_restore_instream_cleanup (void *stream);
87
88 /* Prototypes for local functions */
89
90 static void dont_repeat_command (char *, int);
91
92 static void init_signals (void);
93
94 #ifdef STOP_SIGNAL
95 static void stop_sig (int);
96 #endif
97
98 static char *readline_line_completion_function (char *, int);
99
100 static void init_main (void);
101
102 static void float_handler (int);
103
104 static void init_signals (void);
105
106 static void set_history_size_command (char *, int, struct cmd_list_element *);
107
108 static void do_nothing (int);
109
110 #ifdef SIGHUP
111 /* NOTE 1999-04-29: This function will be static again, once we modify
112 gdb to use the event loop as the default command loop and we merge
113 event-top.c into this file, top.c */
114 /* static */ int quit_cover (PTR);
115
116 static void disconnect (int);
117 #endif
118
119 /* Default command line prompt. This is overriden in some configs. */
120
121 #ifndef DEFAULT_PROMPT
122 #define DEFAULT_PROMPT "(gdb) "
123 #endif
124
125 /* Initialization file name for gdb. This is overridden in some configs. */
126
127 #ifndef GDBINIT_FILENAME
128 #define GDBINIT_FILENAME ".gdbinit"
129 #endif
130 char gdbinit[] = GDBINIT_FILENAME;
131
132 int inhibit_gdbinit = 0;
133
134 /* If nonzero, and GDB has been configured to be able to use windows,
135 attempt to open them upon startup. */
136
137 int use_windows = 1;
138
139 extern char lang_frame_mismatch_warn[]; /* language.c */
140
141 /* Flag for whether we want all the "from_tty" gubbish printed. */
142
143 int caution = 1; /* Default is yes, sigh. */
144
145 /* stdio stream that command input is being read from. Set to stdin normally.
146 Set by source_command to the file we are sourcing. Set to NULL if we are
147 executing a user-defined command or interacting via a GUI. */
148
149 FILE *instream;
150
151 /* Current working directory. */
152
153 char *current_directory;
154
155 /* The directory name is actually stored here (usually). */
156 char gdb_dirbuf[1024];
157
158 /* Function to call before reading a command, if nonzero.
159 The function receives two args: an input stream,
160 and a prompt string. */
161
162 void (*window_hook) (FILE *, char *);
163
164 int epoch_interface;
165 int xgdb_verbose;
166
167 /* gdb prints this when reading a command interactively */
168 static char *gdb_prompt_string; /* the global prompt string */
169 extern char *get_prompt (void); /* access function for prompt string */
170
171 /* Buffer used for reading command lines, and the size
172 allocated for it so far. */
173
174 char *line;
175 int linesize = 100;
176
177 /* Nonzero if the current command is modified by "server ". This
178 affects things like recording into the command history, commands
179 repeating on RETURN, etc. This is so a user interface (emacs, GUI,
180 whatever) can issue its own commands and also send along commands
181 from the user, and have the user not notice that the user interface
182 is issuing commands too. */
183 int server_command;
184
185 /* Baud rate specified for talking to serial target systems. Default
186 is left as -1, so targets can choose their own defaults. */
187 /* FIXME: This means that "show remotebaud" and gr_files_info can print -1
188 or (unsigned int)-1. This is a Bad User Interface. */
189
190 int baud_rate = -1;
191
192 /* Timeout limit for response from target. */
193
194 /* The default value has been changed many times over the years. It
195 was originally 5 seconds. But that was thought to be a long time
196 to sit and wait, so it was changed to 2 seconds. That was thought
197 to be plenty unless the connection was going through some terminal
198 server or multiplexer or other form of hairy serial connection.
199
200 In mid-1996, remote_timeout was moved from remote.c to top.c and
201 it began being used in other remote-* targets. It appears that the
202 default was changed to 20 seconds at that time, perhaps because the
203 Hitachi E7000 ICE didn't always respond in a timely manner.
204
205 But if 5 seconds is a long time to sit and wait for retransmissions,
206 20 seconds is far worse. This demonstrates the difficulty of using
207 a single variable for all protocol timeouts.
208
209 As remote.c is used much more than remote-e7000.c, it was changed
210 back to 2 seconds in 1999. */
211
212 int remote_timeout = 2;
213
214 /* Non-zero tells remote* modules to output debugging info. */
215
216 int remote_debug = 0;
217
218 /* Non-zero means the target is running. Note: this is different from
219 saying that there is an active target and we are stopped at a
220 breakpoint, for instance. This is a real indicator whether the
221 target is off and running, which gdb is doing something else. */
222 int target_executing = 0;
223
224 /* Level of control structure. */
225 static int control_level;
226
227 /* Structure for arguments to user defined functions. */
228 #define MAXUSERARGS 10
229 struct user_args
230 {
231 struct user_args *next;
232 struct
233 {
234 char *arg;
235 int len;
236 }
237 a[MAXUSERARGS];
238 int count;
239 }
240 *user_args;
241
242 /* Signal to catch ^Z typed while reading a command: SIGTSTP or SIGCONT. */
243
244 #ifndef STOP_SIGNAL
245 #ifdef SIGTSTP
246 #define STOP_SIGNAL SIGTSTP
247 static void stop_sig (int);
248 #endif
249 #endif
250
251 /* Some System V have job control but not sigsetmask(). */
252 #if !defined (HAVE_SIGSETMASK)
253 #if !defined (USG)
254 #define HAVE_SIGSETMASK 1
255 #else
256 #define HAVE_SIGSETMASK 0
257 #endif
258 #endif
259
260 #if 0 == (HAVE_SIGSETMASK)
261 #define sigsetmask(n)
262 #endif
263
264 /* Hooks for alternate command interfaces. */
265
266 /* Called after most modules have been initialized, but before taking users
267 command file. */
268
269 void (*init_ui_hook) (char *argv0);
270
271 /* This hook is called from within gdb's many mini-event loops which could
272 steal control from a real user interface's event loop. It returns
273 non-zero if the user is requesting a detach, zero otherwise. */
274
275 int (*ui_loop_hook) (int);
276
277 /* Called instead of command_loop at top level. Can be invoked via
278 return_to_top_level. */
279
280 void (*command_loop_hook) (void);
281
282
283 /* Called from print_frame_info to list the line we stopped in. */
284
285 void (*print_frame_info_listing_hook) (struct symtab * s, int line,
286 int stopline, int noerror);
287 /* Replaces most of query. */
288
289 int (*query_hook) (const char *, va_list);
290
291 /* Replaces most of warning. */
292
293 void (*warning_hook) (const char *, va_list);
294
295 /* These three functions support getting lines of text from the user. They
296 are used in sequence. First readline_begin_hook is called with a text
297 string that might be (for example) a message for the user to type in a
298 sequence of commands to be executed at a breakpoint. If this function
299 calls back to a GUI, it might take this opportunity to pop up a text
300 interaction window with this message. Next, readline_hook is called
301 with a prompt that is emitted prior to collecting the user input.
302 It can be called multiple times. Finally, readline_end_hook is called
303 to notify the GUI that we are done with the interaction window and it
304 can close it. */
305
306 void (*readline_begin_hook) (char *, ...);
307 char *(*readline_hook) (char *);
308 void (*readline_end_hook) (void);
309
310 /* Called as appropriate to notify the interface of the specified breakpoint
311 conditions. */
312
313 void (*create_breakpoint_hook) (struct breakpoint * bpt);
314 void (*delete_breakpoint_hook) (struct breakpoint * bpt);
315 void (*modify_breakpoint_hook) (struct breakpoint * bpt);
316
317 /* Called as appropriate to notify the interface that we have attached
318 to or detached from an already running process. */
319
320 void (*attach_hook) (void);
321 void (*detach_hook) (void);
322
323 /* Called during long calculations to allow GUI to repair window damage, and to
324 check for stop buttons, etc... */
325
326 void (*interactive_hook) (void);
327
328 /* Called when the registers have changed, as a hint to a GUI
329 to minimize window update. */
330
331 void (*registers_changed_hook) (void);
332
333 /* Tell the GUI someone changed the register REGNO. -1 means
334 that the caller does not know which register changed or
335 that several registers have changed (see value_assign). */
336 void (*register_changed_hook) (int regno);
337
338 /* Tell the GUI someone changed LEN bytes of memory at ADDR */
339 void (*memory_changed_hook) (CORE_ADDR addr, int len);
340
341 /* Called when going to wait for the target. Usually allows the GUI to run
342 while waiting for target events. */
343
344 int (*target_wait_hook) (int pid, struct target_waitstatus * status);
345
346 /* Used by UI as a wrapper around command execution. May do various things
347 like enabling/disabling buttons, etc... */
348
349 void (*call_command_hook) (struct cmd_list_element * c, char *cmd,
350 int from_tty);
351
352 /* Called after a `set' command has finished. Is only run if the
353 `set' command succeeded. */
354
355 void (*set_hook) (struct cmd_list_element * c);
356
357 /* Called when the current thread changes. Argument is thread id. */
358
359 void (*context_hook) (int id);
360
361 /* Takes control from error (). Typically used to prevent longjmps out of the
362 middle of the GUI. Usually used in conjunction with a catch routine. */
363
364 NORETURN void (*error_hook) (void) ATTR_NORETURN;
365 \f
366
367 /* One should use catch_errors rather than manipulating these
368 directly. */
369 #if defined(HAVE_SIGSETJMP)
370 #define SIGJMP_BUF sigjmp_buf
371 #define SIGSETJMP(buf) sigsetjmp(buf, 1)
372 #define SIGLONGJMP(buf,val) siglongjmp(buf,val)
373 #else
374 #define SIGJMP_BUF jmp_buf
375 #define SIGSETJMP(buf) setjmp(buf)
376 #define SIGLONGJMP(buf,val) longjmp(buf,val)
377 #endif
378
379 /* Where to go for return_to_top_level. */
380 static SIGJMP_BUF *catch_return;
381
382 /* Return for reason REASON to the nearest containing catch_errors(). */
383
384 NORETURN void
385 return_to_top_level (enum return_reason reason)
386 {
387 quit_flag = 0;
388 immediate_quit = 0;
389
390 /* Perhaps it would be cleaner to do this via the cleanup chain (not sure
391 I can think of a reason why that is vital, though). */
392 bpstat_clear_actions (stop_bpstat); /* Clear queued breakpoint commands */
393
394 disable_current_display ();
395 do_cleanups (ALL_CLEANUPS);
396 if (event_loop_p && target_can_async_p () && !target_executing)
397 do_exec_cleanups (ALL_CLEANUPS);
398 if (event_loop_p && sync_execution)
399 do_exec_error_cleanups (ALL_CLEANUPS);
400
401 if (annotation_level > 1)
402 switch (reason)
403 {
404 case RETURN_QUIT:
405 annotate_quit ();
406 break;
407 case RETURN_ERROR:
408 annotate_error ();
409 break;
410 }
411
412 /* Jump to the containing catch_errors() call, communicating REASON
413 to that call via setjmp's return value. Note that REASON can't
414 be zero, by definition in defs.h. */
415
416 (NORETURN void) SIGLONGJMP (*catch_return, (int) reason);
417 }
418
419 /* Call FUNC with arg ARGS, catching any errors. If there is no
420 error, return the value returned by FUNC. If there is an error,
421 print ERRSTRING, print the specific error message, then return
422 zero.
423
424 Must not be called with immediate_quit in effect (bad things might
425 happen, say we got a signal in the middle of a memcpy to quit_return).
426 This is an OK restriction; with very few exceptions immediate_quit can
427 be replaced by judicious use of QUIT.
428
429 MASK specifies what to catch; it is normally set to
430 RETURN_MASK_ALL, if for no other reason than that the code which
431 calls catch_errors might not be set up to deal with a quit which
432 isn't caught. But if the code can deal with it, it generally
433 should be RETURN_MASK_ERROR, unless for some reason it is more
434 useful to abort only the portion of the operation inside the
435 catch_errors. Note that quit should return to the command line
436 fairly quickly, even if some further processing is being done. */
437
438 /* MAYBE: cagney/1999-11-05: catch_errors() in conjunction with
439 error() et.al. could maintain a set of flags that indicate the the
440 current state of each of the longjmp buffers. This would give the
441 longjmp code the chance to detect a longjmp botch (before it gets
442 to longjmperror()). Prior to 1999-11-05 this wasn't possible as
443 code also randomly used a SET_TOP_LEVEL macro that directly
444 initialize the longjmp buffers. */
445
446 /* MAYBE: cagney/1999-11-05: Should the catch_errors and cleanups code
447 be consolidated into a single file instead of being distributed
448 between utils.c and top.c? */
449
450 int
451 catch_errors (catch_errors_ftype *func, PTR args, char *errstring,
452 return_mask mask)
453 {
454 SIGJMP_BUF *saved_catch;
455 SIGJMP_BUF catch;
456 int val;
457 struct cleanup *saved_cleanup_chain;
458 char *saved_error_pre_print;
459 char *saved_quit_pre_print;
460
461 /* Return value from SIGSETJMP(): enum return_reason if error or
462 quit caught, 0 otherwise. */
463 int caught;
464
465 /* Override error/quit messages during FUNC. */
466
467 saved_error_pre_print = error_pre_print;
468 saved_quit_pre_print = quit_pre_print;
469
470 if (mask & RETURN_MASK_ERROR)
471 error_pre_print = errstring;
472 if (mask & RETURN_MASK_QUIT)
473 quit_pre_print = errstring;
474
475 /* Prevent error/quit during FUNC from calling cleanups established
476 prior to here. */
477
478 saved_cleanup_chain = save_cleanups ();
479
480 /* Call FUNC, catching error/quit events. */
481
482 saved_catch = catch_return;
483 catch_return = &catch;
484 caught = SIGSETJMP (catch);
485 if (!caught)
486 val = (*func) (args);
487 else
488 val = 0;
489 catch_return = saved_catch;
490
491 /* FIXME: cagney/1999-11-05: A correct FUNC implementation will
492 clean things up (restoring the cleanup chain) to the state they
493 were just prior to the call. Unfortunately, many FUNC's are not
494 that well behaved. This could be fixed by adding either a
495 do_cleanups call (to cover the problem) or an assertion check to
496 detect bad FUNCs code. */
497
498 /* Restore the cleanup chain and error/quit messages to their
499 original states. */
500
501 restore_cleanups (saved_cleanup_chain);
502
503 if (mask & RETURN_MASK_QUIT)
504 quit_pre_print = saved_quit_pre_print;
505 if (mask & RETURN_MASK_ERROR)
506 error_pre_print = saved_error_pre_print;
507
508 /* Return normally if no error/quit event occurred. */
509
510 if (!caught)
511 return val;
512
513 /* If the caller didn't request that the event be caught, relay the
514 event to the next containing catch_errors(). */
515
516 if (!(mask & RETURN_MASK (caught)))
517 return_to_top_level (caught);
518
519 /* Tell the caller that an event was caught.
520
521 FIXME: nsd/2000-02-22: When MASK is RETURN_MASK_ALL, the caller
522 can't tell what type of event occurred.
523
524 A possible fix is to add a new interface, catch_event(), that
525 returns enum return_reason after catching an error or a quit.
526
527 When returning normally, i.e. without catching an error or a
528 quit, catch_event() could return RETURN_NORMAL, which would be
529 added to enum return_reason. FUNC would return information
530 exclusively via ARGS.
531
532 Alternatively, normal catch_event() could return FUNC's return
533 value. The caller would need to be aware of potential overlap
534 with enum return_reason, which could be publicly restricted to
535 negative values to simplify return value processing in FUNC and
536 in the caller. */
537
538 return 0;
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
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
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 static void
580 disconnect (int signo)
581 {
582 catch_errors (quit_cover, NULL,
583 "Could not kill the program being debugged", RETURN_MASK_ALL);
584 signal (SIGHUP, SIG_DFL);
585 kill (getpid (), SIGHUP);
586 }
587
588 /* Just a little helper function for disconnect(). */
589
590 /* NOTE 1999-04-29: This function will be static again, once we modify
591 gdb to use the event loop as the default command loop and we merge
592 event-top.c into this file, top.c */
593 /* static */ int
594 quit_cover (PTR s)
595 {
596 caution = 0; /* Throw caution to the wind -- we're exiting.
597 This prevents asking the user dumb questions. */
598 quit_command ((char *) 0, 0);
599 return 0;
600 }
601 #endif /* defined SIGHUP */
602 \f
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
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
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 \f
652 extern void init_proc (void);
653
654 void (*pre_init_ui_hook) (void);
655
656 #ifdef __MSDOS__
657 void
658 do_chdir_cleanup (void *old_dir)
659 {
660 chdir (old_dir);
661 xfree (old_dir);
662 }
663 #endif
664
665 void
666 gdb_init (char *argv0)
667 {
668 if (pre_init_ui_hook)
669 pre_init_ui_hook ();
670
671 /* Run the init function of each source file */
672
673 getcwd (gdb_dirbuf, sizeof (gdb_dirbuf));
674 current_directory = gdb_dirbuf;
675
676 #ifdef __MSDOS__
677 /* Make sure we return to the original directory upon exit, come
678 what may, since the OS doesn't do that for us. */
679 make_final_cleanup (do_chdir_cleanup, xstrdup (current_directory));
680 #endif
681
682 init_cmd_lists (); /* This needs to be done first */
683 initialize_targets (); /* Setup target_terminal macros for utils.c */
684 initialize_utils (); /* Make errors and warnings possible */
685 initialize_all_files ();
686 initialize_current_architecture ();
687 init_cli_cmds();
688 init_main (); /* But that omits this file! Do it now */
689
690 /* The signal handling mechanism is different depending whether or
691 not the async version is run. NOTE: in the future we plan to make
692 the event loop be the default engine of gdb, and this difference
693 will disappear. */
694 if (event_loop_p)
695 async_init_signals ();
696 else
697 init_signals ();
698
699 /* We need a default language for parsing expressions, so simple things like
700 "set width 0" won't fail if no language is explicitly set in a config file
701 or implicitly set by reading an executable during startup. */
702 set_language (language_c);
703 expected_language = current_language; /* don't warn about the change. */
704
705 #ifdef UI_OUT
706 /* Install the default UI */
707 uiout = cli_out_new (gdb_stdout);
708 #endif
709
710 #ifdef UI_OUT
711 /* All the interpreters should have had a look at things by now.
712 Initialize the selected interpreter. */
713 if (interpreter_p && !init_ui_hook)
714 {
715 fprintf_unfiltered (gdb_stderr, "Interpreter `%s' unrecognized.\n",
716 interpreter_p);
717 exit (1);
718 }
719 #endif
720
721 if (init_ui_hook)
722 init_ui_hook (argv0);
723 }
724
725 /* Execute the line P as a command.
726 Pass FROM_TTY as second argument to the defining function. */
727
728 void
729 execute_command (char *p, int from_tty)
730 {
731 register struct cmd_list_element *c;
732 register enum language flang;
733 static int warned = 0;
734 char *line;
735 /* FIXME: These should really be in an appropriate header file */
736 extern void serial_log_command (const char *);
737
738 free_all_values ();
739
740 /* Force cleanup of any alloca areas if using C alloca instead of
741 a builtin alloca. */
742 alloca (0);
743
744 /* This can happen when command_line_input hits end of file. */
745 if (p == NULL)
746 return;
747
748 serial_log_command (p);
749
750 while (*p == ' ' || *p == '\t')
751 p++;
752 if (*p)
753 {
754 char *arg;
755 line = p;
756
757 c = lookup_cmd (&p, cmdlist, "", 0, 1);
758
759 /* If the target is running, we allow only a limited set of
760 commands. */
761 if (event_loop_p && target_can_async_p () && target_executing)
762 if (!strcmp (c->name, "help")
763 && !strcmp (c->name, "pwd")
764 && !strcmp (c->name, "show")
765 && !strcmp (c->name, "stop"))
766 error ("Cannot execute this command while the target is running.");
767
768 /* Pass null arg rather than an empty one. */
769 arg = *p ? p : 0;
770
771 /* Clear off trailing whitespace, except for set and complete command. */
772 if (arg
773 && c->type != set_cmd
774 && !is_complete_command (c->function.cfunc))
775 {
776 p = arg + strlen (arg) - 1;
777 while (p >= arg && (*p == ' ' || *p == '\t'))
778 p--;
779 *(p + 1) = '\0';
780 }
781
782 /* If this command has been pre-hooked, run the hook first. */
783 if ((c->hook_pre) && (!c->hook_in))
784 {
785 c->hook_in = 1; /* Prevent recursive hooking */
786 execute_user_command (c->hook_pre, (char *) 0);
787 c->hook_in = 0; /* Allow hook to work again once it is complete */
788 }
789
790 if (c->flags & DEPRECATED_WARN_USER)
791 deprecated_cmd_warning (&line);
792
793 if (c->class == class_user)
794 execute_user_command (c, arg);
795 else if (c->type == set_cmd || c->type == show_cmd)
796 do_setshow_command (arg, from_tty & caution, c);
797 else if (c->function.cfunc == NO_FUNCTION)
798 error ("That is not a command, just a help topic.");
799 else if (call_command_hook)
800 call_command_hook (c, arg, from_tty & caution);
801 else
802 (*c->function.cfunc) (arg, from_tty & caution);
803
804 /* If this command has been post-hooked, run the hook last. */
805 if ((c->hook_post) && (!c->hook_in))
806 {
807 c->hook_in = 1; /* Prevent recursive hooking */
808 execute_user_command (c->hook_post, (char *) 0);
809 c->hook_in = 0; /* allow hook to work again once it is complete */
810 }
811
812 }
813
814 /* Tell the user if the language has changed (except first time). */
815 if (current_language != expected_language)
816 {
817 if (language_mode == language_mode_auto)
818 {
819 language_info (1); /* Print what changed. */
820 }
821 warned = 0;
822 }
823
824 /* Warn the user if the working language does not match the
825 language of the current frame. Only warn the user if we are
826 actually running the program, i.e. there is a stack. */
827 /* FIXME: This should be cacheing the frame and only running when
828 the frame changes. */
829
830 if (target_has_stack)
831 {
832 flang = get_frame_language ();
833 if (!warned
834 && flang != language_unknown
835 && flang != current_language->la_language)
836 {
837 printf_filtered ("%s\n", lang_frame_mismatch_warn);
838 warned = 1;
839 }
840 }
841 }
842
843 /* Read commands from `instream' and execute them
844 until end of file or error reading instream. */
845
846 void
847 command_loop (void)
848 {
849 struct cleanup *old_chain;
850 char *command;
851 int stdin_is_tty = ISATTY (stdin);
852 long time_at_cmd_start;
853 #ifdef HAVE_SBRK
854 long space_at_cmd_start = 0;
855 #endif
856 extern int display_time;
857 extern int display_space;
858
859 while (instream && !feof (instream))
860 {
861 #if defined(TUI)
862 extern int insert_mode;
863 #endif
864 if (window_hook && instream == stdin)
865 (*window_hook) (instream, get_prompt ());
866
867 quit_flag = 0;
868 if (instream == stdin && stdin_is_tty)
869 reinitialize_more_filter ();
870 old_chain = make_cleanup (null_cleanup, 0);
871
872 #if defined(TUI)
873 /* A bit of paranoia: I want to make sure the "insert_mode" global
874 * is clear except when it is being used for command-line editing
875 * (see tuiIO.c, utils.c); otherwise normal output will
876 * get messed up in the TUI. So clear it before/after
877 * the command-line-input call. - RT
878 */
879 insert_mode = 0;
880 #endif
881 /* Get a command-line. This calls the readline package. */
882 command = command_line_input (instream == stdin ?
883 get_prompt () : (char *) NULL,
884 instream == stdin, "prompt");
885 #if defined(TUI)
886 insert_mode = 0;
887 #endif
888 if (command == 0)
889 return;
890
891 time_at_cmd_start = get_run_time ();
892
893 if (display_space)
894 {
895 #ifdef HAVE_SBRK
896 extern char **environ;
897 char *lim = (char *) sbrk (0);
898
899 space_at_cmd_start = (long) (lim - (char *) &environ);
900 #endif
901 }
902
903 execute_command (command, instream == stdin);
904 /* Do any commands attached to breakpoint we stopped at. */
905 bpstat_do_actions (&stop_bpstat);
906 do_cleanups (old_chain);
907
908 if (display_time)
909 {
910 long cmd_time = get_run_time () - time_at_cmd_start;
911
912 printf_unfiltered ("Command execution time: %ld.%06ld\n",
913 cmd_time / 1000000, cmd_time % 1000000);
914 }
915
916 if (display_space)
917 {
918 #ifdef HAVE_SBRK
919 extern char **environ;
920 char *lim = (char *) sbrk (0);
921 long space_now = lim - (char *) &environ;
922 long space_diff = space_now - space_at_cmd_start;
923
924 printf_unfiltered ("Space used: %ld (%c%ld for this command)\n",
925 space_now,
926 (space_diff >= 0 ? '+' : '-'),
927 space_diff);
928 #endif
929 }
930 }
931 }
932
933 /* Read commands from `instream' and execute them until end of file or
934 error reading instream. This command loop doesnt care about any
935 such things as displaying time and space usage. If the user asks
936 for those, they won't work. */
937 void
938 simplified_command_loop (char *(*read_input_func) (char *),
939 void (*execute_command_func) (char *, int))
940 {
941 struct cleanup *old_chain;
942 char *command;
943 int stdin_is_tty = ISATTY (stdin);
944
945 while (instream && !feof (instream))
946 {
947 quit_flag = 0;
948 if (instream == stdin && stdin_is_tty)
949 reinitialize_more_filter ();
950 old_chain = make_cleanup (null_cleanup, 0);
951
952 /* Get a command-line. */
953 command = (*read_input_func) (instream == stdin ?
954 get_prompt () : (char *) NULL);
955
956 if (command == 0)
957 return;
958
959 (*execute_command_func) (command, instream == stdin);
960
961 /* Do any commands attached to breakpoint we stopped at. */
962 bpstat_do_actions (&stop_bpstat);
963
964 do_cleanups (old_chain);
965 }
966 }
967 \f
968 /* Commands call this if they do not want to be repeated by null lines. */
969
970 void
971 dont_repeat (void)
972 {
973 if (server_command)
974 return;
975
976 /* If we aren't reading from standard input, we are saving the last
977 thing read from stdin in line and don't want to delete it. Null lines
978 won't repeat here in any case. */
979 if (instream == stdin)
980 *line = 0;
981 }
982 \f
983 /* Read a line from the stream "instream" without command line editing.
984
985 It prints PROMPT_ARG once at the start.
986 Action is compatible with "readline", e.g. space for the result is
987 malloc'd and should be freed by the caller.
988
989 A NULL return means end of file. */
990 char *
991 gdb_readline (char *prompt_arg)
992 {
993 int c;
994 char *result;
995 int input_index = 0;
996 int result_size = 80;
997
998 if (prompt_arg)
999 {
1000 /* Don't use a _filtered function here. It causes the assumed
1001 character position to be off, since the newline we read from
1002 the user is not accounted for. */
1003 fputs_unfiltered (prompt_arg, gdb_stdout);
1004 #ifdef MPW
1005 /* Move to a new line so the entered line doesn't have a prompt
1006 on the front of it. */
1007 fputs_unfiltered ("\n", gdb_stdout);
1008 #endif /* MPW */
1009 gdb_flush (gdb_stdout);
1010 }
1011
1012 result = (char *) xmalloc (result_size);
1013
1014 while (1)
1015 {
1016 /* Read from stdin if we are executing a user defined command.
1017 This is the right thing for prompt_for_continue, at least. */
1018 c = fgetc (instream ? instream : stdin);
1019
1020 if (c == EOF)
1021 {
1022 if (input_index > 0)
1023 /* The last line does not end with a newline. Return it, and
1024 if we are called again fgetc will still return EOF and
1025 we'll return NULL then. */
1026 break;
1027 xfree (result);
1028 return NULL;
1029 }
1030
1031 if (c == '\n')
1032 #ifndef CRLF_SOURCE_FILES
1033 break;
1034 #else
1035 {
1036 if (input_index > 0 && result[input_index - 1] == '\r')
1037 input_index--;
1038 break;
1039 }
1040 #endif
1041
1042 result[input_index++] = c;
1043 while (input_index >= result_size)
1044 {
1045 result_size *= 2;
1046 result = (char *) xrealloc (result, result_size);
1047 }
1048 }
1049
1050 result[input_index++] = '\0';
1051 return result;
1052 }
1053
1054 /* Variables which control command line editing and history
1055 substitution. These variables are given default values at the end
1056 of this file. */
1057 static int command_editing_p;
1058 /* NOTE 1999-04-29: This variable will be static again, once we modify
1059 gdb to use the event loop as the default command loop and we merge
1060 event-top.c into this file, top.c */
1061 /* static */ int history_expansion_p;
1062 static int write_history_p;
1063 static int history_size;
1064 static char *history_filename;
1065
1066 /* Functions that are used as part of the fancy command line editing. */
1067
1068 /* This can be used for functions which don't want to complete on symbols
1069 but don't want to complete on anything else either. */
1070 /* ARGSUSED */
1071 char **
1072 noop_completer (char *text, char *prefix)
1073 {
1074 return NULL;
1075 }
1076
1077 /* Line completion interface function for readline. */
1078
1079 static char *
1080 readline_line_completion_function (char *text, int matches)
1081 {
1082 return line_completion_function (text, matches, rl_line_buffer, rl_point);
1083 }
1084 \f
1085 #ifdef STOP_SIGNAL
1086 static void
1087 stop_sig (int signo)
1088 {
1089 #if STOP_SIGNAL == SIGTSTP
1090 signal (SIGTSTP, SIG_DFL);
1091 sigsetmask (0);
1092 kill (getpid (), SIGTSTP);
1093 signal (SIGTSTP, stop_sig);
1094 #else
1095 signal (STOP_SIGNAL, stop_sig);
1096 #endif
1097 printf_unfiltered ("%s", get_prompt ());
1098 gdb_flush (gdb_stdout);
1099
1100 /* Forget about any previous command -- null line now will do nothing. */
1101 dont_repeat ();
1102 }
1103 #endif /* STOP_SIGNAL */
1104
1105 /* Initialize signal handlers. */
1106 static void
1107 do_nothing (int signo)
1108 {
1109 /* Under System V the default disposition of a signal is reinstated after
1110 the signal is caught and delivered to an application process. On such
1111 systems one must restore the replacement signal handler if one wishes
1112 to continue handling the signal in one's program. On BSD systems this
1113 is not needed but it is harmless, and it simplifies the code to just do
1114 it unconditionally. */
1115 signal (signo, do_nothing);
1116 }
1117
1118 static void
1119 init_signals (void)
1120 {
1121 signal (SIGINT, request_quit);
1122
1123 /* If SIGTRAP was set to SIG_IGN, then the SIG_IGN will get passed
1124 to the inferior and breakpoints will be ignored. */
1125 #ifdef SIGTRAP
1126 signal (SIGTRAP, SIG_DFL);
1127 #endif
1128
1129 /* If we initialize SIGQUIT to SIG_IGN, then the SIG_IGN will get
1130 passed to the inferior, which we don't want. It would be
1131 possible to do a "signal (SIGQUIT, SIG_DFL)" after we fork, but
1132 on BSD4.3 systems using vfork, that can affect the
1133 GDB process as well as the inferior (the signal handling tables
1134 might be in memory, shared between the two). Since we establish
1135 a handler for SIGQUIT, when we call exec it will set the signal
1136 to SIG_DFL for us. */
1137 signal (SIGQUIT, do_nothing);
1138 #ifdef SIGHUP
1139 if (signal (SIGHUP, do_nothing) != SIG_IGN)
1140 signal (SIGHUP, disconnect);
1141 #endif
1142 signal (SIGFPE, float_handler);
1143
1144 #if defined(SIGWINCH) && defined(SIGWINCH_HANDLER)
1145 signal (SIGWINCH, SIGWINCH_HANDLER);
1146 #endif
1147 }
1148 \f
1149 /* Read one line from the command input stream `instream'
1150 into the local static buffer `linebuffer' (whose current length
1151 is `linelength').
1152 The buffer is made bigger as necessary.
1153 Returns the address of the start of the line.
1154
1155 NULL is returned for end of file.
1156
1157 *If* the instream == stdin & stdin is a terminal, the line read
1158 is copied into the file line saver (global var char *line,
1159 length linesize) so that it can be duplicated.
1160
1161 This routine either uses fancy command line editing or
1162 simple input as the user has requested. */
1163
1164 char *
1165 command_line_input (char *prompt_arg, int repeat, char *annotation_suffix)
1166 {
1167 static char *linebuffer = 0;
1168 static unsigned linelength = 0;
1169 register char *p;
1170 char *p1;
1171 char *rl;
1172 char *local_prompt = prompt_arg;
1173 char *nline;
1174 char got_eof = 0;
1175
1176 /* The annotation suffix must be non-NULL. */
1177 if (annotation_suffix == NULL)
1178 annotation_suffix = "";
1179
1180 if (annotation_level > 1 && instream == stdin)
1181 {
1182 local_prompt = alloca ((prompt_arg == NULL ? 0 : strlen (prompt_arg))
1183 + strlen (annotation_suffix) + 40);
1184 if (prompt_arg == NULL)
1185 local_prompt[0] = '\0';
1186 else
1187 strcpy (local_prompt, prompt_arg);
1188 strcat (local_prompt, "\n\032\032");
1189 strcat (local_prompt, annotation_suffix);
1190 strcat (local_prompt, "\n");
1191 }
1192
1193 if (linebuffer == 0)
1194 {
1195 linelength = 80;
1196 linebuffer = (char *) xmalloc (linelength);
1197 }
1198
1199 p = linebuffer;
1200
1201 /* Control-C quits instantly if typed while in this loop
1202 since it should not wait until the user types a newline. */
1203 immediate_quit++;
1204 #ifdef STOP_SIGNAL
1205 if (job_control)
1206 {
1207 if (event_loop_p)
1208 signal (STOP_SIGNAL, handle_stop_sig);
1209 else
1210 signal (STOP_SIGNAL, stop_sig);
1211 }
1212 #endif
1213
1214 while (1)
1215 {
1216 /* Make sure that all output has been output. Some machines may let
1217 you get away with leaving out some of the gdb_flush, but not all. */
1218 wrap_here ("");
1219 gdb_flush (gdb_stdout);
1220 gdb_flush (gdb_stderr);
1221
1222 if (source_file_name != NULL)
1223 {
1224 ++source_line_number;
1225 sprintf (source_error,
1226 "%s%s:%d: Error in sourced command file:\n",
1227 source_pre_error,
1228 source_file_name,
1229 source_line_number);
1230 error_pre_print = source_error;
1231 }
1232
1233 if (annotation_level > 1 && instream == stdin)
1234 {
1235 printf_unfiltered ("\n\032\032pre-");
1236 printf_unfiltered (annotation_suffix);
1237 printf_unfiltered ("\n");
1238 }
1239
1240 /* Don't use fancy stuff if not talking to stdin. */
1241 if (readline_hook && instream == NULL)
1242 {
1243 rl = (*readline_hook) (local_prompt);
1244 }
1245 else if (command_editing_p && instream == stdin && ISATTY (instream))
1246 {
1247 rl = readline (local_prompt);
1248 }
1249 else
1250 {
1251 rl = gdb_readline (local_prompt);
1252 }
1253
1254 if (annotation_level > 1 && instream == stdin)
1255 {
1256 printf_unfiltered ("\n\032\032post-");
1257 printf_unfiltered (annotation_suffix);
1258 printf_unfiltered ("\n");
1259 }
1260
1261 if (!rl || rl == (char *) EOF)
1262 {
1263 got_eof = 1;
1264 break;
1265 }
1266 if (strlen (rl) + 1 + (p - linebuffer) > linelength)
1267 {
1268 linelength = strlen (rl) + 1 + (p - linebuffer);
1269 nline = (char *) xrealloc (linebuffer, linelength);
1270 p += nline - linebuffer;
1271 linebuffer = nline;
1272 }
1273 p1 = rl;
1274 /* Copy line. Don't copy null at end. (Leaves line alone
1275 if this was just a newline) */
1276 while (*p1)
1277 *p++ = *p1++;
1278
1279 xfree (rl); /* Allocated in readline. */
1280
1281 if (p == linebuffer || *(p - 1) != '\\')
1282 break;
1283
1284 p--; /* Put on top of '\'. */
1285 local_prompt = (char *) 0;
1286 }
1287
1288 #ifdef STOP_SIGNAL
1289 if (job_control)
1290 signal (STOP_SIGNAL, SIG_DFL);
1291 #endif
1292 immediate_quit--;
1293
1294 if (got_eof)
1295 return NULL;
1296
1297 #define SERVER_COMMAND_LENGTH 7
1298 server_command =
1299 (p - linebuffer > SERVER_COMMAND_LENGTH)
1300 && STREQN (linebuffer, "server ", SERVER_COMMAND_LENGTH);
1301 if (server_command)
1302 {
1303 /* Note that we don't set `line'. Between this and the check in
1304 dont_repeat, this insures that repeating will still do the
1305 right thing. */
1306 *p = '\0';
1307 return linebuffer + SERVER_COMMAND_LENGTH;
1308 }
1309
1310 /* Do history expansion if that is wished. */
1311 if (history_expansion_p && instream == stdin
1312 && ISATTY (instream))
1313 {
1314 char *history_value;
1315 int expanded;
1316
1317 *p = '\0'; /* Insert null now. */
1318 expanded = history_expand (linebuffer, &history_value);
1319 if (expanded)
1320 {
1321 /* Print the changes. */
1322 printf_unfiltered ("%s\n", history_value);
1323
1324 /* If there was an error, call this function again. */
1325 if (expanded < 0)
1326 {
1327 xfree (history_value);
1328 return command_line_input (prompt_arg, repeat, annotation_suffix);
1329 }
1330 if (strlen (history_value) > linelength)
1331 {
1332 linelength = strlen (history_value) + 1;
1333 linebuffer = (char *) xrealloc (linebuffer, linelength);
1334 }
1335 strcpy (linebuffer, history_value);
1336 p = linebuffer + strlen (linebuffer);
1337 xfree (history_value);
1338 }
1339 }
1340
1341 /* If we just got an empty line, and that is supposed
1342 to repeat the previous command, return the value in the
1343 global buffer. */
1344 if (repeat && p == linebuffer)
1345 return line;
1346 for (p1 = linebuffer; *p1 == ' ' || *p1 == '\t'; p1++);
1347 if (repeat && !*p1)
1348 return line;
1349
1350 *p = 0;
1351
1352 /* Add line to history if appropriate. */
1353 if (instream == stdin
1354 && ISATTY (stdin) && *linebuffer)
1355 add_history (linebuffer);
1356
1357 /* Note: lines consisting solely of comments are added to the command
1358 history. This is useful when you type a command, and then
1359 realize you don't want to execute it quite yet. You can comment
1360 out the command and then later fetch it from the value history
1361 and remove the '#'. The kill ring is probably better, but some
1362 people are in the habit of commenting things out. */
1363 if (*p1 == '#')
1364 *p1 = '\0'; /* Found a comment. */
1365
1366 /* Save into global buffer if appropriate. */
1367 if (repeat)
1368 {
1369 if (linelength > linesize)
1370 {
1371 line = xrealloc (line, linelength);
1372 linesize = linelength;
1373 }
1374 strcpy (line, linebuffer);
1375 return line;
1376 }
1377
1378 return linebuffer;
1379 }
1380 \f
1381 /* Print the GDB banner. */
1382 void
1383 print_gdb_version (struct ui_file *stream)
1384 {
1385 /* From GNU coding standards, first line is meant to be easy for a
1386 program to parse, and is just canonical program name and version
1387 number, which starts after last space. */
1388
1389 #ifdef MI_OUT
1390 /* Print it console style until a format is defined */
1391 fprintf_filtered (stream, "GNU gdb %s (MI_OUT)\n", version);
1392 #else
1393 fprintf_filtered (stream, "GNU gdb %s\n", version);
1394 #endif
1395
1396 /* Second line is a copyright notice. */
1397
1398 fprintf_filtered (stream, "Copyright 2001 Free Software Foundation, Inc.\n");
1399
1400 /* Following the copyright is a brief statement that the program is
1401 free software, that users are free to copy and change it on
1402 certain conditions, that it is covered by the GNU GPL, and that
1403 there is no warranty. */
1404
1405 fprintf_filtered (stream, "\
1406 GDB is free software, covered by the GNU General Public License, and you are\n\
1407 welcome to change it and/or distribute copies of it under certain conditions.\n\
1408 Type \"show copying\" to see the conditions.\n\
1409 There is absolutely no warranty for GDB. Type \"show warranty\" for details.\n");
1410
1411 /* After the required info we print the configuration information. */
1412
1413 fprintf_filtered (stream, "This GDB was configured as \"");
1414 if (!STREQ (host_name, target_name))
1415 {
1416 fprintf_filtered (stream, "--host=%s --target=%s", host_name, target_name);
1417 }
1418 else
1419 {
1420 fprintf_filtered (stream, "%s", host_name);
1421 }
1422 fprintf_filtered (stream, "\".");
1423 }
1424 \f
1425 /* get_prompt: access method for the GDB prompt string. */
1426
1427 #define MAX_PROMPT_SIZE 256
1428
1429 /*
1430 * int get_prompt_1 (char * buf);
1431 *
1432 * Work-horse for get_prompt (called via catch_errors).
1433 * Argument is buffer to hold the formatted prompt.
1434 *
1435 * Returns: 1 for success (use formatted prompt)
1436 * 0 for failure (use gdb_prompt_string).
1437 */
1438
1439 static int gdb_prompt_escape;
1440
1441 static int
1442 get_prompt_1 (void *data)
1443 {
1444 char *formatted_prompt = data;
1445 char *local_prompt;
1446
1447 if (event_loop_p)
1448 local_prompt = PROMPT (0);
1449 else
1450 local_prompt = gdb_prompt_string;
1451
1452
1453 if (gdb_prompt_escape == 0)
1454 {
1455 return 0; /* do no formatting */
1456 }
1457 else
1458 /* formatted prompt */
1459 {
1460 char fmt[40], *promptp, *outp, *tmp;
1461 value_ptr arg_val;
1462 DOUBLEST doubleval;
1463 LONGEST longval;
1464 CORE_ADDR addrval;
1465
1466 int i, len;
1467 struct type *arg_type, *elt_type;
1468
1469 promptp = local_prompt;
1470 outp = formatted_prompt;
1471
1472 while (*promptp != '\0')
1473 {
1474 int available = MAX_PROMPT_SIZE - (outp - formatted_prompt) - 1;
1475
1476 if (*promptp != gdb_prompt_escape)
1477 {
1478 if (available >= 1) /* overflow protect */
1479 *outp++ = *promptp++;
1480 }
1481 else
1482 {
1483 /* GDB prompt string contains escape char. Parse for arg.
1484 Two consecutive escape chars followed by arg followed by
1485 a comma means to insert the arg using a default format.
1486 Otherwise a printf format string may be included between
1487 the two escape chars. eg:
1488 %%foo, insert foo using default format
1489 %2.2f%foo, insert foo using "%2.2f" format
1490 A mismatch between the format string and the data type
1491 of "foo" is an error (which we don't know how to protect
1492 against). */
1493
1494 fmt[0] = '\0'; /* assume null format string */
1495 if (promptp[1] == gdb_prompt_escape) /* double esc char */
1496 {
1497 promptp += 2; /* skip past two escape chars. */
1498 }
1499 else
1500 {
1501 /* extract format string from between two esc chars */
1502 i = 0;
1503 do
1504 {
1505 fmt[i++] = *promptp++; /* copy format string */
1506 }
1507 while (i < sizeof (fmt) - 1 &&
1508 *promptp != gdb_prompt_escape &&
1509 *promptp != '\0');
1510
1511 if (*promptp != gdb_prompt_escape)
1512 error ("Syntax error at prompt position %d",
1513 promptp - local_prompt);
1514 else
1515 {
1516 promptp++; /* skip second escape char */
1517 fmt[i++] = '\0'; /* terminate the format string */
1518 }
1519 }
1520
1521 arg_val = parse_to_comma_and_eval (&promptp);
1522 if (*promptp == ',')
1523 promptp++; /* skip past the comma */
1524 arg_type = check_typedef (VALUE_TYPE (arg_val));
1525 switch (TYPE_CODE (arg_type))
1526 {
1527 case TYPE_CODE_ARRAY:
1528 elt_type = check_typedef (TYPE_TARGET_TYPE (arg_type));
1529 if (TYPE_LENGTH (arg_type) > 0 &&
1530 TYPE_LENGTH (elt_type) == 1 &&
1531 TYPE_CODE (elt_type) == TYPE_CODE_INT)
1532 {
1533 int len = TYPE_LENGTH (arg_type);
1534
1535 if (VALUE_LAZY (arg_val))
1536 value_fetch_lazy (arg_val);
1537 tmp = VALUE_CONTENTS (arg_val);
1538
1539 if (len > available)
1540 len = available; /* overflow protect */
1541
1542 /* FIXME: how to protect GDB from crashing
1543 from bad user-supplied format string? */
1544 if (fmt[0] != 0)
1545 sprintf (outp, fmt, tmp);
1546 else
1547 strncpy (outp, tmp, len);
1548 outp[len] = '\0';
1549 }
1550 break;
1551 case TYPE_CODE_PTR:
1552 elt_type = check_typedef (TYPE_TARGET_TYPE (arg_type));
1553 addrval = value_as_pointer (arg_val);
1554
1555 if (TYPE_LENGTH (elt_type) == 1 &&
1556 TYPE_CODE (elt_type) == TYPE_CODE_INT &&
1557 addrval != 0)
1558 {
1559 /* display it as a string */
1560 char *default_fmt = "%s";
1561 char *tmp;
1562 int err = 0;
1563
1564 /* Limiting the number of bytes that the following call
1565 will read protects us from sprintf overflow later. */
1566 i = target_read_string (addrval, /* src */
1567 &tmp, /* dest */
1568 available, /* len */
1569 &err);
1570 if (err) /* read failed */
1571 error ("%s on target_read", safe_strerror (err));
1572
1573 tmp[i] = '\0'; /* force-terminate string */
1574 /* FIXME: how to protect GDB from crashing
1575 from bad user-supplied format string? */
1576 sprintf (outp, fmt[0] == 0 ? default_fmt : fmt,
1577 tmp);
1578 xfree (tmp);
1579 }
1580 else
1581 {
1582 /* display it as a pointer */
1583 char *default_fmt = "0x%x";
1584
1585 /* FIXME: how to protect GDB from crashing
1586 from bad user-supplied format string? */
1587 if (available >= 16 /*? */ ) /* overflow protect */
1588 sprintf (outp, fmt[0] == 0 ? default_fmt : fmt,
1589 (long) addrval);
1590 }
1591 break;
1592 case TYPE_CODE_FLT:
1593 {
1594 char *default_fmt = "%g";
1595
1596 doubleval = value_as_double (arg_val);
1597 /* FIXME: how to protect GDB from crashing
1598 from bad user-supplied format string? */
1599 if (available >= 16 /*? */ ) /* overflow protect */
1600 sprintf (outp, fmt[0] == 0 ? default_fmt : fmt,
1601 (double) doubleval);
1602 break;
1603 }
1604 case TYPE_CODE_INT:
1605 {
1606 char *default_fmt = "%d";
1607
1608 longval = value_as_long (arg_val);
1609 /* FIXME: how to protect GDB from crashing
1610 from bad user-supplied format string? */
1611 if (available >= 16 /*? */ ) /* overflow protect */
1612 sprintf (outp, fmt[0] == 0 ? default_fmt : fmt,
1613 (long) longval);
1614 break;
1615 }
1616 case TYPE_CODE_BOOL:
1617 {
1618 /* no default format for bool */
1619 longval = value_as_long (arg_val);
1620 if (available >= 8 /*? */ ) /* overflow protect */
1621 {
1622 if (longval)
1623 strcpy (outp, "<true>");
1624 else
1625 strcpy (outp, "<false>");
1626 }
1627 break;
1628 }
1629 case TYPE_CODE_ENUM:
1630 {
1631 /* no default format for enum */
1632 longval = value_as_long (arg_val);
1633 len = TYPE_NFIELDS (arg_type);
1634 /* find enum name if possible */
1635 for (i = 0; i < len; i++)
1636 if (TYPE_FIELD_BITPOS (arg_type, i) == longval)
1637 break; /* match -- end loop */
1638
1639 if (i < len) /* enum name found */
1640 {
1641 char *name = TYPE_FIELD_NAME (arg_type, i);
1642
1643 strncpy (outp, name, available);
1644 /* in casel available < strlen (name), */
1645 outp[available] = '\0';
1646 }
1647 else
1648 {
1649 if (available >= 16 /*? */ ) /* overflow protect */
1650 sprintf (outp, "%ld", (long) longval);
1651 }
1652 break;
1653 }
1654 case TYPE_CODE_VOID:
1655 *outp = '\0';
1656 break; /* void type -- no output */
1657 default:
1658 error ("bad data type at prompt position %d",
1659 promptp - local_prompt);
1660 break;
1661 }
1662 outp += strlen (outp);
1663 }
1664 }
1665 *outp++ = '\0'; /* terminate prompt string */
1666 return 1;
1667 }
1668 }
1669
1670 char *
1671 get_prompt (void)
1672 {
1673 static char buf[MAX_PROMPT_SIZE];
1674
1675 if (catch_errors (get_prompt_1, buf, "bad formatted prompt: ",
1676 RETURN_MASK_ALL))
1677 {
1678 return &buf[0]; /* successful formatted prompt */
1679 }
1680 else
1681 {
1682 /* Prompt could not be formatted. */
1683 if (event_loop_p)
1684 return PROMPT (0);
1685 else
1686 return gdb_prompt_string;
1687 }
1688 }
1689
1690 void
1691 set_prompt (char *s)
1692 {
1693 /* ??rehrauer: I don't know why this fails, since it looks as though
1694 assignments to prompt are wrapped in calls to savestring...
1695 if (prompt != NULL)
1696 xfree (prompt);
1697 */
1698 if (event_loop_p)
1699 PROMPT (0) = savestring (s, strlen (s));
1700 else
1701 gdb_prompt_string = savestring (s, strlen (s));
1702 }
1703 \f
1704
1705 /* If necessary, make the user confirm that we should quit. Return
1706 non-zero if we should quit, zero if we shouldn't. */
1707
1708 int
1709 quit_confirm (void)
1710 {
1711 if (inferior_pid != 0 && target_has_execution)
1712 {
1713 char *s;
1714
1715 /* This is something of a hack. But there's no reliable way to
1716 see if a GUI is running. The `use_windows' variable doesn't
1717 cut it. */
1718 if (init_ui_hook)
1719 s = "A debugging session is active.\nDo you still want to close the debugger?";
1720 else if (attach_flag)
1721 s = "The program is running. Quit anyway (and detach it)? ";
1722 else
1723 s = "The program is running. Exit anyway? ";
1724
1725 if (!query (s))
1726 return 0;
1727 }
1728
1729 return 1;
1730 }
1731
1732 /* Quit without asking for confirmation. */
1733
1734 void
1735 quit_force (char *args, int from_tty)
1736 {
1737 int exit_code = 0;
1738
1739 /* An optional expression may be used to cause gdb to terminate with the
1740 value of that expression. */
1741 if (args)
1742 {
1743 value_ptr val = parse_and_eval (args);
1744
1745 exit_code = (int) value_as_long (val);
1746 }
1747
1748 if (inferior_pid != 0 && target_has_execution)
1749 {
1750 if (attach_flag)
1751 target_detach (args, from_tty);
1752 else
1753 target_kill ();
1754 }
1755
1756 /* UDI wants this, to kill the TIP. */
1757 target_close (1);
1758
1759 /* Save the history information if it is appropriate to do so. */
1760 if (write_history_p && history_filename)
1761 write_history (history_filename);
1762
1763 do_final_cleanups (ALL_CLEANUPS); /* Do any final cleanups before exiting */
1764
1765 #if defined(TUI)
1766 /* tuiDo((TuiOpaqueFuncPtr)tuiCleanUp); */
1767 /* The above does not need to be inside a tuiDo(), since
1768 * it is not manipulating the curses screen, but rather,
1769 * it is tearing it down.
1770 */
1771 if (tui_version)
1772 tuiCleanUp ();
1773 #endif
1774
1775 exit (exit_code);
1776 }
1777
1778 /* Returns whether GDB is running on a terminal and whether the user
1779 desires that questions be asked of them on that terminal. */
1780
1781 int
1782 input_from_terminal_p (void)
1783 {
1784 return gdb_has_a_terminal () && (instream == stdin) & caution;
1785 }
1786 \f
1787 /* ARGSUSED */
1788 static void
1789 dont_repeat_command (char *ignored, int from_tty)
1790 {
1791 *line = 0; /* Can't call dont_repeat here because we're not
1792 necessarily reading from stdin. */
1793 }
1794 \f
1795 /* Functions to manipulate command line editing control variables. */
1796
1797 /* Number of commands to print in each call to show_commands. */
1798 #define Hist_print 10
1799 void
1800 show_commands (char *args, int from_tty)
1801 {
1802 /* Index for history commands. Relative to history_base. */
1803 int offset;
1804
1805 /* Number of the history entry which we are planning to display next.
1806 Relative to history_base. */
1807 static int num = 0;
1808
1809 /* The first command in the history which doesn't exist (i.e. one more
1810 than the number of the last command). Relative to history_base. */
1811 int hist_len;
1812
1813 extern HIST_ENTRY *history_get (int);
1814
1815 /* Print out some of the commands from the command history. */
1816 /* First determine the length of the history list. */
1817 hist_len = history_size;
1818 for (offset = 0; offset < history_size; offset++)
1819 {
1820 if (!history_get (history_base + offset))
1821 {
1822 hist_len = offset;
1823 break;
1824 }
1825 }
1826
1827 if (args)
1828 {
1829 if (args[0] == '+' && args[1] == '\0')
1830 /* "info editing +" should print from the stored position. */
1831 ;
1832 else
1833 /* "info editing <exp>" should print around command number <exp>. */
1834 num = (parse_and_eval_long (args) - history_base) - Hist_print / 2;
1835 }
1836 /* "show commands" means print the last Hist_print commands. */
1837 else
1838 {
1839 num = hist_len - Hist_print;
1840 }
1841
1842 if (num < 0)
1843 num = 0;
1844
1845 /* If there are at least Hist_print commands, we want to display the last
1846 Hist_print rather than, say, the last 6. */
1847 if (hist_len - num < Hist_print)
1848 {
1849 num = hist_len - Hist_print;
1850 if (num < 0)
1851 num = 0;
1852 }
1853
1854 for (offset = num; offset < num + Hist_print && offset < hist_len; offset++)
1855 {
1856 printf_filtered ("%5d %s\n", history_base + offset,
1857 (history_get (history_base + offset))->line);
1858 }
1859
1860 /* The next command we want to display is the next one that we haven't
1861 displayed yet. */
1862 num += Hist_print;
1863
1864 /* If the user repeats this command with return, it should do what
1865 "show commands +" does. This is unnecessary if arg is null,
1866 because "show commands +" is not useful after "show commands". */
1867 if (from_tty && args)
1868 {
1869 args[0] = '+';
1870 args[1] = '\0';
1871 }
1872 }
1873
1874 /* Called by do_setshow_command. */
1875 /* ARGSUSED */
1876 static void
1877 set_history_size_command (char *args, int from_tty, struct cmd_list_element *c)
1878 {
1879 if (history_size == INT_MAX)
1880 unstifle_history ();
1881 else if (history_size >= 0)
1882 stifle_history (history_size);
1883 else
1884 {
1885 history_size = INT_MAX;
1886 error ("History size must be non-negative");
1887 }
1888 }
1889
1890 /* ARGSUSED */
1891 void
1892 set_history (char *args, int from_tty)
1893 {
1894 printf_unfiltered ("\"set history\" must be followed by the name of a history subcommand.\n");
1895 help_list (sethistlist, "set history ", -1, gdb_stdout);
1896 }
1897
1898 /* ARGSUSED */
1899 void
1900 show_history (char *args, int from_tty)
1901 {
1902 cmd_show_list (showhistlist, from_tty, "");
1903 }
1904
1905 int info_verbose = 0; /* Default verbose msgs off */
1906
1907 /* Called by do_setshow_command. An elaborate joke. */
1908 /* ARGSUSED */
1909 void
1910 set_verbose (char *args, int from_tty, struct cmd_list_element *c)
1911 {
1912 char *cmdname = "verbose";
1913 struct cmd_list_element *showcmd;
1914
1915 showcmd = lookup_cmd_1 (&cmdname, showlist, NULL, 1);
1916
1917 if (info_verbose)
1918 {
1919 c->doc = "Set verbose printing of informational messages.";
1920 showcmd->doc = "Show verbose printing of informational messages.";
1921 }
1922 else
1923 {
1924 c->doc = "Set verbosity.";
1925 showcmd->doc = "Show verbosity.";
1926 }
1927 }
1928
1929 static void
1930 float_handler (int signo)
1931 {
1932 /* This message is based on ANSI C, section 4.7. Note that integer
1933 divide by zero causes this, so "float" is a misnomer. */
1934 signal (SIGFPE, float_handler);
1935 error ("Erroneous arithmetic operation.");
1936 }
1937
1938 /* Init the history buffer. Note that we are called after the init file(s)
1939 * have been read so that the user can change the history file via his
1940 * .gdbinit file (for instance). The GDBHISTFILE environment variable
1941 * overrides all of this.
1942 */
1943
1944 void
1945 init_history (void)
1946 {
1947 char *tmpenv;
1948
1949 tmpenv = getenv ("HISTSIZE");
1950 if (tmpenv)
1951 history_size = atoi (tmpenv);
1952 else if (!history_size)
1953 history_size = 256;
1954
1955 stifle_history (history_size);
1956
1957 tmpenv = getenv ("GDBHISTFILE");
1958 if (tmpenv)
1959 history_filename = savestring (tmpenv, strlen (tmpenv));
1960 else if (!history_filename)
1961 {
1962 /* We include the current directory so that if the user changes
1963 directories the file written will be the same as the one
1964 that was read. */
1965 #ifdef __MSDOS__
1966 /* No leading dots in file names are allowed on MSDOS. */
1967 history_filename = concat (current_directory, "/_gdb_history", NULL);
1968 #else
1969 history_filename = concat (current_directory, "/.gdb_history", NULL);
1970 #endif
1971 }
1972 read_history (history_filename);
1973 }
1974
1975 static void
1976 init_main (void)
1977 {
1978 struct cmd_list_element *c;
1979
1980 /* If we are running the asynchronous version,
1981 we initialize the prompts differently. */
1982 if (!event_loop_p)
1983 {
1984 gdb_prompt_string = savestring (DEFAULT_PROMPT, strlen (DEFAULT_PROMPT));
1985 }
1986 else
1987 {
1988 /* initialize the prompt stack to a simple "(gdb) " prompt or to
1989 whatever the DEFAULT_PROMPT is. */
1990 the_prompts.top = 0;
1991 PREFIX (0) = "";
1992 PROMPT (0) = savestring (DEFAULT_PROMPT, strlen (DEFAULT_PROMPT));
1993 SUFFIX (0) = "";
1994 /* Set things up for annotation_level > 1, if the user ever decides
1995 to use it. */
1996 async_annotation_suffix = "prompt";
1997 /* Set the variable associated with the setshow prompt command. */
1998 new_async_prompt = savestring (PROMPT (0), strlen (PROMPT (0)));
1999 }
2000 gdb_prompt_escape = 0; /* default to none. */
2001
2002 /* Set the important stuff up for command editing. */
2003 command_editing_p = 1;
2004 history_expansion_p = 0;
2005 write_history_p = 0;
2006
2007 /* Setup important stuff for command line editing. */
2008 rl_completion_entry_function = (int (*)()) readline_line_completion_function;
2009 rl_completer_word_break_characters =
2010 get_gdb_completer_word_break_characters ();
2011 rl_completer_quote_characters = get_gdb_completer_quote_characters ();
2012 rl_readline_name = "gdb";
2013
2014 /* The set prompt command is different depending whether or not the
2015 async version is run. NOTE: this difference is going to
2016 disappear as we make the event loop be the default engine of
2017 gdb. */
2018 if (!event_loop_p)
2019 {
2020 add_show_from_set
2021 (add_set_cmd ("prompt", class_support, var_string,
2022 (char *) &gdb_prompt_string, "Set gdb's prompt",
2023 &setlist),
2024 &showlist);
2025 }
2026 else
2027 {
2028 c = add_set_cmd ("prompt", class_support, var_string,
2029 (char *) &new_async_prompt, "Set gdb's prompt",
2030 &setlist);
2031 add_show_from_set (c, &showlist);
2032 c->function.sfunc = set_async_prompt;
2033 }
2034
2035 add_show_from_set
2036 (add_set_cmd ("prompt-escape-char", class_support, var_zinteger,
2037 (char *) &gdb_prompt_escape,
2038 "Set escape character for formatting of gdb's prompt",
2039 &setlist),
2040 &showlist);
2041
2042 add_com ("dont-repeat", class_support, dont_repeat_command, "Don't repeat this command.\n\
2043 Primarily used inside of user-defined commands that should not be repeated when\n\
2044 hitting return.");
2045
2046 /* The set editing command is different depending whether or not the
2047 async version is run. NOTE: this difference is going to disappear
2048 as we make the event loop be the default engine of gdb. */
2049 if (!event_loop_p)
2050 {
2051 add_show_from_set
2052 (add_set_cmd ("editing", class_support, var_boolean, (char *) &command_editing_p,
2053 "Set editing of command lines as they are typed.\n\
2054 Use \"on\" to enable the editing, and \"off\" to disable it.\n\
2055 Without an argument, command line editing is enabled. To edit, use\n\
2056 EMACS-like or VI-like commands like control-P or ESC.", &setlist),
2057 &showlist);
2058 }
2059 else
2060 {
2061 c = add_set_cmd ("editing", class_support, var_boolean, (char *) &async_command_editing_p,
2062 "Set editing of command lines as they are typed.\n\
2063 Use \"on\" to enable the editing, and \"off\" to disable it.\n\
2064 Without an argument, command line editing is enabled. To edit, use\n\
2065 EMACS-like or VI-like commands like control-P or ESC.", &setlist);
2066
2067 add_show_from_set (c, &showlist);
2068 c->function.sfunc = set_async_editing_command;
2069 }
2070
2071 add_show_from_set
2072 (add_set_cmd ("save", no_class, var_boolean, (char *) &write_history_p,
2073 "Set saving of the history record on exit.\n\
2074 Use \"on\" to enable the saving, and \"off\" to disable it.\n\
2075 Without an argument, saving is enabled.", &sethistlist),
2076 &showhistlist);
2077
2078 c = add_set_cmd ("size", no_class, var_integer, (char *) &history_size,
2079 "Set the size of the command history, \n\
2080 ie. the number of previous commands to keep a record of.", &sethistlist);
2081 add_show_from_set (c, &showhistlist);
2082 c->function.sfunc = set_history_size_command;
2083
2084 c = add_set_cmd ("filename", no_class, var_filename,
2085 (char *) &history_filename,
2086 "Set the filename in which to record the command history\n\
2087 (the list of previous commands of which a record is kept).", &sethistlist);
2088 c->completer = filename_completer;
2089 add_show_from_set (c, &showhistlist);
2090
2091 add_show_from_set
2092 (add_set_cmd ("confirm", class_support, var_boolean,
2093 (char *) &caution,
2094 "Set whether to confirm potentially dangerous operations.",
2095 &setlist),
2096 &showlist);
2097
2098 /* The set annotate command is different depending whether or not
2099 the async version is run. NOTE: this difference is going to
2100 disappear as we make the event loop be the default engine of
2101 gdb. */
2102 if (!event_loop_p)
2103 {
2104 c = add_set_cmd ("annotate", class_obscure, var_zinteger,
2105 (char *) &annotation_level, "Set annotation_level.\n\
2106 0 == normal; 1 == fullname (for use when running under emacs)\n\
2107 2 == output annotated suitably for use by programs that control GDB.",
2108 &setlist);
2109 c = add_show_from_set (c, &showlist);
2110 }
2111 else
2112 {
2113 c = add_set_cmd ("annotate", class_obscure, var_zinteger,
2114 (char *) &annotation_level, "Set annotation_level.\n\
2115 0 == normal; 1 == fullname (for use when running under emacs)\n\
2116 2 == output annotated suitably for use by programs that control GDB.",
2117 &setlist);
2118 add_show_from_set (c, &showlist);
2119 c->function.sfunc = set_async_annotation_level;
2120 }
2121 if (event_loop_p)
2122 {
2123 add_show_from_set
2124 (add_set_cmd ("exec-done-display", class_support, var_boolean, (char *) &exec_done_display_p,
2125 "Set notification of completion for asynchronous execution commands.\n\
2126 Use \"on\" to enable the notification, and \"off\" to disable it.", &setlist),
2127 &showlist);
2128 }
2129 }
This page took 0.109867 seconds and 4 git commands to generate.