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