1 /* Memory-access and commands for "inferior" process, for GDB.
3 Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
4 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
5 Free Software Foundation, Inc.
7 This file is part of GDB.
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA. */
26 #include "gdb_string.h"
40 #include "completer.h"
42 #include "event-top.h"
43 #include "parser-defs.h"
45 #include "reggroups.h"
49 #include "gdb_assert.h"
51 /* Functions exported for general use, in inferior.h: */
53 void all_registers_info (char *, int);
55 void registers_info (char *, int);
57 void nexti_command (char *, int);
59 void stepi_command (char *, int);
61 void continue_command (char *, int);
63 void interrupt_target_command (char *args, int from_tty);
65 /* Local functions: */
67 static void nofp_registers_info (char *, int);
69 static void print_return_value (int struct_return, struct type *value_type);
71 static void finish_command_continuation (struct continuation_arg *);
73 static void until_next_command (int);
75 static void until_command (char *, int);
77 static void path_info (char *, int);
79 static void path_command (char *, int);
81 static void unset_command (char *, int);
83 static void float_info (char *, int);
85 static void detach_command (char *, int);
87 static void disconnect_command (char *, int);
89 static void unset_environment_command (char *, int);
91 static void set_environment_command (char *, int);
93 static void environment_info (char *, int);
95 static void program_info (char *, int);
97 static void finish_command (char *, int);
99 static void signal_command (char *, int);
101 static void jump_command (char *, int);
103 static void step_1 (int, int, char *);
104 static void step_once (int skip_subroutines, int single_inst, int count);
105 static void step_1_continuation (struct continuation_arg *arg);
107 static void next_command (char *, int);
109 static void step_command (char *, int);
111 static void run_command (char *, int);
113 static void run_no_args_command (char *args, int from_tty);
115 static void go_command (char *line_no, int from_tty);
117 static int strip_bg_char (char **);
119 void _initialize_infcmd (void);
121 #define GO_USAGE "Usage: go <location>\n"
123 #define ERROR_NO_INFERIOR \
124 if (!target_has_execution) error (_("The program is not being run."));
126 /* String containing arguments to give to the program, separated by spaces.
127 Empty string (pointer to '\0') means no args. */
129 static char *inferior_args;
131 /* The inferior arguments as a vector. If INFERIOR_ARGC is nonzero,
132 then we must compute INFERIOR_ARGS from this (via the target). */
134 static int inferior_argc;
135 static char **inferior_argv;
137 /* File name for default use for standard in/out in the inferior. */
139 char *inferior_io_terminal;
141 /* Pid of our debugged inferior, or 0 if no inferior now.
142 Since various parts of infrun.c test this to see whether there is a program
143 being debugged it should be nonzero (currently 3 is used) for remote
146 ptid_t inferior_ptid;
148 /* Last signal that the inferior received (why it stopped). */
150 enum target_signal stop_signal;
152 /* Address at which inferior stopped. */
156 /* Chain containing status of breakpoint(s) that we have stopped at. */
160 /* Flag indicating that a command has proceeded the inferior past the
161 current breakpoint. */
163 int breakpoint_proceeded;
165 /* Nonzero if stopped due to a step command. */
169 /* Nonzero if stopped due to completion of a stack dummy routine. */
171 int stop_stack_dummy;
173 /* Nonzero if stopped due to a random (unexpected) signal in inferior
176 int stopped_by_random_signal;
178 /* Range to single step within.
179 If this is nonzero, respond to a single-step signal
180 by continuing to step if the pc is in this range. */
182 CORE_ADDR step_range_start; /* Inclusive */
183 CORE_ADDR step_range_end; /* Exclusive */
185 /* Stack frame address as of when stepping command was issued.
186 This is how we know when we step into a subroutine call,
187 and how to set the frame for the breakpoint used to step out. */
189 struct frame_id step_frame_id;
191 enum step_over_calls_kind step_over_calls;
193 /* If stepping, nonzero means step count is > 1
194 so don't print frame next time inferior stops
195 if it stops due to stepping. */
199 /* Environment to use for running inferior,
200 in format described in environ.h. */
202 struct gdb_environ *inferior_environ;
204 /* Accessor routines. */
207 get_inferior_args (void)
209 if (inferior_argc != 0)
213 n = gdbarch_construct_inferior_arguments (current_gdbarch,
214 inferior_argc, inferior_argv);
215 old = set_inferior_args (n);
219 if (inferior_args == NULL)
220 inferior_args = xstrdup ("");
222 return inferior_args;
226 set_inferior_args (char *newargs)
228 char *saved_args = inferior_args;
230 inferior_args = newargs;
238 set_inferior_args_vector (int argc, char **argv)
240 inferior_argc = argc;
241 inferior_argv = argv;
244 /* Notice when `set args' is run. */
246 notice_args_set (char *args, int from_tty, struct cmd_list_element *c)
252 /* Notice when `show args' is run. */
254 notice_args_read (struct ui_file *file, int from_tty,
255 struct cmd_list_element *c, const char *value)
257 deprecated_show_value_hack (file, from_tty, c, value);
258 /* Might compute the value. */
259 get_inferior_args ();
263 /* Compute command-line string given argument vector. This does the
264 same shell processing as fork_inferior. */
266 construct_inferior_arguments (struct gdbarch *gdbarch, int argc, char **argv)
270 if (STARTUP_WITH_SHELL)
272 /* This holds all the characters considered special to the
273 typical Unix shells. We include `^' because the SunOS
274 /bin/sh treats it as a synonym for `|'. */
275 char *special = "\"!#$&*()\\|[]{}<>?'\"`~^; \t\n";
280 /* We over-compute the size. It shouldn't matter. */
281 for (i = 0; i < argc; ++i)
282 length += 2 * strlen (argv[i]) + 1 + 2 * (argv[i][0] == '\0');
284 result = (char *) xmalloc (length);
287 for (i = 0; i < argc; ++i)
292 /* Need to handle empty arguments specially. */
293 if (argv[i][0] == '\0')
300 for (cp = argv[i]; *cp; ++cp)
302 if (strchr (special, *cp) != NULL)
312 /* In this case we can't handle arguments that contain spaces,
313 tabs, or newlines -- see breakup_args(). */
317 for (i = 0; i < argc; ++i)
319 char *cp = strchr (argv[i], ' ');
321 cp = strchr (argv[i], '\t');
323 cp = strchr (argv[i], '\n');
325 error (_("can't handle command-line argument containing whitespace"));
326 length += strlen (argv[i]) + 1;
329 result = (char *) xmalloc (length);
331 for (i = 0; i < argc; ++i)
334 strcat (result, " ");
335 strcat (result, argv[i]);
343 /* This function detects whether or not a '&' character (indicating
344 background execution) has been added as *the last* of the arguments ARGS
345 of a command. If it has, it removes it and returns 1. Otherwise it
346 does nothing and returns 0. */
348 strip_bg_char (char **args)
352 p = strchr (*args, '&');
356 if (p == (*args + strlen (*args) - 1))
358 if (strlen (*args) > 1)
362 while (*p == ' ' || *p == '\t');
374 tty_command (char *file, int from_tty)
377 error_no_arg (_("terminal name for running target process"));
379 inferior_io_terminal = savestring (file, strlen (file));
382 /* Kill the inferior if already running. This function is designed
383 to be called when we are about to start the execution of the program
384 from the beginning. Ask the user to confirm that he wants to restart
385 the program being debugged when FROM_TTY is non-null. */
388 kill_if_already_running (int from_tty)
390 if (! ptid_equal (inferior_ptid, null_ptid) && target_has_execution)
393 && !query ("The program being debugged has been started already.\n\
394 Start it from the beginning? "))
395 error (_("Program not restarted."));
397 #if defined(SOLIB_RESTART)
400 init_wait_for_inferior ();
404 /* Implement the "run" command. If TBREAK_AT_MAIN is set, then insert
405 a temporary breakpoint at the begining of the main program before
406 running the program. */
409 run_command_1 (char *args, int from_tty, int tbreak_at_main)
415 kill_if_already_running (from_tty);
416 clear_breakpoint_hit_counts ();
418 /* Purge old solib objfiles. */
419 objfile_purge_solibs ();
421 do_run_cleanups (NULL);
423 /* The comment here used to read, "The exec file is re-read every
424 time we do a generic_mourn_inferior, so we just have to worry
425 about the symbol file." The `generic_mourn_inferior' function
426 gets called whenever the program exits. However, suppose the
427 program exits, and *then* the executable file changes? We need
428 to check again here. Since reopen_exec_file doesn't do anything
429 if the timestamp hasn't changed, I don't see the harm. */
433 /* Insert the temporary breakpoint if a location was specified. */
435 tbreak_command (main_name (), 0);
437 exec_file = (char *) get_exec_file (0);
439 /* We keep symbols from add-symbol-file, on the grounds that the
440 user might want to add some symbols before running the program
441 (right?). But sometimes (dynamic loading where the user manually
442 introduces the new symbols with add-symbol-file), the code which
443 the symbols describe does not persist between runs. Currently
444 the user has to manually nuke all symbols between runs if they
445 want them to go away (PR 2207). This is probably reasonable. */
449 if (target_can_async_p ())
450 async_disable_stdin ();
454 int async_exec = strip_bg_char (&args);
456 /* If we get a request for running in the bg but the target
457 doesn't support it, error out. */
458 if (async_exec && !target_can_async_p ())
459 error (_("Asynchronous execution not supported on this target."));
461 /* If we don't get a request of running in the bg, then we need
462 to simulate synchronous (fg) execution. */
463 if (!async_exec && target_can_async_p ())
465 /* Simulate synchronous execution */
466 async_disable_stdin ();
469 /* If there were other args, beside '&', process them. */
472 char *old_args = set_inferior_args (xstrdup (args));
479 ui_out_field_string (uiout, NULL, "Starting program");
480 ui_out_text (uiout, ": ");
482 ui_out_field_string (uiout, "execfile", exec_file);
483 ui_out_spaces (uiout, 1);
484 /* We call get_inferior_args() because we might need to compute
486 ui_out_field_string (uiout, "infargs", get_inferior_args ());
487 ui_out_text (uiout, "\n");
488 ui_out_flush (uiout);
491 /* We call get_inferior_args() because we might need to compute
493 target_create_inferior (exec_file, get_inferior_args (),
494 environ_vector (inferior_environ), from_tty);
499 run_command (char *args, int from_tty)
501 run_command_1 (args, from_tty, 0);
505 run_no_args_command (char *args, int from_tty)
507 char *old_args = set_inferior_args (xstrdup (""));
512 /* Start the execution of the program up until the beginning of the main
516 start_command (char *args, int from_tty)
518 /* Some languages such as Ada need to search inside the program
519 minimal symbols for the location where to put the temporary
520 breakpoint before starting. */
521 if (!have_minimal_symbols ())
522 error (_("No symbol table loaded. Use the \"file\" command."));
524 /* Run the program until reaching the main procedure... */
525 run_command_1 (args, from_tty, 1);
529 continue_command (char *proc_count_exp, int from_tty)
534 /* Find out whether we must run in the background. */
535 if (proc_count_exp != NULL)
536 async_exec = strip_bg_char (&proc_count_exp);
538 /* If we must run in the background, but the target can't do it,
540 if (async_exec && !target_can_async_p ())
541 error (_("Asynchronous execution not supported on this target."));
543 /* If we are not asked to run in the bg, then prepare to run in the
544 foreground, synchronously. */
545 if (!async_exec && target_can_async_p ())
547 /* Simulate synchronous execution */
548 async_disable_stdin ();
551 /* If have argument (besides '&'), set proceed count of breakpoint
553 if (proc_count_exp != NULL)
555 bpstat bs = stop_bpstat;
556 int num = bpstat_num (&bs);
557 if (num == 0 && from_tty)
560 ("Not stopped at any breakpoint; argument ignored.\n");
564 set_ignore_count (num,
565 parse_and_eval_long (proc_count_exp) - 1,
567 /* set_ignore_count prints a message ending with a period.
568 So print two spaces before "Continuing.". */
570 printf_filtered (" ");
571 num = bpstat_num (&bs);
576 printf_filtered (_("Continuing.\n"));
578 clear_proceed_status ();
580 proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0);
583 /* Step until outside of current statement. */
586 step_command (char *count_string, int from_tty)
588 step_1 (0, 0, count_string);
591 /* Likewise, but skip over subroutine calls as if single instructions. */
594 next_command (char *count_string, int from_tty)
596 step_1 (1, 0, count_string);
599 /* Likewise, but step only one instruction. */
602 stepi_command (char *count_string, int from_tty)
604 step_1 (0, 1, count_string);
608 nexti_command (char *count_string, int from_tty)
610 step_1 (1, 1, count_string);
614 disable_longjmp_breakpoint_cleanup (void *ignore)
616 disable_longjmp_breakpoint ();
620 step_1 (int skip_subroutines, int single_inst, char *count_string)
623 struct frame_info *frame;
624 struct cleanup *cleanups = 0;
630 async_exec = strip_bg_char (&count_string);
632 /* If we get a request for running in the bg but the target
633 doesn't support it, error out. */
634 if (async_exec && !target_can_async_p ())
635 error (_("Asynchronous execution not supported on this target."));
637 /* If we don't get a request of running in the bg, then we need
638 to simulate synchronous (fg) execution. */
639 if (!async_exec && target_can_async_p ())
641 /* Simulate synchronous execution */
642 async_disable_stdin ();
645 count = count_string ? parse_and_eval_long (count_string) : 1;
647 if (!single_inst || skip_subroutines) /* leave si command alone */
649 enable_longjmp_breakpoint ();
650 if (!target_can_async_p ())
651 cleanups = make_cleanup (disable_longjmp_breakpoint_cleanup, 0 /*ignore*/);
653 make_exec_cleanup (disable_longjmp_breakpoint_cleanup, 0 /*ignore*/);
656 /* In synchronous case, all is well, just use the regular for loop. */
657 if (!target_can_async_p ())
659 for (; count > 0; count--)
661 clear_proceed_status ();
663 frame = get_current_frame ();
664 if (!frame) /* Avoid coredump here. Why tho? */
665 error (_("No current frame"));
666 step_frame_id = get_frame_id (frame);
670 find_pc_line_pc_range (stop_pc, &step_range_start, &step_range_end);
671 if (step_range_end == 0)
674 if (find_pc_partial_function (stop_pc, &name, &step_range_start,
675 &step_range_end) == 0)
676 error (_("Cannot find bounds of current function"));
678 target_terminal_ours ();
679 printf_filtered (_("\
680 Single stepping until exit from function %s, \n\
681 which has no line number information.\n"), name);
686 /* Say we are stepping, but stop after one insn whatever it does. */
687 step_range_start = step_range_end = 1;
688 if (!skip_subroutines)
690 Don't step over function calls, not even to functions lacking
692 step_over_calls = STEP_OVER_NONE;
695 if (skip_subroutines)
696 step_over_calls = STEP_OVER_ALL;
698 step_multi = (count > 1);
699 proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1);
705 if (!single_inst || skip_subroutines)
706 do_cleanups (cleanups);
709 /* In case of asynchronous target things get complicated, do only
710 one step for now, before returning control to the event loop. Let
711 the continuation figure out how many other steps we need to do,
712 and handle them one at the time, through step_once(). */
715 if (target_can_async_p ())
716 step_once (skip_subroutines, single_inst, count);
720 /* Called after we are done with one step operation, to check whether
721 we need to step again, before we print the prompt and return control
722 to the user. If count is > 1, we will need to do one more call to
723 proceed(), via step_once(). Basically it is like step_once and
724 step_1_continuation are co-recursive. */
726 step_1_continuation (struct continuation_arg *arg)
729 int skip_subroutines;
732 skip_subroutines = arg->data.integer;
733 single_inst = arg->next->data.integer;
734 count = arg->next->next->data.integer;
737 step_once (skip_subroutines, single_inst, count - 1);
739 if (!single_inst || skip_subroutines)
740 do_exec_cleanups (ALL_CLEANUPS);
743 /* Do just one step operation. If count >1 we will have to set up a
744 continuation to be done after the target stops (after this one
745 step). This is useful to implement the 'step n' kind of commands, in
746 case of asynchronous targets. We had to split step_1 into two parts,
747 one to be done before proceed() and one afterwards. This function is
748 called in case of step n with n>1, after the first step operation has
751 step_once (int skip_subroutines, int single_inst, int count)
753 struct continuation_arg *arg1;
754 struct continuation_arg *arg2;
755 struct continuation_arg *arg3;
756 struct frame_info *frame;
760 clear_proceed_status ();
762 frame = get_current_frame ();
763 if (!frame) /* Avoid coredump here. Why tho? */
764 error (_("No current frame"));
765 step_frame_id = get_frame_id (frame);
769 find_pc_line_pc_range (stop_pc, &step_range_start, &step_range_end);
771 /* If we have no line info, switch to stepi mode. */
772 if (step_range_end == 0 && step_stop_if_no_debug)
774 step_range_start = step_range_end = 1;
776 else if (step_range_end == 0)
779 if (find_pc_partial_function (stop_pc, &name, &step_range_start,
780 &step_range_end) == 0)
781 error (_("Cannot find bounds of current function"));
783 target_terminal_ours ();
784 printf_filtered (_("\
785 Single stepping until exit from function %s, \n\
786 which has no line number information.\n"), name);
791 /* Say we are stepping, but stop after one insn whatever it does. */
792 step_range_start = step_range_end = 1;
793 if (!skip_subroutines)
795 Don't step over function calls, not even to functions lacking
797 step_over_calls = STEP_OVER_NONE;
800 if (skip_subroutines)
801 step_over_calls = STEP_OVER_ALL;
803 step_multi = (count > 1);
805 (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
807 (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
809 (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
811 arg1->data.integer = skip_subroutines;
813 arg2->data.integer = single_inst;
815 arg3->data.integer = count;
816 add_intermediate_continuation (step_1_continuation, arg1);
817 proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1);
822 /* Continue program at specified address. */
825 jump_command (char *arg, int from_tty)
828 struct symtabs_and_lines sals;
829 struct symtab_and_line sal;
836 /* Find out whether we must run in the background. */
838 async_exec = strip_bg_char (&arg);
840 /* If we must run in the background, but the target can't do it,
842 if (async_exec && !target_can_async_p ())
843 error (_("Asynchronous execution not supported on this target."));
845 /* If we are not asked to run in the bg, then prepare to run in the
846 foreground, synchronously. */
847 if (!async_exec && target_can_async_p ())
849 /* Simulate synchronous execution */
850 async_disable_stdin ();
854 error_no_arg (_("starting address"));
856 sals = decode_line_spec_1 (arg, 1);
859 error (_("Unreasonable jump request"));
865 if (sal.symtab == 0 && sal.pc == 0)
866 error (_("No source file has been specified."));
868 resolve_sal_pc (&sal); /* May error out */
870 /* See if we are trying to jump to another function. */
871 fn = get_frame_function (get_current_frame ());
872 sfn = find_pc_function (sal.pc);
873 if (fn != NULL && sfn != fn)
875 if (!query ("Line %d is not in `%s'. Jump anyway? ", sal.line,
876 SYMBOL_PRINT_NAME (fn)))
878 error (_("Not confirmed."));
885 fixup_symbol_section (sfn, 0);
886 if (section_is_overlay (SYMBOL_BFD_SECTION (sfn)) &&
887 !section_is_mapped (SYMBOL_BFD_SECTION (sfn)))
889 if (!query ("WARNING!!! Destination is in unmapped overlay! Jump anyway? "))
891 error (_("Not confirmed."));
901 printf_filtered (_("Continuing at "));
902 deprecated_print_address_numeric (addr, 1, gdb_stdout);
903 printf_filtered (".\n");
906 clear_proceed_status ();
907 proceed (addr, TARGET_SIGNAL_0, 0);
911 /* Go to line or address in current procedure */
913 go_command (char *line_no, int from_tty)
915 if (line_no == (char *) NULL || !*line_no)
916 printf_filtered (GO_USAGE);
919 tbreak_command (line_no, from_tty);
920 jump_command (line_no, from_tty);
925 /* Continue program giving it specified signal. */
928 signal_command (char *signum_exp, int from_tty)
930 enum target_signal oursig;
932 dont_repeat (); /* Too dangerous. */
936 error_no_arg (_("signal number"));
938 /* It would be even slicker to make signal names be valid expressions,
939 (the type could be "enum $signal" or some such), then the user could
940 assign them to convenience variables. */
941 oursig = target_signal_from_name (signum_exp);
943 if (oursig == TARGET_SIGNAL_UNKNOWN)
945 /* No, try numeric. */
946 int num = parse_and_eval_long (signum_exp);
949 oursig = TARGET_SIGNAL_0;
951 oursig = target_signal_from_command (num);
956 if (oursig == TARGET_SIGNAL_0)
957 printf_filtered (_("Continuing with no signal.\n"));
959 printf_filtered (_("Continuing with signal %s.\n"),
960 target_signal_to_name (oursig));
963 clear_proceed_status ();
964 /* "signal 0" should not get stuck if we are stopped at a breakpoint.
965 FIXME: Neither should "signal foo" but when I tried passing
966 (CORE_ADDR)-1 unconditionally I got a testsuite failure which I haven't
967 tried to track down yet. */
968 proceed (oursig == TARGET_SIGNAL_0 ? (CORE_ADDR) -1 : stop_pc, oursig, 0);
971 /* Proceed until we reach a different source line with pc greater than
972 our current one or exit the function. We skip calls in both cases.
974 Note that eventually this command should probably be changed so
975 that only source lines are printed out when we hit the breakpoint
976 we set. This may involve changes to wait_for_inferior and the
977 proceed status code. */
980 until_next_command (int from_tty)
982 struct frame_info *frame;
985 struct symtab_and_line sal;
987 clear_proceed_status ();
989 frame = get_current_frame ();
991 /* Step until either exited from this function or greater
992 than the current line (if in symbolic section) or pc (if
996 func = find_pc_function (pc);
1000 struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (pc);
1002 if (msymbol == NULL)
1003 error (_("Execution is not within a known function."));
1005 step_range_start = SYMBOL_VALUE_ADDRESS (msymbol);
1006 step_range_end = pc;
1010 sal = find_pc_line (pc, 0);
1012 step_range_start = BLOCK_START (SYMBOL_BLOCK_VALUE (func));
1013 step_range_end = sal.end;
1016 step_over_calls = STEP_OVER_ALL;
1017 step_frame_id = get_frame_id (frame);
1019 step_multi = 0; /* Only one call to proceed */
1021 proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1);
1025 until_command (char *arg, int from_tty)
1029 if (!target_has_execution)
1030 error (_("The program is not running."));
1032 /* Find out whether we must run in the background. */
1034 async_exec = strip_bg_char (&arg);
1036 /* If we must run in the background, but the target can't do it,
1038 if (async_exec && !target_can_async_p ())
1039 error (_("Asynchronous execution not supported on this target."));
1041 /* If we are not asked to run in the bg, then prepare to run in the
1042 foreground, synchronously. */
1043 if (!async_exec && target_can_async_p ())
1045 /* Simulate synchronous execution */
1046 async_disable_stdin ();
1050 until_break_command (arg, from_tty, 0);
1052 until_next_command (from_tty);
1056 advance_command (char *arg, int from_tty)
1060 if (!target_has_execution)
1061 error (_("The program is not running."));
1064 error_no_arg (_("a location"));
1066 /* Find out whether we must run in the background. */
1068 async_exec = strip_bg_char (&arg);
1070 /* If we must run in the background, but the target can't do it,
1072 if (async_exec && !target_can_async_p ())
1073 error (_("Asynchronous execution not supported on this target."));
1075 /* If we are not asked to run in the bg, then prepare to run in the
1076 foreground, synchronously. */
1077 if (!async_exec && target_can_async_p ())
1079 /* Simulate synchronous execution. */
1080 async_disable_stdin ();
1083 until_break_command (arg, from_tty, 1);
1086 /* Print the result of a function at the end of a 'finish' command. */
1089 print_return_value (int struct_return, struct type *value_type)
1091 struct gdbarch *gdbarch = current_gdbarch;
1092 struct cleanup *old_chain;
1093 struct ui_stream *stb;
1094 struct value *value;
1096 gdb_assert (TYPE_CODE (value_type) != TYPE_CODE_VOID);
1098 /* FIXME: 2003-09-27: When returning from a nested inferior function
1099 call, it's possible (with no help from the architecture vector)
1100 to locate and return/print a "struct return" value. This is just
1101 a more complicated case of what is already being done in in the
1102 inferior function call code. In fact, when inferior function
1103 calls are made async, this will likely be made the norm. */
1105 switch (gdbarch_return_value (gdbarch, value_type, NULL, NULL, NULL))
1107 case RETURN_VALUE_REGISTER_CONVENTION:
1108 case RETURN_VALUE_ABI_RETURNS_ADDRESS:
1109 value = allocate_value (value_type);
1110 CHECK_TYPEDEF (value_type);
1111 gdbarch_return_value (current_gdbarch, value_type, stop_registers,
1112 value_contents_raw (value), NULL);
1114 case RETURN_VALUE_STRUCT_CONVENTION:
1118 internal_error (__FILE__, __LINE__, _("bad switch"));
1124 stb = ui_out_stream_new (uiout);
1125 old_chain = make_cleanup_ui_out_stream_delete (stb);
1126 ui_out_text (uiout, "Value returned is ");
1127 ui_out_field_fmt (uiout, "gdb-result-var", "$%d",
1128 record_latest_value (value));
1129 ui_out_text (uiout, " = ");
1130 value_print (value, stb->stream, 0, Val_no_prettyprint);
1131 ui_out_field_stream (uiout, "return-value", stb);
1132 ui_out_text (uiout, "\n");
1133 do_cleanups (old_chain);
1137 ui_out_text (uiout, "Value returned has type: ");
1138 ui_out_field_string (uiout, "return-type", TYPE_NAME (value_type));
1139 ui_out_text (uiout, ".");
1140 ui_out_text (uiout, " Cannot determine contents\n");
1144 /* Stuff that needs to be done by the finish command after the target
1145 has stopped. In asynchronous mode, we wait for the target to stop
1146 in the call to poll or select in the event loop, so it is
1147 impossible to do all the stuff as part of the finish_command
1148 function itself. The only chance we have to complete this command
1149 is in fetch_inferior_event, which is called by the event loop as
1150 soon as it detects that the target has stopped. This function is
1151 called via the cmd_continuation pointer. */
1154 finish_command_continuation (struct continuation_arg *arg)
1156 struct symbol *function;
1157 struct breakpoint *breakpoint;
1158 struct cleanup *cleanups;
1160 breakpoint = (struct breakpoint *) arg->data.pointer;
1161 function = (struct symbol *) arg->next->data.pointer;
1162 cleanups = (struct cleanup *) arg->next->next->data.pointer;
1164 if (bpstat_find_breakpoint (stop_bpstat, breakpoint) != NULL
1165 && function != NULL)
1167 struct type *value_type;
1171 value_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (function));
1173 internal_error (__FILE__, __LINE__,
1174 _("finish_command: function has no target type"));
1176 if (TYPE_CODE (value_type) == TYPE_CODE_VOID)
1178 do_exec_cleanups (cleanups);
1182 CHECK_TYPEDEF (value_type);
1183 gcc_compiled = BLOCK_GCC_COMPILED (SYMBOL_BLOCK_VALUE (function));
1184 struct_return = using_struct_return (value_type, gcc_compiled);
1186 print_return_value (struct_return, value_type);
1189 do_exec_cleanups (cleanups);
1192 /* "finish": Set a temporary breakpoint at the place the selected
1193 frame will return to, then continue. */
1196 finish_command (char *arg, int from_tty)
1198 struct symtab_and_line sal;
1199 struct frame_info *frame;
1200 struct symbol *function;
1201 struct breakpoint *breakpoint;
1202 struct cleanup *old_chain;
1203 struct continuation_arg *arg1, *arg2, *arg3;
1207 /* Find out whether we must run in the background. */
1209 async_exec = strip_bg_char (&arg);
1211 /* If we must run in the background, but the target can't do it,
1213 if (async_exec && !target_can_async_p ())
1214 error (_("Asynchronous execution not supported on this target."));
1216 /* If we are not asked to run in the bg, then prepare to run in the
1217 foreground, synchronously. */
1218 if (!async_exec && target_can_async_p ())
1220 /* Simulate synchronous execution. */
1221 async_disable_stdin ();
1225 error (_("The \"finish\" command does not take any arguments."));
1226 if (!target_has_execution)
1227 error (_("The program is not running."));
1228 if (deprecated_selected_frame == NULL)
1229 error (_("No selected frame."));
1231 frame = get_prev_frame (deprecated_selected_frame);
1233 error (_("\"finish\" not meaningful in the outermost frame."));
1235 clear_proceed_status ();
1237 sal = find_pc_line (get_frame_pc (frame), 0);
1238 sal.pc = get_frame_pc (frame);
1240 breakpoint = set_momentary_breakpoint (sal, get_frame_id (frame), bp_finish);
1242 if (!target_can_async_p ())
1243 old_chain = make_cleanup_delete_breakpoint (breakpoint);
1245 old_chain = make_exec_cleanup_delete_breakpoint (breakpoint);
1247 /* Find the function we will return from. */
1249 function = find_pc_function (get_frame_pc (deprecated_selected_frame));
1251 /* Print info on the selected frame, including level number but not
1255 printf_filtered (_("Run till exit from "));
1256 print_stack_frame (get_selected_frame (NULL), 1, LOCATION);
1259 /* If running asynchronously and the target support asynchronous
1260 execution, set things up for the rest of the finish command to be
1261 completed later on, when gdb has detected that the target has
1262 stopped, in fetch_inferior_event. */
1263 if (target_can_async_p ())
1266 (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
1268 (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
1270 (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
1274 arg1->data.pointer = breakpoint;
1275 arg2->data.pointer = function;
1276 arg3->data.pointer = old_chain;
1277 add_continuation (finish_command_continuation, arg1);
1280 proceed_to_finish = 1; /* We want stop_registers, please... */
1281 proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0);
1283 /* Do this only if not running asynchronously or if the target
1284 cannot do async execution. Otherwise, complete this command when
1285 the target actually stops, in fetch_inferior_event. */
1286 if (!target_can_async_p ())
1288 /* Did we stop at our breakpoint? */
1289 if (bpstat_find_breakpoint (stop_bpstat, breakpoint) != NULL
1290 && function != NULL)
1292 struct type *value_type;
1296 value_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (function));
1298 internal_error (__FILE__, __LINE__,
1299 _("finish_command: function has no target type"));
1301 /* FIXME: Shouldn't we do the cleanups before returning? */
1302 if (TYPE_CODE (value_type) == TYPE_CODE_VOID)
1305 CHECK_TYPEDEF (value_type);
1306 gcc_compiled = BLOCK_GCC_COMPILED (SYMBOL_BLOCK_VALUE (function));
1307 struct_return = using_struct_return (value_type, gcc_compiled);
1309 print_return_value (struct_return, value_type);
1312 do_cleanups (old_chain);
1318 program_info (char *args, int from_tty)
1320 bpstat bs = stop_bpstat;
1321 int num = bpstat_num (&bs);
1323 if (!target_has_execution)
1325 printf_filtered (_("The program being debugged is not being run.\n"));
1329 target_files_info ();
1330 printf_filtered (_("Program stopped at %s.\n"),
1331 hex_string ((unsigned long) stop_pc));
1333 printf_filtered (_("It stopped after being stepped.\n"));
1336 /* There may be several breakpoints in the same place, so this
1337 isn't as strange as it seems. */
1342 printf_filtered (_("\
1343 It stopped at a breakpoint that has since been deleted.\n"));
1346 printf_filtered (_("It stopped at breakpoint %d.\n"), num);
1347 num = bpstat_num (&bs);
1350 else if (stop_signal != TARGET_SIGNAL_0)
1352 printf_filtered (_("It stopped with signal %s, %s.\n"),
1353 target_signal_to_name (stop_signal),
1354 target_signal_to_string (stop_signal));
1359 printf_filtered (_("\
1360 Type \"info stack\" or \"info registers\" for more information.\n"));
1365 environment_info (char *var, int from_tty)
1369 char *val = get_in_environ (inferior_environ, var);
1372 puts_filtered (var);
1373 puts_filtered (" = ");
1374 puts_filtered (val);
1375 puts_filtered ("\n");
1379 puts_filtered ("Environment variable \"");
1380 puts_filtered (var);
1381 puts_filtered ("\" not defined.\n");
1386 char **vector = environ_vector (inferior_environ);
1389 puts_filtered (*vector++);
1390 puts_filtered ("\n");
1396 set_environment_command (char *arg, int from_tty)
1398 char *p, *val, *var;
1402 error_no_arg (_("environment variable and value"));
1404 /* Find seperation between variable name and value */
1405 p = (char *) strchr (arg, '=');
1406 val = (char *) strchr (arg, ' ');
1408 if (p != 0 && val != 0)
1410 /* We have both a space and an equals. If the space is before the
1411 equals, walk forward over the spaces til we see a nonspace
1412 (possibly the equals). */
1417 /* Now if the = is after the char following the spaces,
1418 take the char following the spaces. */
1422 else if (val != 0 && p == 0)
1426 error_no_arg (_("environment variable to set"));
1428 if (p == 0 || p[1] == 0)
1432 p = arg + strlen (arg); /* So that savestring below will work */
1436 /* Not setting variable value to null */
1438 while (*val == ' ' || *val == '\t')
1442 while (p != arg && (p[-1] == ' ' || p[-1] == '\t'))
1445 var = savestring (arg, p - arg);
1448 printf_filtered (_("\
1449 Setting environment variable \"%s\" to null value.\n"),
1451 set_in_environ (inferior_environ, var, "");
1454 set_in_environ (inferior_environ, var, val);
1459 unset_environment_command (char *var, int from_tty)
1463 /* If there is no argument, delete all environment variables.
1464 Ask for confirmation if reading from the terminal. */
1465 if (!from_tty || query (_("Delete all environment variables? ")))
1467 free_environ (inferior_environ);
1468 inferior_environ = make_environ ();
1472 unset_in_environ (inferior_environ, var);
1475 /* Handle the execution path (PATH variable) */
1477 static const char path_var_name[] = "PATH";
1480 path_info (char *args, int from_tty)
1482 puts_filtered ("Executable and object file path: ");
1483 puts_filtered (get_in_environ (inferior_environ, path_var_name));
1484 puts_filtered ("\n");
1487 /* Add zero or more directories to the front of the execution path. */
1490 path_command (char *dirname, int from_tty)
1495 env = get_in_environ (inferior_environ, path_var_name);
1496 /* Can be null if path is not set */
1499 exec_path = xstrdup (env);
1500 mod_path (dirname, &exec_path);
1501 set_in_environ (inferior_environ, path_var_name, exec_path);
1504 path_info ((char *) NULL, from_tty);
1508 /* Print out the machine register regnum. If regnum is -1, print all
1509 registers (print_all == 1) or all non-float and non-vector
1510 registers (print_all == 0).
1512 For most machines, having all_registers_info() print the
1513 register(s) one per line is good enough. If a different format is
1514 required, (eg, for MIPS or Pyramid 90x, which both have lots of
1515 regs), or there is an existing convention for showing all the
1516 registers, define the architecture method PRINT_REGISTERS_INFO to
1517 provide that format. */
1520 default_print_registers_info (struct gdbarch *gdbarch,
1521 struct ui_file *file,
1522 struct frame_info *frame,
1523 int regnum, int print_all)
1526 const int numregs = NUM_REGS + NUM_PSEUDO_REGS;
1527 gdb_byte buffer[MAX_REGISTER_SIZE];
1529 for (i = 0; i < numregs; i++)
1531 /* Decide between printing all regs, non-float / vector regs, or
1537 if (!gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
1542 if (!gdbarch_register_reggroup_p (gdbarch, i, general_reggroup))
1552 /* If the register name is empty, it is undefined for this
1553 processor, so don't display anything. */
1554 if (REGISTER_NAME (i) == NULL || *(REGISTER_NAME (i)) == '\0')
1557 fputs_filtered (REGISTER_NAME (i), file);
1558 print_spaces_filtered (15 - strlen (REGISTER_NAME (i)), file);
1560 /* Get the data in raw format. */
1561 if (! frame_register_read (frame, i, buffer))
1563 fprintf_filtered (file, "*value not available*\n");
1567 /* If virtual format is floating, print it that way, and in raw
1569 if (TYPE_CODE (register_type (current_gdbarch, i)) == TYPE_CODE_FLT)
1573 val_print (register_type (current_gdbarch, i), buffer, 0, 0,
1574 file, 0, 1, 0, Val_pretty_default);
1576 fprintf_filtered (file, "\t(raw 0x");
1577 for (j = 0; j < register_size (current_gdbarch, i); j++)
1580 if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
1583 idx = register_size (current_gdbarch, i) - 1 - j;
1584 fprintf_filtered (file, "%02x", (unsigned char) buffer[idx]);
1586 fprintf_filtered (file, ")");
1590 /* Print the register in hex. */
1591 val_print (register_type (current_gdbarch, i), buffer, 0, 0,
1592 file, 'x', 1, 0, Val_pretty_default);
1593 /* If not a vector register, print it also according to its
1595 if (TYPE_VECTOR (register_type (current_gdbarch, i)) == 0)
1597 fprintf_filtered (file, "\t");
1598 val_print (register_type (current_gdbarch, i), buffer, 0, 0,
1599 file, 0, 1, 0, Val_pretty_default);
1603 fprintf_filtered (file, "\n");
1608 registers_info (char *addr_exp, int fpregs)
1610 int regnum, numregs;
1613 if (!target_has_registers)
1614 error (_("The program has no registers now."));
1615 if (deprecated_selected_frame == NULL)
1616 error (_("No selected frame."));
1620 gdbarch_print_registers_info (current_gdbarch, gdb_stdout,
1621 deprecated_selected_frame, -1, fpregs);
1625 while (*addr_exp != '\0')
1630 /* Keep skipping leading white space. */
1631 if (isspace ((*addr_exp)))
1637 /* Discard any leading ``$''. Check that there is something
1638 resembling a register following it. */
1639 if (addr_exp[0] == '$')
1641 if (isspace ((*addr_exp)) || (*addr_exp) == '\0')
1642 error (_("Missing register name"));
1644 /* Find the start/end of this register name/num/group. */
1646 while ((*addr_exp) != '\0' && !isspace ((*addr_exp)))
1650 /* Figure out what we've found and display it. */
1652 /* A register name? */
1654 int regnum = frame_map_name_to_regnum (deprecated_selected_frame,
1655 start, end - start);
1658 gdbarch_print_registers_info (current_gdbarch, gdb_stdout,
1659 deprecated_selected_frame, regnum, fpregs);
1664 /* A register number? (how portable is this one?). */
1667 int regnum = strtol (start, &endptr, 0);
1670 && regnum < NUM_REGS + NUM_PSEUDO_REGS)
1672 gdbarch_print_registers_info (current_gdbarch, gdb_stdout,
1673 deprecated_selected_frame, regnum, fpregs);
1678 /* A register group? */
1680 struct reggroup *group;
1681 for (group = reggroup_next (current_gdbarch, NULL);
1683 group = reggroup_next (current_gdbarch, group))
1685 /* Don't bother with a length check. Should the user
1686 enter a short register group name, go with the first
1687 group that matches. */
1688 if (strncmp (start, reggroup_name (group), end - start) == 0)
1694 for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
1696 if (gdbarch_register_reggroup_p (current_gdbarch, regnum,
1698 gdbarch_print_registers_info (current_gdbarch,
1699 gdb_stdout, deprecated_selected_frame,
1706 /* Nothing matched. */
1707 error (_("Invalid register `%.*s'"), (int) (end - start), start);
1712 all_registers_info (char *addr_exp, int from_tty)
1714 registers_info (addr_exp, 1);
1718 nofp_registers_info (char *addr_exp, int from_tty)
1720 registers_info (addr_exp, 0);
1724 print_vector_info (struct gdbarch *gdbarch, struct ui_file *file,
1725 struct frame_info *frame, const char *args)
1727 if (!target_has_registers)
1728 error (_("The program has no registers now."));
1729 if (deprecated_selected_frame == NULL)
1730 error (_("No selected frame."));
1732 if (gdbarch_print_vector_info_p (gdbarch))
1733 gdbarch_print_vector_info (gdbarch, file, frame, args);
1737 int printed_something = 0;
1739 for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
1741 if (gdbarch_register_reggroup_p (gdbarch, regnum, vector_reggroup))
1743 printed_something = 1;
1744 gdbarch_print_registers_info (gdbarch, file, frame, regnum, 1);
1747 if (!printed_something)
1748 fprintf_filtered (file, "No vector information\n");
1753 vector_info (char *args, int from_tty)
1755 print_vector_info (current_gdbarch, gdb_stdout, deprecated_selected_frame, args);
1761 * Should save/restore the tty state since it might be that the
1762 * program to be debugged was started on this tty and it wants
1763 * the tty in some state other than what we want. If it's running
1764 * on another terminal or without a terminal, then saving and
1765 * restoring the tty state is a harmless no-op.
1766 * This only needs to be done if we are attaching to a process.
1771 takes a program started up outside of gdb and ``attaches'' to it.
1772 This stops it cold in its tracks and allows us to start debugging it.
1773 and wait for the trace-trap that results from attaching. */
1776 attach_command (char *args, int from_tty)
1779 char *full_exec_path = NULL;
1781 dont_repeat (); /* Not for the faint of heart */
1783 if (target_has_execution)
1785 if (query ("A program is being debugged already. Kill it? "))
1788 error (_("Not killed."));
1791 /* Clear out solib state. Otherwise the solib state of the previous
1792 inferior might have survived and is entirely wrong for the new
1793 target. This has been observed on Linux using glibc 2.3. How to
1805 Cannot access memory at address 0xdeadbeef
1813 target_attach (args, from_tty);
1815 /* Set up the "saved terminal modes" of the inferior
1816 based on what modes we are starting it with. */
1817 target_terminal_init ();
1819 /* Set up execution context to know that we should return from
1820 wait_for_inferior as soon as the target reports a stop. */
1821 init_wait_for_inferior ();
1822 clear_proceed_status ();
1824 /* No traps are generated when attaching to inferior under Mach 3
1826 #ifndef ATTACH_NO_WAIT
1827 /* Careful here. See comments in inferior.h. Basically some OSes
1828 don't ignore SIGSTOPs on continue requests anymore. We need a
1829 way for handle_inferior_event to reset the stop_signal variable
1830 after an attach, and this is what STOP_QUIETLY_NO_SIGSTOP is for. */
1831 stop_soon = STOP_QUIETLY_NO_SIGSTOP;
1832 wait_for_inferior ();
1833 stop_soon = NO_STOP_QUIETLY;
1837 * If no exec file is yet known, try to determine it from the
1840 exec_file = (char *) get_exec_file (0);
1843 exec_file = target_pid_to_exec_file (PIDGET (inferior_ptid));
1846 /* It's possible we don't have a full path, but rather just a
1847 filename. Some targets, such as HP-UX, don't provide the
1850 Attempt to qualify the filename against the source path.
1851 (If that fails, we'll just fall back on the original
1852 filename. Not much more we can do...)
1854 if (!source_full_path_of (exec_file, &full_exec_path))
1855 full_exec_path = savestring (exec_file, strlen (exec_file));
1857 exec_file_attach (full_exec_path, from_tty);
1858 symbol_file_add_main (full_exec_path, from_tty);
1863 reopen_exec_file ();
1868 /* Add shared library symbols from the newly attached process, if any. */
1869 SOLIB_ADD ((char *) 0, from_tty, ¤t_target, auto_solib_add);
1871 solib_add (NULL, from_tty, ¤t_target, auto_solib_add);
1873 re_enable_breakpoints_in_shlibs ();
1875 /* Take any necessary post-attaching actions for this platform.
1877 target_post_attach (PIDGET (inferior_ptid));
1879 /* Install inferior's terminal modes. */
1880 target_terminal_inferior ();
1884 if (deprecated_attach_hook)
1885 deprecated_attach_hook ();
1890 * takes a program previously attached to and detaches it.
1891 * The program resumes execution and will no longer stop
1892 * on signals, etc. We better not have left any breakpoints
1893 * in the program or it'll die when it hits one. For this
1894 * to work, it may be necessary for the process to have been
1895 * previously attached. It *might* work if the program was
1896 * started via the normal ptrace (PTRACE_TRACEME).
1900 detach_command (char *args, int from_tty)
1902 dont_repeat (); /* Not for the faint of heart. */
1903 target_detach (args, from_tty);
1904 #if defined(SOLIB_RESTART)
1907 if (deprecated_detach_hook)
1908 deprecated_detach_hook ();
1911 /* Disconnect from the current target without resuming it (leaving it
1912 waiting for a debugger).
1914 We'd better not have left any breakpoints in the program or the
1915 next debugger will get confused. Currently only supported for some
1916 remote targets, since the normal attach mechanisms don't work on
1917 stopped processes on some native platforms (e.g. GNU/Linux). */
1920 disconnect_command (char *args, int from_tty)
1922 dont_repeat (); /* Not for the faint of heart */
1923 target_disconnect (args, from_tty);
1924 #if defined(SOLIB_RESTART)
1927 if (deprecated_detach_hook)
1928 deprecated_detach_hook ();
1931 /* Stop the execution of the target while running in async mode, in
1934 interrupt_target_command (char *args, int from_tty)
1936 if (target_can_async_p ())
1938 dont_repeat (); /* Not for the faint of heart */
1944 print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
1945 struct frame_info *frame, const char *args)
1947 if (!target_has_registers)
1948 error (_("The program has no registers now."));
1949 if (deprecated_selected_frame == NULL)
1950 error (_("No selected frame."));
1952 if (gdbarch_print_float_info_p (gdbarch))
1953 gdbarch_print_float_info (gdbarch, file, frame, args);
1957 int printed_something = 0;
1959 for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
1961 if (gdbarch_register_reggroup_p (gdbarch, regnum, float_reggroup))
1963 printed_something = 1;
1964 gdbarch_print_registers_info (gdbarch, file, frame, regnum, 1);
1967 if (!printed_something)
1968 fprintf_filtered (file, "\
1969 No floating-point info available for this processor.\n");
1974 float_info (char *args, int from_tty)
1976 print_float_info (current_gdbarch, gdb_stdout,
1977 deprecated_selected_frame, args);
1981 unset_command (char *args, int from_tty)
1983 printf_filtered (_("\
1984 \"unset\" must be followed by the name of an unset subcommand.\n"));
1985 help_list (unsetlist, "unset ", -1, gdb_stdout);
1989 _initialize_infcmd (void)
1991 struct cmd_list_element *c;
1993 c = add_com ("tty", class_run, tty_command,
1994 _("Set terminal for future runs of program being debugged."));
1995 set_cmd_completer (c, filename_completer);
1997 add_setshow_optional_filename_cmd ("args", class_run,
1998 &inferior_args, _("\
1999 Set argument list to give program being debugged when it is started."), _("\
2000 Show argument list to give program being debugged when it is started."), _("\
2001 Follow this command with any number of args, to be passed to the program."),
2004 &setlist, &showlist);
2006 c = add_cmd ("environment", no_class, environment_info, _("\
2007 The environment to give the program, or one variable's value.\n\
2008 With an argument VAR, prints the value of environment variable VAR to\n\
2009 give the program being debugged. With no arguments, prints the entire\n\
2010 environment to be given to the program."), &showlist);
2011 set_cmd_completer (c, noop_completer);
2013 add_prefix_cmd ("unset", no_class, unset_command,
2014 _("Complement to certain \"set\" commands."),
2015 &unsetlist, "unset ", 0, &cmdlist);
2017 c = add_cmd ("environment", class_run, unset_environment_command, _("\
2018 Cancel environment variable VAR for the program.\n\
2019 This does not affect the program until the next \"run\" command."),
2021 set_cmd_completer (c, noop_completer);
2023 c = add_cmd ("environment", class_run, set_environment_command, _("\
2024 Set environment variable value to give the program.\n\
2025 Arguments are VAR VALUE where VAR is variable name and VALUE is value.\n\
2026 VALUES of environment variables are uninterpreted strings.\n\
2027 This does not affect the program until the next \"run\" command."),
2029 set_cmd_completer (c, noop_completer);
2031 c = add_com ("path", class_files, path_command, _("\
2032 Add directory DIR(s) to beginning of search path for object files.\n\
2033 $cwd in the path means the current working directory.\n\
2034 This path is equivalent to the $PATH shell variable. It is a list of\n\
2035 directories, separated by colons. These directories are searched to find\n\
2036 fully linked executable files and separately compiled object files as needed."));
2037 set_cmd_completer (c, filename_completer);
2039 c = add_cmd ("paths", no_class, path_info, _("\
2040 Current search path for finding object files.\n\
2041 $cwd in the path means the current working directory.\n\
2042 This path is equivalent to the $PATH shell variable. It is a list of\n\
2043 directories, separated by colons. These directories are searched to find\n\
2044 fully linked executable files and separately compiled object files as needed."),
2046 set_cmd_completer (c, noop_completer);
2048 add_com ("attach", class_run, attach_command, _("\
2049 Attach to a process or file outside of GDB.\n\
2050 This command attaches to another target, of the same type as your last\n\
2051 \"target\" command (\"info files\" will show your target stack).\n\
2052 The command may take as argument a process id or a device file.\n\
2053 For a process id, you must have permission to send the process a signal,\n\
2054 and it must have the same effective uid as the debugger.\n\
2055 When using \"attach\" with a process id, the debugger finds the\n\
2056 program running in the process, looking first in the current working\n\
2057 directory, or (if not found there) using the source file search path\n\
2058 (see the \"directory\" command). You can also use the \"file\" command\n\
2059 to specify the program, and to load its symbol table."));
2061 add_com ("detach", class_run, detach_command, _("\
2062 Detach a process or file previously attached.\n\
2063 If a process, it is no longer traced, and it continues its execution. If\n\
2064 you were debugging a file, the file is closed and gdb no longer accesses it."));
2066 add_com ("disconnect", class_run, disconnect_command, _("\
2067 Disconnect from a target.\n\
2068 The target will wait for another debugger to connect. Not available for\n\
2071 add_com ("signal", class_run, signal_command, _("\
2072 Continue program giving it signal specified by the argument.\n\
2073 An argument of \"0\" means continue program without giving it a signal."));
2075 add_com ("stepi", class_run, stepi_command, _("\
2076 Step one instruction exactly.\n\
2077 Argument N means do this N times (or till program stops for another reason)."));
2078 add_com_alias ("si", "stepi", class_alias, 0);
2080 add_com ("nexti", class_run, nexti_command, _("\
2081 Step one instruction, but proceed through subroutine calls.\n\
2082 Argument N means do this N times (or till program stops for another reason)."));
2083 add_com_alias ("ni", "nexti", class_alias, 0);
2085 add_com ("finish", class_run, finish_command, _("\
2086 Execute until selected stack frame returns.\n\
2087 Upon return, the value returned is printed and put in the value history."));
2089 add_com ("next", class_run, next_command, _("\
2090 Step program, proceeding through subroutine calls.\n\
2091 Like the \"step\" command as long as subroutine calls do not happen;\n\
2092 when they do, the call is treated as one instruction.\n\
2093 Argument N means do this N times (or till program stops for another reason)."));
2094 add_com_alias ("n", "next", class_run, 1);
2096 add_com_alias ("S", "next", class_run, 1);
2098 add_com ("step", class_run, step_command, _("\
2099 Step program until it reaches a different source line.\n\
2100 Argument N means do this N times (or till program stops for another reason)."));
2101 add_com_alias ("s", "step", class_run, 1);
2103 c = add_com ("until", class_run, until_command, _("\
2104 Execute until the program reaches a source line greater than the current\n\
2105 or a specified location (same args as break command) within the current frame."));
2106 set_cmd_completer (c, location_completer);
2107 add_com_alias ("u", "until", class_run, 1);
2109 c = add_com ("advance", class_run, advance_command, _("\
2110 Continue the program up to the given location (same form as args for break command).\n\
2111 Execution will also stop upon exit from the current stack frame."));
2112 set_cmd_completer (c, location_completer);
2114 c = add_com ("jump", class_run, jump_command, _("\
2115 Continue program being debugged at specified line or address.\n\
2116 Give as argument either LINENUM or *ADDR, where ADDR is an expression\n\
2117 for an address to start at."));
2118 set_cmd_completer (c, location_completer);
2122 c = add_com ("go", class_run, go_command, _("\
2123 Usage: go <location>\n\
2124 Continue program being debugged, stopping at specified line or \n\
2126 Give as argument either LINENUM or *ADDR, where ADDR is an \n\
2127 expression for an address to start at.\n\
2128 This command is a combination of tbreak and jump."));
2129 set_cmd_completer (c, location_completer);
2133 add_com_alias ("g", "go", class_run, 1);
2135 add_com ("continue", class_run, continue_command, _("\
2136 Continue program being debugged, after signal or breakpoint.\n\
2137 If proceeding from breakpoint, a number N may be used as an argument,\n\
2138 which means to set the ignore count of that breakpoint to N - 1 (so that\n\
2139 the breakpoint won't break until the Nth time it is reached)."));
2140 add_com_alias ("c", "cont", class_run, 1);
2141 add_com_alias ("fg", "cont", class_run, 1);
2143 c = add_com ("run", class_run, run_command, _("\
2144 Start debugged program. You may specify arguments to give it.\n\
2145 Args may include \"*\", or \"[...]\"; they are expanded using \"sh\".\n\
2146 Input and output redirection with \">\", \"<\", or \">>\" are also allowed.\n\n\
2147 With no arguments, uses arguments last specified (with \"run\" or \"set args\").\n\
2148 To cancel previous arguments and run with no arguments,\n\
2149 use \"set args\" without arguments."));
2150 set_cmd_completer (c, filename_completer);
2151 add_com_alias ("r", "run", class_run, 1);
2153 add_com ("R", class_run, run_no_args_command,
2154 _("Start debugged program with no arguments."));
2156 c = add_com ("start", class_run, start_command, _("\
2157 Run the debugged program until the beginning of the main procedure.\n\
2158 You may specify arguments to give to your program, just as with the\n\
2159 \"run\" command."));
2160 set_cmd_completer (c, filename_completer);
2162 add_com ("interrupt", class_run, interrupt_target_command,
2163 _("Interrupt the execution of the debugged program."));
2165 add_info ("registers", nofp_registers_info, _("\
2166 List of integer registers and their contents, for selected stack frame.\n\
2167 Register name as argument means describe only that register."));
2168 add_info_alias ("r", "registers", 1);
2171 add_com ("lr", class_info, nofp_registers_info, _("\
2172 List of integer registers and their contents, for selected stack frame.\n\
2173 Register name as argument means describe only that register."));
2174 add_info ("all-registers", all_registers_info, _("\
2175 List of all registers and their contents, for selected stack frame.\n\
2176 Register name as argument means describe only that register."));
2178 add_info ("program", program_info,
2179 _("Execution status of the program."));
2181 add_info ("float", float_info,
2182 _("Print the status of the floating point unit\n"));
2184 add_info ("vector", vector_info,
2185 _("Print the status of the vector unit\n"));
2187 inferior_environ = make_environ ();
2188 init_environ (inferior_environ);