Remove the global stop_signal in favour of a per-thread
[external/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 a step command.  */
160
161 int stop_step;
162
163 /* Nonzero if stopped due to completion of a stack dummy routine.  */
164
165 int stop_stack_dummy;
166
167 /* Nonzero if stopped due to a random (unexpected) signal in inferior
168    process.  */
169
170 int stopped_by_random_signal;
171
172 /* If stepping, nonzero means step count is > 1
173    so don't print frame next time inferior stops
174    if it stops due to stepping.  */
175
176 int step_multi;
177
178 /* Environment to use for running inferior,
179    in format described in environ.h.  */
180
181 struct gdb_environ *inferior_environ;
182
183 /* When set, no calls to target_resumed observer will be made.  */
184 int suppress_resume_observer = 0;
185 /* When set, normal_stop will not call the normal_stop observer.  */
186 int suppress_stop_observer = 0;
187 \f
188 /* Accessor routines. */
189
190 void 
191 set_inferior_io_terminal (const char *terminal_name)
192 {
193   if (inferior_io_terminal)
194     xfree (inferior_io_terminal);
195
196   if (!terminal_name)
197     inferior_io_terminal = NULL;
198   else
199     inferior_io_terminal = savestring (terminal_name, strlen (terminal_name));
200 }
201
202 const char *
203 get_inferior_io_terminal (void)
204 {
205   return inferior_io_terminal;
206 }
207
208 char *
209 get_inferior_args (void)
210 {
211   if (inferior_argc != 0)
212     {
213       char *n, *old;
214
215       n = gdbarch_construct_inferior_arguments (current_gdbarch,
216                                                 inferior_argc, inferior_argv);
217       old = set_inferior_args (n);
218       xfree (old);
219     }
220
221   if (inferior_args == NULL)
222     inferior_args = xstrdup ("");
223
224   return inferior_args;
225 }
226
227 char *
228 set_inferior_args (char *newargs)
229 {
230   char *saved_args = inferior_args;
231
232   inferior_args = newargs;
233   inferior_argc = 0;
234   inferior_argv = 0;
235
236   return saved_args;
237 }
238
239 void
240 set_inferior_args_vector (int argc, char **argv)
241 {
242   inferior_argc = argc;
243   inferior_argv = argv;
244 }
245
246 /* Notice when `set args' is run.  */
247 static void
248 notice_args_set (char *args, int from_tty, struct cmd_list_element *c)
249 {
250   inferior_argc = 0;
251   inferior_argv = 0;
252 }
253
254 /* Notice when `show args' is run.  */
255 static void
256 notice_args_read (struct ui_file *file, int from_tty,
257                   struct cmd_list_element *c, const char *value)
258 {
259   /* Note that we ignore the passed-in value in favor of computing it
260      directly.  */
261   deprecated_show_value_hack (file, from_tty, c, get_inferior_args ());
262 }
263
264 \f
265 /* Compute command-line string given argument vector.  This does the
266    same shell processing as fork_inferior.  */
267 char *
268 construct_inferior_arguments (struct gdbarch *gdbarch, int argc, char **argv)
269 {
270   char *result;
271
272   if (STARTUP_WITH_SHELL)
273     {
274       /* This holds all the characters considered special to the
275          typical Unix shells.  We include `^' because the SunOS
276          /bin/sh treats it as a synonym for `|'.  */
277       char *special = "\"!#$&*()\\|[]{}<>?'\"`~^; \t\n";
278       int i;
279       int length = 0;
280       char *out, *cp;
281
282       /* We over-compute the size.  It shouldn't matter.  */
283       for (i = 0; i < argc; ++i)
284         length += 2 * strlen (argv[i]) + 1 + 2 * (argv[i][0] == '\0');
285
286       result = (char *) xmalloc (length);
287       out = result;
288
289       for (i = 0; i < argc; ++i)
290         {
291           if (i > 0)
292             *out++ = ' ';
293
294           /* Need to handle empty arguments specially.  */
295           if (argv[i][0] == '\0')
296             {
297               *out++ = '\'';
298               *out++ = '\'';
299             }
300           else
301             {
302               for (cp = argv[i]; *cp; ++cp)
303                 {
304                   if (strchr (special, *cp) != NULL)
305                     *out++ = '\\';
306                   *out++ = *cp;
307                 }
308             }
309         }
310       *out = '\0';
311     }
312   else
313     {
314       /* In this case we can't handle arguments that contain spaces,
315          tabs, or newlines -- see breakup_args().  */
316       int i;
317       int length = 0;
318
319       for (i = 0; i < argc; ++i)
320         {
321           char *cp = strchr (argv[i], ' ');
322           if (cp == NULL)
323             cp = strchr (argv[i], '\t');
324           if (cp == NULL)
325             cp = strchr (argv[i], '\n');
326           if (cp != NULL)
327             error (_("can't handle command-line argument containing whitespace"));
328           length += strlen (argv[i]) + 1;
329         }
330
331       result = (char *) xmalloc (length);
332       result[0] = '\0';
333       for (i = 0; i < argc; ++i)
334         {
335           if (i > 0)
336             strcat (result, " ");
337           strcat (result, argv[i]);
338         }
339     }
340
341   return result;
342 }
343 \f
344
345 /* This function detects whether or not a '&' character (indicating
346    background execution) has been added as *the last* of the arguments ARGS
347    of a command. If it has, it removes it and returns 1. Otherwise it
348    does nothing and returns 0. */
349 static int
350 strip_bg_char (char **args)
351 {
352   char *p = NULL;
353
354   p = strchr (*args, '&');
355
356   if (p)
357     {
358       if (p == (*args + strlen (*args) - 1))
359         {
360           if (strlen (*args) > 1)
361             {
362               do
363                 p--;
364               while (*p == ' ' || *p == '\t');
365               *(p + 1) = '\0';
366             }
367           else
368             *args = 0;
369           return 1;
370         }
371     }
372   return 0;
373 }
374
375 void
376 tty_command (char *file, int from_tty)
377 {
378   if (file == 0)
379     error_no_arg (_("terminal name for running target process"));
380
381   set_inferior_io_terminal (file);
382 }
383
384 /* Common actions to take after creating any sort of inferior, by any
385    means (running, attaching, connecting, et cetera).  The target
386    should be stopped.  */
387
388 void
389 post_create_inferior (struct target_ops *target, int from_tty)
390 {
391   /* Be sure we own the terminal in case write operations are performed.  */ 
392   target_terminal_ours ();
393
394   /* If the target hasn't taken care of this already, do it now.
395      Targets which need to access registers during to_open,
396      to_create_inferior, or to_attach should do it earlier; but many
397      don't need to.  */
398   target_find_description ();
399
400   if (exec_bfd)
401     {
402       /* Sometimes the platform-specific hook loads initial shared
403          libraries, and sometimes it doesn't.  Try to do so first, so
404          that we can add them with the correct value for FROM_TTY.
405          If we made all the inferior hook methods consistent,
406          this call could be removed.  */
407 #ifdef SOLIB_ADD
408       SOLIB_ADD (NULL, from_tty, target, auto_solib_add);
409 #else
410       solib_add (NULL, from_tty, target, auto_solib_add);
411 #endif
412
413       /* Create the hooks to handle shared library load and unload
414          events.  */
415 #ifdef SOLIB_CREATE_INFERIOR_HOOK
416       SOLIB_CREATE_INFERIOR_HOOK (PIDGET (inferior_ptid));
417 #else
418       solib_create_inferior_hook ();
419 #endif
420     }
421
422   observer_notify_inferior_created (target, from_tty);
423 }
424
425 /* Kill the inferior if already running.  This function is designed
426    to be called when we are about to start the execution of the program
427    from the beginning.  Ask the user to confirm that he wants to restart
428    the program being debugged when FROM_TTY is non-null.  */
429
430 static void
431 kill_if_already_running (int from_tty)
432 {
433   if (! ptid_equal (inferior_ptid, null_ptid) && target_has_execution)
434     {
435       /* Bail out before killing the program if we will not be able to
436          restart it.  */
437       target_require_runnable ();
438
439       if (from_tty
440           && !query ("The program being debugged has been started already.\n\
441 Start it from the beginning? "))
442         error (_("Program not restarted."));
443       target_kill ();
444       no_shared_libraries (NULL, from_tty);
445       init_wait_for_inferior ();
446     }
447 }
448
449 /* Implement the "run" command. If TBREAK_AT_MAIN is set, then insert
450    a temporary breakpoint at the begining of the main program before
451    running the program.  */
452
453 static void
454 run_command_1 (char *args, int from_tty, int tbreak_at_main)
455 {
456   char *exec_file;
457
458   dont_repeat ();
459
460   kill_if_already_running (from_tty);
461   clear_breakpoint_hit_counts ();
462
463   /* Clean up any leftovers from other runs.  Some other things from
464      this function should probably be moved into target_pre_inferior.  */
465   target_pre_inferior (from_tty);
466
467   /* The comment here used to read, "The exec file is re-read every
468      time we do a generic_mourn_inferior, so we just have to worry
469      about the symbol file."  The `generic_mourn_inferior' function
470      gets called whenever the program exits.  However, suppose the
471      program exits, and *then* the executable file changes?  We need
472      to check again here.  Since reopen_exec_file doesn't do anything
473      if the timestamp hasn't changed, I don't see the harm.  */
474   reopen_exec_file ();
475   reread_symbols ();
476
477   /* Insert the temporary breakpoint if a location was specified.  */
478   if (tbreak_at_main)
479     tbreak_command (main_name (), 0);
480
481   exec_file = (char *) get_exec_file (0);
482
483   if (non_stop && !target_supports_non_stop ())
484     error (_("The target does not support running in non-stop mode."));
485
486   /* We keep symbols from add-symbol-file, on the grounds that the
487      user might want to add some symbols before running the program
488      (right?).  But sometimes (dynamic loading where the user manually
489      introduces the new symbols with add-symbol-file), the code which
490      the symbols describe does not persist between runs.  Currently
491      the user has to manually nuke all symbols between runs if they
492      want them to go away (PR 2207).  This is probably reasonable.  */
493
494   if (!args)
495     {
496       if (target_can_async_p ())
497         async_disable_stdin ();
498     }
499   else
500     {
501       int async_exec = strip_bg_char (&args);
502
503       /* If we get a request for running in the bg but the target
504          doesn't support it, error out. */
505       if (async_exec && !target_can_async_p ())
506         error (_("Asynchronous execution not supported on this target."));
507
508       /* If we don't get a request of running in the bg, then we need
509          to simulate synchronous (fg) execution. */
510       if (!async_exec && target_can_async_p ())
511         {
512           /* Simulate synchronous execution */
513           async_disable_stdin ();
514         }
515
516       /* If there were other args, beside '&', process them. */
517       if (args)
518         {
519           char *old_args = set_inferior_args (xstrdup (args));
520           xfree (old_args);
521         }
522     }
523
524   if (from_tty)
525     {
526       ui_out_field_string (uiout, NULL, "Starting program");
527       ui_out_text (uiout, ": ");
528       if (exec_file)
529         ui_out_field_string (uiout, "execfile", exec_file);
530       ui_out_spaces (uiout, 1);
531       /* We call get_inferior_args() because we might need to compute
532          the value now.  */
533       ui_out_field_string (uiout, "infargs", get_inferior_args ());
534       ui_out_text (uiout, "\n");
535       ui_out_flush (uiout);
536     }
537
538   /* We call get_inferior_args() because we might need to compute
539      the value now.  */
540   target_create_inferior (exec_file, get_inferior_args (),
541                           environ_vector (inferior_environ), from_tty);
542
543   /* Pass zero for FROM_TTY, because at this point the "run" command
544      has done its thing; now we are setting up the running program.  */
545   post_create_inferior (&current_target, 0);
546
547   /* Start the target running.  */
548   proceed ((CORE_ADDR) -1, TARGET_SIGNAL_0, 0);
549 }
550
551
552 static void
553 run_command (char *args, int from_tty)
554 {
555   run_command_1 (args, from_tty, 0);
556 }
557
558 static void
559 run_no_args_command (char *args, int from_tty)
560 {
561   char *old_args = set_inferior_args (xstrdup (""));
562   xfree (old_args);
563 }
564 \f
565
566 /* Start the execution of the program up until the beginning of the main
567    program.  */
568
569 static void
570 start_command (char *args, int from_tty)
571 {
572   /* Some languages such as Ada need to search inside the program
573      minimal symbols for the location where to put the temporary
574      breakpoint before starting.  */
575   if (!have_minimal_symbols ())
576     error (_("No symbol table loaded.  Use the \"file\" command."));
577
578   /* Run the program until reaching the main procedure...  */
579   run_command_1 (args, from_tty, 1);
580
581
582 static int
583 proceed_thread_callback (struct thread_info *thread, void *arg)
584 {
585   if (!is_stopped (thread->ptid))
586     return 0;
587
588   context_switch_to (thread->ptid);
589   clear_proceed_status ();
590   proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0);
591   return 0;
592 }
593
594 void
595 continue_1 (int all_threads)
596 {
597   ERROR_NO_INFERIOR;
598
599   if (non_stop && all_threads)
600     {
601       /* Don't error out if the current thread is running, because
602         there may be other stopped threads.  */
603       struct cleanup *old_chain;
604
605       /* Backup current thread and selected frame.  */
606       old_chain = make_cleanup_restore_current_thread ();
607
608       iterate_over_threads (proceed_thread_callback, NULL);
609
610       /* Restore selected ptid.  */
611       do_cleanups (old_chain);
612     }
613   else
614     {
615       ensure_not_running ();
616       clear_proceed_status ();
617       proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0);
618     }
619 }
620
621 /* continue [-a] [proceed-count] [&]  */
622 void
623 continue_command (char *args, int from_tty)
624 {
625   int async_exec = 0;
626   int all_threads = 0;
627   ERROR_NO_INFERIOR;
628
629   /* Find out whether we must run in the background. */
630   if (args != NULL)
631     async_exec = strip_bg_char (&args);
632
633   /* If we must run in the background, but the target can't do it,
634      error out. */
635   if (async_exec && !target_can_async_p ())
636     error (_("Asynchronous execution not supported on this target."));
637
638   /* If we are not asked to run in the bg, then prepare to run in the
639      foreground, synchronously. */
640   if (!async_exec && target_can_async_p ())
641     {
642       /* Simulate synchronous execution */
643       async_disable_stdin ();
644     }
645
646   if (args != NULL)
647     {
648       if (strncmp (args, "-a", sizeof ("-a") - 1) == 0)
649         {
650           all_threads = 1;
651           args += sizeof ("-a") - 1;
652           if (*args == '\0')
653             args = NULL;
654         }
655     }
656
657   if (!non_stop && all_threads)
658     error (_("`-a' is meaningless in all-stop mode."));
659
660   if (args != NULL && all_threads)
661     error (_("\
662 Can't resume all threads and specify proceed count simultaneously."));
663
664   /* If we have an argument left, set proceed count of breakpoint we
665      stopped at.  */
666   if (args != NULL)
667     {
668       bpstat bs = NULL;
669       int num, stat;
670       int stopped = 0;
671       struct thread_info *tp;
672
673       if (non_stop)
674         tp = find_thread_pid (inferior_ptid);
675       else
676         {
677           ptid_t last_ptid;
678           struct target_waitstatus ws;
679
680           get_last_target_status (&last_ptid, &ws);
681           tp = find_thread_pid (last_ptid);
682         }
683       if (tp != NULL)
684         bs = tp->stop_bpstat;
685
686       while ((stat = bpstat_num (&bs, &num)) != 0)
687         if (stat > 0)
688           {
689             set_ignore_count (num,
690                               parse_and_eval_long (args) - 1,
691                               from_tty);
692             /* set_ignore_count prints a message ending with a period.
693                So print two spaces before "Continuing.".  */
694             if (from_tty)
695               printf_filtered ("  ");
696             stopped = 1;
697           }
698
699       if (!stopped && from_tty)
700         {
701           printf_filtered
702             ("Not stopped at any breakpoint; argument ignored.\n");
703         }
704     }
705
706   if (from_tty)
707     printf_filtered (_("Continuing.\n"));
708
709   continue_1 (all_threads);
710 }
711 \f
712 /* Step until outside of current statement.  */
713
714 static void
715 step_command (char *count_string, int from_tty)
716 {
717   step_1 (0, 0, count_string);
718 }
719
720 /* Likewise, but skip over subroutine calls as if single instructions.  */
721
722 static void
723 next_command (char *count_string, int from_tty)
724 {
725   step_1 (1, 0, count_string);
726 }
727
728 /* Likewise, but step only one instruction.  */
729
730 void
731 stepi_command (char *count_string, int from_tty)
732 {
733   step_1 (0, 1, count_string);
734 }
735
736 void
737 nexti_command (char *count_string, int from_tty)
738 {
739   step_1 (1, 1, count_string);
740 }
741
742 static void
743 delete_longjmp_breakpoint_cleanup (void *arg)
744 {
745   int thread = * (int *) arg;
746   delete_longjmp_breakpoint (thread);
747 }
748
749 static void
750 step_1 (int skip_subroutines, int single_inst, char *count_string)
751 {
752   int count = 1;
753   struct frame_info *frame;
754   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
755   int async_exec = 0;
756   int thread = -1;
757
758   ERROR_NO_INFERIOR;
759   ensure_not_running ();
760
761   if (count_string)
762     async_exec = strip_bg_char (&count_string);
763
764   /* If we get a request for running in the bg but the target
765      doesn't support it, error out. */
766   if (async_exec && !target_can_async_p ())
767     error (_("Asynchronous execution not supported on this target."));
768
769   /* If we don't get a request of running in the bg, then we need
770      to simulate synchronous (fg) execution. */
771   if (!async_exec && target_can_async_p ())
772     {
773       /* Simulate synchronous execution */
774       async_disable_stdin ();
775     }
776
777   count = count_string ? parse_and_eval_long (count_string) : 1;
778
779   if (!single_inst || skip_subroutines)         /* leave si command alone */
780     {
781       if (in_thread_list (inferior_ptid))
782         thread = pid_to_thread_id (inferior_ptid);
783
784       set_longjmp_breakpoint ();
785
786       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
787     }
788
789   /* In synchronous case, all is well, just use the regular for loop. */
790   if (!target_can_async_p ())
791     {
792       for (; count > 0; count--)
793         {
794           struct thread_info *tp = inferior_thread ();
795           clear_proceed_status ();
796
797           frame = get_current_frame ();
798           tp->step_frame_id = get_frame_id (frame);
799
800           if (!single_inst)
801             {
802               find_pc_line_pc_range (stop_pc,
803                                      &tp->step_range_start, &tp->step_range_end);
804               if (tp->step_range_end == 0)
805                 {
806                   char *name;
807                   if (find_pc_partial_function (stop_pc, &name,
808                                                 &tp->step_range_start,
809                                                 &tp->step_range_end) == 0)
810                     error (_("Cannot find bounds of current function"));
811
812                   target_terminal_ours ();
813                   printf_filtered (_("\
814 Single stepping until exit from function %s, \n\
815 which has no line number information.\n"), name);
816                 }
817             }
818           else
819             {
820               /* Say we are stepping, but stop after one insn whatever it does.  */
821               tp->step_range_start = tp->step_range_end = 1;
822               if (!skip_subroutines)
823                 /* It is stepi.
824                    Don't step over function calls, not even to functions lacking
825                    line numbers.  */
826                 tp->step_over_calls = STEP_OVER_NONE;
827             }
828
829           if (skip_subroutines)
830             tp->step_over_calls = STEP_OVER_ALL;
831
832           step_multi = (count > 1);
833           proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1);
834
835           if (!stop_step)
836             break;
837         }
838
839       do_cleanups (cleanups);
840       return;
841     }
842   /* In case of asynchronous target things get complicated, do only
843      one step for now, before returning control to the event loop. Let
844      the continuation figure out how many other steps we need to do,
845      and handle them one at the time, through step_once(). */
846   else
847     {
848       step_once (skip_subroutines, single_inst, count, thread);
849       /* We are running, and the continuation is installed.  It will
850          disable the longjmp breakpoint as appropriate.  */
851       discard_cleanups (cleanups);
852     }
853 }
854
855 struct step_1_continuation_args
856 {
857   int count;
858   int skip_subroutines;
859   int single_inst;
860   int thread;
861 };
862
863 /* Called after we are done with one step operation, to check whether
864    we need to step again, before we print the prompt and return control
865    to the user. If count is > 1, we will need to do one more call to
866    proceed(), via step_once(). Basically it is like step_once and
867    step_1_continuation are co-recursive. */
868 static void
869 step_1_continuation (void *args)
870 {
871   struct step_1_continuation_args *a = args;
872
873   if (!step_multi || !stop_step)
874     {
875       /* If we stopped for some reason that is not stepping there are
876          no further steps to make.  Cleanup.  */
877       if (!a->single_inst || a->skip_subroutines)
878         delete_longjmp_breakpoint (a->thread);
879       step_multi = 0;
880     }
881   else
882     step_once (a->skip_subroutines, a->single_inst, a->count - 1, 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       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   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 (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 }