1 /* Top level stuff for GDB, the GNU debugger.
2 Copyright 1986, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 1998
3 Free Software Foundation, Inc.
5 This file is part of GDB.
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.
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.
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, Boston, MA 02111-1307, USA. */
23 #include "call-cmds.h"
28 #include "breakpoint.h"
30 #include "expression.h"
33 #include "terminal.h" /* For job_control. */
38 /* readline include files */
42 /* readline defines this. */
45 #include <sys/types.h>
50 #include "gdb_string.h"
54 extern void initialize_utils PARAMS ((void));
56 /* Prototypes for local functions */
58 static void dont_repeat_command PARAMS ((char *, int));
60 static void source_cleanup_lines PARAMS ((PTR));
62 static void user_defined_command PARAMS ((char *, int));
64 static void init_signals PARAMS ((void));
67 static void stop_sig PARAMS ((int));
70 static char * line_completion_function PARAMS ((char *, int, char *, int));
72 static char * readline_line_completion_function PARAMS ((char *, int));
74 static void command_loop_marker PARAMS ((int));
76 static void while_command PARAMS ((char *, int));
78 static void if_command PARAMS ((char *, int));
80 static struct command_line *
81 build_command_line PARAMS ((enum command_control_type, char *));
83 static struct command_line *
84 get_command_line PARAMS ((enum command_control_type, char *));
86 static void realloc_body_list PARAMS ((struct command_line *, int));
88 static enum misc_command_type read_next_line PARAMS ((struct command_line **));
90 static enum command_control_type
91 recurse_read_control_structure PARAMS ((struct command_line *));
93 static struct cleanup * setup_user_args PARAMS ((char *));
95 static char * locate_arg PARAMS ((char *));
97 static char * insert_args PARAMS ((char *));
99 static void arg_cleanup PARAMS ((void));
101 static void init_main PARAMS ((void));
103 static void init_cmd_lists PARAMS ((void));
105 static void float_handler PARAMS ((int));
107 static void init_signals PARAMS ((void));
109 static void set_verbose PARAMS ((char *, int, struct cmd_list_element *));
111 static void set_endian PARAMS ((char *, int));
113 static void set_endian_big PARAMS ((char *, int));
115 static void set_endian_little PARAMS ((char *, int));
117 static void set_endian_auto PARAMS ((char *, int));
119 static void show_endian PARAMS ((char *, int));
121 static void set_architecture PARAMS ((char *, int));
123 static void show_architecture PARAMS ((char *, int));
125 static void info_architecture PARAMS ((char *, int));
127 static void show_history PARAMS ((char *, int));
129 static void set_history PARAMS ((char *, int));
131 static void set_history_size_command PARAMS ((char *, int,
132 struct cmd_list_element *));
134 static void show_commands PARAMS ((char *, int));
136 static void echo_command PARAMS ((char *, int));
138 static void pwd_command PARAMS ((char *, int));
140 static void show_version PARAMS ((char *, int));
142 static void document_command PARAMS ((char *, int));
144 static void define_command PARAMS ((char *, int));
146 static void validate_comname PARAMS ((char *));
148 static void help_command PARAMS ((char *, int));
150 static void show_command PARAMS ((char *, int));
152 static void info_command PARAMS ((char *, int));
154 static void complete_command PARAMS ((char *, int));
156 static void do_nothing PARAMS ((int));
159 static int quit_cover PARAMS ((char *));
161 static void disconnect PARAMS ((int));
164 static void source_cleanup PARAMS ((FILE *));
166 /* If this definition isn't overridden by the header files, assume
167 that isatty and fileno exist on this system. */
169 #define ISATTY(FP) (isatty (fileno (FP)))
172 /* Initialization file name for gdb. This is overridden in some configs. */
174 #ifndef GDBINIT_FILENAME
175 #define GDBINIT_FILENAME ".gdbinit"
177 char gdbinit[] = GDBINIT_FILENAME;
179 int inhibit_gdbinit = 0;
181 /* If nonzero, and GDB has been configured to be able to use windows,
182 attempt to open them upon startup. */
186 /* Version number of GDB, as a string. */
188 extern char *version;
190 /* Canonical host name as a string. */
192 extern char *host_name;
194 /* Canonical target name as a string. */
196 extern char *target_name;
198 extern char lang_frame_mismatch_warn[]; /* language.c */
200 /* Flag for whether we want all the "from_tty" gubbish printed. */
202 int caution = 1; /* Default is yes, sigh. */
204 /* Define all cmd_list_elements. */
206 /* Chain containing all defined commands. */
208 struct cmd_list_element *cmdlist;
210 /* Chain containing all defined info subcommands. */
212 struct cmd_list_element *infolist;
214 /* Chain containing all defined enable subcommands. */
216 struct cmd_list_element *enablelist;
218 /* Chain containing all defined disable subcommands. */
220 struct cmd_list_element *disablelist;
222 /* Chain containing all defined delete subcommands. */
224 struct cmd_list_element *deletelist;
226 /* Chain containing all defined "enable breakpoint" subcommands. */
228 struct cmd_list_element *enablebreaklist;
230 /* Chain containing all defined set subcommands */
232 struct cmd_list_element *setlist;
234 /* Chain containing all defined unset subcommands */
236 struct cmd_list_element *unsetlist;
238 /* Chain containing all defined show subcommands. */
240 struct cmd_list_element *showlist;
242 /* Chain containing the \"set endian\" commands. */
244 struct cmd_list_element *endianlist;
246 /* Chain containing all defined \"set history\". */
248 struct cmd_list_element *sethistlist;
250 /* Chain containing all defined \"show history\". */
252 struct cmd_list_element *showhistlist;
254 /* Chain containing all defined \"unset history\". */
256 struct cmd_list_element *unsethistlist;
258 /* Chain containing all defined maintenance subcommands. */
261 struct cmd_list_element *maintenancelist;
264 /* Chain containing all defined "maintenance info" subcommands. */
267 struct cmd_list_element *maintenanceinfolist;
270 /* Chain containing all defined "maintenance print" subcommands. */
273 struct cmd_list_element *maintenanceprintlist;
276 struct cmd_list_element *setprintlist;
278 struct cmd_list_element *showprintlist;
280 struct cmd_list_element *setchecklist;
282 struct cmd_list_element *showchecklist;
284 /* stdio stream that command input is being read from. Set to stdin normally.
285 Set by source_command to the file we are sourcing. Set to NULL if we are
286 executing a user-defined command or interacting via a GUI. */
290 /* Current working directory. */
292 char *current_directory;
294 /* The directory name is actually stored here (usually). */
295 char gdb_dirbuf[1024];
297 /* Function to call before reading a command, if nonzero.
298 The function receives two args: an input stream,
299 and a prompt string. */
301 void (*window_hook) PARAMS ((FILE *, char *));
306 /* gdb prints this when reading a command interactively */
309 /* Buffer used for reading command lines, and the size
310 allocated for it so far. */
315 /* Nonzero if the current command is modified by "server ". This
316 affects things like recording into the command history, comamnds
317 repeating on RETURN, etc. This is so a user interface (emacs, GUI,
318 whatever) can issue its own commands and also send along commands
319 from the user, and have the user not notice that the user interface
320 is issuing commands too. */
323 /* Baud rate specified for talking to serial target systems. Default
324 is left as -1, so targets can choose their own defaults. */
325 /* FIXME: This means that "show remotebaud" and gr_files_info can print -1
326 or (unsigned int)-1. This is a Bad User Interface. */
330 /* Timeout limit for response from target. */
332 int remote_timeout = 20; /* Set default to 20 */
334 /* Non-zero tells remote* modules to output debugging info. */
336 int remote_debug = 0;
338 /* Level of control structure. */
339 static int control_level;
341 /* Structure for arguments to user defined functions. */
342 #define MAXUSERARGS 10
345 struct user_args *next;
354 /* Signal to catch ^Z typed while reading a command: SIGTSTP or SIGCONT. */
358 #define STOP_SIGNAL SIGTSTP
359 static void stop_sig PARAMS ((int));
363 /* Some System V have job control but not sigsetmask(). */
364 #if !defined (HAVE_SIGSETMASK)
366 #define HAVE_SIGSETMASK 1
368 #define HAVE_SIGSETMASK 0
372 #if 0 == (HAVE_SIGSETMASK)
373 #define sigsetmask(n)
376 /* Hooks for alternate command interfaces. */
378 /* Called after most modules have been initialized, but before taking users
381 void (*init_ui_hook) PARAMS ((char *argv0));
383 /* Called instead of command_loop at top level. Can be invoked via
384 return_to_top_level. */
386 void (*command_loop_hook) PARAMS ((void));
389 /* Called instead of fputs for all output. */
391 void (*fputs_unfiltered_hook) PARAMS ((const char *linebuffer, FILE *stream));
393 /* Called when the target says something to the host, which may
394 want to appear in a different window. */
396 void (*target_output_hook) PARAMS ((char *));
398 /* Called from print_frame_info to list the line we stopped in. */
400 void (*print_frame_info_listing_hook) PARAMS ((struct symtab *s, int line,
401 int stopline, int noerror));
402 /* Replaces most of query. */
404 int (*query_hook) PARAMS ((const char *, va_list));
406 /* Replaces most of warning. */
408 void (*warning_hook) PARAMS ((const char *, va_list));
410 /* Called from gdb_flush to flush output. */
412 void (*flush_hook) PARAMS ((FILE *stream));
414 /* These three functions support getting lines of text from the user. They
415 are used in sequence. First readline_begin_hook is called with a text
416 string that might be (for example) a message for the user to type in a
417 sequence of commands to be executed at a breakpoint. If this function
418 calls back to a GUI, it might take this opportunity to pop up a text
419 interaction window with this message. Next, readline_hook is called
420 with a prompt that is emitted prior to collecting the user input.
421 It can be called multiple times. Finally, readline_end_hook is called
422 to notify the GUI that we are done with the interaction window and it
425 void (*readline_begin_hook) PARAMS ((char *, ...));
426 char * (*readline_hook) PARAMS ((char *));
427 void (*readline_end_hook) PARAMS ((void));
429 /* Called as appropriate to notify the interface of the specified breakpoint
432 void (*create_breakpoint_hook) PARAMS ((struct breakpoint *bpt));
433 void (*delete_breakpoint_hook) PARAMS ((struct breakpoint *bpt));
434 void (*modify_breakpoint_hook) PARAMS ((struct breakpoint *bpt));
436 /* Called during long calculations to allow GUI to repair window damage, and to
437 check for stop buttons, etc... */
439 void (*interactive_hook) PARAMS ((void));
441 /* Called when the registers have changed, as a hint to a GUI
442 to minimize window update. */
444 void (*registers_changed_hook) PARAMS ((void));
446 /* tell the GUI someone changed the PC */
447 void (*pc_changed_hook) PARAMS ((void));
449 /* Called when going to wait for the target. Usually allows the GUI to run
450 while waiting for target events. */
452 int (*target_wait_hook) PARAMS ((int pid, struct target_waitstatus *status));
454 /* Used by UI as a wrapper around command execution. May do various things
455 like enabling/disabling buttons, etc... */
457 void (*call_command_hook) PARAMS ((struct cmd_list_element *c, char *cmd,
461 /* Takes control from error (). Typically used to prevent longjmps out of the
462 middle of the GUI. Usually used in conjunction with a catch routine. */
464 NORETURN void (*error_hook) PARAMS ((void)) ATTR_NORETURN;
467 /* Where to go for return_to_top_level (RETURN_ERROR). */
468 SIGJMP_BUF error_return;
469 /* Where to go for return_to_top_level (RETURN_QUIT). */
470 SIGJMP_BUF quit_return;
472 /* Return for reason REASON. This generally gets back to the command
473 loop, but can be caught via catch_errors. */
476 return_to_top_level (reason)
477 enum return_reason reason;
482 /* Perhaps it would be cleaner to do this via the cleanup chain (not sure
483 I can think of a reason why that is vital, though). */
484 bpstat_clear_actions(stop_bpstat); /* Clear queued breakpoint commands */
486 disable_current_display ();
487 do_cleanups (ALL_CLEANUPS);
489 if (annotation_level > 1)
500 (NORETURN void) SIGLONGJMP
501 (reason == RETURN_ERROR ? error_return : quit_return, 1);
504 /* Call FUNC with arg ARGS, catching any errors. If there is no
505 error, return the value returned by FUNC. If there is an error,
506 print ERRSTRING, print the specific error message, then return
509 Must not be called with immediate_quit in effect (bad things might
510 happen, say we got a signal in the middle of a memcpy to quit_return).
511 This is an OK restriction; with very few exceptions immediate_quit can
512 be replaced by judicious use of QUIT.
514 MASK specifies what to catch; it is normally set to
515 RETURN_MASK_ALL, if for no other reason than that the code which
516 calls catch_errors might not be set up to deal with a quit which
517 isn't caught. But if the code can deal with it, it generally
518 should be RETURN_MASK_ERROR, unless for some reason it is more
519 useful to abort only the portion of the operation inside the
520 catch_errors. Note that quit should return to the command line
521 fairly quickly, even if some further processing is being done. */
524 catch_errors (func, args, errstring, mask)
525 int (*func) PARAMS ((char *));
530 SIGJMP_BUF saved_error;
531 SIGJMP_BUF saved_quit;
534 struct cleanup *saved_cleanup_chain;
535 char *saved_error_pre_print;
536 char *saved_quit_pre_print;
538 saved_cleanup_chain = save_cleanups ();
539 saved_error_pre_print = error_pre_print;
540 saved_quit_pre_print = quit_pre_print;
542 if (mask & RETURN_MASK_ERROR)
544 memcpy ((char *)saved_error, (char *)error_return, sizeof (SIGJMP_BUF));
545 error_pre_print = errstring;
547 if (mask & RETURN_MASK_QUIT)
549 memcpy (saved_quit, quit_return, sizeof (SIGJMP_BUF));
550 quit_pre_print = errstring;
553 if (SIGSETJMP (tmp_jmp) == 0)
555 if (mask & RETURN_MASK_ERROR)
556 memcpy (error_return, tmp_jmp, sizeof (SIGJMP_BUF));
557 if (mask & RETURN_MASK_QUIT)
558 memcpy (quit_return, tmp_jmp, sizeof (SIGJMP_BUF));
559 val = (*func) (args);
564 restore_cleanups (saved_cleanup_chain);
566 if (mask & RETURN_MASK_ERROR)
568 memcpy (error_return, saved_error, sizeof (SIGJMP_BUF));
569 error_pre_print = saved_error_pre_print;
571 if (mask & RETURN_MASK_QUIT)
573 memcpy (quit_return, saved_quit, sizeof (SIGJMP_BUF));
574 quit_pre_print = saved_quit_pre_print;
579 /* Handler for SIGHUP. */
586 catch_errors (quit_cover, NULL,
587 "Could not kill the program being debugged", RETURN_MASK_ALL);
588 signal (SIGHUP, SIG_DFL);
589 kill (getpid (), SIGHUP);
592 /* Just a little helper function for disconnect(). */
598 caution = 0; /* Throw caution to the wind -- we're exiting.
599 This prevents asking the user dumb questions. */
600 quit_command((char *)0, 0);
603 #endif /* defined SIGHUP */
605 /* Line number we are currently in in a file which is being sourced. */
606 static int source_line_number;
608 /* Name of the file we are sourcing. */
609 static char *source_file_name;
611 /* Buffer containing the error_pre_print used by the source stuff.
613 static char *source_error;
614 static int source_error_allocated;
616 /* Something to glom on to the start of error_pre_print if source_file_name
618 static char *source_pre_error;
620 /* Clean up on error during a "source" command (or execution of a
621 user-defined command). */
624 source_cleanup (stream)
627 /* Restore the previous input stream. */
631 /* Read commands from STREAM. */
633 read_command_file (stream)
636 struct cleanup *cleanups;
638 cleanups = make_cleanup (source_cleanup, instream);
641 do_cleanups (cleanups);
644 extern void init_proc PARAMS ((void));
646 void (*pre_init_ui_hook) PARAMS ((void));
652 if (pre_init_ui_hook)
655 /* Run the init function of each source file */
657 getcwd (gdb_dirbuf, sizeof (gdb_dirbuf));
658 current_directory = gdb_dirbuf;
660 init_cmd_lists (); /* This needs to be done first */
661 initialize_targets (); /* Setup target_terminal macros for utils.c */
662 initialize_utils (); /* Make errors and warnings possible */
663 initialize_all_files ();
664 init_main (); /* But that omits this file! Do it now */
669 /* We need a default language for parsing expressions, so simple things like
670 "set width 0" won't fail if no language is explicitly set in a config file
671 or implicitly set by reading an executable during startup. */
672 set_language (language_c);
673 expected_language = current_language; /* don't warn about the change. */
676 init_ui_hook (argv0);
679 /* Allocate, initialize a new command line structure for one of the
680 control commands (if/while). */
682 static struct command_line *
683 build_command_line (type, args)
684 enum command_control_type type;
687 struct command_line *cmd;
690 error ("if/while commands require arguments.\n");
692 cmd = (struct command_line *)xmalloc (sizeof (struct command_line));
694 cmd->control_type = type;
698 = (struct command_line **)xmalloc (sizeof (struct command_line *)
700 memset (cmd->body_list, 0, sizeof (struct command_line *) * cmd->body_count);
701 cmd->line = savestring (args, strlen (args));
705 /* Build and return a new command structure for the control commands
706 such as "if" and "while". */
708 static struct command_line *
709 get_command_line (type, arg)
710 enum command_control_type type;
713 struct command_line *cmd;
714 struct cleanup *old_chain = NULL;
716 /* Allocate and build a new command line structure. */
717 cmd = build_command_line (type, arg);
719 old_chain = make_cleanup (free_command_lines, &cmd);
721 /* Read in the body of this command. */
722 if (recurse_read_control_structure (cmd) == invalid_control)
724 warning ("error reading in control structure\n");
725 do_cleanups (old_chain);
729 discard_cleanups (old_chain);
733 /* Recursively print a command (including full control structures). */
735 print_command_line (cmd, depth)
736 struct command_line *cmd;
743 for (i = 0; i < depth; i++)
744 fputs_filtered (" ", gdb_stdout);
747 /* A simple command, print it and return. */
748 if (cmd->control_type == simple_control)
750 fputs_filtered (cmd->line, gdb_stdout);
751 fputs_filtered ("\n", gdb_stdout);
755 /* loop_continue to jump to the start of a while loop, print it
757 if (cmd->control_type == continue_control)
759 fputs_filtered ("loop_continue\n", gdb_stdout);
763 /* loop_break to break out of a while loop, print it and return. */
764 if (cmd->control_type == break_control)
766 fputs_filtered ("loop_break\n", gdb_stdout);
770 /* A while command. Recursively print its subcommands before returning. */
771 if (cmd->control_type == while_control)
773 struct command_line *list;
774 fputs_filtered ("while ", gdb_stdout);
775 fputs_filtered (cmd->line, gdb_stdout);
776 fputs_filtered ("\n", gdb_stdout);
777 list = *cmd->body_list;
780 print_command_line (list, depth + 1);
785 /* An if command. Recursively print both arms before returning. */
786 if (cmd->control_type == if_control)
788 fputs_filtered ("if ", gdb_stdout);
789 fputs_filtered (cmd->line, gdb_stdout);
790 fputs_filtered ("\n", gdb_stdout);
792 print_command_line (cmd->body_list[0], depth + 1);
794 /* Show the false arm if it exists. */
795 if (cmd->body_count == 2)
799 for (i = 0; i < depth; i++)
800 fputs_filtered (" ", gdb_stdout);
802 fputs_filtered ("else\n", gdb_stdout);
803 print_command_line (cmd->body_list[1], depth + 1);
807 for (i = 0; i < depth; i++)
808 fputs_filtered (" ", gdb_stdout);
810 fputs_filtered ("end\n", gdb_stdout);
814 /* Execute the command in CMD. */
816 enum command_control_type
817 execute_control_command (cmd)
818 struct command_line *cmd;
820 struct expression *expr;
821 struct command_line *current;
822 struct cleanup *old_chain = 0;
826 enum command_control_type ret;
829 switch (cmd->control_type)
832 /* A simple command, execute it and return. */
833 new_line = insert_args (cmd->line);
835 return invalid_control;
836 old_chain = make_cleanup (free_current_contents, &new_line);
837 execute_command (new_line, 0);
838 ret = cmd->control_type;
841 case continue_control:
843 /* Return for "continue", and "break" so we can either
844 continue the loop at the top, or break out. */
845 ret = cmd->control_type;
850 /* Parse the loop control expression for the while statement. */
851 new_line = insert_args (cmd->line);
853 return invalid_control;
854 old_chain = make_cleanup (free_current_contents, &new_line);
855 expr = parse_expression (new_line);
856 make_cleanup (free_current_contents, &expr);
858 ret = simple_control;
861 /* Keep iterating so long as the expression is true. */
868 /* Evaluate the expression. */
869 val_mark = value_mark ();
870 val = evaluate_expression (expr);
871 cond_result = value_true (val);
872 value_free_to_mark (val_mark);
874 /* If the value is false, then break out of the loop. */
878 /* Execute the body of the while statement. */
879 current = *cmd->body_list;
882 ret = execute_control_command (current);
884 /* If we got an error, or a "break" command, then stop
886 if (ret == invalid_control || ret == break_control)
892 /* If we got a "continue" command, then restart the loop
894 if (ret == continue_control)
897 /* Get the next statement. */
898 current = current->next;
902 /* Reset RET so that we don't recurse the break all the way down. */
903 if (ret == break_control)
904 ret = simple_control;
911 new_line = insert_args (cmd->line);
913 return invalid_control;
914 old_chain = make_cleanup (free_current_contents, &new_line);
915 /* Parse the conditional for the if statement. */
916 expr = parse_expression (new_line);
917 make_cleanup (free_current_contents, &expr);
920 ret = simple_control;
922 /* Evaluate the conditional. */
923 val_mark = value_mark ();
924 val = evaluate_expression (expr);
926 /* Choose which arm to take commands from based on the value of the
927 conditional expression. */
928 if (value_true (val))
929 current = *cmd->body_list;
930 else if (cmd->body_count == 2)
931 current = *(cmd->body_list + 1);
932 value_free_to_mark (val_mark);
934 /* Execute commands in the given arm. */
937 ret = execute_control_command (current);
939 /* If we got an error, get out. */
940 if (ret != simple_control)
943 /* Get the next statement in the body. */
944 current = current->next;
951 warning ("Invalid control type in command structure.");
952 return invalid_control;
956 do_cleanups (old_chain);
961 /* "while" command support. Executes a body of statements while the
962 loop condition is nonzero. */
965 while_command (arg, from_tty)
969 struct command_line *command = NULL;
972 command = get_command_line (while_control, arg);
977 execute_control_command (command);
978 free_command_lines (&command);
981 /* "if" command support. Execute either the true or false arm depending
982 on the value of the if conditional. */
985 if_command (arg, from_tty)
989 struct command_line *command = NULL;
992 command = get_command_line (if_control, arg);
997 execute_control_command (command);
998 free_command_lines (&command);
1005 struct user_args *oargs = user_args;
1007 fatal ("Internal error, arg_cleanup called with no user args.\n");
1009 user_args = user_args->next;
1013 /* Bind the incomming arguments for a user defined command to
1014 $arg0, $arg1 ... $argMAXUSERARGS. */
1016 static struct cleanup *
1020 struct user_args *args;
1021 struct cleanup *old_chain;
1022 unsigned int arg_count = 0;
1024 args = (struct user_args *)xmalloc (sizeof (struct user_args));
1025 memset (args, 0, sizeof (struct user_args));
1027 args->next = user_args;
1030 old_chain = make_cleanup (arg_cleanup, 0);
1042 if (arg_count >= MAXUSERARGS)
1044 error ("user defined function may only have %d arguments.\n",
1049 /* Strip whitespace. */
1050 while (*p == ' ' || *p == '\t')
1053 /* P now points to an argument. */
1055 user_args->a[arg_count].arg = p;
1057 /* Get to the end of this argument. */
1060 if (((*p == ' ' || *p == '\t')) && !squote && !dquote && !bsquote)
1066 else if (*p == '\\')
1089 user_args->a[arg_count].len = p - start_arg;
1096 /* Given character string P, return a point to the first argument ($arg),
1097 or NULL if P contains no arguments. */
1103 while ((p = strchr (p, '$')))
1105 if (strncmp (p, "$arg", 4) == 0 && isdigit (p[4]))
1112 /* Insert the user defined arguments stored in user_arg into the $arg
1113 arguments found in line, with the updated copy being placed into nline. */
1119 char *p, *save_line, *new_line;
1122 /* First we need to know how much memory to allocate for the new line. */
1125 while ((p = locate_arg (line)))
1130 if (i >= user_args->count)
1132 error ("Missing argument %d in user function.\n", i);
1135 len += user_args->a[i].len;
1139 /* Don't forget the tail. */
1140 len += strlen (line);
1142 /* Allocate space for the new line and fill it in. */
1143 new_line = (char *)xmalloc (len + 1);
1144 if (new_line == NULL)
1147 /* Restore pointer to beginning of old line. */
1150 /* Save pointer to beginning of new line. */
1151 save_line = new_line;
1153 while ((p = locate_arg (line)))
1157 memcpy (new_line, line, p - line);
1158 new_line += p - line;
1161 len = user_args->a[i].len;
1164 memcpy (new_line, user_args->a[i].arg, len);
1169 /* Don't forget the tail. */
1170 strcpy (new_line, line);
1172 /* Return a pointer to the beginning of the new line. */
1177 execute_user_command (c, args)
1178 struct cmd_list_element *c;
1181 register struct command_line *cmdlines;
1182 struct cleanup *old_chain;
1183 enum command_control_type ret;
1185 old_chain = setup_user_args (args);
1187 cmdlines = c->user_commands;
1192 /* Set the instream to 0, indicating execution of a
1193 user-defined function. */
1194 old_chain = make_cleanup (source_cleanup, instream);
1195 instream = (FILE *) 0;
1198 ret = execute_control_command (cmdlines);
1199 if (ret != simple_control && ret != break_control)
1201 warning ("Error in control structure.\n");
1204 cmdlines = cmdlines->next;
1206 do_cleanups (old_chain);
1209 /* Execute the line P as a command.
1210 Pass FROM_TTY as second argument to the defining function. */
1213 execute_command (p, from_tty)
1217 register struct cmd_list_element *c;
1218 register enum language flang;
1219 static int warned = 0;
1220 /* FIXME: These should really be in an appropriate header file */
1221 extern void serial_log_command PARAMS ((const char *));
1225 /* Force cleanup of any alloca areas if using C alloca instead of
1226 a builtin alloca. */
1229 /* This can happen when command_line_input hits end of file. */
1233 serial_log_command (p);
1235 while (*p == ' ' || *p == '\t') p++;
1240 c = lookup_cmd (&p, cmdlist, "", 0, 1);
1241 /* Pass null arg rather than an empty one. */
1244 /* Clear off trailing whitespace, except for set and complete command. */
1245 if (arg && c->type != set_cmd && c->function.cfunc != complete_command)
1247 p = arg + strlen (arg) - 1;
1248 while (p >= arg && (*p == ' ' || *p == '\t'))
1253 /* If this command has been hooked, run the hook first. */
1255 execute_user_command (c->hook, (char *)0);
1257 if (c->class == class_user)
1258 execute_user_command (c, arg);
1259 else if (c->type == set_cmd || c->type == show_cmd)
1260 do_setshow_command (arg, from_tty & caution, c);
1261 else if (c->function.cfunc == NO_FUNCTION)
1262 error ("That is not a command, just a help topic.");
1263 else if (call_command_hook)
1264 call_command_hook (c, arg, from_tty & caution);
1266 (*c->function.cfunc) (arg, from_tty & caution);
1269 /* Tell the user if the language has changed (except first time). */
1270 if (current_language != expected_language)
1272 if (language_mode == language_mode_auto) {
1273 language_info (1); /* Print what changed. */
1278 /* Warn the user if the working language does not match the
1279 language of the current frame. Only warn the user if we are
1280 actually running the program, i.e. there is a stack. */
1281 /* FIXME: This should be cacheing the frame and only running when
1282 the frame changes. */
1284 if (target_has_stack)
1286 flang = get_frame_language ();
1288 && flang != language_unknown
1289 && flang != current_language->la_language)
1291 printf_filtered ("%s\n", lang_frame_mismatch_warn);
1299 command_loop_marker (foo)
1304 /* Read commands from `instream' and execute them
1305 until end of file or error reading instream. */
1310 struct cleanup *old_chain;
1312 int stdin_is_tty = ISATTY (stdin);
1313 long time_at_cmd_start;
1315 long space_at_cmd_start;
1317 extern int display_time;
1318 extern int display_space;
1320 while (instream && !feof (instream))
1322 if (window_hook && instream == stdin)
1323 (*window_hook) (instream, prompt);
1326 if (instream == stdin && stdin_is_tty)
1327 reinitialize_more_filter ();
1328 old_chain = make_cleanup (command_loop_marker, 0);
1329 command = command_line_input (instream == stdin ? prompt : (char *) NULL,
1330 instream == stdin, "prompt");
1334 time_at_cmd_start = get_run_time ();
1339 extern char **environ;
1340 char *lim = (char *) sbrk (0);
1342 space_at_cmd_start = (long) (lim - (char *) &environ);
1346 execute_command (command, instream == stdin);
1347 /* Do any commands attached to breakpoint we stopped at. */
1348 bpstat_do_actions (&stop_bpstat);
1349 do_cleanups (old_chain);
1353 long cmd_time = get_run_time () - time_at_cmd_start;
1355 printf_unfiltered ("Command execution time: %ld.%06ld\n",
1356 cmd_time / 1000000, cmd_time % 1000000);
1362 extern char **environ;
1363 char *lim = (char *) sbrk (0);
1364 long space_now = lim - (char *) &environ;
1365 long space_diff = space_now - space_at_cmd_start;
1367 printf_unfiltered ("Space used: %ld (%c%ld for this command)\n",
1369 (space_diff >= 0 ? '+' : '-'),
1376 /* Commands call this if they do not want to be repeated by null lines. */
1384 /* If we aren't reading from standard input, we are saving the last
1385 thing read from stdin in line and don't want to delete it. Null lines
1386 won't repeat here in any case. */
1387 if (instream == stdin)
1391 /* Read a line from the stream "instream" without command line editing.
1393 It prints PRROMPT once at the start.
1394 Action is compatible with "readline", e.g. space for the result is
1395 malloc'd and should be freed by the caller.
1397 A NULL return means end of file. */
1399 gdb_readline (prrompt)
1404 int input_index = 0;
1405 int result_size = 80;
1409 /* Don't use a _filtered function here. It causes the assumed
1410 character position to be off, since the newline we read from
1411 the user is not accounted for. */
1412 fputs_unfiltered (prrompt, gdb_stdout);
1414 /* Move to a new line so the entered line doesn't have a prompt
1415 on the front of it. */
1416 fputs_unfiltered ("\n", gdb_stdout);
1418 gdb_flush (gdb_stdout);
1421 result = (char *) xmalloc (result_size);
1425 /* Read from stdin if we are executing a user defined command.
1426 This is the right thing for prompt_for_continue, at least. */
1427 c = fgetc (instream ? instream : stdin);
1431 if (input_index > 0)
1432 /* The last line does not end with a newline. Return it, and
1433 if we are called again fgetc will still return EOF and
1434 we'll return NULL then. */
1443 result[input_index++] = c;
1444 while (input_index >= result_size)
1447 result = (char *) xrealloc (result, result_size);
1451 result[input_index++] = '\0';
1455 /* Variables which control command line editing and history
1456 substitution. These variables are given default values at the end
1458 static int command_editing_p;
1459 static int history_expansion_p;
1460 static int write_history_p;
1461 static int history_size;
1462 static char *history_filename;
1464 /* readline uses the word breaks for two things:
1465 (1) In figuring out where to point the TEXT parameter to the
1466 rl_completion_entry_function. Since we don't use TEXT for much,
1467 it doesn't matter a lot what the word breaks are for this purpose, but
1468 it does affect how much stuff M-? lists.
1469 (2) If one of the matches contains a word break character, readline
1470 will quote it. That's why we switch between
1471 gdb_completer_word_break_characters and
1472 gdb_completer_command_word_break_characters. I'm not sure when
1473 we need this behavior (perhaps for funky characters in C++ symbols?). */
1475 /* Variables which are necessary for fancy command line editing. */
1476 char *gdb_completer_word_break_characters =
1477 " \t\n!@#$%^&*()+=|~`}{[]\"';:?/>.<,-";
1479 /* When completing on command names, we remove '-' from the list of
1480 word break characters, since we use it in command names. If the
1481 readline library sees one in any of the current completion strings,
1482 it thinks that the string needs to be quoted and automatically supplies
1484 char *gdb_completer_command_word_break_characters =
1485 " \t\n!@#$%^&*()+=|~`}{[]\"';:?/>.<,";
1487 /* Characters that can be used to quote completion strings. Note that we
1488 can't include '"' because the gdb C parser treats such quoted sequences
1490 char *gdb_completer_quote_characters =
1493 /* Functions that are used as part of the fancy command line editing. */
1495 /* This can be used for functions which don't want to complete on symbols
1496 but don't want to complete on anything else either. */
1499 noop_completer (text, prefix)
1506 /* Complete on filenames. */
1508 filename_completer (text, word)
1512 /* From readline. */
1513 extern char *filename_completion_function PARAMS ((char *, int));
1514 int subsequent_name;
1516 int return_val_used;
1517 int return_val_alloced;
1519 return_val_used = 0;
1520 /* Small for testing. */
1521 return_val_alloced = 1;
1522 return_val = (char **) xmalloc (return_val_alloced * sizeof (char *));
1524 subsequent_name = 0;
1528 p = filename_completion_function (text, subsequent_name);
1529 if (return_val_used >= return_val_alloced)
1531 return_val_alloced *= 2;
1533 (char **) xrealloc (return_val,
1534 return_val_alloced * sizeof (char *));
1538 return_val[return_val_used++] = p;
1541 /* Like emacs, don't complete on old versions. Especially useful
1542 in the "source" command. */
1543 if (p[strlen (p) - 1] == '~')
1549 /* Return exactly p. */
1550 return_val[return_val_used++] = p;
1551 else if (word > text)
1553 /* Return some portion of p. */
1554 q = xmalloc (strlen (p) + 5);
1555 strcpy (q, p + (word - text));
1556 return_val[return_val_used++] = q;
1561 /* Return some of TEXT plus p. */
1562 q = xmalloc (strlen (p) + (text - word) + 5);
1563 strncpy (q, word, text - word);
1564 q[text - word] = '\0';
1566 return_val[return_val_used++] = q;
1570 subsequent_name = 1;
1573 /* There is no way to do this just long enough to affect quote inserting
1574 without also affecting the next completion. This should be fixed in
1576 /* Insure that readline does the right thing
1577 with respect to inserting quotes. */
1578 rl_completer_word_break_characters = "";
1583 /* Here are some useful test cases for completion. FIXME: These should
1584 be put in the test suite. They should be tested with both M-? and TAB.
1586 "show output-" "radix"
1587 "show output" "-radix"
1588 "p" ambiguous (commands starting with p--path, print, printf, etc.)
1589 "p " ambiguous (all symbols)
1590 "info t foo" no completions
1591 "info t " no completions
1592 "info t" ambiguous ("info target", "info terminal", etc.)
1593 "info ajksdlfk" no completions
1594 "info ajksdlfk " no completions
1596 "info " ambiguous (all info commands)
1597 "p \"a" no completions (string constant)
1598 "p 'a" ambiguous (all symbols starting with a)
1599 "p b-a" ambiguous (all symbols starting with a)
1600 "p b-" ambiguous (all symbols)
1601 "file Make" "file" (word break hard to screw up here)
1602 "file ../gdb.stabs/we" "ird" (needs to not break word at slash)
1605 /* Generate completions one by one for the completer. Each time we are
1606 called return another potential completion to the caller.
1607 line_completion just completes on commands or passes the buck to the
1608 command's completer function, the stuff specific to symbol completion
1609 is in make_symbol_completion_list.
1611 TEXT is the caller's idea of the "word" we are looking at.
1613 MATCHES is the number of matches that have currently been collected from
1614 calling this completion function. When zero, then we need to initialize,
1615 otherwise the initialization has already taken place and we can just
1616 return the next potential completion string.
1618 LINE_BUFFER is available to be looked at; it contains the entire text
1619 of the line. POINT is the offset in that line of the cursor. You
1620 should pretend that the line ends at POINT.
1622 Returns NULL if there are no more completions, else a pointer to a string
1623 which is a possible completion, it is the caller's responsibility to
1627 line_completion_function (text, matches, line_buffer, point)
1633 static char **list = (char **)NULL; /* Cache of completions */
1634 static int index; /* Next cached completion */
1635 char *output = NULL;
1636 char *tmp_command, *p;
1637 /* Pointer within tmp_command which corresponds to text. */
1639 struct cmd_list_element *c, *result_list;
1643 /* The caller is beginning to accumulate a new set of completions, so
1644 we need to find all of them now, and cache them for returning one at
1645 a time on future calls. */
1649 /* Free the storage used by LIST, but not by the strings inside.
1650 This is because rl_complete_internal () frees the strings. */
1656 /* Choose the default set of word break characters to break completions.
1657 If we later find out that we are doing completions on command strings
1658 (as opposed to strings supplied by the individual command completer
1659 functions, which can be any string) then we will switch to the
1660 special word break set for command strings, which leaves out the
1661 '-' character used in some commands. */
1663 rl_completer_word_break_characters =
1664 gdb_completer_word_break_characters;
1666 /* Decide whether to complete on a list of gdb commands or on symbols. */
1667 tmp_command = (char *) alloca (point + 1);
1670 strncpy (tmp_command, line_buffer, point);
1671 tmp_command[point] = '\0';
1672 /* Since text always contains some number of characters leading up
1673 to point, we can find the equivalent position in tmp_command
1674 by subtracting that many characters from the end of tmp_command. */
1675 word = tmp_command + point - strlen (text);
1679 /* An empty line we want to consider ambiguous; that is, it
1680 could be any command. */
1681 c = (struct cmd_list_element *) -1;
1686 c = lookup_cmd_1 (&p, cmdlist, &result_list, 1);
1689 /* Move p up to the next interesting thing. */
1690 while (*p == ' ' || *p == '\t')
1697 /* It is an unrecognized command. So there are no
1698 possible completions. */
1701 else if (c == (struct cmd_list_element *) -1)
1705 /* lookup_cmd_1 advances p up to the first ambiguous thing, but
1706 doesn't advance over that thing itself. Do so now. */
1708 while (*q && (isalnum (*q) || *q == '-' || *q == '_'))
1710 if (q != tmp_command + point)
1712 /* There is something beyond the ambiguous
1713 command, so there are no possible completions. For
1714 example, "info t " or "info t foo" does not complete
1715 to anything, because "info t" can be "info target" or
1721 /* We're trying to complete on the command which was ambiguous.
1722 This we can deal with. */
1725 list = complete_on_cmdlist (*result_list->prefixlist, p,
1730 list = complete_on_cmdlist (cmdlist, p, word);
1732 /* Insure that readline does the right thing with respect to
1733 inserting quotes. */
1734 rl_completer_word_break_characters =
1735 gdb_completer_command_word_break_characters;
1740 /* We've recognized a full command. */
1742 if (p == tmp_command + point)
1744 /* There is no non-whitespace in the line beyond the command. */
1746 if (p[-1] == ' ' || p[-1] == '\t')
1748 /* The command is followed by whitespace; we need to complete
1749 on whatever comes after command. */
1752 /* It is a prefix command; what comes after it is
1753 a subcommand (e.g. "info "). */
1754 list = complete_on_cmdlist (*c->prefixlist, p, word);
1756 /* Insure that readline does the right thing
1757 with respect to inserting quotes. */
1758 rl_completer_word_break_characters =
1759 gdb_completer_command_word_break_characters;
1763 list = complete_on_enum (c->enums, p, word);
1764 rl_completer_word_break_characters =
1765 gdb_completer_command_word_break_characters;
1769 /* It is a normal command; what comes after it is
1770 completed by the command's completer function. */
1771 list = (*c->completer) (p, word);
1776 /* The command is not followed by whitespace; we need to
1777 complete on the command itself. e.g. "p" which is a
1778 command itself but also can complete to "print", "ptype"
1782 /* Find the command we are completing on. */
1784 while (q > tmp_command)
1786 if (isalnum (q[-1]) || q[-1] == '-' || q[-1] == '_')
1792 list = complete_on_cmdlist (result_list, q, word);
1794 /* Insure that readline does the right thing
1795 with respect to inserting quotes. */
1796 rl_completer_word_break_characters =
1797 gdb_completer_command_word_break_characters;
1802 /* There is non-whitespace beyond the command. */
1804 if (c->prefixlist && !c->allow_unknown)
1806 /* It is an unrecognized subcommand of a prefix command,
1807 e.g. "info adsfkdj". */
1812 list = complete_on_enum (c->enums, p, word);
1816 /* It is a normal command. */
1817 list = (*c->completer) (p, word);
1823 /* If we found a list of potential completions during initialization then
1824 dole them out one at a time. The vector of completions is NULL
1825 terminated, so after returning the last one, return NULL (and continue
1826 to do so) each time we are called after that, until a new list is
1831 output = list[index];
1839 /* Can't do this because readline hasn't yet checked the word breaks
1840 for figuring out whether to insert a quote. */
1842 /* Make sure the word break characters are set back to normal for the
1843 next time that readline tries to complete something. */
1844 rl_completer_word_break_characters =
1845 gdb_completer_word_break_characters;
1851 /* Line completion interface function for readline. */
1854 readline_line_completion_function (text, matches)
1858 return line_completion_function (text, matches, rl_line_buffer, rl_point);
1861 /* Skip over a possibly quoted word (as defined by the quote characters
1862 and word break characters the completer uses). Returns pointer to the
1863 location after the "word". */
1869 char quote_char = '\0';
1872 for (scan = str; *scan != '\0'; scan++)
1874 if (quote_char != '\0')
1876 /* Ignore everything until the matching close quote char */
1877 if (*scan == quote_char)
1879 /* Found matching close quote. */
1884 else if (strchr (gdb_completer_quote_characters, *scan))
1886 /* Found start of a quoted string. */
1889 else if (strchr (gdb_completer_word_break_characters, *scan))
1903 #if STOP_SIGNAL == SIGTSTP
1904 signal (SIGTSTP, SIG_DFL);
1906 kill (getpid (), SIGTSTP);
1907 signal (SIGTSTP, stop_sig);
1909 signal (STOP_SIGNAL, stop_sig);
1911 printf_unfiltered ("%s", prompt);
1912 gdb_flush (gdb_stdout);
1914 /* Forget about any previous command -- null line now will do nothing. */
1917 #endif /* STOP_SIGNAL */
1919 /* Initialize signal handlers. */
1924 /* Under System V the default disposition of a signal is reinstated after
1925 the signal is caught and delivered to an application process. On such
1926 systems one must restore the replacement signal handler if one wishes
1927 to continue handling the signal in one's program. On BSD systems this
1928 is not needed but it is harmless, and it simplifies the code to just do
1929 it unconditionally. */
1930 signal (signo, do_nothing);
1936 signal (SIGINT, request_quit);
1938 /* If SIGTRAP was set to SIG_IGN, then the SIG_IGN will get passed
1939 to the inferior and breakpoints will be ignored. */
1941 signal (SIGTRAP, SIG_DFL);
1944 /* If we initialize SIGQUIT to SIG_IGN, then the SIG_IGN will get
1945 passed to the inferior, which we don't want. It would be
1946 possible to do a "signal (SIGQUIT, SIG_DFL)" after we fork, but
1947 on BSD4.3 systems using vfork, that can affect the
1948 GDB process as well as the inferior (the signal handling tables
1949 might be in memory, shared between the two). Since we establish
1950 a handler for SIGQUIT, when we call exec it will set the signal
1951 to SIG_DFL for us. */
1952 signal (SIGQUIT, do_nothing);
1954 if (signal (SIGHUP, do_nothing) != SIG_IGN)
1955 signal (SIGHUP, disconnect);
1957 signal (SIGFPE, float_handler);
1959 #if defined(SIGWINCH) && defined(SIGWINCH_HANDLER)
1960 signal (SIGWINCH, SIGWINCH_HANDLER);
1964 /* Read one line from the command input stream `instream'
1965 into the local static buffer `linebuffer' (whose current length
1967 The buffer is made bigger as necessary.
1968 Returns the address of the start of the line.
1970 NULL is returned for end of file.
1972 *If* the instream == stdin & stdin is a terminal, the line read
1973 is copied into the file line saver (global var char *line,
1974 length linesize) so that it can be duplicated.
1976 This routine either uses fancy command line editing or
1977 simple input as the user has requested. */
1980 command_line_input (prrompt, repeat, annotation_suffix)
1983 char *annotation_suffix;
1985 static char *linebuffer = 0;
1986 static unsigned linelength = 0;
1990 char *local_prompt = prrompt;
1994 /* The annotation suffix must be non-NULL. */
1995 if (annotation_suffix == NULL)
1996 annotation_suffix = "";
1998 if (annotation_level > 1 && instream == stdin)
2000 local_prompt = alloca ((prrompt == NULL ? 0 : strlen (prrompt))
2001 + strlen (annotation_suffix) + 40);
2002 if (prrompt == NULL)
2003 local_prompt[0] = '\0';
2005 strcpy (local_prompt, prrompt);
2006 strcat (local_prompt, "\n\032\032");
2007 strcat (local_prompt, annotation_suffix);
2008 strcat (local_prompt, "\n");
2011 if (linebuffer == 0)
2014 linebuffer = (char *) xmalloc (linelength);
2019 /* Control-C quits instantly if typed while in this loop
2020 since it should not wait until the user types a newline. */
2024 signal (STOP_SIGNAL, stop_sig);
2029 /* Make sure that all output has been output. Some machines may let
2030 you get away with leaving out some of the gdb_flush, but not all. */
2032 gdb_flush (gdb_stdout);
2033 gdb_flush (gdb_stderr);
2035 if (source_file_name != NULL)
2037 ++source_line_number;
2038 sprintf (source_error,
2039 "%s%s:%d: Error in sourced command file:\n",
2042 source_line_number);
2043 error_pre_print = source_error;
2046 if (annotation_level > 1 && instream == stdin)
2048 printf_unfiltered ("\n\032\032pre-");
2049 printf_unfiltered (annotation_suffix);
2050 printf_unfiltered ("\n");
2053 /* Don't use fancy stuff if not talking to stdin. */
2054 if (readline_hook && instream == NULL)
2056 rl = (*readline_hook) (local_prompt);
2058 else if (command_editing_p && instream == stdin && ISATTY (instream))
2060 rl = readline (local_prompt);
2064 rl = gdb_readline (local_prompt);
2067 if (annotation_level > 1 && instream == stdin)
2069 printf_unfiltered ("\n\032\032post-");
2070 printf_unfiltered (annotation_suffix);
2071 printf_unfiltered ("\n");
2074 if (!rl || rl == (char *) EOF)
2079 if (strlen(rl) + 1 + (p - linebuffer) > linelength)
2081 linelength = strlen(rl) + 1 + (p - linebuffer);
2082 nline = (char *) xrealloc (linebuffer, linelength);
2083 p += nline - linebuffer;
2087 /* Copy line. Don't copy null at end. (Leaves line alone
2088 if this was just a newline) */
2092 free (rl); /* Allocated in readline. */
2094 if (p == linebuffer || *(p - 1) != '\\')
2097 p--; /* Put on top of '\'. */
2098 local_prompt = (char *) 0;
2103 signal (STOP_SIGNAL, SIG_DFL);
2110 #define SERVER_COMMAND_LENGTH 7
2112 (p - linebuffer > SERVER_COMMAND_LENGTH)
2113 && STREQN (linebuffer, "server ", SERVER_COMMAND_LENGTH);
2116 /* Note that we don't set `line'. Between this and the check in
2117 dont_repeat, this insures that repeating will still do the
2120 return linebuffer + SERVER_COMMAND_LENGTH;
2123 /* Do history expansion if that is wished. */
2124 if (history_expansion_p && instream == stdin
2125 && ISATTY (instream))
2127 char *history_value;
2130 *p = '\0'; /* Insert null now. */
2131 expanded = history_expand (linebuffer, &history_value);
2134 /* Print the changes. */
2135 printf_unfiltered ("%s\n", history_value);
2137 /* If there was an error, call this function again. */
2140 free (history_value);
2141 return command_line_input (prrompt, repeat, annotation_suffix);
2143 if (strlen (history_value) > linelength)
2145 linelength = strlen (history_value) + 1;
2146 linebuffer = (char *) xrealloc (linebuffer, linelength);
2148 strcpy (linebuffer, history_value);
2149 p = linebuffer + strlen(linebuffer);
2150 free (history_value);
2154 /* If we just got an empty line, and that is supposed
2155 to repeat the previous command, return the value in the
2157 if (repeat && p == linebuffer)
2159 for (p1 = linebuffer; *p1 == ' ' || *p1 == '\t'; p1++) ;
2165 /* Add line to history if appropriate. */
2166 if (instream == stdin
2167 && ISATTY (stdin) && *linebuffer)
2168 add_history (linebuffer);
2170 /* Note: lines consisting solely of comments are added to the command
2171 history. This is useful when you type a command, and then
2172 realize you don't want to execute it quite yet. You can comment
2173 out the command and then later fetch it from the value history
2174 and remove the '#'. The kill ring is probably better, but some
2175 people are in the habit of commenting things out. */
2177 *p1 = '\0'; /* Found a comment. */
2179 /* Save into global buffer if appropriate. */
2182 if (linelength > linesize)
2184 line = xrealloc (line, linelength);
2185 linesize = linelength;
2187 strcpy (line, linebuffer);
2195 /* Expand the body_list of COMMAND so that it can hold NEW_LENGTH
2196 code bodies. This is typically used when we encounter an "else"
2197 clause for an "if" command. */
2200 realloc_body_list (command, new_length)
2201 struct command_line *command;
2205 struct command_line **body_list;
2207 n = command->body_count;
2209 /* Nothing to do? */
2210 if (new_length <= n)
2213 body_list = (struct command_line **)
2214 xmalloc (sizeof (struct command_line *) * new_length);
2216 memcpy (body_list, command->body_list, sizeof (struct command_line *) * n);
2218 free (command->body_list);
2219 command->body_list = body_list;
2220 command->body_count = new_length;
2223 /* Read one line from the input stream. If the command is an "else" or
2224 "end", return such an indication to the caller. */
2226 static enum misc_command_type
2227 read_next_line (command)
2228 struct command_line **command;
2230 char *p, *p1, *prompt_ptr, control_prompt[256];
2233 if (control_level >= 254)
2234 error ("Control nesting too deep!\n");
2236 /* Set a prompt based on the nesting of the control commands. */
2237 if (instream == stdin || (instream == 0 && readline_hook != NULL))
2239 for (i = 0; i < control_level; i++)
2240 control_prompt[i] = ' ';
2241 control_prompt[i] = '>';
2242 control_prompt[i+1] = '\0';
2243 prompt_ptr = (char *)&control_prompt[0];
2248 p = command_line_input (prompt_ptr, instream == stdin, "commands");
2250 /* Not sure what to do here. */
2254 /* Strip leading and trailing whitespace. */
2255 while (*p == ' ' || *p == '\t')
2258 p1 = p + strlen (p);
2259 while (p1 != p && (p1[-1] == ' ' || p1[-1] == '\t'))
2262 /* Blanks and comments don't really do anything, but we need to
2263 distinguish them from else, end and other commands which can be
2265 if (p1 == p || p[0] == '#')
2268 /* Is this the end of a simple, while, or if control structure? */
2269 if (p1 - p == 3 && !strncmp (p, "end", 3))
2272 /* Is the else clause of an if control structure? */
2273 if (p1 - p == 4 && !strncmp (p, "else", 4))
2274 return else_command;
2276 /* Check for while, if, break, continue, etc and build a new command
2277 line structure for them. */
2278 if (p1 - p > 5 && !strncmp (p, "while", 5))
2279 *command = build_command_line (while_control, p + 6);
2280 else if (p1 - p > 2 && !strncmp (p, "if", 2))
2281 *command = build_command_line (if_control, p + 3);
2282 else if (p1 - p == 10 && !strncmp (p, "loop_break", 10))
2284 *command = (struct command_line *)
2285 xmalloc (sizeof (struct command_line));
2286 (*command)->next = NULL;
2287 (*command)->line = NULL;
2288 (*command)->control_type = break_control;
2289 (*command)->body_count = 0;
2290 (*command)->body_list = NULL;
2292 else if (p1 - p == 13 && !strncmp (p, "loop_continue", 13))
2294 *command = (struct command_line *)
2295 xmalloc (sizeof (struct command_line));
2296 (*command)->next = NULL;
2297 (*command)->line = NULL;
2298 (*command)->control_type = continue_control;
2299 (*command)->body_count = 0;
2300 (*command)->body_list = NULL;
2304 /* A normal command. */
2305 *command = (struct command_line *)
2306 xmalloc (sizeof (struct command_line));
2307 (*command)->next = NULL;
2308 (*command)->line = savestring (p, p1 - p);
2309 (*command)->control_type = simple_control;
2310 (*command)->body_count = 0;
2311 (*command)->body_list = NULL;
2314 /* Nothing special. */
2318 /* Recursively read in the control structures and create a command_line
2319 structure from them.
2321 The parent_control parameter is the control structure in which the
2322 following commands are nested. */
2324 static enum command_control_type
2325 recurse_read_control_structure (current_cmd)
2326 struct command_line *current_cmd;
2328 int current_body, i;
2329 enum misc_command_type val;
2330 enum command_control_type ret;
2331 struct command_line **body_ptr, *child_tail, *next;
2336 /* Sanity checks. */
2337 if (current_cmd->control_type == simple_control)
2339 error ("Recursed on a simple control type\n");
2340 return invalid_control;
2343 if (current_body > current_cmd->body_count)
2345 error ("Allocated body is smaller than this command type needs\n");
2346 return invalid_control;
2349 /* Read lines from the input stream and build control structures. */
2355 val = read_next_line (&next);
2357 /* Just skip blanks and comments. */
2358 if (val == nop_command)
2361 if (val == end_command)
2363 if (current_cmd->control_type == while_control
2364 || current_cmd->control_type == if_control)
2366 /* Success reading an entire control structure. */
2367 ret = simple_control;
2372 ret = invalid_control;
2377 /* Not the end of a control structure. */
2378 if (val == else_command)
2380 if (current_cmd->control_type == if_control
2381 && current_body == 1)
2383 realloc_body_list (current_cmd, 2);
2390 ret = invalid_control;
2397 child_tail->next = next;
2401 body_ptr = current_cmd->body_list;
2402 for (i = 1; i < current_body; i++)
2411 /* If the latest line is another control structure, then recurse
2413 if (next->control_type == while_control
2414 || next->control_type == if_control)
2417 ret = recurse_read_control_structure (next);
2420 if (ret != simple_control)
2430 /* Read lines from the input stream and accumulate them in a chain of
2431 struct command_line's, which is then returned. For input from a
2432 terminal, the special command "end" is used to mark the end of the
2433 input, and is not included in the returned chain of commands. */
2435 #define END_MESSAGE "End with a line saying just \"end\"."
2437 struct command_line *
2438 read_command_lines (prompt, from_tty)
2442 struct command_line *head, *tail, *next;
2443 struct cleanup *old_chain;
2444 enum command_control_type ret;
2445 enum misc_command_type val;
2447 if (readline_begin_hook)
2449 /* Note - intentional to merge messages with no newline */
2450 (*readline_begin_hook) ("%s %s\n", prompt, END_MESSAGE);
2452 else if (from_tty && input_from_terminal_p ())
2454 printf_unfiltered ("%s\n%s\n", prompt, END_MESSAGE);
2455 gdb_flush (gdb_stdout);
2463 val = read_next_line (&next);
2465 /* Ignore blank lines or comments. */
2466 if (val == nop_command)
2469 if (val == end_command)
2471 ret = simple_control;
2475 if (val != ok_command)
2477 ret = invalid_control;
2481 if (next->control_type == while_control
2482 || next->control_type == if_control)
2485 ret = recurse_read_control_structure (next);
2488 if (ret == invalid_control)
2499 old_chain = make_cleanup (free_command_lines, &head);
2508 if (ret != invalid_control)
2510 discard_cleanups (old_chain);
2513 do_cleanups (old_chain);
2516 if (readline_end_hook)
2518 (*readline_end_hook) ();
2523 /* Free a chain of struct command_line's. */
2526 free_command_lines (lptr)
2527 struct command_line **lptr;
2529 register struct command_line *l = *lptr;
2530 register struct command_line *next;
2531 struct command_line **blist;
2536 if (l->body_count > 0)
2538 blist = l->body_list;
2539 for (i = 0; i < l->body_count; i++, blist++)
2540 free_command_lines (blist);
2549 /* Add an element to the list of info subcommands. */
2552 add_info (name, fun, doc)
2554 void (*fun) PARAMS ((char *, int));
2557 add_cmd (name, no_class, fun, doc, &infolist);
2560 /* Add an alias to the list of info subcommands. */
2563 add_info_alias (name, oldname, abbrev_flag)
2568 add_alias_cmd (name, oldname, 0, abbrev_flag, &infolist);
2571 /* The "info" command is defined as a prefix, with allow_unknown = 0.
2572 Therefore, its own definition is called only for "info" with no args. */
2576 info_command (arg, from_tty)
2580 printf_unfiltered ("\"info\" must be followed by the name of an info command.\n");
2581 help_list (infolist, "info ", -1, gdb_stdout);
2584 /* The "complete" command is used by Emacs to implement completion. */
2588 complete_command (arg, from_tty)
2600 argpoint = strlen (arg);
2602 for (completion = line_completion_function (arg, i = 0, arg, argpoint);
2604 completion = line_completion_function (arg, ++i, arg, argpoint))
2606 printf_unfiltered ("%s\n", completion);
2611 /* The "show" command with no arguments shows all the settings. */
2615 show_command (arg, from_tty)
2619 cmd_show_list (showlist, from_tty, "");
2622 /* Add an element to the list of commands. */
2625 add_com (name, class, fun, doc)
2627 enum command_class class;
2628 void (*fun) PARAMS ((char *, int));
2631 add_cmd (name, class, fun, doc, &cmdlist);
2634 /* Add an alias or abbreviation command to the list of commands. */
2637 add_com_alias (name, oldname, class, abbrev_flag)
2640 enum command_class class;
2643 add_alias_cmd (name, oldname, class, abbrev_flag, &cmdlist);
2650 error ("Argument required (%s).", why);
2655 help_command (command, from_tty)
2657 int from_tty; /* Ignored */
2659 help_cmd (command, gdb_stdout);
2663 validate_comname (comname)
2669 error_no_arg ("name of command to define");
2674 if (!isalnum(*p) && *p != '-' && *p != '_')
2675 error ("Junk in argument list: \"%s\"", p);
2680 /* This is just a placeholder in the command data structures. */
2682 user_defined_command (ignore, from_tty)
2689 define_command (comname, from_tty)
2693 register struct command_line *cmds;
2694 register struct cmd_list_element *c, *newc, *hookc = 0;
2695 char *tem = comname;
2697 #define HOOK_STRING "hook-"
2700 validate_comname (comname);
2702 /* Look it up, and verify that we got an exact match. */
2703 c = lookup_cmd (&tem, cmdlist, "", -1, 1);
2704 if (c && !STREQ (comname, c->name))
2709 if (c->class == class_user || c->class == class_alias)
2710 tem = "Redefine command \"%s\"? ";
2712 tem = "Really redefine built-in command \"%s\"? ";
2713 if (!query (tem, c->name))
2714 error ("Command \"%s\" not redefined.", c->name);
2717 /* If this new command is a hook, then mark the command which it
2718 is hooking. Note that we allow hooking `help' commands, so that
2719 we can hook the `stop' pseudo-command. */
2721 if (!strncmp (comname, HOOK_STRING, HOOK_LEN))
2723 /* Look up cmd it hooks, and verify that we got an exact match. */
2724 tem = comname+HOOK_LEN;
2725 hookc = lookup_cmd (&tem, cmdlist, "", -1, 0);
2726 if (hookc && !STREQ (comname+HOOK_LEN, hookc->name))
2730 warning ("Your new `%s' command does not hook any existing command.",
2732 if (!query ("Proceed? "))
2733 error ("Not confirmed.");
2737 comname = savestring (comname, strlen (comname));
2739 /* If the rest of the commands will be case insensitive, this one
2740 should behave in the same manner. */
2741 for (tem = comname; *tem; tem++)
2742 if (isupper(*tem)) *tem = tolower(*tem);
2745 sprintf (tmpbuf, "Type commands for definition of \"%s\".", comname);
2746 cmds = read_command_lines (tmpbuf, from_tty);
2748 if (c && c->class == class_user)
2749 free_command_lines (&c->user_commands);
2751 newc = add_cmd (comname, class_user, user_defined_command,
2752 (c && c->class == class_user)
2753 ? c->doc : savestring ("User-defined.", 13), &cmdlist);
2754 newc->user_commands = cmds;
2756 /* If this new command is a hook, then mark both commands as being
2760 hookc->hook = newc; /* Target gets hooked. */
2761 newc->hookee = hookc; /* We are marked as hooking target cmd. */
2766 document_command (comname, from_tty)
2770 struct command_line *doclines;
2771 register struct cmd_list_element *c;
2772 char *tem = comname;
2775 validate_comname (comname);
2777 c = lookup_cmd (&tem, cmdlist, "", 0, 1);
2779 if (c->class != class_user)
2780 error ("Command \"%s\" is built-in.", comname);
2782 sprintf (tmpbuf, "Type documentation for \"%s\".", comname);
2783 doclines = read_command_lines (tmpbuf, from_tty);
2785 if (c->doc) free (c->doc);
2788 register struct command_line *cl1;
2789 register int len = 0;
2791 for (cl1 = doclines; cl1; cl1 = cl1->next)
2792 len += strlen (cl1->line) + 1;
2794 c->doc = (char *) xmalloc (len + 1);
2797 for (cl1 = doclines; cl1; cl1 = cl1->next)
2799 strcat (c->doc, cl1->line);
2801 strcat (c->doc, "\n");
2805 free_command_lines (&doclines);
2809 print_gdb_version (stream)
2812 /* From GNU coding standards, first line is meant to be easy for a
2813 program to parse, and is just canonical program name and version
2814 number, which starts after last space. */
2816 fprintf_filtered (stream, "GNU gdb %s\n", version);
2818 /* Second line is a copyright notice. */
2820 fprintf_filtered (stream, "Copyright 1998 Free Software Foundation, Inc.\n");
2822 /* Following the copyright is a brief statement that the program is
2823 free software, that users are free to copy and change it on
2824 certain conditions, that it is covered by the GNU GPL, and that
2825 there is no warranty. */
2827 fprintf_filtered (stream, "\
2828 GDB is free software, covered by the GNU General Public License, and you are\n\
2829 welcome to change it and/or distribute copies of it under certain conditions.\n\
2830 Type \"show copying\" to see the conditions.\n\
2831 There is absolutely no warranty for GDB. Type \"show warranty\" for details.\n");
2833 /* After the required info we print the configuration information. */
2835 fprintf_filtered (stream, "This GDB was configured as \"");
2836 if (!STREQ (host_name, target_name))
2838 fprintf_filtered (stream, "--host=%s --target=%s", host_name, target_name);
2842 fprintf_filtered (stream, "%s", host_name);
2844 fprintf_filtered (stream, "\".");
2849 show_version (args, from_tty)
2854 print_gdb_version (gdb_stdout);
2855 printf_filtered ("\n");
2859 /* xgdb calls this to reprint the usual GDB prompt. Obsolete now that xgdb
2865 printf_unfiltered ("%s", prompt);
2866 gdb_flush (gdb_stdout);
2869 /* This replaces the above for the frontends: it returns a pointer
2877 /* If necessary, make the user confirm that we should quit. Return
2878 non-zero if we should quit, zero if we shouldn't. */
2883 if (inferior_pid != 0 && target_has_execution)
2887 /* This is something of a hack. But there's no reliable way to
2888 see if a GUI is running. The `use_windows' variable doesn't
2891 s = "A debugging session is active.\nDo you still want to close the debugger?";
2892 else if (attach_flag)
2893 s = "The program is running. Quit anyway (and detach it)? ";
2895 s = "The program is running. Exit anyway? ";
2904 /* Quit without asking for confirmation. */
2907 quit_force (args, from_tty)
2913 /* An optional expression may be used to cause gdb to terminate with the
2914 value of that expression. */
2917 value_ptr val = parse_and_eval (args);
2919 exit_code = (int) value_as_long (val);
2922 if (inferior_pid != 0 && target_has_execution)
2925 target_detach (args, from_tty);
2930 /* UDI wants this, to kill the TIP. */
2933 /* Save the history information if it is appropriate to do so. */
2934 if (write_history_p && history_filename)
2935 write_history (history_filename);
2937 do_final_cleanups(ALL_CLEANUPS); /* Do any final cleanups before exiting */
2942 /* Handle the quit command. */
2945 quit_command (args, from_tty)
2949 if (! quit_confirm ())
2950 error ("Not confirmed.");
2951 quit_force (args, from_tty);
2954 /* Returns whether GDB is running on a terminal and whether the user
2955 desires that questions be asked of them on that terminal. */
2958 input_from_terminal_p ()
2960 return gdb_has_a_terminal () && (instream == stdin) & caution;
2965 pwd_command (args, from_tty)
2969 if (args) error ("The \"pwd\" command does not take an argument: %s", args);
2970 getcwd (gdb_dirbuf, sizeof (gdb_dirbuf));
2972 if (!STREQ (gdb_dirbuf, current_directory))
2973 printf_unfiltered ("Working directory %s\n (canonically %s).\n",
2974 current_directory, gdb_dirbuf);
2976 printf_unfiltered ("Working directory %s.\n", current_directory);
2980 cd_command (dir, from_tty)
2985 /* Found something other than leading repetitions of "/..". */
2986 int found_real_path;
2989 /* If the new directory is absolute, repeat is a no-op; if relative,
2990 repeat might be useful but is more likely to be a mistake. */
2994 error_no_arg ("new working directory");
2996 dir = tilde_expand (dir);
2997 make_cleanup (free, dir);
2999 if (chdir (dir) < 0)
3000 perror_with_name (dir);
3003 dir = savestring (dir, len - (len > 1 && SLASH_P(dir[len-1])));
3005 current_directory = dir;
3008 if (SLASH_P (current_directory[0]) && current_directory[1] == '\0')
3009 current_directory = concat (current_directory, dir, NULL);
3011 current_directory = concat (current_directory, SLASH_STRING, dir, NULL);
3015 /* Now simplify any occurrences of `.' and `..' in the pathname. */
3017 found_real_path = 0;
3018 for (p = current_directory; *p;)
3020 if (SLASH_P (p[0]) && p[1] == '.' && (p[2] == 0 || SLASH_P (p[2])))
3022 else if (SLASH_P (p[0]) && p[1] == '.' && p[2] == '.'
3023 && (p[3] == 0 || SLASH_P (p[3])))
3025 if (found_real_path)
3027 /* Search backwards for the directory just before the "/.."
3028 and obliterate it and the "/..". */
3030 while (q != current_directory && ! SLASH_P (q[-1]))
3033 if (q == current_directory)
3034 /* current_directory is
3035 a relative pathname ("can't happen"--leave it alone). */
3039 strcpy (q - 1, p + 3);
3044 /* We are dealing with leading repetitions of "/..", for example
3045 "/../..", which is the Mach super-root. */
3050 found_real_path = 1;
3055 forget_cached_source_info ();
3058 pwd_command ((char *) 0, 1);
3061 struct source_cleanup_lines_args {
3064 char *old_pre_error;
3065 char *old_error_pre_print;
3069 source_cleanup_lines (args)
3072 struct source_cleanup_lines_args *p =
3073 (struct source_cleanup_lines_args *)args;
3074 source_line_number = p->old_line;
3075 source_file_name = p->old_file;
3076 source_pre_error = p->old_pre_error;
3077 error_pre_print = p->old_error_pre_print;
3082 source_command (args, from_tty)
3087 struct cleanup *old_cleanups;
3089 struct source_cleanup_lines_args old_lines;
3094 error ("source command requires pathname of file to source.");
3097 file = tilde_expand (file);
3098 old_cleanups = make_cleanup (free, file);
3100 stream = fopen (file, FOPEN_RT);
3103 perror_with_name (file);
3107 make_cleanup (fclose, stream);
3109 old_lines.old_line = source_line_number;
3110 old_lines.old_file = source_file_name;
3111 old_lines.old_pre_error = source_pre_error;
3112 old_lines.old_error_pre_print = error_pre_print;
3113 make_cleanup (source_cleanup_lines, &old_lines);
3114 source_line_number = 0;
3115 source_file_name = file;
3116 source_pre_error = error_pre_print == NULL ? "" : error_pre_print;
3117 source_pre_error = savestring (source_pre_error, strlen (source_pre_error));
3118 make_cleanup (free, source_pre_error);
3119 /* This will get set every time we read a line. So it won't stay "" for
3121 error_pre_print = "";
3123 needed_length = strlen (source_file_name) + strlen (source_pre_error) + 80;
3124 if (source_error_allocated < needed_length)
3126 source_error_allocated *= 2;
3127 if (source_error_allocated < needed_length)
3128 source_error_allocated = needed_length;
3129 if (source_error == NULL)
3130 source_error = xmalloc (source_error_allocated);
3132 source_error = xrealloc (source_error, source_error_allocated);
3135 read_command_file (stream);
3137 do_cleanups (old_cleanups);
3142 echo_command (text, from_tty)
3150 while ((c = *p++) != '\0')
3154 /* \ at end of argument is used after spaces
3155 so they won't be lost. */
3159 c = parse_escape (&p);
3161 printf_filtered ("%c", c);
3164 printf_filtered ("%c", c);
3167 /* Force this output to appear now. */
3169 gdb_flush (gdb_stdout);
3174 dont_repeat_command (ignored, from_tty)
3178 *line = 0; /* Can't call dont_repeat here because we're not
3179 necessarily reading from stdin. */
3182 /* Functions to manipulate the endianness of the target. */
3184 #ifdef TARGET_BYTE_ORDER_SELECTABLE
3185 #ifndef TARGET_BYTE_ORDER_DEFAULT
3186 #define TARGET_BYTE_ORDER_DEFAULT BIG_ENDIAN
3188 int target_byte_order = TARGET_BYTE_ORDER_DEFAULT;
3189 int target_byte_order_auto = 1;
3191 static int target_byte_order_auto = 0;
3194 /* Called if the user enters ``set endian'' without an argument. */
3196 set_endian (args, from_tty)
3200 printf_unfiltered ("\"set endian\" must be followed by \"auto\", \"big\" or \"little\".\n");
3201 show_endian (args, from_tty);
3204 /* Called by ``set endian big''. */
3206 set_endian_big (args, from_tty)
3210 #ifdef TARGET_BYTE_ORDER_SELECTABLE
3211 target_byte_order = BIG_ENDIAN;
3212 target_byte_order_auto = 0;
3214 printf_unfiltered ("Byte order is not selectable.");
3215 show_endian (args, from_tty);
3219 /* Called by ``set endian little''. */
3221 set_endian_little (args, from_tty)
3225 #ifdef TARGET_BYTE_ORDER_SELECTABLE
3226 target_byte_order = LITTLE_ENDIAN;
3227 target_byte_order_auto = 0;
3229 printf_unfiltered ("Byte order is not selectable.");
3230 show_endian (args, from_tty);
3234 /* Called by ``set endian auto''. */
3236 set_endian_auto (args, from_tty)
3240 #ifdef TARGET_BYTE_ORDER_SELECTABLE
3241 target_byte_order_auto = 1;
3243 printf_unfiltered ("Byte order is not selectable.");
3244 show_endian (args, from_tty);
3248 /* Called by ``show endian''. */
3250 show_endian (args, from_tty)
3255 (target_byte_order_auto
3256 ? "The target endianness is set automatically (currently %s endian)\n"
3257 : "The target is assumed to be %s endian\n");
3258 printf_unfiltered ((char *) msg, TARGET_BYTE_ORDER == BIG_ENDIAN ? "big" : "little");
3261 /* Set the endianness from a BFD. */
3263 set_endian_from_file (abfd)
3266 #ifdef TARGET_BYTE_ORDER_SELECTABLE
3269 if (bfd_big_endian (abfd))
3272 want = LITTLE_ENDIAN;
3273 if (target_byte_order_auto)
3274 target_byte_order = want;
3275 else if (target_byte_order != want)
3276 warning ("%s endian file does not match %s endian target.",
3277 want == BIG_ENDIAN ? "big" : "little",
3278 TARGET_BYTE_ORDER == BIG_ENDIAN ? "big" : "little");
3280 #else /* ! defined (TARGET_BYTE_ORDER_SELECTABLE) */
3282 if (bfd_big_endian (abfd)
3283 ? TARGET_BYTE_ORDER != BIG_ENDIAN
3284 : TARGET_BYTE_ORDER == BIG_ENDIAN)
3285 warning ("%s endian file does not match %s endian target.",
3286 bfd_big_endian (abfd) ? "big" : "little",
3287 TARGET_BYTE_ORDER == BIG_ENDIAN ? "big" : "little");
3289 #endif /* ! defined (TARGET_BYTE_ORDER_SELECTABLE) */
3292 /* Functions to manipulate the architecture of the target */
3294 int target_architecture_auto = 1;
3295 extern const bfd_arch_info_type bfd_default_arch_struct;
3296 const bfd_arch_info_type *target_architecture = &bfd_default_arch_struct;
3297 int (*target_architecture_hook) PARAMS ((const bfd_arch_info_type *ap));
3301 const bfd_arch_info_type *arch;
3303 /* FIXME: Is it compatible with gdb? */
3304 /* Check with the target on the setting */
3305 if (target_architecture_hook != NULL
3306 && !target_architecture_hook (arch))
3307 printf_unfiltered ("Target does not support `%s' architecture.\n",
3308 arch->printable_name);
3311 target_architecture_auto = 0;
3312 target_architecture = arch;
3317 /* Called if the user enters ``set architecture'' with or without an
3320 set_architecture (args, from_tty)
3326 printf_unfiltered ("\"set architecture\" must be followed by \"auto\" or an architecture name.\n");
3328 else if (strcmp (args, "auto") == 0)
3330 target_architecture_auto = 1;
3334 const bfd_arch_info_type *arch = bfd_scan_arch (args);
3338 printf_unfiltered ("Architecture `%s' not reconized.\n", args);
3342 /* Called if the user enters ``show architecture'' without an argument. */
3344 show_architecture (args, from_tty)
3349 arch = target_architecture->printable_name;
3350 if (target_architecture_auto)
3351 printf_filtered ("The target architecture is set automatically (currently %s)\n", arch);
3353 printf_filtered ("The target architecture is assumed to be %s\n", arch);
3356 /* Called if the user enters ``info architecture'' without an argument. */
3358 info_architecture (args, from_tty)
3362 enum bfd_architecture a;
3363 printf_filtered ("Available architectures are:\n");
3364 for (a = bfd_arch_obscure + 1; a < bfd_arch_last; a++)
3366 const bfd_arch_info_type *ap = bfd_lookup_arch (a, 0);
3371 printf_filtered (" %s", ap->printable_name);
3375 printf_filtered ("\n");
3380 /* Set the architecture from arch/machine */
3382 set_architecture_from_arch_mach (arch, mach)
3383 enum bfd_architecture arch;
3386 const bfd_arch_info_type *wanted = bfd_lookup_arch (arch, mach);
3390 fatal ("hardwired architecture/machine not reconized");
3394 /* Set the architecture from a BFD */
3396 set_architecture_from_file (abfd)
3399 const bfd_arch_info_type *wanted = bfd_get_arch_info (abfd);
3400 if (target_architecture_auto)
3402 if (target_architecture_hook != NULL
3403 && !target_architecture_hook (wanted))
3404 warning ("Target may not support %s architecture",
3405 wanted->printable_name);
3406 target_architecture = wanted;
3408 else if (wanted != target_architecture)
3410 warning ("%s architecture file may be incompatible with %s target.",
3411 wanted->printable_name,
3412 target_architecture->printable_name);
3416 /* Functions to manipulate command line editing control variables. */
3418 /* Number of commands to print in each call to show_commands. */
3419 #define Hist_print 10
3421 show_commands (args, from_tty)
3425 /* Index for history commands. Relative to history_base. */
3428 /* Number of the history entry which we are planning to display next.
3429 Relative to history_base. */
3432 /* The first command in the history which doesn't exist (i.e. one more
3433 than the number of the last command). Relative to history_base. */
3436 extern HIST_ENTRY *history_get PARAMS ((int));
3438 /* Print out some of the commands from the command history. */
3439 /* First determine the length of the history list. */
3440 hist_len = history_size;
3441 for (offset = 0; offset < history_size; offset++)
3443 if (!history_get (history_base + offset))
3452 if (args[0] == '+' && args[1] == '\0')
3453 /* "info editing +" should print from the stored position. */
3456 /* "info editing <exp>" should print around command number <exp>. */
3457 num = (parse_and_eval_address (args) - history_base) - Hist_print / 2;
3459 /* "show commands" means print the last Hist_print commands. */
3462 num = hist_len - Hist_print;
3468 /* If there are at least Hist_print commands, we want to display the last
3469 Hist_print rather than, say, the last 6. */
3470 if (hist_len - num < Hist_print)
3472 num = hist_len - Hist_print;
3477 for (offset = num; offset < num + Hist_print && offset < hist_len; offset++)
3479 printf_filtered ("%5d %s\n", history_base + offset,
3480 (history_get (history_base + offset))->line);
3483 /* The next command we want to display is the next one that we haven't
3487 /* If the user repeats this command with return, it should do what
3488 "show commands +" does. This is unnecessary if arg is null,
3489 because "show commands +" is not useful after "show commands". */
3490 if (from_tty && args)
3497 /* Called by do_setshow_command. */
3500 set_history_size_command (args, from_tty, c)
3503 struct cmd_list_element *c;
3505 if (history_size == INT_MAX)
3506 unstifle_history ();
3507 else if (history_size >= 0)
3508 stifle_history (history_size);
3511 history_size = INT_MAX;
3512 error ("History size must be non-negative");
3518 set_history (args, from_tty)
3522 printf_unfiltered ("\"set history\" must be followed by the name of a history subcommand.\n");
3523 help_list (sethistlist, "set history ", -1, gdb_stdout);
3528 show_history (args, from_tty)
3532 cmd_show_list (showhistlist, from_tty, "");
3535 int info_verbose = 0; /* Default verbose msgs off */
3537 /* Called by do_setshow_command. An elaborate joke. */
3540 set_verbose (args, from_tty, c)
3543 struct cmd_list_element *c;
3545 char *cmdname = "verbose";
3546 struct cmd_list_element *showcmd;
3548 showcmd = lookup_cmd_1 (&cmdname, showlist, NULL, 1);
3552 c->doc = "Set verbose printing of informational messages.";
3553 showcmd->doc = "Show verbose printing of informational messages.";
3557 c->doc = "Set verbosity.";
3558 showcmd->doc = "Show verbosity.";
3563 float_handler (signo)
3566 /* This message is based on ANSI C, section 4.7. Note that integer
3567 divide by zero causes this, so "float" is a misnomer. */
3568 signal (SIGFPE, float_handler);
3569 error ("Erroneous arithmetic operation.");
3581 enablebreaklist = NULL;
3587 showhistlist = NULL;
3588 unsethistlist = NULL;
3589 #if MAINTENANCE_CMDS
3590 maintenancelist = NULL;
3591 maintenanceinfolist = NULL;
3592 maintenanceprintlist = NULL;
3594 setprintlist = NULL;
3595 showprintlist = NULL;
3596 setchecklist = NULL;
3597 showchecklist = NULL;
3600 /* Init the history buffer. Note that we are called after the init file(s)
3601 * have been read so that the user can change the history file via his
3602 * .gdbinit file (for instance). The GDBHISTFILE environment variable
3603 * overrides all of this.
3611 tmpenv = getenv ("HISTSIZE");
3613 history_size = atoi (tmpenv);
3614 else if (!history_size)
3617 stifle_history (history_size);
3619 tmpenv = getenv ("GDBHISTFILE");
3621 history_filename = savestring (tmpenv, strlen(tmpenv));
3622 else if (!history_filename) {
3623 /* We include the current directory so that if the user changes
3624 directories the file written will be the same as the one
3626 history_filename = concat (current_directory, "/.gdb_history", NULL);
3628 read_history (history_filename);
3634 struct cmd_list_element *c;
3636 add_prefix_cmd ("endian", class_support, set_endian,
3637 "Set endianness of target.",
3638 &endianlist, "set endian ", 0, &setlist);
3639 add_cmd ("big", class_support, set_endian_big,
3640 "Set target as being big endian.", &endianlist);
3641 add_cmd ("little", class_support, set_endian_little,
3642 "Set target as being little endian.", &endianlist);
3643 add_cmd ("auto", class_support, set_endian_auto,
3644 "Select target endianness automatically.", &endianlist);
3645 add_cmd ("endian", class_support, show_endian,
3646 "Show endianness of target.", &showlist);
3648 add_cmd ("architecture", class_support, set_architecture,
3649 "Set architecture of target.", &setlist);
3650 add_alias_cmd ("processor", "architecture", class_support, 1, &setlist);
3651 add_cmd ("architecture", class_support, show_architecture,
3652 "Show architecture of target.", &showlist);
3653 add_cmd ("architecture", class_support, info_architecture,
3654 "List supported target architectures", &infolist);
3657 #ifdef DEFAULT_PROMPT
3658 prompt = savestring (DEFAULT_PROMPT, strlen(DEFAULT_PROMPT));
3660 prompt = savestring ("(gdb) ", 6);
3663 /* Set the important stuff up for command editing. */
3664 command_editing_p = 1;
3665 history_expansion_p = 0;
3666 write_history_p = 0;
3668 /* Setup important stuff for command line editing. */
3669 rl_completion_entry_function = (int (*)()) readline_line_completion_function;
3670 rl_completer_word_break_characters = gdb_completer_word_break_characters;
3671 rl_completer_quote_characters = gdb_completer_quote_characters;
3672 rl_readline_name = "gdb";
3674 /* Define the classes of commands.
3675 They will appear in the help list in the reverse of this order. */
3677 add_cmd ("internals", class_maintenance, NO_FUNCTION,
3678 "Maintenance commands.\n\
3679 Some gdb commands are provided just for use by gdb maintainers.\n\
3680 These commands are subject to frequent change, and may not be as\n\
3681 well documented as user commands.",
3683 add_cmd ("obscure", class_obscure, NO_FUNCTION, "Obscure features.", &cmdlist);
3684 add_cmd ("aliases", class_alias, NO_FUNCTION, "Aliases of other commands.", &cmdlist);
3685 add_cmd ("user-defined", class_user, NO_FUNCTION, "User-defined commands.\n\
3686 The commands in this class are those defined by the user.\n\
3687 Use the \"define\" command to define a command.", &cmdlist);
3688 add_cmd ("support", class_support, NO_FUNCTION, "Support facilities.", &cmdlist);
3689 add_cmd ("status", class_info, NO_FUNCTION, "Status inquiries.", &cmdlist);
3690 add_cmd ("files", class_files, NO_FUNCTION, "Specifying and examining files.", &cmdlist);
3691 add_cmd ("breakpoints", class_breakpoint, NO_FUNCTION, "Making program stop at certain points.", &cmdlist);
3692 add_cmd ("data", class_vars, NO_FUNCTION, "Examining data.", &cmdlist);
3693 add_cmd ("stack", class_stack, NO_FUNCTION, "Examining the stack.\n\
3694 The stack is made up of stack frames. Gdb assigns numbers to stack frames\n\
3695 counting from zero for the innermost (currently executing) frame.\n\n\
3696 At any time gdb identifies one frame as the \"selected\" frame.\n\
3697 Variable lookups are done with respect to the selected frame.\n\
3698 When the program being debugged stops, gdb selects the innermost frame.\n\
3699 The commands below can be used to select other frames by number or address.",
3701 add_cmd ("running", class_run, NO_FUNCTION, "Running the program.", &cmdlist);
3703 add_com ("pwd", class_files, pwd_command,
3704 "Print working directory. This is used for your program as well.");
3705 c = add_cmd ("cd", class_files, cd_command,
3706 "Set working directory to DIR for debugger and program being debugged.\n\
3707 The change does not take effect for the program being debugged\n\
3708 until the next time it is started.", &cmdlist);
3709 c->completer = filename_completer;
3712 (add_set_cmd ("prompt", class_support, var_string, (char *)&prompt,
3717 add_com ("echo", class_support, echo_command,
3718 "Print a constant string. Give string as argument.\n\
3719 C escape sequences may be used in the argument.\n\
3720 No newline is added at the end of the argument;\n\
3721 use \"\\n\" if you want a newline to be printed.\n\
3722 Since leading and trailing whitespace are ignored in command arguments,\n\
3723 if you want to print some you must use \"\\\" before leading whitespace\n\
3724 to be printed or after trailing whitespace.");
3725 add_com ("document", class_support, document_command,
3726 "Document a user-defined command.\n\
3727 Give command name as argument. Give documentation on following lines.\n\
3728 End with a line of just \"end\".");
3729 add_com ("define", class_support, define_command,
3730 "Define a new command name. Command name is argument.\n\
3731 Definition appears on following lines, one command per line.\n\
3732 End with a line of just \"end\".\n\
3733 Use the \"document\" command to give documentation for the new command.\n\
3734 Commands defined in this way may have up to ten arguments.");
3737 c = add_cmd ("source", class_support, source_command,
3738 "Read commands from a file named FILE.\n\
3739 Note that the file \"" GDBINIT_FILENAME "\" is read automatically in this way\n\
3740 when gdb is started.", &cmdlist);
3742 /* Punt file name, we can't help it easily. */
3743 c = add_cmd ("source", class_support, source_command,
3744 "Read commands from a file named FILE.\n\
3745 Note that the file \".gdbinit\" is read automatically in this way\n\
3746 when gdb is started.", &cmdlist);
3748 c->completer = filename_completer;
3750 add_com ("quit", class_support, quit_command, "Exit gdb.");
3751 add_com ("help", class_support, help_command, "Print list of commands.");
3752 add_com_alias ("q", "quit", class_support, 1);
3753 add_com_alias ("h", "help", class_support, 1);
3755 add_com ("dont-repeat", class_support, dont_repeat_command, "Don't repeat this command.\n\
3756 Primarily used inside of user-defined commands that should not be repeated when\n\
3759 c = add_set_cmd ("verbose", class_support, var_boolean, (char *)&info_verbose,
3762 add_show_from_set (c, &showlist);
3763 c->function.sfunc = set_verbose;
3764 set_verbose (NULL, 0, c);
3767 (add_set_cmd ("editing", class_support, var_boolean, (char *)&command_editing_p,
3768 "Set editing of command lines as they are typed.\n\
3769 Use \"on\" to enable the editing, and \"off\" to disable it.\n\
3770 Without an argument, command line editing is enabled. To edit, use\n\
3771 EMACS-like or VI-like commands like control-P or ESC.", &setlist),
3774 add_prefix_cmd ("history", class_support, set_history,
3775 "Generic command for setting command history parameters.",
3776 &sethistlist, "set history ", 0, &setlist);
3777 add_prefix_cmd ("history", class_support, show_history,
3778 "Generic command for showing command history parameters.",
3779 &showhistlist, "show history ", 0, &showlist);
3782 (add_set_cmd ("expansion", no_class, var_boolean, (char *)&history_expansion_p,
3783 "Set history expansion on command input.\n\
3784 Without an argument, history expansion is enabled.", &sethistlist),
3788 (add_set_cmd ("save", no_class, var_boolean, (char *)&write_history_p,
3789 "Set saving of the history record on exit.\n\
3790 Use \"on\" to enable the saving, and \"off\" to disable it.\n\
3791 Without an argument, saving is enabled.", &sethistlist),
3794 c = add_set_cmd ("size", no_class, var_integer, (char *)&history_size,
3795 "Set the size of the command history, \n\
3796 ie. the number of previous commands to keep a record of.", &sethistlist);
3797 add_show_from_set (c, &showhistlist);
3798 c->function.sfunc = set_history_size_command;
3801 (add_set_cmd ("filename", no_class, var_filename, (char *)&history_filename,
3802 "Set the filename in which to record the command history\n\
3803 (the list of previous commands of which a record is kept).", &sethistlist),
3807 (add_set_cmd ("confirm", class_support, var_boolean,
3809 "Set whether to confirm potentially dangerous operations.",
3813 add_prefix_cmd ("info", class_info, info_command,
3814 "Generic command for showing things about the program being debugged.",
3815 &infolist, "info ", 0, &cmdlist);
3816 add_com_alias ("i", "info", class_info, 1);
3818 add_com ("complete", class_obscure, complete_command,
3819 "List the completions for the rest of the line as a command.");
3821 add_prefix_cmd ("show", class_info, show_command,
3822 "Generic command for showing things about the debugger.",
3823 &showlist, "show ", 0, &cmdlist);
3824 /* Another way to get at the same thing. */
3825 add_info ("set", show_command, "Show all GDB settings.");
3827 add_cmd ("commands", no_class, show_commands,
3828 "Show the history of commands you typed.\n\
3829 You can supply a command number to start with, or a `+' to start after\n\
3830 the previous command number shown.",
3833 add_cmd ("version", no_class, show_version,
3834 "Show what version of GDB this is.", &showlist);
3836 add_com ("while", class_support, while_command,
3837 "Execute nested commands WHILE the conditional expression is non zero.\n\
3838 The conditional expression must follow the word `while' and must in turn be\n\
3839 followed by a new line. The nested commands must be entered one per line,\n\
3840 and should be terminated by the word `end'.");
3842 add_com ("if", class_support, if_command,
3843 "Execute nested commands once IF the conditional expression is non zero.\n\
3844 The conditional expression must follow the word `if' and must in turn be\n\
3845 followed by a new line. The nested commands must be entered one per line,\n\
3846 and should be terminated by the word 'else' or `end'. If an else clause\n\
3847 is used, the same rules apply to its nested commands as to the first ones.");
3849 /* If target is open when baud changes, it doesn't take effect until the
3850 next open (I think, not sure). */
3851 add_show_from_set (add_set_cmd ("remotebaud", no_class,
3852 var_zinteger, (char *)&baud_rate,
3853 "Set baud rate for remote serial I/O.\n\
3854 This value is used to set the speed of the serial port when debugging\n\
3855 using remote targets.", &setlist),
3859 add_set_cmd ("remotedebug", no_class, var_zinteger, (char *)&remote_debug,
3860 "Set debugging of remote protocol.\n\
3861 When enabled, each packet sent or received with the remote target\n\
3862 is displayed.", &setlist),
3866 add_set_cmd ("remotetimeout", no_class, var_integer, (char *)&remote_timeout,
3867 "Set timeout limit to wait for target to respond.\n\
3868 This value is used to set the time limit for gdb to wait for a response\n\
3869 from he target.", &setlist),
3872 c = add_set_cmd ("annotate", class_obscure, var_zinteger,
3873 (char *)&annotation_level, "Set annotation_level.\n\
3874 0 == normal; 1 == fullname (for use when running under emacs)\n\
3875 2 == output annotated suitably for use by programs that control GDB.",
3877 c = add_show_from_set (c, &showlist);