* hppa-tdep.h (hppa_regnum): Add HPPA_R31_REGNUM.
[platform/upstream/binutils.git] / gdb / infcmd.c
1 /* Memory-access and commands for "inferior" process, for GDB.
2    Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
3    1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
4    Free Software Foundation, Inc.
5
6    This file is part of GDB.
7
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 2 of the License, or
11    (at your option) any later version.
12
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, write to the Free Software
20    Foundation, Inc., 59 Temple Place - Suite 330,
21    Boston, MA 02111-1307, USA.  */
22
23 #include "defs.h"
24 #include <signal.h>
25 #include "gdb_string.h"
26 #include "symtab.h"
27 #include "gdbtypes.h"
28 #include "frame.h"
29 #include "inferior.h"
30 #include "environ.h"
31 #include "value.h"
32 #include "gdbcmd.h"
33 #include "symfile.h"
34 #include "gdbcore.h"
35 #include "target.h"
36 #include "language.h"
37 #include "symfile.h"
38 #include "objfiles.h"
39 #include "completer.h"
40 #include "ui-out.h"
41 #include "event-top.h"
42 #include "parser-defs.h"
43 #include "regcache.h"
44 #include "reggroups.h"
45 #include "block.h"
46 #include <ctype.h>
47 #include "gdb_assert.h"
48
49 /* Functions exported for general use, in inferior.h: */
50
51 void all_registers_info (char *, int);
52
53 void registers_info (char *, int);
54
55 void nexti_command (char *, int);
56
57 void stepi_command (char *, int);
58
59 void continue_command (char *, int);
60
61 void interrupt_target_command (char *args, int from_tty);
62
63 /* Local functions: */
64
65 static void nofp_registers_info (char *, int);
66
67 static void print_return_value (int struct_return, struct type *value_type);
68
69 static void finish_command_continuation (struct continuation_arg *);
70
71 static void until_next_command (int);
72
73 static void until_command (char *, int);
74
75 static void path_info (char *, int);
76
77 static void path_command (char *, int);
78
79 static void unset_command (char *, int);
80
81 static void float_info (char *, int);
82
83 static void detach_command (char *, int);
84
85 static void disconnect_command (char *, int);
86
87 static void unset_environment_command (char *, int);
88
89 static void set_environment_command (char *, int);
90
91 static void environment_info (char *, int);
92
93 static void program_info (char *, int);
94
95 static void finish_command (char *, int);
96
97 static void signal_command (char *, int);
98
99 static void jump_command (char *, int);
100
101 static void step_1 (int, int, char *);
102 static void step_once (int skip_subroutines, int single_inst, int count);
103 static void step_1_continuation (struct continuation_arg *arg);
104
105 static void next_command (char *, int);
106
107 static void step_command (char *, int);
108
109 static void run_command (char *, int);
110
111 static void run_no_args_command (char *args, int from_tty);
112
113 static void go_command (char *line_no, int from_tty);
114
115 static int strip_bg_char (char **);
116
117 void _initialize_infcmd (void);
118
119 #define GO_USAGE   "Usage: go <location>\n"
120
121 #define ERROR_NO_INFERIOR \
122    if (!target_has_execution) error ("The program is not being run.");
123
124 /* String containing arguments to give to the program, separated by spaces.
125    Empty string (pointer to '\0') means no args.  */
126
127 static char *inferior_args;
128
129 /* The inferior arguments as a vector.  If INFERIOR_ARGC is nonzero,
130    then we must compute INFERIOR_ARGS from this (via the target).  */
131
132 static int inferior_argc;
133 static char **inferior_argv;
134
135 /* File name for default use for standard in/out in the inferior.  */
136
137 char *inferior_io_terminal;
138
139 /* Pid of our debugged inferior, or 0 if no inferior now.
140    Since various parts of infrun.c test this to see whether there is a program
141    being debugged it should be nonzero (currently 3 is used) for remote
142    debugging.  */
143
144 ptid_t inferior_ptid;
145
146 /* Last signal that the inferior received (why it stopped).  */
147
148 enum target_signal stop_signal;
149
150 /* Address at which inferior stopped.  */
151
152 CORE_ADDR stop_pc;
153
154 /* Chain containing status of breakpoint(s) that we have stopped at.  */
155
156 bpstat stop_bpstat;
157
158 /* Flag indicating that a command has proceeded the inferior past the
159    current breakpoint.  */
160
161 int breakpoint_proceeded;
162
163 /* Nonzero if stopped due to a step command.  */
164
165 int stop_step;
166
167 /* Nonzero if stopped due to completion of a stack dummy routine.  */
168
169 int stop_stack_dummy;
170
171 /* Nonzero if stopped due to a random (unexpected) signal in inferior
172    process.  */
173
174 int stopped_by_random_signal;
175
176 /* Range to single step within.
177    If this is nonzero, respond to a single-step signal
178    by continuing to step if the pc is in this range.  */
179
180 CORE_ADDR step_range_start;     /* Inclusive */
181 CORE_ADDR step_range_end;       /* Exclusive */
182
183 /* Stack frame address as of when stepping command was issued.
184    This is how we know when we step into a subroutine call,
185    and how to set the frame for the breakpoint used to step out.  */
186
187 struct frame_id step_frame_id;
188
189 enum step_over_calls_kind step_over_calls;
190
191 /* If stepping, nonzero means step count is > 1
192    so don't print frame next time inferior stops
193    if it stops due to stepping.  */
194
195 int step_multi;
196
197 /* Environment to use for running inferior,
198    in format described in environ.h.  */
199
200 struct environ *inferior_environ;
201 \f
202 /* Accessor routines. */
203
204 char *
205 get_inferior_args (void)
206 {
207   if (inferior_argc != 0)
208     {
209       char *n, *old;
210
211       n = gdbarch_construct_inferior_arguments (current_gdbarch,
212                                                 inferior_argc, inferior_argv);
213       old = set_inferior_args (n);
214       xfree (old);
215     }
216
217   if (inferior_args == NULL)
218     inferior_args = xstrdup ("");
219
220   return inferior_args;
221 }
222
223 char *
224 set_inferior_args (char *newargs)
225 {
226   char *saved_args = inferior_args;
227
228   inferior_args = newargs;
229   inferior_argc = 0;
230   inferior_argv = 0;
231
232   return saved_args;
233 }
234
235 void
236 set_inferior_args_vector (int argc, char **argv)
237 {
238   inferior_argc = argc;
239   inferior_argv = argv;
240 }
241
242 /* Notice when `set args' is run.  */
243 static void
244 notice_args_set (char *args, int from_tty, struct cmd_list_element *c)
245 {
246   inferior_argc = 0;
247   inferior_argv = 0;
248 }
249
250 /* Notice when `show args' is run.  */
251 static void
252 notice_args_read (char *args, int from_tty, struct cmd_list_element *c)
253 {
254   /* Might compute the value.  */
255   get_inferior_args ();
256 }
257
258 \f
259 /* Compute command-line string given argument vector.  This does the
260    same shell processing as fork_inferior.  */
261 char *
262 construct_inferior_arguments (struct gdbarch *gdbarch, int argc, char **argv)
263 {
264   char *result;
265
266   if (STARTUP_WITH_SHELL)
267     {
268       /* This holds all the characters considered special to the
269          typical Unix shells.  We include `^' because the SunOS
270          /bin/sh treats it as a synonym for `|'.  */
271       char *special = "\"!#$&*()\\|[]{}<>?'\"`~^; \t\n";
272       int i;
273       int length = 0;
274       char *out, *cp;
275
276       /* We over-compute the size.  It shouldn't matter.  */
277       for (i = 0; i < argc; ++i)
278         length += 2 * strlen (argv[i]) + 1 + 2 * (argv[i][0] == '\0');
279
280       result = (char *) xmalloc (length);
281       out = result;
282
283       for (i = 0; i < argc; ++i)
284         {
285           if (i > 0)
286             *out++ = ' ';
287
288           /* Need to handle empty arguments specially.  */
289           if (argv[i][0] == '\0')
290             {
291               *out++ = '\'';
292               *out++ = '\'';
293             }
294           else
295             {
296               for (cp = argv[i]; *cp; ++cp)
297                 {
298                   if (strchr (special, *cp) != NULL)
299                     *out++ = '\\';
300                   *out++ = *cp;
301                 }
302             }
303         }
304       *out = '\0';
305     }
306   else
307     {
308       /* In this case we can't handle arguments that contain spaces,
309          tabs, or newlines -- see breakup_args().  */
310       int i;
311       int length = 0;
312
313       for (i = 0; i < argc; ++i)
314         {
315           char *cp = strchr (argv[i], ' ');
316           if (cp == NULL)
317             cp = strchr (argv[i], '\t');
318           if (cp == NULL)
319             cp = strchr (argv[i], '\n');
320           if (cp != NULL)
321             error ("can't handle command-line argument containing whitespace");
322           length += strlen (argv[i]) + 1;
323         }
324
325       result = (char *) xmalloc (length);
326       result[0] = '\0';
327       for (i = 0; i < argc; ++i)
328         {
329           if (i > 0)
330             strcat (result, " ");
331           strcat (result, argv[i]);
332         }
333     }
334
335   return result;
336 }
337 \f
338
339 /* This function detects whether or not a '&' character (indicating
340    background execution) has been added as *the last* of the arguments ARGS
341    of a command. If it has, it removes it and returns 1. Otherwise it
342    does nothing and returns 0. */
343 static int
344 strip_bg_char (char **args)
345 {
346   char *p = NULL;
347
348   p = strchr (*args, '&');
349
350   if (p)
351     {
352       if (p == (*args + strlen (*args) - 1))
353         {
354           if (strlen (*args) > 1)
355             {
356               do
357                 p--;
358               while (*p == ' ' || *p == '\t');
359               *(p + 1) = '\0';
360             }
361           else
362             *args = 0;
363           return 1;
364         }
365     }
366   return 0;
367 }
368
369 void
370 tty_command (char *file, int from_tty)
371 {
372   if (file == 0)
373     error_no_arg ("terminal name for running target process");
374
375   inferior_io_terminal = savestring (file, strlen (file));
376 }
377
378 /* Kill the inferior if already running.  This function is designed
379    to be called when we are about to start the execution of the program
380    from the beginning.  Ask the user to confirm that he wants to restart
381    the program being debugged when FROM_TTY is non-null.  */
382
383 void
384 kill_if_already_running (int from_tty)
385 {
386   if (! ptid_equal (inferior_ptid, null_ptid) && target_has_execution)
387     {
388       if (from_tty
389           && !query ("The program being debugged has been started already.\n\
390 Start it from the beginning? "))
391         error ("Program not restarted.");
392       target_kill ();
393 #if defined(SOLIB_RESTART)
394       SOLIB_RESTART ();
395 #endif
396       init_wait_for_inferior ();
397     }
398 }
399
400 static void
401 run_command (char *args, int from_tty)
402 {
403   char *exec_file;
404
405   dont_repeat ();
406
407   kill_if_already_running (from_tty);
408   clear_breakpoint_hit_counts ();
409
410   /* Purge old solib objfiles. */
411   objfile_purge_solibs ();
412
413   do_run_cleanups (NULL);
414
415   /* The comment here used to read, "The exec file is re-read every
416      time we do a generic_mourn_inferior, so we just have to worry
417      about the symbol file."  The `generic_mourn_inferior' function
418      gets called whenever the program exits.  However, suppose the
419      program exits, and *then* the executable file changes?  We need
420      to check again here.  Since reopen_exec_file doesn't do anything
421      if the timestamp hasn't changed, I don't see the harm.  */
422   reopen_exec_file ();
423   reread_symbols ();
424
425   exec_file = (char *) get_exec_file (0);
426
427   /* We keep symbols from add-symbol-file, on the grounds that the
428      user might want to add some symbols before running the program
429      (right?).  But sometimes (dynamic loading where the user manually
430      introduces the new symbols with add-symbol-file), the code which
431      the symbols describe does not persist between runs.  Currently
432      the user has to manually nuke all symbols between runs if they
433      want them to go away (PR 2207).  This is probably reasonable.  */
434
435   if (!args)
436     {
437       if (event_loop_p && target_can_async_p ())
438         async_disable_stdin ();
439     }
440   else
441     {
442       int async_exec = strip_bg_char (&args);
443
444       /* If we get a request for running in the bg but the target
445          doesn't support it, error out. */
446       if (event_loop_p && async_exec && !target_can_async_p ())
447         error ("Asynchronous execution not supported on this target.");
448
449       /* If we don't get a request of running in the bg, then we need
450          to simulate synchronous (fg) execution. */
451       if (event_loop_p && !async_exec && target_can_async_p ())
452         {
453           /* Simulate synchronous execution */
454           async_disable_stdin ();
455         }
456
457       /* If there were other args, beside '&', process them. */
458       if (args)
459         {
460           char *old_args = set_inferior_args (xstrdup (args));
461           xfree (old_args);
462         }
463     }
464
465   if (from_tty)
466     {
467       ui_out_field_string (uiout, NULL, "Starting program");
468       ui_out_text (uiout, ": ");
469       if (exec_file)
470         ui_out_field_string (uiout, "execfile", exec_file);
471       ui_out_spaces (uiout, 1);
472       /* We call get_inferior_args() because we might need to compute
473          the value now.  */
474       ui_out_field_string (uiout, "infargs", get_inferior_args ());
475       ui_out_text (uiout, "\n");
476       ui_out_flush (uiout);
477     }
478
479   /* We call get_inferior_args() because we might need to compute
480      the value now.  */
481   target_create_inferior (exec_file, get_inferior_args (),
482                           environ_vector (inferior_environ), from_tty);
483 }
484
485
486 static void
487 run_no_args_command (char *args, int from_tty)
488 {
489   char *old_args = set_inferior_args (xstrdup (""));
490   xfree (old_args);
491 }
492 \f
493
494 /* Start the execution of the program up until the beginning of the main
495    program.  */
496
497 static void
498 start_command (char *args, int from_tty)
499 {
500   /* Some languages such as Ada need to search inside the program
501      minimal symbols for the location where to put the temporary
502      breakpoint before starting.  */
503   if (!have_minimal_symbols ())
504     error ("No symbol table loaded.  Use the \"file\" command.");
505
506   /* If the inferior is already running, we want to ask the user if we
507      should restart it or not before we insert the temporary breakpoint.
508      This makes sure that this command doesn't have any side effect if
509      the user changes its mind.  */
510   kill_if_already_running (from_tty);
511
512   /* Insert the temporary breakpoint, and run...  */
513   tbreak_command (main_name (), 0);
514   run_command (args, from_tty);
515
516
517 void
518 continue_command (char *proc_count_exp, int from_tty)
519 {
520   int async_exec = 0;
521   ERROR_NO_INFERIOR;
522
523   /* Find out whether we must run in the background. */
524   if (proc_count_exp != NULL)
525     async_exec = strip_bg_char (&proc_count_exp);
526
527   /* If we must run in the background, but the target can't do it,
528      error out. */
529   if (event_loop_p && async_exec && !target_can_async_p ())
530     error ("Asynchronous execution not supported on this target.");
531
532   /* If we are not asked to run in the bg, then prepare to run in the
533      foreground, synchronously. */
534   if (event_loop_p && !async_exec && target_can_async_p ())
535     {
536       /* Simulate synchronous execution */
537       async_disable_stdin ();
538     }
539
540   /* If have argument (besides '&'), set proceed count of breakpoint
541      we stopped at.  */
542   if (proc_count_exp != NULL)
543     {
544       bpstat bs = stop_bpstat;
545       int num = bpstat_num (&bs);
546       if (num == 0 && from_tty)
547         {
548           printf_filtered
549             ("Not stopped at any breakpoint; argument ignored.\n");
550         }
551       while (num != 0)
552         {
553           set_ignore_count (num,
554                             parse_and_eval_long (proc_count_exp) - 1,
555                             from_tty);
556           /* set_ignore_count prints a message ending with a period.
557              So print two spaces before "Continuing.".  */
558           if (from_tty)
559             printf_filtered ("  ");
560           num = bpstat_num (&bs);
561         }
562     }
563
564   if (from_tty)
565     printf_filtered ("Continuing.\n");
566
567   clear_proceed_status ();
568
569   proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0);
570 }
571 \f
572 /* Step until outside of current statement.  */
573
574 static void
575 step_command (char *count_string, int from_tty)
576 {
577   step_1 (0, 0, count_string);
578 }
579
580 /* Likewise, but skip over subroutine calls as if single instructions.  */
581
582 static void
583 next_command (char *count_string, int from_tty)
584 {
585   step_1 (1, 0, count_string);
586 }
587
588 /* Likewise, but step only one instruction.  */
589
590 void
591 stepi_command (char *count_string, int from_tty)
592 {
593   step_1 (0, 1, count_string);
594 }
595
596 void
597 nexti_command (char *count_string, int from_tty)
598 {
599   step_1 (1, 1, count_string);
600 }
601
602 static void
603 disable_longjmp_breakpoint_cleanup (void *ignore)
604 {
605   disable_longjmp_breakpoint ();
606 }
607
608 static void
609 step_1 (int skip_subroutines, int single_inst, char *count_string)
610 {
611   int count = 1;
612   struct frame_info *frame;
613   struct cleanup *cleanups = 0;
614   int async_exec = 0;
615
616   ERROR_NO_INFERIOR;
617
618   if (count_string)
619     async_exec = strip_bg_char (&count_string);
620
621   /* If we get a request for running in the bg but the target
622      doesn't support it, error out. */
623   if (event_loop_p && async_exec && !target_can_async_p ())
624     error ("Asynchronous execution not supported on this target.");
625
626   /* If we don't get a request of running in the bg, then we need
627      to simulate synchronous (fg) execution. */
628   if (event_loop_p && !async_exec && target_can_async_p ())
629     {
630       /* Simulate synchronous execution */
631       async_disable_stdin ();
632     }
633
634   count = count_string ? parse_and_eval_long (count_string) : 1;
635
636   if (!single_inst || skip_subroutines)         /* leave si command alone */
637     {
638       enable_longjmp_breakpoint ();
639       if (!event_loop_p || !target_can_async_p ())
640         cleanups = make_cleanup (disable_longjmp_breakpoint_cleanup, 0 /*ignore*/);
641       else
642         make_exec_cleanup (disable_longjmp_breakpoint_cleanup, 0 /*ignore*/);
643     }
644
645   /* In synchronous case, all is well, just use the regular for loop. */
646   if (!event_loop_p || !target_can_async_p ())
647     {
648       for (; count > 0; count--)
649         {
650           clear_proceed_status ();
651
652           frame = get_current_frame ();
653           if (!frame)           /* Avoid coredump here.  Why tho? */
654             error ("No current frame");
655           step_frame_id = get_frame_id (frame);
656
657           if (!single_inst)
658             {
659               find_pc_line_pc_range (stop_pc, &step_range_start, &step_range_end);
660               if (step_range_end == 0)
661                 {
662                   char *name;
663                   if (find_pc_partial_function (stop_pc, &name, &step_range_start,
664                                                 &step_range_end) == 0)
665                     error ("Cannot find bounds of current function");
666
667                   target_terminal_ours ();
668                   printf_filtered ("\
669 Single stepping until exit from function %s, \n\
670 which has no line number information.\n", name);
671                 }
672             }
673           else
674             {
675               /* Say we are stepping, but stop after one insn whatever it does.  */
676               step_range_start = step_range_end = 1;
677               if (!skip_subroutines)
678                 /* It is stepi.
679                    Don't step over function calls, not even to functions lacking
680                    line numbers.  */
681                 step_over_calls = STEP_OVER_NONE;
682             }
683
684           if (skip_subroutines)
685             step_over_calls = STEP_OVER_ALL;
686
687           step_multi = (count > 1);
688           proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1);
689
690           if (!stop_step)
691             break;
692         }
693
694       if (!single_inst || skip_subroutines)
695         do_cleanups (cleanups);
696       return;
697     }
698   /* In case of asynchronous target things get complicated, do only
699      one step for now, before returning control to the event loop. Let
700      the continuation figure out how many other steps we need to do,
701      and handle them one at the time, through step_once(). */
702   else
703     {
704       if (event_loop_p && target_can_async_p ())
705         step_once (skip_subroutines, single_inst, count);
706     }
707 }
708
709 /* Called after we are done with one step operation, to check whether
710    we need to step again, before we print the prompt and return control
711    to the user. If count is > 1, we will need to do one more call to
712    proceed(), via step_once(). Basically it is like step_once and
713    step_1_continuation are co-recursive. */
714 static void
715 step_1_continuation (struct continuation_arg *arg)
716 {
717   int count;
718   int skip_subroutines;
719   int single_inst;
720
721   skip_subroutines = arg->data.integer;
722   single_inst      = arg->next->data.integer;
723   count            = arg->next->next->data.integer;
724
725   if (stop_step)
726     step_once (skip_subroutines, single_inst, count - 1);
727   else
728     if (!single_inst || skip_subroutines)
729       do_exec_cleanups (ALL_CLEANUPS);
730 }
731
732 /* Do just one step operation. If count >1 we will have to set up a
733    continuation to be done after the target stops (after this one
734    step). This is useful to implement the 'step n' kind of commands, in
735    case of asynchronous targets. We had to split step_1 into two parts,
736    one to be done before proceed() and one afterwards. This function is
737    called in case of step n with n>1, after the first step operation has
738    been completed.*/
739 static void 
740 step_once (int skip_subroutines, int single_inst, int count)
741
742   struct continuation_arg *arg1; 
743   struct continuation_arg *arg2;
744   struct continuation_arg *arg3; 
745   struct frame_info *frame;
746
747   if (count > 0)
748     {
749       clear_proceed_status ();
750
751       frame = get_current_frame ();
752       if (!frame)               /* Avoid coredump here.  Why tho? */
753         error ("No current frame");
754       step_frame_id = get_frame_id (frame);
755
756       if (!single_inst)
757         {
758           find_pc_line_pc_range (stop_pc, &step_range_start, &step_range_end);
759
760           /* If we have no line info, switch to stepi mode.  */
761           if (step_range_end == 0 && step_stop_if_no_debug)
762             {
763               step_range_start = step_range_end = 1;
764             }
765           else if (step_range_end == 0)
766             {
767               char *name;
768               if (find_pc_partial_function (stop_pc, &name, &step_range_start,
769                                             &step_range_end) == 0)
770                 error ("Cannot find bounds of current function");
771
772               target_terminal_ours ();
773               printf_filtered ("\
774 Single stepping until exit from function %s, \n\
775 which has no line number information.\n", name);
776             }
777         }
778       else
779         {
780           /* Say we are stepping, but stop after one insn whatever it does.  */
781           step_range_start = step_range_end = 1;
782           if (!skip_subroutines)
783             /* It is stepi.
784                Don't step over function calls, not even to functions lacking
785                line numbers.  */
786             step_over_calls = STEP_OVER_NONE;
787         }
788
789       if (skip_subroutines)
790         step_over_calls = STEP_OVER_ALL;
791
792       step_multi = (count > 1);
793       arg1 =
794         (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
795       arg2 =
796         (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
797       arg3 =
798         (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
799       arg1->next = arg2;
800       arg1->data.integer = skip_subroutines;
801       arg2->next = arg3;
802       arg2->data.integer = single_inst;
803       arg3->next = NULL;
804       arg3->data.integer = count;
805       add_intermediate_continuation (step_1_continuation, arg1);
806       proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1);
807     }
808 }
809
810 \f
811 /* Continue program at specified address.  */
812
813 static void
814 jump_command (char *arg, int from_tty)
815 {
816   CORE_ADDR addr;
817   struct symtabs_and_lines sals;
818   struct symtab_and_line sal;
819   struct symbol *fn;
820   struct symbol *sfn;
821   int async_exec = 0;
822
823   ERROR_NO_INFERIOR;
824
825   /* Find out whether we must run in the background. */
826   if (arg != NULL)
827     async_exec = strip_bg_char (&arg);
828
829   /* If we must run in the background, but the target can't do it,
830      error out. */
831   if (event_loop_p && async_exec && !target_can_async_p ())
832     error ("Asynchronous execution not supported on this target.");
833
834   /* If we are not asked to run in the bg, then prepare to run in the
835      foreground, synchronously. */
836   if (event_loop_p && !async_exec && target_can_async_p ())
837     {
838       /* Simulate synchronous execution */
839       async_disable_stdin ();
840     }
841
842   if (!arg)
843     error_no_arg ("starting address");
844
845   sals = decode_line_spec_1 (arg, 1);
846   if (sals.nelts != 1)
847     {
848       error ("Unreasonable jump request");
849     }
850
851   sal = sals.sals[0];
852   xfree (sals.sals);
853
854   if (sal.symtab == 0 && sal.pc == 0)
855     error ("No source file has been specified.");
856
857   resolve_sal_pc (&sal);        /* May error out */
858
859   /* See if we are trying to jump to another function. */
860   fn = get_frame_function (get_current_frame ());
861   sfn = find_pc_function (sal.pc);
862   if (fn != NULL && sfn != fn)
863     {
864       if (!query ("Line %d is not in `%s'.  Jump anyway? ", sal.line,
865                   SYMBOL_PRINT_NAME (fn)))
866         {
867           error ("Not confirmed.");
868           /* NOTREACHED */
869         }
870     }
871
872   if (sfn != NULL)
873     {
874       fixup_symbol_section (sfn, 0);
875       if (section_is_overlay (SYMBOL_BFD_SECTION (sfn)) &&
876           !section_is_mapped (SYMBOL_BFD_SECTION (sfn)))
877         {
878           if (!query ("WARNING!!!  Destination is in unmapped overlay!  Jump anyway? "))
879             {
880               error ("Not confirmed.");
881               /* NOTREACHED */
882             }
883         }
884     }
885
886   addr = sal.pc;
887
888   if (from_tty)
889     {
890       printf_filtered ("Continuing at ");
891       print_address_numeric (addr, 1, gdb_stdout);
892       printf_filtered (".\n");
893     }
894
895   clear_proceed_status ();
896   proceed (addr, TARGET_SIGNAL_0, 0);
897 }
898 \f
899
900 /* Go to line or address in current procedure */
901 static void
902 go_command (char *line_no, int from_tty)
903 {
904   if (line_no == (char *) NULL || !*line_no)
905     printf_filtered (GO_USAGE);
906   else
907     {
908       tbreak_command (line_no, from_tty);
909       jump_command (line_no, from_tty);
910     }
911 }
912 \f
913
914 /* Continue program giving it specified signal.  */
915
916 static void
917 signal_command (char *signum_exp, int from_tty)
918 {
919   enum target_signal oursig;
920
921   dont_repeat ();               /* Too dangerous.  */
922   ERROR_NO_INFERIOR;
923
924   if (!signum_exp)
925     error_no_arg ("signal number");
926
927   /* It would be even slicker to make signal names be valid expressions,
928      (the type could be "enum $signal" or some such), then the user could
929      assign them to convenience variables.  */
930   oursig = target_signal_from_name (signum_exp);
931
932   if (oursig == TARGET_SIGNAL_UNKNOWN)
933     {
934       /* No, try numeric.  */
935       int num = parse_and_eval_long (signum_exp);
936
937       if (num == 0)
938         oursig = TARGET_SIGNAL_0;
939       else
940         oursig = target_signal_from_command (num);
941     }
942
943   if (from_tty)
944     {
945       if (oursig == TARGET_SIGNAL_0)
946         printf_filtered ("Continuing with no signal.\n");
947       else
948         printf_filtered ("Continuing with signal %s.\n",
949                          target_signal_to_name (oursig));
950     }
951
952   clear_proceed_status ();
953   /* "signal 0" should not get stuck if we are stopped at a breakpoint.
954      FIXME: Neither should "signal foo" but when I tried passing
955      (CORE_ADDR)-1 unconditionally I got a testsuite failure which I haven't
956      tried to track down yet.  */
957   proceed (oursig == TARGET_SIGNAL_0 ? (CORE_ADDR) -1 : stop_pc, oursig, 0);
958 }
959
960 /* Proceed until we reach a different source line with pc greater than
961    our current one or exit the function.  We skip calls in both cases.
962
963    Note that eventually this command should probably be changed so
964    that only source lines are printed out when we hit the breakpoint
965    we set.  This may involve changes to wait_for_inferior and the
966    proceed status code.  */
967
968 static void
969 until_next_command (int from_tty)
970 {
971   struct frame_info *frame;
972   CORE_ADDR pc;
973   struct symbol *func;
974   struct symtab_and_line sal;
975
976   clear_proceed_status ();
977
978   frame = get_current_frame ();
979
980   /* Step until either exited from this function or greater
981      than the current line (if in symbolic section) or pc (if
982      not). */
983
984   pc = read_pc ();
985   func = find_pc_function (pc);
986
987   if (!func)
988     {
989       struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (pc);
990
991       if (msymbol == NULL)
992         error ("Execution is not within a known function.");
993
994       step_range_start = SYMBOL_VALUE_ADDRESS (msymbol);
995       step_range_end = pc;
996     }
997   else
998     {
999       sal = find_pc_line (pc, 0);
1000
1001       step_range_start = BLOCK_START (SYMBOL_BLOCK_VALUE (func));
1002       step_range_end = sal.end;
1003     }
1004
1005   step_over_calls = STEP_OVER_ALL;
1006   step_frame_id = get_frame_id (frame);
1007
1008   step_multi = 0;               /* Only one call to proceed */
1009
1010   proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1);
1011 }
1012
1013 static void
1014 until_command (char *arg, int from_tty)
1015 {
1016   int async_exec = 0;
1017
1018   if (!target_has_execution)
1019     error ("The program is not running.");
1020
1021   /* Find out whether we must run in the background. */
1022   if (arg != NULL)
1023     async_exec = strip_bg_char (&arg);
1024
1025   /* If we must run in the background, but the target can't do it,
1026      error out. */
1027   if (event_loop_p && async_exec && !target_can_async_p ())
1028     error ("Asynchronous execution not supported on this target.");
1029
1030   /* If we are not asked to run in the bg, then prepare to run in the
1031      foreground, synchronously. */
1032   if (event_loop_p && !async_exec && target_can_async_p ())
1033     {
1034       /* Simulate synchronous execution */
1035       async_disable_stdin ();
1036     }
1037
1038   if (arg)
1039     until_break_command (arg, from_tty, 0);
1040   else
1041     until_next_command (from_tty);
1042 }
1043
1044 static void
1045 advance_command (char *arg, int from_tty)
1046 {
1047   int async_exec = 0;
1048
1049   if (!target_has_execution)
1050     error ("The program is not running.");
1051
1052   if (arg == NULL)
1053     error_no_arg ("a location");
1054
1055   /* Find out whether we must run in the background.  */
1056   if (arg != NULL)
1057     async_exec = strip_bg_char (&arg);
1058
1059   /* If we must run in the background, but the target can't do it,
1060      error out.  */
1061   if (event_loop_p && async_exec && !target_can_async_p ())
1062     error ("Asynchronous execution not supported on this target.");
1063
1064   /* If we are not asked to run in the bg, then prepare to run in the
1065      foreground, synchronously.  */
1066   if (event_loop_p && !async_exec && target_can_async_p ())
1067     {
1068       /* Simulate synchronous execution.  */
1069       async_disable_stdin ();
1070     }
1071
1072   until_break_command (arg, from_tty, 1);
1073 }
1074 \f
1075
1076 static struct value *
1077 legacy_return_value (int struct_return, struct type *value_type)
1078 {
1079   struct value *value;
1080
1081   if (!struct_return)
1082     {
1083       /* The return value can be found in the inferior's registers.  */
1084       return register_value_being_returned (value_type, stop_registers);
1085     }
1086
1087   if (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P ())
1088     {
1089       CORE_ADDR addr;
1090
1091       addr = DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS (stop_registers);
1092       if (!addr)
1093         error ("Function return value unknown.");
1094       return value_at (value_type, addr, NULL);
1095     }
1096
1097   /* It is "struct return" yet the value is being extracted,
1098      presumably from registers, using EXTRACT_RETURN_VALUE.  This
1099      doesn't make sense.  Unfortunately, the legacy interfaces allowed
1100      this behavior.  Sigh!  */
1101   value = allocate_value (value_type);
1102   CHECK_TYPEDEF (value_type);
1103   /* If the function returns void, don't bother fetching the return
1104      value.  */
1105   EXTRACT_RETURN_VALUE (value_type, stop_registers,
1106                         VALUE_CONTENTS_RAW (value));
1107   return value;
1108 }
1109
1110 /* Print the result of a function at the end of a 'finish' command.  */
1111
1112 static void
1113 print_return_value (int struct_return, struct type *value_type)
1114 {
1115   struct gdbarch *gdbarch = current_gdbarch;
1116   struct cleanup *old_chain;
1117   struct ui_stream *stb;
1118   struct value *value = NULL;
1119
1120   /* FIXME: 2003-09-27: When returning from a nested inferior function
1121      call, it's possible (with no help from the architecture vector)
1122      to locate and return/print a "struct return" value.  This is just
1123      a more complicated case of what is already being done in in the
1124      inferior function call code.  In fact, when inferior function
1125      calls are made async, this will likely be made the norm.  */
1126
1127   if (gdbarch_return_value_p (gdbarch))
1128     {
1129       switch (gdbarch_return_value (gdbarch, value_type, NULL, NULL, NULL))
1130         {
1131         case RETURN_VALUE_REGISTER_CONVENTION:
1132         case RETURN_VALUE_ABI_RETURNS_ADDRESS:
1133           value = allocate_value (value_type);
1134           CHECK_TYPEDEF (value_type);
1135           gdbarch_return_value (current_gdbarch, value_type, stop_registers,
1136                                 VALUE_CONTENTS_RAW (value), NULL);
1137           break;
1138
1139         case RETURN_VALUE_STRUCT_CONVENTION:
1140           break;
1141         }
1142     }
1143   else
1144     value = legacy_return_value (struct_return, value_type);
1145
1146   if (value)
1147     {
1148       /* Print it.  */
1149       stb = ui_out_stream_new (uiout);
1150       old_chain = make_cleanup_ui_out_stream_delete (stb);
1151       ui_out_text (uiout, "Value returned is ");
1152       ui_out_field_fmt (uiout, "gdb-result-var", "$%d",
1153                         record_latest_value (value));
1154       ui_out_text (uiout, " = ");
1155       value_print (value, stb->stream, 0, Val_no_prettyprint);
1156       ui_out_field_stream (uiout, "return-value", stb);
1157       ui_out_text (uiout, "\n");
1158       do_cleanups (old_chain);
1159     }
1160   else
1161     {
1162       ui_out_text (uiout, "Value returned has type: ");
1163       ui_out_field_string (uiout, "return-type", TYPE_NAME (value_type));
1164       ui_out_text (uiout, ".");
1165       ui_out_text (uiout, " Cannot determine contents\n");
1166     }
1167 }
1168
1169 /* Stuff that needs to be done by the finish command after the target
1170    has stopped.  In asynchronous mode, we wait for the target to stop
1171    in the call to poll or select in the event loop, so it is
1172    impossible to do all the stuff as part of the finish_command
1173    function itself.  The only chance we have to complete this command
1174    is in fetch_inferior_event, which is called by the event loop as
1175    soon as it detects that the target has stopped. This function is
1176    called via the cmd_continuation pointer.  */
1177
1178 static void
1179 finish_command_continuation (struct continuation_arg *arg)
1180 {
1181   struct symbol *function;
1182   struct breakpoint *breakpoint;
1183   struct cleanup *cleanups;
1184
1185   breakpoint = (struct breakpoint *) arg->data.pointer;
1186   function = (struct symbol *) arg->next->data.pointer;
1187   cleanups = (struct cleanup *) arg->next->next->data.pointer;
1188
1189   if (bpstat_find_breakpoint (stop_bpstat, breakpoint) != NULL
1190       && function != NULL)
1191     {
1192       struct type *value_type;
1193       int struct_return;
1194       int gcc_compiled;
1195
1196       value_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (function));
1197       if (!value_type)
1198         internal_error (__FILE__, __LINE__,
1199                         "finish_command: function has no target type");
1200
1201       if (TYPE_CODE (value_type) == TYPE_CODE_VOID)
1202         {
1203           do_exec_cleanups (cleanups);
1204           return;
1205         }
1206
1207       CHECK_TYPEDEF (value_type);
1208       gcc_compiled = BLOCK_GCC_COMPILED (SYMBOL_BLOCK_VALUE (function));
1209       struct_return = using_struct_return (value_type, gcc_compiled);
1210
1211       print_return_value (struct_return, value_type); 
1212     }
1213
1214   do_exec_cleanups (cleanups);
1215 }
1216
1217 /* "finish": Set a temporary breakpoint at the place the selected
1218    frame will return to, then continue.  */
1219
1220 static void
1221 finish_command (char *arg, int from_tty)
1222 {
1223   struct symtab_and_line sal;
1224   struct frame_info *frame;
1225   struct symbol *function;
1226   struct breakpoint *breakpoint;
1227   struct cleanup *old_chain;
1228   struct continuation_arg *arg1, *arg2, *arg3;
1229
1230   int async_exec = 0;
1231
1232   /* Find out whether we must run in the background.  */
1233   if (arg != NULL)
1234     async_exec = strip_bg_char (&arg);
1235
1236   /* If we must run in the background, but the target can't do it,
1237      error out.  */
1238   if (event_loop_p && async_exec && !target_can_async_p ())
1239     error ("Asynchronous execution not supported on this target.");
1240
1241   /* If we are not asked to run in the bg, then prepare to run in the
1242      foreground, synchronously.  */
1243   if (event_loop_p && !async_exec && target_can_async_p ())
1244     {
1245       /* Simulate synchronous execution.  */
1246       async_disable_stdin ();
1247     }
1248
1249   if (arg)
1250     error ("The \"finish\" command does not take any arguments.");
1251   if (!target_has_execution)
1252     error ("The program is not running.");
1253   if (deprecated_selected_frame == NULL)
1254     error ("No selected frame.");
1255
1256   frame = get_prev_frame (deprecated_selected_frame);
1257   if (frame == 0)
1258     error ("\"finish\" not meaningful in the outermost frame.");
1259
1260   clear_proceed_status ();
1261
1262   sal = find_pc_line (get_frame_pc (frame), 0);
1263   sal.pc = get_frame_pc (frame);
1264
1265   breakpoint = set_momentary_breakpoint (sal, get_frame_id (frame), bp_finish);
1266
1267   if (!event_loop_p || !target_can_async_p ())
1268     old_chain = make_cleanup_delete_breakpoint (breakpoint);
1269   else
1270     old_chain = make_exec_cleanup_delete_breakpoint (breakpoint);
1271
1272   /* Find the function we will return from.  */
1273
1274   function = find_pc_function (get_frame_pc (deprecated_selected_frame));
1275
1276   /* Print info on the selected frame, including level number but not
1277      source.  */
1278   if (from_tty)
1279     {
1280       printf_filtered ("Run till exit from ");
1281       print_stack_frame (get_selected_frame (), 1, LOCATION);
1282     }
1283
1284   /* If running asynchronously and the target support asynchronous
1285      execution, set things up for the rest of the finish command to be
1286      completed later on, when gdb has detected that the target has
1287      stopped, in fetch_inferior_event.  */
1288   if (event_loop_p && target_can_async_p ())
1289     {
1290       arg1 =
1291         (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
1292       arg2 =
1293         (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
1294       arg3 =
1295         (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
1296       arg1->next = arg2;
1297       arg2->next = arg3;
1298       arg3->next = NULL;
1299       arg1->data.pointer = breakpoint;
1300       arg2->data.pointer = function;
1301       arg3->data.pointer = old_chain;
1302       add_continuation (finish_command_continuation, arg1);
1303     }
1304
1305   proceed_to_finish = 1;        /* We want stop_registers, please...  */
1306   proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0);
1307
1308   /* Do this only if not running asynchronously or if the target
1309      cannot do async execution.  Otherwise, complete this command when
1310      the target actually stops, in fetch_inferior_event.  */
1311   if (!event_loop_p || !target_can_async_p ())
1312     {
1313       /* Did we stop at our breakpoint?  */
1314       if (bpstat_find_breakpoint (stop_bpstat, breakpoint) != NULL
1315           && function != NULL)
1316         {
1317           struct type *value_type;
1318           int struct_return;
1319           int gcc_compiled;
1320
1321           value_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (function));
1322           if (!value_type)
1323             internal_error (__FILE__, __LINE__,
1324                             "finish_command: function has no target type");
1325
1326           /* FIXME: Shouldn't we do the cleanups before returning?  */
1327           if (TYPE_CODE (value_type) == TYPE_CODE_VOID)
1328             return;
1329
1330           CHECK_TYPEDEF (value_type);
1331           gcc_compiled = BLOCK_GCC_COMPILED (SYMBOL_BLOCK_VALUE (function));
1332           struct_return = using_struct_return (value_type, gcc_compiled);
1333
1334           print_return_value (struct_return, value_type); 
1335         }
1336
1337       do_cleanups (old_chain);
1338     }
1339 }
1340 \f
1341
1342 static void
1343 program_info (char *args, int from_tty)
1344 {
1345   bpstat bs = stop_bpstat;
1346   int num = bpstat_num (&bs);
1347
1348   if (!target_has_execution)
1349     {
1350       printf_filtered ("The program being debugged is not being run.\n");
1351       return;
1352     }
1353
1354   target_files_info ();
1355   printf_filtered ("Program stopped at %s.\n",
1356                    local_hex_string ((unsigned long) stop_pc));
1357   if (stop_step)
1358     printf_filtered ("It stopped after being stepped.\n");
1359   else if (num != 0)
1360     {
1361       /* There may be several breakpoints in the same place, so this
1362          isn't as strange as it seems.  */
1363       while (num != 0)
1364         {
1365           if (num < 0)
1366             {
1367               printf_filtered ("It stopped at a breakpoint that has ");
1368               printf_filtered ("since been deleted.\n");
1369             }
1370           else
1371             printf_filtered ("It stopped at breakpoint %d.\n", num);
1372           num = bpstat_num (&bs);
1373         }
1374     }
1375   else if (stop_signal != TARGET_SIGNAL_0)
1376     {
1377       printf_filtered ("It stopped with signal %s, %s.\n",
1378                        target_signal_to_name (stop_signal),
1379                        target_signal_to_string (stop_signal));
1380     }
1381
1382   if (!from_tty)
1383     {
1384       printf_filtered ("Type \"info stack\" or \"info registers\" ");
1385       printf_filtered ("for more information.\n");
1386     }
1387 }
1388 \f
1389 static void
1390 environment_info (char *var, int from_tty)
1391 {
1392   if (var)
1393     {
1394       char *val = get_in_environ (inferior_environ, var);
1395       if (val)
1396         {
1397           puts_filtered (var);
1398           puts_filtered (" = ");
1399           puts_filtered (val);
1400           puts_filtered ("\n");
1401         }
1402       else
1403         {
1404           puts_filtered ("Environment variable \"");
1405           puts_filtered (var);
1406           puts_filtered ("\" not defined.\n");
1407         }
1408     }
1409   else
1410     {
1411       char **vector = environ_vector (inferior_environ);
1412       while (*vector)
1413         {
1414           puts_filtered (*vector++);
1415           puts_filtered ("\n");
1416         }
1417     }
1418 }
1419
1420 static void
1421 set_environment_command (char *arg, int from_tty)
1422 {
1423   char *p, *val, *var;
1424   int nullset = 0;
1425
1426   if (arg == 0)
1427     error_no_arg ("environment variable and value");
1428
1429   /* Find seperation between variable name and value */
1430   p = (char *) strchr (arg, '=');
1431   val = (char *) strchr (arg, ' ');
1432
1433   if (p != 0 && val != 0)
1434     {
1435       /* We have both a space and an equals.  If the space is before the
1436          equals, walk forward over the spaces til we see a nonspace 
1437          (possibly the equals). */
1438       if (p > val)
1439         while (*val == ' ')
1440           val++;
1441
1442       /* Now if the = is after the char following the spaces,
1443          take the char following the spaces.  */
1444       if (p > val)
1445         p = val - 1;
1446     }
1447   else if (val != 0 && p == 0)
1448     p = val;
1449
1450   if (p == arg)
1451     error_no_arg ("environment variable to set");
1452
1453   if (p == 0 || p[1] == 0)
1454     {
1455       nullset = 1;
1456       if (p == 0)
1457         p = arg + strlen (arg); /* So that savestring below will work */
1458     }
1459   else
1460     {
1461       /* Not setting variable value to null */
1462       val = p + 1;
1463       while (*val == ' ' || *val == '\t')
1464         val++;
1465     }
1466
1467   while (p != arg && (p[-1] == ' ' || p[-1] == '\t'))
1468     p--;
1469
1470   var = savestring (arg, p - arg);
1471   if (nullset)
1472     {
1473       printf_filtered ("Setting environment variable ");
1474       printf_filtered ("\"%s\" to null value.\n", var);
1475       set_in_environ (inferior_environ, var, "");
1476     }
1477   else
1478     set_in_environ (inferior_environ, var, val);
1479   xfree (var);
1480 }
1481
1482 static void
1483 unset_environment_command (char *var, int from_tty)
1484 {
1485   if (var == 0)
1486     {
1487       /* If there is no argument, delete all environment variables.
1488          Ask for confirmation if reading from the terminal.  */
1489       if (!from_tty || query ("Delete all environment variables? "))
1490         {
1491           free_environ (inferior_environ);
1492           inferior_environ = make_environ ();
1493         }
1494     }
1495   else
1496     unset_in_environ (inferior_environ, var);
1497 }
1498
1499 /* Handle the execution path (PATH variable) */
1500
1501 static const char path_var_name[] = "PATH";
1502
1503 static void
1504 path_info (char *args, int from_tty)
1505 {
1506   puts_filtered ("Executable and object file path: ");
1507   puts_filtered (get_in_environ (inferior_environ, path_var_name));
1508   puts_filtered ("\n");
1509 }
1510
1511 /* Add zero or more directories to the front of the execution path.  */
1512
1513 static void
1514 path_command (char *dirname, int from_tty)
1515 {
1516   char *exec_path;
1517   char *env;
1518   dont_repeat ();
1519   env = get_in_environ (inferior_environ, path_var_name);
1520   /* Can be null if path is not set */
1521   if (!env)
1522     env = "";
1523   exec_path = xstrdup (env);
1524   mod_path (dirname, &exec_path);
1525   set_in_environ (inferior_environ, path_var_name, exec_path);
1526   xfree (exec_path);
1527   if (from_tty)
1528     path_info ((char *) NULL, from_tty);
1529 }
1530 \f
1531
1532 /* Print out the machine register regnum. If regnum is -1, print all
1533    registers (print_all == 1) or all non-float and non-vector
1534    registers (print_all == 0).
1535
1536    For most machines, having all_registers_info() print the
1537    register(s) one per line is good enough.  If a different format is
1538    required, (eg, for MIPS or Pyramid 90x, which both have lots of
1539    regs), or there is an existing convention for showing all the
1540    registers, define the architecture method PRINT_REGISTERS_INFO to
1541    provide that format.  */
1542
1543 void
1544 default_print_registers_info (struct gdbarch *gdbarch,
1545                               struct ui_file *file,
1546                               struct frame_info *frame,
1547                               int regnum, int print_all)
1548 {
1549   int i;
1550   const int numregs = NUM_REGS + NUM_PSEUDO_REGS;
1551   char raw_buffer[MAX_REGISTER_SIZE];
1552   char virtual_buffer[MAX_REGISTER_SIZE];
1553
1554   if (DEPRECATED_DO_REGISTERS_INFO_P ())
1555     {
1556       DEPRECATED_DO_REGISTERS_INFO (regnum, print_all);
1557       return;
1558     }
1559
1560   for (i = 0; i < numregs; i++)
1561     {
1562       /* Decide between printing all regs, non-float / vector regs, or
1563          specific reg.  */
1564       if (regnum == -1)
1565         {
1566           if (print_all)
1567             {
1568               if (!gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
1569                 continue;
1570             }
1571           else
1572             {
1573               if (!gdbarch_register_reggroup_p (gdbarch, i, general_reggroup))
1574                 continue;
1575             }
1576         }
1577       else
1578         {
1579           if (i != regnum)
1580             continue;
1581         }
1582
1583       /* If the register name is empty, it is undefined for this
1584          processor, so don't display anything.  */
1585       if (REGISTER_NAME (i) == NULL || *(REGISTER_NAME (i)) == '\0')
1586         continue;
1587
1588       fputs_filtered (REGISTER_NAME (i), file);
1589       print_spaces_filtered (15 - strlen (REGISTER_NAME (i)), file);
1590
1591       /* Get the data in raw format.  */
1592       if (! frame_register_read (frame, i, raw_buffer))
1593         {
1594           fprintf_filtered (file, "*value not available*\n");
1595           continue;
1596         }
1597
1598       /* FIXME: cagney/2002-08-03: This code shouldn't be necessary.
1599          The function frame_register_read() should have returned the
1600          pre-cooked register so no conversion is necessary.  */
1601       /* Convert raw data to virtual format if necessary.  */
1602       if (DEPRECATED_REGISTER_CONVERTIBLE_P ()
1603           && DEPRECATED_REGISTER_CONVERTIBLE (i))
1604         {
1605           DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL (i, register_type (current_gdbarch, i),
1606                                        raw_buffer, virtual_buffer);
1607         }
1608       else
1609         {
1610           memcpy (virtual_buffer, raw_buffer,
1611                   DEPRECATED_REGISTER_VIRTUAL_SIZE (i));
1612         }
1613
1614       /* If virtual format is floating, print it that way, and in raw
1615          hex.  */
1616       if (TYPE_CODE (register_type (current_gdbarch, i)) == TYPE_CODE_FLT)
1617         {
1618           int j;
1619
1620           val_print (register_type (current_gdbarch, i), virtual_buffer, 0, 0,
1621                      file, 0, 1, 0, Val_pretty_default);
1622
1623           fprintf_filtered (file, "\t(raw 0x");
1624           for (j = 0; j < DEPRECATED_REGISTER_RAW_SIZE (i); j++)
1625             {
1626               int idx;
1627               if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
1628                 idx = j;
1629               else
1630                 idx = DEPRECATED_REGISTER_RAW_SIZE (i) - 1 - j;
1631               fprintf_filtered (file, "%02x", (unsigned char) raw_buffer[idx]);
1632             }
1633           fprintf_filtered (file, ")");
1634         }
1635       else
1636         {
1637           /* Print the register in hex.  */
1638           val_print (register_type (current_gdbarch, i), virtual_buffer, 0, 0,
1639                      file, 'x', 1, 0, Val_pretty_default);
1640           /* If not a vector register, print it also according to its
1641              natural format.  */
1642           if (TYPE_VECTOR (register_type (current_gdbarch, i)) == 0)
1643             {
1644               fprintf_filtered (file, "\t");
1645               val_print (register_type (current_gdbarch, i), virtual_buffer, 0, 0,
1646                          file, 0, 1, 0, Val_pretty_default);
1647             }
1648         }
1649
1650       fprintf_filtered (file, "\n");
1651     }
1652 }
1653
1654 void
1655 registers_info (char *addr_exp, int fpregs)
1656 {
1657   int regnum, numregs;
1658   char *end;
1659
1660   if (!target_has_registers)
1661     error ("The program has no registers now.");
1662   if (deprecated_selected_frame == NULL)
1663     error ("No selected frame.");
1664
1665   if (!addr_exp)
1666     {
1667       gdbarch_print_registers_info (current_gdbarch, gdb_stdout,
1668                                     deprecated_selected_frame, -1, fpregs);
1669       return;
1670     }
1671
1672   while (*addr_exp != '\0')
1673     {
1674       char *start;
1675       const char *end;
1676
1677       /* Keep skipping leading white space.  */
1678       if (isspace ((*addr_exp)))
1679         {
1680           addr_exp++;
1681           continue;
1682         }
1683
1684       /* Discard any leading ``$''.  Check that there is something
1685          resembling a register following it.  */
1686       if (addr_exp[0] == '$')
1687         addr_exp++;
1688       if (isspace ((*addr_exp)) || (*addr_exp) == '\0')
1689         error ("Missing register name");
1690
1691       /* Find the start/end of this register name/num/group.  */
1692       start = addr_exp;
1693       while ((*addr_exp) != '\0' && !isspace ((*addr_exp)))
1694         addr_exp++;
1695       end = addr_exp;
1696       
1697       /* Figure out what we've found and display it.  */
1698
1699       /* A register name?  */
1700       {
1701         int regnum = frame_map_name_to_regnum (deprecated_selected_frame,
1702                                                start, end - start);
1703         if (regnum >= 0)
1704           {
1705             gdbarch_print_registers_info (current_gdbarch, gdb_stdout,
1706                                           deprecated_selected_frame, regnum, fpregs);
1707             continue;
1708           }
1709       }
1710         
1711       /* A register number?  (how portable is this one?).  */
1712       {
1713         char *endptr;
1714         int regnum = strtol (start, &endptr, 0);
1715         if (endptr == end
1716             && regnum >= 0
1717             && regnum < NUM_REGS + NUM_PSEUDO_REGS)
1718           {
1719             gdbarch_print_registers_info (current_gdbarch, gdb_stdout,
1720                                           deprecated_selected_frame, regnum, fpregs);
1721             continue;
1722           }
1723       }
1724
1725       /* A register group?  */
1726       {
1727         struct reggroup *group;
1728         for (group = reggroup_next (current_gdbarch, NULL);
1729              group != NULL;
1730              group = reggroup_next (current_gdbarch, group))
1731           {
1732             /* Don't bother with a length check.  Should the user
1733                enter a short register group name, go with the first
1734                group that matches.  */
1735             if (strncmp (start, reggroup_name (group), end - start) == 0)
1736               break;
1737           }
1738         if (group != NULL)
1739           {
1740             int regnum;
1741             for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
1742               {
1743                 if (gdbarch_register_reggroup_p (current_gdbarch, regnum,
1744                                                  group))
1745                   gdbarch_print_registers_info (current_gdbarch,
1746                                                 gdb_stdout, deprecated_selected_frame,
1747                                                 regnum, fpregs);
1748               }
1749             continue;
1750           }
1751       }
1752
1753       /* Nothing matched.  */
1754       error ("Invalid register `%.*s'", (int) (end - start), start);
1755     }
1756 }
1757
1758 void
1759 all_registers_info (char *addr_exp, int from_tty)
1760 {
1761   registers_info (addr_exp, 1);
1762 }
1763
1764 static void
1765 nofp_registers_info (char *addr_exp, int from_tty)
1766 {
1767   registers_info (addr_exp, 0);
1768 }
1769
1770 static void
1771 print_vector_info (struct gdbarch *gdbarch, struct ui_file *file,
1772                    struct frame_info *frame, const char *args)
1773 {
1774   if (!target_has_registers)
1775     error ("The program has no registers now.");
1776   if (deprecated_selected_frame == NULL)
1777     error ("No selected frame.");
1778
1779   if (gdbarch_print_vector_info_p (gdbarch))
1780     gdbarch_print_vector_info (gdbarch, file, frame, args);
1781   else
1782     {
1783       int regnum;
1784       int printed_something = 0;
1785
1786       for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
1787         {
1788           if (gdbarch_register_reggroup_p (gdbarch, regnum, vector_reggroup))
1789             {
1790               printed_something = 1;
1791               gdbarch_print_registers_info (gdbarch, file, frame, regnum, 1);
1792             }
1793         }
1794       if (!printed_something)
1795         fprintf_filtered (file, "No vector information\n");
1796     }
1797 }
1798
1799 static void
1800 vector_info (char *args, int from_tty)
1801 {
1802   print_vector_info (current_gdbarch, gdb_stdout, deprecated_selected_frame, args);
1803 }
1804 \f
1805
1806 /*
1807  * TODO:
1808  * Should save/restore the tty state since it might be that the
1809  * program to be debugged was started on this tty and it wants
1810  * the tty in some state other than what we want.  If it's running
1811  * on another terminal or without a terminal, then saving and
1812  * restoring the tty state is a harmless no-op.
1813  * This only needs to be done if we are attaching to a process.
1814  */
1815
1816 /*
1817    attach_command --
1818    takes a program started up outside of gdb and ``attaches'' to it.
1819    This stops it cold in its tracks and allows us to start debugging it.
1820    and wait for the trace-trap that results from attaching.  */
1821
1822 void
1823 attach_command (char *args, int from_tty)
1824 {
1825   char *exec_file;
1826   char *full_exec_path = NULL;
1827
1828   dont_repeat ();               /* Not for the faint of heart */
1829
1830   if (target_has_execution)
1831     {
1832       if (query ("A program is being debugged already.  Kill it? "))
1833         target_kill ();
1834       else
1835         error ("Not killed.");
1836     }
1837
1838   target_attach (args, from_tty);
1839
1840   /* Set up the "saved terminal modes" of the inferior
1841      based on what modes we are starting it with.  */
1842   target_terminal_init ();
1843
1844   /* Install inferior's terminal modes.  */
1845   target_terminal_inferior ();
1846
1847   /* Set up execution context to know that we should return from
1848      wait_for_inferior as soon as the target reports a stop.  */
1849   init_wait_for_inferior ();
1850   clear_proceed_status ();
1851
1852   /* No traps are generated when attaching to inferior under Mach 3
1853      or GNU hurd.  */
1854 #ifndef ATTACH_NO_WAIT
1855   /* Careful here. See comments in inferior.h.  Basically some OSes
1856      don't ignore SIGSTOPs on continue requests anymore.  We need a
1857      way for handle_inferior_event to reset the stop_signal variable
1858      after an attach, and this is what STOP_QUIETLY_NO_SIGSTOP is for.  */
1859   stop_soon = STOP_QUIETLY_NO_SIGSTOP;
1860   wait_for_inferior ();
1861   stop_soon = NO_STOP_QUIETLY;
1862 #endif
1863
1864   /*
1865    * If no exec file is yet known, try to determine it from the
1866    * process itself.
1867    */
1868   exec_file = (char *) get_exec_file (0);
1869   if (!exec_file)
1870     {
1871       exec_file = target_pid_to_exec_file (PIDGET (inferior_ptid));
1872       if (exec_file)
1873         {
1874           /* It's possible we don't have a full path, but rather just a
1875              filename.  Some targets, such as HP-UX, don't provide the
1876              full path, sigh.
1877
1878              Attempt to qualify the filename against the source path.
1879              (If that fails, we'll just fall back on the original
1880              filename.  Not much more we can do...)
1881            */
1882           if (!source_full_path_of (exec_file, &full_exec_path))
1883             full_exec_path = savestring (exec_file, strlen (exec_file));
1884
1885           exec_file_attach (full_exec_path, from_tty);
1886           symbol_file_add_main (full_exec_path, from_tty);
1887         }
1888     }
1889   else
1890     {
1891       reopen_exec_file ();
1892       reread_symbols ();
1893     }
1894
1895 #ifdef SOLIB_ADD
1896   /* Add shared library symbols from the newly attached process, if any.  */
1897   SOLIB_ADD ((char *) 0, from_tty, &current_target, auto_solib_add);
1898   re_enable_breakpoints_in_shlibs ();
1899 #endif
1900
1901   /* Take any necessary post-attaching actions for this platform.
1902    */
1903   target_post_attach (PIDGET (inferior_ptid));
1904
1905   normal_stop ();
1906
1907   if (deprecated_attach_hook)
1908     deprecated_attach_hook ();
1909 }
1910
1911 /*
1912  * detach_command --
1913  * takes a program previously attached to and detaches it.
1914  * The program resumes execution and will no longer stop
1915  * on signals, etc.  We better not have left any breakpoints
1916  * in the program or it'll die when it hits one.  For this
1917  * to work, it may be necessary for the process to have been
1918  * previously attached.  It *might* work if the program was
1919  * started via the normal ptrace (PTRACE_TRACEME).
1920  */
1921
1922 static void
1923 detach_command (char *args, int from_tty)
1924 {
1925   dont_repeat ();               /* Not for the faint of heart */
1926   target_detach (args, from_tty);
1927 #if defined(SOLIB_RESTART)
1928   SOLIB_RESTART ();
1929 #endif
1930   if (deprecated_detach_hook)
1931     deprecated_detach_hook ();
1932 }
1933
1934 /* Disconnect from the current target without resuming it (leaving it
1935    waiting for a debugger).
1936
1937    We'd better not have left any breakpoints in the program or the
1938    next debugger will get confused.  Currently only supported for some
1939    remote targets, since the normal attach mechanisms don't work on
1940    stopped processes on some native platforms (e.g. GNU/Linux).  */
1941
1942 static void
1943 disconnect_command (char *args, int from_tty)
1944 {
1945   dont_repeat ();               /* Not for the faint of heart */
1946   target_disconnect (args, from_tty);
1947 #if defined(SOLIB_RESTART)
1948   SOLIB_RESTART ();
1949 #endif
1950   if (deprecated_detach_hook)
1951     deprecated_detach_hook ();
1952 }
1953
1954 /* Stop the execution of the target while running in async mode, in
1955    the backgound. */
1956 void
1957 interrupt_target_command (char *args, int from_tty)
1958 {
1959   if (event_loop_p && target_can_async_p ())
1960     {
1961       dont_repeat ();           /* Not for the faint of heart */
1962       target_stop ();
1963     }
1964 }
1965
1966 static void
1967 print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
1968                   struct frame_info *frame, const char *args)
1969 {
1970   if (!target_has_registers)
1971     error ("The program has no registers now.");
1972   if (deprecated_selected_frame == NULL)
1973     error ("No selected frame.");
1974
1975   if (gdbarch_print_float_info_p (gdbarch))
1976     gdbarch_print_float_info (gdbarch, file, frame, args);
1977   else
1978     {
1979       int regnum;
1980       int printed_something = 0;
1981
1982       for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
1983         {
1984           if (gdbarch_register_reggroup_p (gdbarch, regnum, float_reggroup))
1985             {
1986               printed_something = 1;
1987               gdbarch_print_registers_info (gdbarch, file, frame, regnum, 1);
1988             }
1989         }
1990       if (!printed_something)
1991         fprintf_filtered (file, "\
1992 No floating-point info available for this processor.\n");
1993     }
1994 }
1995
1996 static void
1997 float_info (char *args, int from_tty)
1998 {
1999   print_float_info (current_gdbarch, gdb_stdout, deprecated_selected_frame, args);
2000 }
2001 \f
2002 static void
2003 unset_command (char *args, int from_tty)
2004 {
2005   printf_filtered ("\"unset\" must be followed by the name of ");
2006   printf_filtered ("an unset subcommand.\n");
2007   help_list (unsetlist, "unset ", -1, gdb_stdout);
2008 }
2009
2010 void
2011 _initialize_infcmd (void)
2012 {
2013   struct cmd_list_element *c;
2014
2015   c = add_com ("tty", class_run, tty_command,
2016                "Set terminal for future runs of program being debugged.");
2017   set_cmd_completer (c, filename_completer);
2018
2019   c = add_set_cmd ("args", class_run, var_string_noescape,
2020                    (char *) &inferior_args,
2021                    "Set argument list to give program being debugged when it is started.\n\
2022 Follow this command with any number of args, to be passed to the program.",
2023                    &setlist);
2024   set_cmd_completer (c, filename_completer);
2025   set_cmd_sfunc (c, notice_args_set);
2026   c = add_show_from_set (c, &showlist);
2027   set_cmd_sfunc (c, notice_args_read);
2028
2029   c = add_cmd
2030     ("environment", no_class, environment_info,
2031      "The environment to give the program, or one variable's value.\n\
2032 With an argument VAR, prints the value of environment variable VAR to\n\
2033 give the program being debugged.  With no arguments, prints the entire\n\
2034 environment to be given to the program.", &showlist);
2035   set_cmd_completer (c, noop_completer);
2036
2037   add_prefix_cmd ("unset", no_class, unset_command,
2038                   "Complement to certain \"set\" commands.",
2039                   &unsetlist, "unset ", 0, &cmdlist);
2040
2041   c = add_cmd ("environment", class_run, unset_environment_command,
2042                "Cancel environment variable VAR for the program.\n\
2043 This does not affect the program until the next \"run\" command.",
2044                &unsetlist);
2045   set_cmd_completer (c, noop_completer);
2046
2047   c = add_cmd ("environment", class_run, set_environment_command,
2048                "Set environment variable value to give the program.\n\
2049 Arguments are VAR VALUE where VAR is variable name and VALUE is value.\n\
2050 VALUES of environment variables are uninterpreted strings.\n\
2051 This does not affect the program until the next \"run\" command.",
2052                &setlist);
2053   set_cmd_completer (c, noop_completer);
2054
2055   c = add_com ("path", class_files, path_command,
2056                "Add directory DIR(s) to beginning of search path for object files.\n\
2057 $cwd in the path means the current working directory.\n\
2058 This path is equivalent to the $PATH shell variable.  It is a list of\n\
2059 directories, separated by colons.  These directories are searched to find\n\
2060 fully linked executable files and separately compiled object files as needed.");
2061   set_cmd_completer (c, filename_completer);
2062
2063   c = add_cmd ("paths", no_class, path_info,
2064                "Current search path for finding object files.\n\
2065 $cwd in the path means the current working directory.\n\
2066 This path is equivalent to the $PATH shell variable.  It is a list of\n\
2067 directories, separated by colons.  These directories are searched to find\n\
2068 fully linked executable files and separately compiled object files as needed.",
2069                &showlist);
2070   set_cmd_completer (c, noop_completer);
2071
2072   add_com ("attach", class_run, attach_command,
2073            "Attach to a process or file outside of GDB.\n\
2074 This command attaches to another target, of the same type as your last\n\
2075 \"target\" command (\"info files\" will show your target stack).\n\
2076 The command may take as argument a process id or a device file.\n\
2077 For a process id, you must have permission to send the process a signal,\n\
2078 and it must have the same effective uid as the debugger.\n\
2079 When using \"attach\" with a process id, the debugger finds the\n\
2080 program running in the process, looking first in the current working\n\
2081 directory, or (if not found there) using the source file search path\n\
2082 (see the \"directory\" command).  You can also use the \"file\" command\n\
2083 to specify the program, and to load its symbol table.");
2084
2085   add_com ("detach", class_run, detach_command,
2086            "Detach a process or file previously attached.\n\
2087 If a process, it is no longer traced, and it continues its execution.  If\n\
2088 you were debugging a file, the file is closed and gdb no longer accesses it.");
2089
2090   add_com ("disconnect", class_run, disconnect_command,
2091            "Disconnect from a target.\n\
2092 The target will wait for another debugger to connect.  Not available for\n\
2093 all targets.");
2094
2095   add_com ("signal", class_run, signal_command,
2096            "Continue program giving it signal specified by the argument.\n\
2097 An argument of \"0\" means continue program without giving it a signal.");
2098
2099   add_com ("stepi", class_run, stepi_command,
2100            "Step one instruction exactly.\n\
2101 Argument N means do this N times (or till program stops for another reason).");
2102   add_com_alias ("si", "stepi", class_alias, 0);
2103
2104   add_com ("nexti", class_run, nexti_command,
2105            "Step one instruction, but proceed through subroutine calls.\n\
2106 Argument N means do this N times (or till program stops for another reason).");
2107   add_com_alias ("ni", "nexti", class_alias, 0);
2108
2109   add_com ("finish", class_run, finish_command,
2110            "Execute until selected stack frame returns.\n\
2111 Upon return, the value returned is printed and put in the value history.");
2112
2113   add_com ("next", class_run, next_command,
2114            "Step program, proceeding through subroutine calls.\n\
2115 Like the \"step\" command as long as subroutine calls do not happen;\n\
2116 when they do, the call is treated as one instruction.\n\
2117 Argument N means do this N times (or till program stops for another reason).");
2118   add_com_alias ("n", "next", class_run, 1);
2119   if (xdb_commands)
2120     add_com_alias ("S", "next", class_run, 1);
2121
2122   add_com ("step", class_run, step_command,
2123            "Step program until it reaches a different source line.\n\
2124 Argument N means do this N times (or till program stops for another reason).");
2125   add_com_alias ("s", "step", class_run, 1);
2126
2127   c = add_com ("until", class_run, until_command,
2128                "Execute until the program reaches a source line greater than the current\n\
2129 or a specified location (same args as break command) within the current frame.");
2130   set_cmd_completer (c, location_completer);
2131   add_com_alias ("u", "until", class_run, 1);
2132
2133   c = add_com ("advance", class_run, advance_command,
2134                "Continue the program up to the given location (same form as args for break command).\n\
2135 Execution will also stop upon exit from the current stack frame.");
2136   set_cmd_completer (c, location_completer);
2137
2138   c = add_com ("jump", class_run, jump_command,
2139                "Continue program being debugged at specified line or address.\n\
2140 Give as argument either LINENUM or *ADDR, where ADDR is an expression\n\
2141 for an address to start at.");
2142   set_cmd_completer (c, location_completer);
2143
2144   if (xdb_commands)
2145     {
2146       c = add_com ("go", class_run, go_command,
2147                    "Usage: go <location>\n\
2148 Continue program being debugged, stopping at specified line or \n\
2149 address.\n\
2150 Give as argument either LINENUM or *ADDR, where ADDR is an \n\
2151 expression for an address to start at.\n\
2152 This command is a combination of tbreak and jump.");
2153       set_cmd_completer (c, location_completer);
2154     }
2155
2156   if (xdb_commands)
2157     add_com_alias ("g", "go", class_run, 1);
2158
2159   add_com ("continue", class_run, continue_command,
2160            "Continue program being debugged, after signal or breakpoint.\n\
2161 If proceeding from breakpoint, a number N may be used as an argument,\n\
2162 which means to set the ignore count of that breakpoint to N - 1 (so that\n\
2163 the breakpoint won't break until the Nth time it is reached).");
2164   add_com_alias ("c", "cont", class_run, 1);
2165   add_com_alias ("fg", "cont", class_run, 1);
2166
2167   c = add_com ("run", class_run, run_command,
2168            "Start debugged program.  You may specify arguments to give it.\n\
2169 Args may include \"*\", or \"[...]\"; they are expanded using \"sh\".\n\
2170 Input and output redirection with \">\", \"<\", or \">>\" are also allowed.\n\n\
2171 With no arguments, uses arguments last specified (with \"run\" or \"set args\").\n\
2172 To cancel previous arguments and run with no arguments,\n\
2173 use \"set args\" without arguments.");
2174   set_cmd_completer (c, filename_completer);
2175   add_com_alias ("r", "run", class_run, 1);
2176   if (xdb_commands)
2177     add_com ("R", class_run, run_no_args_command,
2178              "Start debugged program with no arguments.");
2179
2180   c = add_com ("start", class_run, start_command,
2181                "\
2182 Run the debugged program until the beginning of the main procedure.\n\
2183 You may specify arguments to give to your program, just as with the\n\
2184 \"run\" command.");
2185   set_cmd_completer (c, filename_completer);
2186
2187   add_com ("interrupt", class_run, interrupt_target_command,
2188            "Interrupt the execution of the debugged program.");
2189
2190   add_info ("registers", nofp_registers_info,
2191             "List of integer registers and their contents, for selected stack frame.\n\
2192 Register name as argument means describe only that register.");
2193   add_info_alias ("r", "registers", 1);
2194
2195   if (xdb_commands)
2196     add_com ("lr", class_info, nofp_registers_info,
2197              "List of integer registers and their contents, for selected stack frame.\n\
2198   Register name as argument means describe only that register.");
2199   add_info ("all-registers", all_registers_info,
2200             "List of all registers and their contents, for selected stack frame.\n\
2201 Register name as argument means describe only that register.");
2202
2203   add_info ("program", program_info,
2204             "Execution status of the program.");
2205
2206   add_info ("float", float_info,
2207             "Print the status of the floating point unit\n");
2208
2209   add_info ("vector", vector_info,
2210             "Print the status of the vector unit\n");
2211
2212   inferior_environ = make_environ ();
2213   init_environ (inferior_environ);
2214 }