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