build_type_unit_groups and moved closer to only caller and renamed
[platform/upstream/binutils.git] / gdb / infcmd.c
1 /* Memory-access and commands for "inferior" process, for GDB.
2
3    Copyright (C) 1986-2014 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "arch-utils.h"
22 #include <signal.h>
23 #include <string.h>
24 #include "symtab.h"
25 #include "gdbtypes.h"
26 #include "frame.h"
27 #include "inferior.h"
28 #include "environ.h"
29 #include "value.h"
30 #include "gdbcmd.h"
31 #include "symfile.h"
32 #include "gdbcore.h"
33 #include "target.h"
34 #include "language.h"
35 #include "objfiles.h"
36 #include "completer.h"
37 #include "ui-out.h"
38 #include "event-top.h"
39 #include "parser-defs.h"
40 #include "regcache.h"
41 #include "reggroups.h"
42 #include "block.h"
43 #include "solib.h"
44 #include <ctype.h>
45 #include "gdb_assert.h"
46 #include "observer.h"
47 #include "target-descriptions.h"
48 #include "user-regs.h"
49 #include "exceptions.h"
50 #include "cli/cli-decode.h"
51 #include "gdbthread.h"
52 #include "valprint.h"
53 #include "inline-frame.h"
54 #include "tracepoint.h"
55 #include "inf-loop.h"
56 #include "continuations.h"
57 #include "linespec.h"
58 #include "cli/cli-utils.h"
59
60 /* Local functions: */
61
62 static void nofp_registers_info (char *, int);
63
64 static void print_return_value (struct value *function,
65                                 struct type *value_type);
66
67 static void until_next_command (int);
68
69 static void until_command (char *, int);
70
71 static void path_info (char *, int);
72
73 static void path_command (char *, int);
74
75 static void unset_command (char *, int);
76
77 static void float_info (char *, int);
78
79 static void disconnect_command (char *, int);
80
81 static void unset_environment_command (char *, int);
82
83 static void set_environment_command (char *, int);
84
85 static void environment_info (char *, int);
86
87 static void program_info (char *, int);
88
89 static void finish_command (char *, int);
90
91 static void signal_command (char *, int);
92
93 static void jump_command (char *, int);
94
95 static void step_1 (int, int, char *);
96 static void step_once (int skip_subroutines, int single_inst,
97                        int count, int thread);
98
99 static void next_command (char *, int);
100
101 static void step_command (char *, int);
102
103 static void run_command (char *, int);
104
105 static void run_no_args_command (char *args, int from_tty);
106
107 static void go_command (char *line_no, int from_tty);
108
109 static int strip_bg_char (char **);
110
111 void _initialize_infcmd (void);
112
113 #define ERROR_NO_INFERIOR \
114    if (!target_has_execution) error (_("The program is not being run."));
115
116 /* Scratch area where string containing arguments to give to the
117    program will be stored by 'set args'.  As soon as anything is
118    stored, notice_args_set will move it into per-inferior storage.
119    Arguments are separated by spaces.  Empty string (pointer to '\0')
120    means no args.  */
121
122 static char *inferior_args_scratch;
123
124 /* Scratch area where 'set inferior-tty' will store user-provided value.
125    We'll immediate copy it into per-inferior storage.  */
126
127 static char *inferior_io_terminal_scratch;
128
129 /* Pid of our debugged inferior, or 0 if no inferior now.
130    Since various parts of infrun.c test this to see whether there is a program
131    being debugged it should be nonzero (currently 3 is used) for remote
132    debugging.  */
133
134 ptid_t inferior_ptid;
135
136 /* Address at which inferior stopped.  */
137
138 CORE_ADDR stop_pc;
139
140 /* Nonzero if stopped due to completion of a stack dummy routine.  */
141
142 enum stop_stack_kind stop_stack_dummy;
143
144 /* Nonzero if stopped due to a random (unexpected) signal in inferior
145    process.  */
146
147 int stopped_by_random_signal;
148
149 /* See inferior.h.  */
150
151 int startup_with_shell = 1;
152
153 \f
154 /* Accessor routines.  */
155
156 /* Set the io terminal for the current inferior.  Ownership of
157    TERMINAL_NAME is not transferred.  */
158
159 void 
160 set_inferior_io_terminal (const char *terminal_name)
161 {
162   xfree (current_inferior ()->terminal);
163   current_inferior ()->terminal = terminal_name ? xstrdup (terminal_name) : 0;
164 }
165
166 const char *
167 get_inferior_io_terminal (void)
168 {
169   return current_inferior ()->terminal;
170 }
171
172 static void
173 set_inferior_tty_command (char *args, int from_tty,
174                           struct cmd_list_element *c)
175 {
176   /* CLI has assigned the user-provided value to inferior_io_terminal_scratch.
177      Now route it to current inferior.  */
178   set_inferior_io_terminal (inferior_io_terminal_scratch);
179 }
180
181 static void
182 show_inferior_tty_command (struct ui_file *file, int from_tty,
183                            struct cmd_list_element *c, const char *value)
184 {
185   /* Note that we ignore the passed-in value in favor of computing it
186      directly.  */
187   const char *inferior_io_terminal = get_inferior_io_terminal ();
188
189   if (inferior_io_terminal == NULL)
190     inferior_io_terminal = "";
191   fprintf_filtered (gdb_stdout,
192                     _("Terminal for future runs of program being debugged "
193                       "is \"%s\".\n"), inferior_io_terminal);
194 }
195
196 char *
197 get_inferior_args (void)
198 {
199   if (current_inferior ()->argc != 0)
200     {
201       char *n;
202
203       n = construct_inferior_arguments (current_inferior ()->argc,
204                                         current_inferior ()->argv);
205       set_inferior_args (n);
206       xfree (n);
207     }
208
209   if (current_inferior ()->args == NULL)
210     current_inferior ()->args = xstrdup ("");
211
212   return current_inferior ()->args;
213 }
214
215 /* Set the arguments for the current inferior.  Ownership of
216    NEWARGS is not transferred.  */
217
218 void
219 set_inferior_args (char *newargs)
220 {
221   xfree (current_inferior ()->args);
222   current_inferior ()->args = newargs ? xstrdup (newargs) : NULL;
223   current_inferior ()->argc = 0;
224   current_inferior ()->argv = 0;
225 }
226
227 void
228 set_inferior_args_vector (int argc, char **argv)
229 {
230   current_inferior ()->argc = argc;
231   current_inferior ()->argv = argv;
232 }
233
234 /* Notice when `set args' is run.  */
235
236 static void
237 set_args_command (char *args, int from_tty, struct cmd_list_element *c)
238 {
239   /* CLI has assigned the user-provided value to inferior_args_scratch.
240      Now route it to current inferior.  */
241   set_inferior_args (inferior_args_scratch);
242 }
243
244 /* Notice when `show args' is run.  */
245
246 static void
247 show_args_command (struct ui_file *file, int from_tty,
248                    struct cmd_list_element *c, const char *value)
249 {
250   /* Note that we ignore the passed-in value in favor of computing it
251      directly.  */
252   deprecated_show_value_hack (file, from_tty, c, get_inferior_args ());
253 }
254
255 \f
256 /* Compute command-line string given argument vector.  This does the
257    same shell processing as fork_inferior.  */
258
259 char *
260 construct_inferior_arguments (int argc, char **argv)
261 {
262   char *result;
263
264   if (startup_with_shell)
265     {
266 #ifdef __MINGW32__
267       /* This holds all the characters considered special to the
268          Windows shells.  */
269       char *special = "\"!&*|[]{}<>?`~^=;, \t\n";
270       const char quote = '"';
271 #else
272       /* This holds all the characters considered special to the
273          typical Unix shells.  We include `^' because the SunOS
274          /bin/sh treats it as a synonym for `|'.  */
275       char *special = "\"!#$&*()\\|[]{}<>?'`~^; \t\n";
276       const char quote = '\'';
277 #endif
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 += 3 * 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++ = quote;
298               *out++ = quote;
299             }
300           else
301             {
302 #ifdef __MINGW32__
303               int quoted = 0;
304
305               if (strpbrk (argv[i], special))
306                 {
307                   quoted = 1;
308                   *out++ = quote;
309                 }
310 #endif
311               for (cp = argv[i]; *cp; ++cp)
312                 {
313                   if (*cp == '\n')
314                     {
315                       /* A newline cannot be quoted with a backslash (it
316                          just disappears), only by putting it inside
317                          quotes.  */
318                       *out++ = quote;
319                       *out++ = '\n';
320                       *out++ = quote;
321                     }
322                   else
323                     {
324 #ifdef __MINGW32__
325                       if (*cp == quote)
326 #else
327                       if (strchr (special, *cp) != NULL)
328 #endif
329                         *out++ = '\\';
330                       *out++ = *cp;
331                     }
332                 }
333 #ifdef __MINGW32__
334               if (quoted)
335                 *out++ = quote;
336 #endif
337             }
338         }
339       *out = '\0';
340     }
341   else
342     {
343       /* In this case we can't handle arguments that contain spaces,
344          tabs, or newlines -- see breakup_args().  */
345       int i;
346       int length = 0;
347
348       for (i = 0; i < argc; ++i)
349         {
350           char *cp = strchr (argv[i], ' ');
351           if (cp == NULL)
352             cp = strchr (argv[i], '\t');
353           if (cp == NULL)
354             cp = strchr (argv[i], '\n');
355           if (cp != NULL)
356             error (_("can't handle command-line "
357                      "argument containing whitespace"));
358           length += strlen (argv[i]) + 1;
359         }
360
361       result = (char *) xmalloc (length);
362       result[0] = '\0';
363       for (i = 0; i < argc; ++i)
364         {
365           if (i > 0)
366             strcat (result, " ");
367           strcat (result, argv[i]);
368         }
369     }
370
371   return result;
372 }
373 \f
374
375 /* This function detects whether or not a '&' character (indicating
376    background execution) has been added as *the last* of the arguments ARGS
377    of a command.  If it has, it removes it and returns 1.  Otherwise it
378    does nothing and returns 0.  */
379
380 static int
381 strip_bg_char (char **args)
382 {
383   char *p = NULL;
384
385   p = strchr (*args, '&');
386
387   if (p)
388     {
389       if (p == (*args + strlen (*args) - 1))
390         {
391           if (strlen (*args) > 1)
392             {
393               do
394                 p--;
395               while (*p == ' ' || *p == '\t');
396               *(p + 1) = '\0';
397             }
398           else
399             *args = 0;
400           return 1;
401         }
402     }
403   return 0;
404 }
405
406 /* Common actions to take after creating any sort of inferior, by any
407    means (running, attaching, connecting, et cetera).  The target
408    should be stopped.  */
409
410 void
411 post_create_inferior (struct target_ops *target, int from_tty)
412 {
413   volatile struct gdb_exception ex;
414
415   /* Be sure we own the terminal in case write operations are performed.  */ 
416   target_terminal_ours ();
417
418   /* If the target hasn't taken care of this already, do it now.
419      Targets which need to access registers during to_open,
420      to_create_inferior, or to_attach should do it earlier; but many
421      don't need to.  */
422   target_find_description ();
423
424   /* Now that we know the register layout, retrieve current PC.  But
425      if the PC is unavailable (e.g., we're opening a core file with
426      missing registers info), ignore it.  */
427   stop_pc = 0;
428   TRY_CATCH (ex, RETURN_MASK_ERROR)
429     {
430       stop_pc = regcache_read_pc (get_current_regcache ());
431     }
432   if (ex.reason < 0 && ex.error != NOT_AVAILABLE_ERROR)
433     throw_exception (ex);
434
435   if (exec_bfd)
436     {
437       const unsigned solib_add_generation
438         = current_program_space->solib_add_generation;
439
440       /* Create the hooks to handle shared library load and unload
441          events.  */
442       solib_create_inferior_hook (from_tty);
443
444       if (current_program_space->solib_add_generation == solib_add_generation)
445         {
446           /* The platform-specific hook should load initial shared libraries,
447              but didn't.  FROM_TTY will be incorrectly 0 but such solib
448              targets should be fixed anyway.  Call it only after the solib
449              target has been initialized by solib_create_inferior_hook.  */
450
451           if (info_verbose)
452             warning (_("platform-specific solib_create_inferior_hook did "
453                        "not load initial shared libraries."));
454
455           /* If the solist is global across processes, there's no need to
456              refetch it here.  */
457           if (!gdbarch_has_global_solist (target_gdbarch ()))
458             solib_add (NULL, 0, target, auto_solib_add);
459         }
460     }
461
462   /* If the user sets watchpoints before execution having started,
463      then she gets software watchpoints, because GDB can't know which
464      target will end up being pushed, or if it supports hardware
465      watchpoints or not.  breakpoint_re_set takes care of promoting
466      watchpoints to hardware watchpoints if possible, however, if this
467      new inferior doesn't load shared libraries or we don't pull in
468      symbols from any other source on this target/arch,
469      breakpoint_re_set is never called.  Call it now so that software
470      watchpoints get a chance to be promoted to hardware watchpoints
471      if the now pushed target supports hardware watchpoints.  */
472   breakpoint_re_set ();
473
474   observer_notify_inferior_created (target, from_tty);
475 }
476
477 /* Kill the inferior if already running.  This function is designed
478    to be called when we are about to start the execution of the program
479    from the beginning.  Ask the user to confirm that he wants to restart
480    the program being debugged when FROM_TTY is non-null.  */
481
482 static void
483 kill_if_already_running (int from_tty)
484 {
485   if (! ptid_equal (inferior_ptid, null_ptid) && target_has_execution)
486     {
487       /* Bail out before killing the program if we will not be able to
488          restart it.  */
489       target_require_runnable ();
490
491       if (from_tty
492           && !query (_("The program being debugged has been started already.\n\
493 Start it from the beginning? ")))
494         error (_("Program not restarted."));
495       target_kill ();
496     }
497 }
498
499 /* Prepare for execution command.  TARGET is the target that will run
500    the command.  BACKGROUND determines whether this is a foreground
501    (synchronous) or background (asynchronous) command.  */
502
503 static void
504 prepare_execution_command (struct target_ops *target, int background)
505 {
506   /* If we get a request for running in the bg but the target
507      doesn't support it, error out.  */
508   if (background && !target->to_can_async_p (target))
509     error (_("Asynchronous execution not supported on this target."));
510
511   /* If we don't get a request of running in the bg, then we need
512      to simulate synchronous (fg) execution.  */
513   if (!background && target->to_can_async_p (target))
514     {
515       /* Simulate synchronous execution.  Note no cleanup is necessary
516          for this.  stdin is re-enabled whenever an error reaches the
517          top level.  */
518       async_disable_stdin ();
519     }
520 }
521
522 /* Implement the "run" command.  If TBREAK_AT_MAIN is set, then insert
523    a temporary breakpoint at the begining of the main program before
524    running the program.  */
525
526 static void
527 run_command_1 (char *args, int from_tty, int tbreak_at_main)
528 {
529   char *exec_file;
530   struct cleanup *old_chain;
531   ptid_t ptid;
532   struct ui_out *uiout = current_uiout;
533   struct target_ops *run_target;
534   int async_exec = 0;
535
536   dont_repeat ();
537
538   kill_if_already_running (from_tty);
539
540   init_wait_for_inferior ();
541   clear_breakpoint_hit_counts ();
542
543   /* Clean up any leftovers from other runs.  Some other things from
544      this function should probably be moved into target_pre_inferior.  */
545   target_pre_inferior (from_tty);
546
547   /* The comment here used to read, "The exec file is re-read every
548      time we do a generic_mourn_inferior, so we just have to worry
549      about the symbol file."  The `generic_mourn_inferior' function
550      gets called whenever the program exits.  However, suppose the
551      program exits, and *then* the executable file changes?  We need
552      to check again here.  Since reopen_exec_file doesn't do anything
553      if the timestamp hasn't changed, I don't see the harm.  */
554   reopen_exec_file ();
555   reread_symbols ();
556
557   if (args != NULL)
558     async_exec = strip_bg_char (&args);
559
560   /* Do validation and preparation before possibly changing anything
561      in the inferior.  */
562
563   run_target = find_run_target ();
564
565   prepare_execution_command (run_target, async_exec);
566
567   if (non_stop && !run_target->to_supports_non_stop (run_target))
568     error (_("The target does not support running in non-stop mode."));
569
570   /* Done.  Can now set breakpoints, change inferior args, etc.  */
571
572   /* Insert the temporary breakpoint if a location was specified.  */
573   if (tbreak_at_main)
574     tbreak_command (main_name (), 0);
575
576   exec_file = (char *) get_exec_file (0);
577
578   /* We keep symbols from add-symbol-file, on the grounds that the
579      user might want to add some symbols before running the program
580      (right?).  But sometimes (dynamic loading where the user manually
581      introduces the new symbols with add-symbol-file), the code which
582      the symbols describe does not persist between runs.  Currently
583      the user has to manually nuke all symbols between runs if they
584      want them to go away (PR 2207).  This is probably reasonable.  */
585
586   /* If there were other args, beside '&', process them.  */
587   if (args != NULL)
588     set_inferior_args (args);
589
590   if (from_tty)
591     {
592       ui_out_field_string (uiout, NULL, "Starting program");
593       ui_out_text (uiout, ": ");
594       if (exec_file)
595         ui_out_field_string (uiout, "execfile", exec_file);
596       ui_out_spaces (uiout, 1);
597       /* We call get_inferior_args() because we might need to compute
598          the value now.  */
599       ui_out_field_string (uiout, "infargs", get_inferior_args ());
600       ui_out_text (uiout, "\n");
601       ui_out_flush (uiout);
602     }
603
604   /* We call get_inferior_args() because we might need to compute
605      the value now.  */
606   run_target->to_create_inferior (run_target, exec_file, get_inferior_args (),
607                                   environ_vector (current_inferior ()->environment),
608                                   from_tty);
609   /* to_create_inferior should push the target, so after this point we
610      shouldn't refer to run_target again.  */
611   run_target = NULL;
612
613   /* We're starting off a new process.  When we get out of here, in
614      non-stop mode, finish the state of all threads of that process,
615      but leave other threads alone, as they may be stopped in internal
616      events --- the frontend shouldn't see them as stopped.  In
617      all-stop, always finish the state of all threads, as we may be
618      resuming more than just the new process.  */
619   if (non_stop)
620     ptid = pid_to_ptid (ptid_get_pid (inferior_ptid));
621   else
622     ptid = minus_one_ptid;
623   old_chain = make_cleanup (finish_thread_state_cleanup, &ptid);
624
625   /* Pass zero for FROM_TTY, because at this point the "run" command
626      has done its thing; now we are setting up the running program.  */
627   post_create_inferior (&current_target, 0);
628
629   /* Start the target running.  Do not use -1 continuation as it would skip
630      breakpoint right at the entry point.  */
631   proceed (regcache_read_pc (get_current_regcache ()), GDB_SIGNAL_0, 0);
632
633   /* Since there was no error, there's no need to finish the thread
634      states here.  */
635   discard_cleanups (old_chain);
636 }
637
638 static void
639 run_command (char *args, int from_tty)
640 {
641   run_command_1 (args, from_tty, 0);
642 }
643
644 static void
645 run_no_args_command (char *args, int from_tty)
646 {
647   set_inferior_args ("");
648 }
649 \f
650
651 /* Start the execution of the program up until the beginning of the main
652    program.  */
653
654 static void
655 start_command (char *args, int from_tty)
656 {
657   /* Some languages such as Ada need to search inside the program
658      minimal symbols for the location where to put the temporary
659      breakpoint before starting.  */
660   if (!have_minimal_symbols ())
661     error (_("No symbol table loaded.  Use the \"file\" command."));
662
663   /* Run the program until reaching the main procedure...  */
664   run_command_1 (args, from_tty, 1);
665
666
667 static int
668 proceed_thread_callback (struct thread_info *thread, void *arg)
669 {
670   /* We go through all threads individually instead of compressing
671      into a single target `resume_all' request, because some threads
672      may be stopped in internal breakpoints/events, or stopped waiting
673      for its turn in the displaced stepping queue (that is, they are
674      running && !executing).  The target side has no idea about why
675      the thread is stopped, so a `resume_all' command would resume too
676      much.  If/when GDB gains a way to tell the target `hold this
677      thread stopped until I say otherwise', then we can optimize
678      this.  */
679   if (!is_stopped (thread->ptid))
680     return 0;
681
682   switch_to_thread (thread->ptid);
683   clear_proceed_status ();
684   proceed ((CORE_ADDR) -1, GDB_SIGNAL_DEFAULT, 0);
685   return 0;
686 }
687
688 static void
689 ensure_valid_thread (void)
690 {
691   if (ptid_equal (inferior_ptid, null_ptid)
692       || is_exited (inferior_ptid))
693     error (_("Cannot execute this command without a live selected thread."));
694 }
695
696 /* If the user is looking at trace frames, any resumption of execution
697    is likely to mix up recorded and live target data.  So simply
698    disallow those commands.  */
699
700 static void
701 ensure_not_tfind_mode (void)
702 {
703   if (get_traceframe_number () >= 0)
704     error (_("Cannot execute this command while looking at trace frames."));
705 }
706
707 /* Throw an error indicating the current thread is running.  */
708
709 static void
710 error_is_running (void)
711 {
712   error (_("Cannot execute this command while "
713            "the selected thread is running."));
714 }
715
716 /* Calls error_is_running if the current thread is running.  */
717
718 static void
719 ensure_not_running (void)
720 {
721   if (is_running (inferior_ptid))
722     error_is_running ();
723 }
724
725 void
726 continue_1 (int all_threads)
727 {
728   ERROR_NO_INFERIOR;
729   ensure_not_tfind_mode ();
730
731   if (non_stop && all_threads)
732     {
733       /* Don't error out if the current thread is running, because
734          there may be other stopped threads.  */
735       struct cleanup *old_chain;
736
737       /* Backup current thread and selected frame.  */
738       old_chain = make_cleanup_restore_current_thread ();
739
740       iterate_over_threads (proceed_thread_callback, NULL);
741
742       /* Restore selected ptid.  */
743       do_cleanups (old_chain);
744     }
745   else
746     {
747       ensure_valid_thread ();
748       ensure_not_running ();
749       clear_proceed_status ();
750       proceed ((CORE_ADDR) -1, GDB_SIGNAL_DEFAULT, 0);
751     }
752 }
753
754 /* continue [-a] [proceed-count] [&]  */
755
756 static void
757 continue_command (char *args, int from_tty)
758 {
759   int async_exec = 0;
760   int all_threads = 0;
761   ERROR_NO_INFERIOR;
762
763   /* Find out whether we must run in the background.  */
764   if (args != NULL)
765     async_exec = strip_bg_char (&args);
766
767   prepare_execution_command (&current_target, async_exec);
768
769   if (args != NULL)
770     {
771       if (strncmp (args, "-a", sizeof ("-a") - 1) == 0)
772         {
773           all_threads = 1;
774           args += sizeof ("-a") - 1;
775           if (*args == '\0')
776             args = NULL;
777         }
778     }
779
780   if (!non_stop && all_threads)
781     error (_("`-a' is meaningless in all-stop mode."));
782
783   if (args != NULL && all_threads)
784     error (_("Can't resume all threads and specify "
785              "proceed count simultaneously."));
786
787   /* If we have an argument left, set proceed count of breakpoint we
788      stopped at.  */
789   if (args != NULL)
790     {
791       bpstat bs = NULL;
792       int num, stat;
793       int stopped = 0;
794       struct thread_info *tp;
795
796       if (non_stop)
797         tp = find_thread_ptid (inferior_ptid);
798       else
799         {
800           ptid_t last_ptid;
801           struct target_waitstatus ws;
802
803           get_last_target_status (&last_ptid, &ws);
804           tp = find_thread_ptid (last_ptid);
805         }
806       if (tp != NULL)
807         bs = tp->control.stop_bpstat;
808
809       while ((stat = bpstat_num (&bs, &num)) != 0)
810         if (stat > 0)
811           {
812             set_ignore_count (num,
813                               parse_and_eval_long (args) - 1,
814                               from_tty);
815             /* set_ignore_count prints a message ending with a period.
816                So print two spaces before "Continuing.".  */
817             if (from_tty)
818               printf_filtered ("  ");
819             stopped = 1;
820           }
821
822       if (!stopped && from_tty)
823         {
824           printf_filtered
825             ("Not stopped at any breakpoint; argument ignored.\n");
826         }
827     }
828
829   if (from_tty)
830     printf_filtered (_("Continuing.\n"));
831
832   continue_1 (all_threads);
833 }
834 \f
835 /* Record the starting point of a "step" or "next" command.  */
836
837 static void
838 set_step_frame (void)
839 {
840   struct symtab_and_line sal;
841
842   find_frame_sal (get_current_frame (), &sal);
843   set_step_info (get_current_frame (), sal);
844 }
845
846 /* Step until outside of current statement.  */
847
848 static void
849 step_command (char *count_string, int from_tty)
850 {
851   step_1 (0, 0, count_string);
852 }
853
854 /* Likewise, but skip over subroutine calls as if single instructions.  */
855
856 static void
857 next_command (char *count_string, int from_tty)
858 {
859   step_1 (1, 0, count_string);
860 }
861
862 /* Likewise, but step only one instruction.  */
863
864 static void
865 stepi_command (char *count_string, int from_tty)
866 {
867   step_1 (0, 1, count_string);
868 }
869
870 static void
871 nexti_command (char *count_string, int from_tty)
872 {
873   step_1 (1, 1, count_string);
874 }
875
876 void
877 delete_longjmp_breakpoint_cleanup (void *arg)
878 {
879   int thread = * (int *) arg;
880   delete_longjmp_breakpoint (thread);
881 }
882
883 static void
884 step_1 (int skip_subroutines, int single_inst, char *count_string)
885 {
886   int count = 1;
887   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
888   int async_exec = 0;
889   int thread = -1;
890
891   ERROR_NO_INFERIOR;
892   ensure_not_tfind_mode ();
893   ensure_valid_thread ();
894   ensure_not_running ();
895
896   if (count_string)
897     async_exec = strip_bg_char (&count_string);
898
899   prepare_execution_command (&current_target, async_exec);
900
901   count = count_string ? parse_and_eval_long (count_string) : 1;
902
903   if (!single_inst || skip_subroutines)         /* Leave si command alone.  */
904     {
905       struct thread_info *tp = inferior_thread ();
906
907       if (in_thread_list (inferior_ptid))
908         thread = pid_to_thread_id (inferior_ptid);
909
910       set_longjmp_breakpoint (tp, get_frame_id (get_current_frame ()));
911
912       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
913     }
914
915   /* In synchronous case, all is well; each step_once call will step once.  */
916   if (!target_can_async_p ())
917     {
918       for (; count > 0; count--)
919         {
920           step_once (skip_subroutines, single_inst, count, thread);
921
922           if (!target_has_execution)
923             break;
924           else
925             {
926               struct thread_info *tp = inferior_thread ();
927
928               if (!tp->control.stop_step || !tp->step_multi)
929                 {
930                   /* If we stopped for some reason that is not stepping
931                      there are no further steps to make.  */
932                   tp->step_multi = 0;
933                   break;
934                 }
935             }
936         }
937
938       do_cleanups (cleanups);
939     }
940   else
941     {
942       /* In the case of an asynchronous target things get complicated;
943          do only one step for now, before returning control to the
944          event loop.  Let the continuation figure out how many other
945          steps we need to do, and handle them one at the time, through
946          step_once.  */
947       step_once (skip_subroutines, single_inst, count, thread);
948
949       /* We are running, and the continuation is installed.  It will
950          disable the longjmp breakpoint as appropriate.  */
951       discard_cleanups (cleanups);
952     }
953 }
954
955 struct step_1_continuation_args
956 {
957   int count;
958   int skip_subroutines;
959   int single_inst;
960   int thread;
961 };
962
963 /* Called after we are done with one step operation, to check whether
964    we need to step again, before we print the prompt and return control
965    to the user.  If count is > 1, we will need to do one more call to
966    proceed(), via step_once().  Basically it is like step_once and
967    step_1_continuation are co-recursive.  */
968
969 static void
970 step_1_continuation (void *args, int err)
971 {
972   struct step_1_continuation_args *a = args;
973
974   if (target_has_execution)
975     {
976       struct thread_info *tp;
977
978       tp = inferior_thread ();
979       if (!err
980           && tp->step_multi && tp->control.stop_step)
981         {
982           /* There are more steps to make, and we did stop due to
983              ending a stepping range.  Do another step.  */
984           step_once (a->skip_subroutines, a->single_inst,
985                      a->count - 1, a->thread);
986           return;
987         }
988       tp->step_multi = 0;
989     }
990
991   /* We either hit an error, or stopped for some reason that is
992      not stepping, or there are no further steps to make.
993      Cleanup.  */
994   if (!a->single_inst || a->skip_subroutines)
995     delete_longjmp_breakpoint (a->thread);
996 }
997
998 /* Do just one step operation.  This is useful to implement the 'step
999    n' kind of commands.  In case of asynchronous targets, we will have
1000    to set up a continuation to be done after the target stops (after
1001    this one step).  For synch targets, the caller handles further
1002    stepping.  */
1003
1004 static void
1005 step_once (int skip_subroutines, int single_inst, int count, int thread)
1006 {
1007   struct frame_info *frame = get_current_frame ();
1008
1009   if (count > 0)
1010     {
1011       /* Don't assume THREAD is a valid thread id.  It is set to -1 if
1012          the longjmp breakpoint was not required.  Use the
1013          INFERIOR_PTID thread instead, which is the same thread when
1014          THREAD is set.  */
1015       struct thread_info *tp = inferior_thread ();
1016
1017       clear_proceed_status ();
1018       set_step_frame ();
1019
1020       if (!single_inst)
1021         {
1022           CORE_ADDR pc;
1023
1024           /* Step at an inlined function behaves like "down".  */
1025           if (!skip_subroutines
1026               && inline_skipped_frames (inferior_ptid))
1027             {
1028               ptid_t resume_ptid;
1029
1030               /* Pretend that we've ran.  */
1031               resume_ptid = user_visible_resume_ptid (1);
1032               set_running (resume_ptid, 1);
1033
1034               step_into_inline_frame (inferior_ptid);
1035               if (count > 1)
1036                 step_once (skip_subroutines, single_inst, count - 1, thread);
1037               else
1038                 {
1039                   /* Pretend that we've stopped.  */
1040                   normal_stop ();
1041
1042                   if (target_can_async_p ())
1043                     inferior_event_handler (INF_EXEC_COMPLETE, NULL);
1044                 }
1045               return;
1046             }
1047
1048           pc = get_frame_pc (frame);
1049           find_pc_line_pc_range (pc,
1050                                  &tp->control.step_range_start,
1051                                  &tp->control.step_range_end);
1052
1053           tp->control.may_range_step = 1;
1054
1055           /* If we have no line info, switch to stepi mode.  */
1056           if (tp->control.step_range_end == 0 && step_stop_if_no_debug)
1057             {
1058               tp->control.step_range_start = tp->control.step_range_end = 1;
1059               tp->control.may_range_step = 0;
1060             }
1061           else if (tp->control.step_range_end == 0)
1062             {
1063               const char *name;
1064
1065               if (find_pc_partial_function (pc, &name,
1066                                             &tp->control.step_range_start,
1067                                             &tp->control.step_range_end) == 0)
1068                 error (_("Cannot find bounds of current function"));
1069
1070               target_terminal_ours ();
1071               printf_filtered (_("Single stepping until exit from function %s,"
1072                                  "\nwhich has no line number information.\n"),
1073                                name);
1074             }
1075         }
1076       else
1077         {
1078           /* Say we are stepping, but stop after one insn whatever it does.  */
1079           tp->control.step_range_start = tp->control.step_range_end = 1;
1080           if (!skip_subroutines)
1081             /* It is stepi.
1082                Don't step over function calls, not even to functions lacking
1083                line numbers.  */
1084             tp->control.step_over_calls = STEP_OVER_NONE;
1085         }
1086
1087       if (skip_subroutines)
1088         tp->control.step_over_calls = STEP_OVER_ALL;
1089
1090       tp->step_multi = (count > 1);
1091       proceed ((CORE_ADDR) -1, GDB_SIGNAL_DEFAULT, 1);
1092
1093       /* For async targets, register a continuation to do any
1094          additional steps.  For sync targets, the caller will handle
1095          further stepping.  */
1096       if (target_can_async_p ())
1097         {
1098           struct step_1_continuation_args *args;
1099
1100           args = xmalloc (sizeof (*args));
1101           args->skip_subroutines = skip_subroutines;
1102           args->single_inst = single_inst;
1103           args->count = count;
1104           args->thread = thread;
1105
1106           add_intermediate_continuation (tp, step_1_continuation, args, xfree);
1107         }
1108     }
1109 }
1110
1111 \f
1112 /* Continue program at specified address.  */
1113
1114 static void
1115 jump_command (char *arg, int from_tty)
1116 {
1117   struct gdbarch *gdbarch = get_current_arch ();
1118   CORE_ADDR addr;
1119   struct symtabs_and_lines sals;
1120   struct symtab_and_line sal;
1121   struct symbol *fn;
1122   struct symbol *sfn;
1123   int async_exec = 0;
1124
1125   ERROR_NO_INFERIOR;
1126   ensure_not_tfind_mode ();
1127   ensure_valid_thread ();
1128   ensure_not_running ();
1129
1130   /* Find out whether we must run in the background.  */
1131   if (arg != NULL)
1132     async_exec = strip_bg_char (&arg);
1133
1134   prepare_execution_command (&current_target, async_exec);
1135
1136   if (!arg)
1137     error_no_arg (_("starting address"));
1138
1139   sals = decode_line_with_last_displayed (arg, DECODE_LINE_FUNFIRSTLINE);
1140   if (sals.nelts != 1)
1141     {
1142       error (_("Unreasonable jump request"));
1143     }
1144
1145   sal = sals.sals[0];
1146   xfree (sals.sals);
1147
1148   if (sal.symtab == 0 && sal.pc == 0)
1149     error (_("No source file has been specified."));
1150
1151   resolve_sal_pc (&sal);        /* May error out.  */
1152
1153   /* See if we are trying to jump to another function.  */
1154   fn = get_frame_function (get_current_frame ());
1155   sfn = find_pc_function (sal.pc);
1156   if (fn != NULL && sfn != fn)
1157     {
1158       if (!query (_("Line %d is not in `%s'.  Jump anyway? "), sal.line,
1159                   SYMBOL_PRINT_NAME (fn)))
1160         {
1161           error (_("Not confirmed."));
1162           /* NOTREACHED */
1163         }
1164     }
1165
1166   if (sfn != NULL)
1167     {
1168       fixup_symbol_section (sfn, 0);
1169       if (section_is_overlay (SYMBOL_OBJ_SECTION (SYMBOL_OBJFILE (sfn), sfn)) &&
1170           !section_is_mapped (SYMBOL_OBJ_SECTION (SYMBOL_OBJFILE (sfn), sfn)))
1171         {
1172           if (!query (_("WARNING!!!  Destination is in "
1173                         "unmapped overlay!  Jump anyway? ")))
1174             {
1175               error (_("Not confirmed."));
1176               /* NOTREACHED */
1177             }
1178         }
1179     }
1180
1181   addr = sal.pc;
1182
1183   if (from_tty)
1184     {
1185       printf_filtered (_("Continuing at "));
1186       fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
1187       printf_filtered (".\n");
1188     }
1189
1190   clear_proceed_status ();
1191   proceed (addr, GDB_SIGNAL_0, 0);
1192 }
1193 \f
1194
1195 /* Go to line or address in current procedure.  */
1196
1197 static void
1198 go_command (char *line_no, int from_tty)
1199 {
1200   if (line_no == (char *) NULL || !*line_no)
1201     printf_filtered (_("Usage: go <location>\n"));
1202   else
1203     {
1204       tbreak_command (line_no, from_tty);
1205       jump_command (line_no, from_tty);
1206     }
1207 }
1208 \f
1209
1210 /* Continue program giving it specified signal.  */
1211
1212 static void
1213 signal_command (char *signum_exp, int from_tty)
1214 {
1215   enum gdb_signal oursig;
1216   int async_exec = 0;
1217
1218   dont_repeat ();               /* Too dangerous.  */
1219   ERROR_NO_INFERIOR;
1220   ensure_not_tfind_mode ();
1221   ensure_valid_thread ();
1222   ensure_not_running ();
1223
1224   /* Find out whether we must run in the background.  */
1225   if (signum_exp != NULL)
1226     async_exec = strip_bg_char (&signum_exp);
1227
1228   prepare_execution_command (&current_target, async_exec);
1229
1230   if (!signum_exp)
1231     error_no_arg (_("signal number"));
1232
1233   /* It would be even slicker to make signal names be valid expressions,
1234      (the type could be "enum $signal" or some such), then the user could
1235      assign them to convenience variables.  */
1236   oursig = gdb_signal_from_name (signum_exp);
1237
1238   if (oursig == GDB_SIGNAL_UNKNOWN)
1239     {
1240       /* No, try numeric.  */
1241       int num = parse_and_eval_long (signum_exp);
1242
1243       if (num == 0)
1244         oursig = GDB_SIGNAL_0;
1245       else
1246         oursig = gdb_signal_from_command (num);
1247     }
1248
1249   if (from_tty)
1250     {
1251       if (oursig == GDB_SIGNAL_0)
1252         printf_filtered (_("Continuing with no signal.\n"));
1253       else
1254         printf_filtered (_("Continuing with signal %s.\n"),
1255                          gdb_signal_to_name (oursig));
1256     }
1257
1258   clear_proceed_status ();
1259   proceed ((CORE_ADDR) -1, oursig, 0);
1260 }
1261
1262 /* Continuation args to be passed to the "until" command
1263    continuation.  */
1264 struct until_next_continuation_args
1265 {
1266   /* The thread that was current when the command was executed.  */
1267   int thread;
1268 };
1269
1270 /* A continuation callback for until_next_command.  */
1271
1272 static void
1273 until_next_continuation (void *arg, int err)
1274 {
1275   struct until_next_continuation_args *a = arg;
1276
1277   delete_longjmp_breakpoint (a->thread);
1278 }
1279
1280 /* Proceed until we reach a different source line with pc greater than
1281    our current one or exit the function.  We skip calls in both cases.
1282
1283    Note that eventually this command should probably be changed so
1284    that only source lines are printed out when we hit the breakpoint
1285    we set.  This may involve changes to wait_for_inferior and the
1286    proceed status code.  */
1287
1288 static void
1289 until_next_command (int from_tty)
1290 {
1291   struct frame_info *frame;
1292   CORE_ADDR pc;
1293   struct symbol *func;
1294   struct symtab_and_line sal;
1295   struct thread_info *tp = inferior_thread ();
1296   int thread = tp->num;
1297   struct cleanup *old_chain;
1298
1299   clear_proceed_status ();
1300   set_step_frame ();
1301
1302   frame = get_current_frame ();
1303
1304   /* Step until either exited from this function or greater
1305      than the current line (if in symbolic section) or pc (if
1306      not).  */
1307
1308   pc = get_frame_pc (frame);
1309   func = find_pc_function (pc);
1310
1311   if (!func)
1312     {
1313       struct bound_minimal_symbol msymbol = lookup_minimal_symbol_by_pc (pc);
1314
1315       if (msymbol.minsym == NULL)
1316         error (_("Execution is not within a known function."));
1317
1318       tp->control.step_range_start = BMSYMBOL_VALUE_ADDRESS (msymbol);
1319       tp->control.step_range_end = pc;
1320     }
1321   else
1322     {
1323       sal = find_pc_line (pc, 0);
1324
1325       tp->control.step_range_start = BLOCK_START (SYMBOL_BLOCK_VALUE (func));
1326       tp->control.step_range_end = sal.end;
1327     }
1328   tp->control.may_range_step = 1;
1329
1330   tp->control.step_over_calls = STEP_OVER_ALL;
1331
1332   tp->step_multi = 0;           /* Only one call to proceed */
1333
1334   set_longjmp_breakpoint (tp, get_frame_id (frame));
1335   old_chain = make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
1336
1337   proceed ((CORE_ADDR) -1, GDB_SIGNAL_DEFAULT, 1);
1338
1339   if (target_can_async_p () && is_running (inferior_ptid))
1340     {
1341       struct until_next_continuation_args *cont_args;
1342
1343       discard_cleanups (old_chain);
1344       cont_args = XNEW (struct until_next_continuation_args);
1345       cont_args->thread = inferior_thread ()->num;
1346
1347       add_continuation (tp, until_next_continuation, cont_args, xfree);
1348     }
1349   else
1350     do_cleanups (old_chain);
1351 }
1352
1353 static void
1354 until_command (char *arg, int from_tty)
1355 {
1356   int async_exec = 0;
1357
1358   ERROR_NO_INFERIOR;
1359   ensure_not_tfind_mode ();
1360   ensure_valid_thread ();
1361   ensure_not_running ();
1362
1363   /* Find out whether we must run in the background.  */
1364   if (arg != NULL)
1365     async_exec = strip_bg_char (&arg);
1366
1367   prepare_execution_command (&current_target, async_exec);
1368
1369   if (arg)
1370     until_break_command (arg, from_tty, 0);
1371   else
1372     until_next_command (from_tty);
1373 }
1374
1375 static void
1376 advance_command (char *arg, int from_tty)
1377 {
1378   int async_exec = 0;
1379
1380   ERROR_NO_INFERIOR;
1381   ensure_not_tfind_mode ();
1382   ensure_valid_thread ();
1383   ensure_not_running ();
1384
1385   if (arg == NULL)
1386     error_no_arg (_("a location"));
1387
1388   /* Find out whether we must run in the background.  */
1389   if (arg != NULL)
1390     async_exec = strip_bg_char (&arg);
1391
1392   prepare_execution_command (&current_target, async_exec);
1393
1394   until_break_command (arg, from_tty, 1);
1395 }
1396 \f
1397 /* Return the value of the result of a function at the end of a 'finish'
1398    command/BP.  */
1399
1400 struct value *
1401 get_return_value (struct value *function, struct type *value_type)
1402 {
1403   struct regcache *stop_regs = stop_registers;
1404   struct gdbarch *gdbarch;
1405   struct value *value;
1406   struct cleanup *cleanup = make_cleanup (null_cleanup, NULL);
1407
1408   /* If stop_registers were not saved, use the current registers.  */
1409   if (!stop_regs)
1410     {
1411       stop_regs = regcache_dup (get_current_regcache ());
1412       make_cleanup_regcache_xfree (stop_regs);
1413     }
1414
1415   gdbarch = get_regcache_arch (stop_regs);
1416
1417   CHECK_TYPEDEF (value_type);
1418   gdb_assert (TYPE_CODE (value_type) != TYPE_CODE_VOID);
1419
1420   /* FIXME: 2003-09-27: When returning from a nested inferior function
1421      call, it's possible (with no help from the architecture vector)
1422      to locate and return/print a "struct return" value.  This is just
1423      a more complicated case of what is already being done in the
1424      inferior function call code.  In fact, when inferior function
1425      calls are made async, this will likely be made the norm.  */
1426
1427   switch (gdbarch_return_value (gdbarch, function, value_type,
1428                                 NULL, NULL, NULL))
1429     {
1430     case RETURN_VALUE_REGISTER_CONVENTION:
1431     case RETURN_VALUE_ABI_RETURNS_ADDRESS:
1432     case RETURN_VALUE_ABI_PRESERVES_ADDRESS:
1433       value = allocate_value (value_type);
1434       gdbarch_return_value (gdbarch, function, value_type, stop_regs,
1435                             value_contents_raw (value), NULL);
1436       break;
1437     case RETURN_VALUE_STRUCT_CONVENTION:
1438       value = NULL;
1439       break;
1440     default:
1441       internal_error (__FILE__, __LINE__, _("bad switch"));
1442     }
1443
1444   do_cleanups (cleanup);
1445
1446   return value;
1447 }
1448
1449 /* Print the result of a function at the end of a 'finish' command.  */
1450
1451 static void
1452 print_return_value (struct value *function, struct type *value_type)
1453 {
1454   struct value *value = get_return_value (function, value_type);
1455   struct ui_out *uiout = current_uiout;
1456
1457   if (value)
1458     {
1459       struct value_print_options opts;
1460       struct ui_file *stb;
1461       struct cleanup *old_chain;
1462
1463       /* Print it.  */
1464       stb = mem_fileopen ();
1465       old_chain = make_cleanup_ui_file_delete (stb);
1466       ui_out_text (uiout, "Value returned is ");
1467       ui_out_field_fmt (uiout, "gdb-result-var", "$%d",
1468                         record_latest_value (value));
1469       ui_out_text (uiout, " = ");
1470       get_no_prettyformat_print_options (&opts);
1471       value_print (value, stb, &opts);
1472       ui_out_field_stream (uiout, "return-value", stb);
1473       ui_out_text (uiout, "\n");
1474       do_cleanups (old_chain);
1475     }
1476   else
1477     {
1478       ui_out_text (uiout, "Value returned has type: ");
1479       ui_out_field_string (uiout, "return-type", TYPE_NAME (value_type));
1480       ui_out_text (uiout, ".");
1481       ui_out_text (uiout, " Cannot determine contents\n");
1482     }
1483 }
1484
1485 /* Stuff that needs to be done by the finish command after the target
1486    has stopped.  In asynchronous mode, we wait for the target to stop
1487    in the call to poll or select in the event loop, so it is
1488    impossible to do all the stuff as part of the finish_command
1489    function itself.  The only chance we have to complete this command
1490    is in fetch_inferior_event, which is called by the event loop as
1491    soon as it detects that the target has stopped.  */
1492
1493 struct finish_command_continuation_args
1494 {
1495   /* The thread that as current when the command was executed.  */
1496   int thread;
1497   struct breakpoint *breakpoint;
1498   struct symbol *function;
1499 };
1500
1501 static void
1502 finish_command_continuation (void *arg, int err)
1503 {
1504   struct finish_command_continuation_args *a = arg;
1505
1506   if (!err)
1507     {
1508       struct thread_info *tp = NULL;
1509       bpstat bs = NULL;
1510
1511       if (!ptid_equal (inferior_ptid, null_ptid)
1512           && target_has_execution
1513           && is_stopped (inferior_ptid))
1514         {
1515           tp = inferior_thread ();
1516           bs = tp->control.stop_bpstat;
1517         }
1518
1519       if (bpstat_find_breakpoint (bs, a->breakpoint) != NULL
1520           && a->function != NULL)
1521         {
1522           struct type *value_type;
1523
1524           value_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (a->function));
1525           if (!value_type)
1526             internal_error (__FILE__, __LINE__,
1527                             _("finish_command: function has no target type"));
1528
1529           if (TYPE_CODE (value_type) != TYPE_CODE_VOID)
1530             {
1531               volatile struct gdb_exception ex;
1532               struct value *func;
1533
1534               func = read_var_value (a->function, get_current_frame ());
1535               TRY_CATCH (ex, RETURN_MASK_ALL)
1536                 {
1537                   /* print_return_value can throw an exception in some
1538                      circumstances.  We need to catch this so that we still
1539                      delete the breakpoint.  */
1540                   print_return_value (func, value_type);
1541                 }
1542               if (ex.reason < 0)
1543                 exception_print (gdb_stdout, ex);
1544             }
1545         }
1546
1547       /* We suppress normal call of normal_stop observer and do it
1548          here so that the *stopped notification includes the return
1549          value.  */
1550       if (bs != NULL && tp->control.proceed_to_finish)
1551         observer_notify_normal_stop (bs, 1 /* print frame */);
1552     }
1553
1554   delete_breakpoint (a->breakpoint);
1555   delete_longjmp_breakpoint (a->thread);
1556 }
1557
1558 static void
1559 finish_command_continuation_free_arg (void *arg)
1560 {
1561   xfree (arg);
1562 }
1563
1564 /* finish_backward -- helper function for finish_command.  */
1565
1566 static void
1567 finish_backward (struct symbol *function)
1568 {
1569   struct symtab_and_line sal;
1570   struct thread_info *tp = inferior_thread ();
1571   CORE_ADDR pc;
1572   CORE_ADDR func_addr;
1573
1574   pc = get_frame_pc (get_current_frame ());
1575
1576   if (find_pc_partial_function (pc, NULL, &func_addr, NULL) == 0)
1577     internal_error (__FILE__, __LINE__,
1578                     _("Finish: couldn't find function."));
1579
1580   sal = find_pc_line (func_addr, 0);
1581
1582   tp->control.proceed_to_finish = 1;
1583   /* Special case: if we're sitting at the function entry point,
1584      then all we need to do is take a reverse singlestep.  We
1585      don't need to set a breakpoint, and indeed it would do us
1586      no good to do so.
1587
1588      Note that this can only happen at frame #0, since there's
1589      no way that a function up the stack can have a return address
1590      that's equal to its entry point.  */
1591
1592   if (sal.pc != pc)
1593     {
1594       struct frame_info *frame = get_selected_frame (NULL);
1595       struct gdbarch *gdbarch = get_frame_arch (frame);
1596       struct symtab_and_line sr_sal;
1597
1598       /* Set a step-resume at the function's entry point.  Once that's
1599          hit, we'll do one more step backwards.  */
1600       init_sal (&sr_sal);
1601       sr_sal.pc = sal.pc;
1602       sr_sal.pspace = get_frame_program_space (frame);
1603       insert_step_resume_breakpoint_at_sal (gdbarch,
1604                                             sr_sal, null_frame_id);
1605
1606       proceed ((CORE_ADDR) -1, GDB_SIGNAL_DEFAULT, 0);
1607     }
1608   else
1609     {
1610       /* We're almost there -- we just need to back up by one more
1611          single-step.  */
1612       tp->control.step_range_start = tp->control.step_range_end = 1;
1613       proceed ((CORE_ADDR) -1, GDB_SIGNAL_DEFAULT, 1);
1614     }
1615 }
1616
1617 /* finish_forward -- helper function for finish_command.  */
1618
1619 static void
1620 finish_forward (struct symbol *function, struct frame_info *frame)
1621 {
1622   struct frame_id frame_id = get_frame_id (frame);
1623   struct gdbarch *gdbarch = get_frame_arch (frame);
1624   struct symtab_and_line sal;
1625   struct thread_info *tp = inferior_thread ();
1626   struct breakpoint *breakpoint;
1627   struct cleanup *old_chain;
1628   struct finish_command_continuation_args *cargs;
1629   int thread = tp->num;
1630
1631   sal = find_pc_line (get_frame_pc (frame), 0);
1632   sal.pc = get_frame_pc (frame);
1633
1634   breakpoint = set_momentary_breakpoint (gdbarch, sal,
1635                                          get_stack_frame_id (frame),
1636                                          bp_finish);
1637
1638   /* set_momentary_breakpoint invalidates FRAME.  */
1639   frame = NULL;
1640
1641   old_chain = make_cleanup_delete_breakpoint (breakpoint);
1642
1643   set_longjmp_breakpoint (tp, frame_id);
1644   make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
1645
1646   /* We want stop_registers, please...  */
1647   tp->control.proceed_to_finish = 1;
1648   cargs = xmalloc (sizeof (*cargs));
1649
1650   cargs->thread = thread;
1651   cargs->breakpoint = breakpoint;
1652   cargs->function = function;
1653   add_continuation (tp, finish_command_continuation, cargs,
1654                     finish_command_continuation_free_arg);
1655   proceed ((CORE_ADDR) -1, GDB_SIGNAL_DEFAULT, 0);
1656
1657   discard_cleanups (old_chain);
1658   if (!target_can_async_p ())
1659     do_all_continuations (0);
1660 }
1661
1662 /* "finish": Set a temporary breakpoint at the place the selected
1663    frame will return to, then continue.  */
1664
1665 static void
1666 finish_command (char *arg, int from_tty)
1667 {
1668   struct frame_info *frame;
1669   struct symbol *function;
1670
1671   int async_exec = 0;
1672
1673   ERROR_NO_INFERIOR;
1674   ensure_not_tfind_mode ();
1675   ensure_valid_thread ();
1676   ensure_not_running ();
1677
1678   /* Find out whether we must run in the background.  */
1679   if (arg != NULL)
1680     async_exec = strip_bg_char (&arg);
1681
1682   prepare_execution_command (&current_target, async_exec);
1683
1684   if (arg)
1685     error (_("The \"finish\" command does not take any arguments."));
1686
1687   frame = get_prev_frame (get_selected_frame (_("No selected frame.")));
1688   if (frame == 0)
1689     error (_("\"finish\" not meaningful in the outermost frame."));
1690
1691   clear_proceed_status ();
1692
1693   /* Finishing from an inline frame is completely different.  We don't
1694      try to show the "return value" - no way to locate it.  So we do
1695      not need a completion.  */
1696   if (get_frame_type (get_selected_frame (_("No selected frame.")))
1697       == INLINE_FRAME)
1698     {
1699       /* Claim we are stepping in the calling frame.  An empty step
1700          range means that we will stop once we aren't in a function
1701          called by that frame.  We don't use the magic "1" value for
1702          step_range_end, because then infrun will think this is nexti,
1703          and not step over the rest of this inlined function call.  */
1704       struct thread_info *tp = inferior_thread ();
1705       struct symtab_and_line empty_sal;
1706
1707       init_sal (&empty_sal);
1708       set_step_info (frame, empty_sal);
1709       tp->control.step_range_start = get_frame_pc (frame);
1710       tp->control.step_range_end = tp->control.step_range_start;
1711       tp->control.step_over_calls = STEP_OVER_ALL;
1712
1713       /* Print info on the selected frame, including level number but not
1714          source.  */
1715       if (from_tty)
1716         {
1717           printf_filtered (_("Run till exit from "));
1718           print_stack_frame (get_selected_frame (NULL), 1, LOCATION, 0);
1719         }
1720
1721       proceed ((CORE_ADDR) -1, GDB_SIGNAL_DEFAULT, 1);
1722       return;
1723     }
1724
1725   /* Ignore TAILCALL_FRAME type frames, they were executed already before
1726      entering THISFRAME.  */
1727   while (get_frame_type (frame) == TAILCALL_FRAME)
1728     frame = get_prev_frame (frame);
1729
1730   /* Find the function we will return from.  */
1731
1732   function = find_pc_function (get_frame_pc (get_selected_frame (NULL)));
1733
1734   /* Print info on the selected frame, including level number but not
1735      source.  */
1736   if (from_tty)
1737     {
1738       if (execution_direction == EXEC_REVERSE)
1739         printf_filtered (_("Run back to call of "));
1740       else
1741         printf_filtered (_("Run till exit from "));
1742
1743       print_stack_frame (get_selected_frame (NULL), 1, LOCATION, 0);
1744     }
1745
1746   if (execution_direction == EXEC_REVERSE)
1747     finish_backward (function);
1748   else
1749     finish_forward (function, frame);
1750 }
1751 \f
1752
1753 static void
1754 program_info (char *args, int from_tty)
1755 {
1756   bpstat bs;
1757   int num, stat;
1758   struct thread_info *tp;
1759   ptid_t ptid;
1760
1761   if (!target_has_execution)
1762     {
1763       printf_filtered (_("The program being debugged is not being run.\n"));
1764       return;
1765     }
1766
1767   if (non_stop)
1768     ptid = inferior_ptid;
1769   else
1770     {
1771       struct target_waitstatus ws;
1772
1773       get_last_target_status (&ptid, &ws);
1774     }
1775
1776   if (ptid_equal (ptid, null_ptid) || is_exited (ptid))
1777     error (_("Invalid selected thread."));
1778   else if (is_running (ptid))
1779     error (_("Selected thread is running."));
1780
1781   tp = find_thread_ptid (ptid);
1782   bs = tp->control.stop_bpstat;
1783   stat = bpstat_num (&bs, &num);
1784
1785   target_files_info ();
1786   printf_filtered (_("Program stopped at %s.\n"),
1787                    paddress (target_gdbarch (), stop_pc));
1788   if (tp->control.stop_step)
1789     printf_filtered (_("It stopped after being stepped.\n"));
1790   else if (stat != 0)
1791     {
1792       /* There may be several breakpoints in the same place, so this
1793          isn't as strange as it seems.  */
1794       while (stat != 0)
1795         {
1796           if (stat < 0)
1797             {
1798               printf_filtered (_("It stopped at a breakpoint "
1799                                  "that has since been deleted.\n"));
1800             }
1801           else
1802             printf_filtered (_("It stopped at breakpoint %d.\n"), num);
1803           stat = bpstat_num (&bs, &num);
1804         }
1805     }
1806   else if (tp->suspend.stop_signal != GDB_SIGNAL_0)
1807     {
1808       printf_filtered (_("It stopped with signal %s, %s.\n"),
1809                        gdb_signal_to_name (tp->suspend.stop_signal),
1810                        gdb_signal_to_string (tp->suspend.stop_signal));
1811     }
1812
1813   if (!from_tty)
1814     {
1815       printf_filtered (_("Type \"info stack\" or \"info "
1816                          "registers\" for more information.\n"));
1817     }
1818 }
1819 \f
1820 static void
1821 environment_info (char *var, int from_tty)
1822 {
1823   if (var)
1824     {
1825       char *val = get_in_environ (current_inferior ()->environment, var);
1826
1827       if (val)
1828         {
1829           puts_filtered (var);
1830           puts_filtered (" = ");
1831           puts_filtered (val);
1832           puts_filtered ("\n");
1833         }
1834       else
1835         {
1836           puts_filtered ("Environment variable \"");
1837           puts_filtered (var);
1838           puts_filtered ("\" not defined.\n");
1839         }
1840     }
1841   else
1842     {
1843       char **vector = environ_vector (current_inferior ()->environment);
1844
1845       while (*vector)
1846         {
1847           puts_filtered (*vector++);
1848           puts_filtered ("\n");
1849         }
1850     }
1851 }
1852
1853 static void
1854 set_environment_command (char *arg, int from_tty)
1855 {
1856   char *p, *val, *var;
1857   int nullset = 0;
1858
1859   if (arg == 0)
1860     error_no_arg (_("environment variable and value"));
1861
1862   /* Find seperation between variable name and value.  */
1863   p = (char *) strchr (arg, '=');
1864   val = (char *) strchr (arg, ' ');
1865
1866   if (p != 0 && val != 0)
1867     {
1868       /* We have both a space and an equals.  If the space is before the
1869          equals, walk forward over the spaces til we see a nonspace 
1870          (possibly the equals).  */
1871       if (p > val)
1872         while (*val == ' ')
1873           val++;
1874
1875       /* Now if the = is after the char following the spaces,
1876          take the char following the spaces.  */
1877       if (p > val)
1878         p = val - 1;
1879     }
1880   else if (val != 0 && p == 0)
1881     p = val;
1882
1883   if (p == arg)
1884     error_no_arg (_("environment variable to set"));
1885
1886   if (p == 0 || p[1] == 0)
1887     {
1888       nullset = 1;
1889       if (p == 0)
1890         p = arg + strlen (arg); /* So that savestring below will work.  */
1891     }
1892   else
1893     {
1894       /* Not setting variable value to null.  */
1895       val = p + 1;
1896       while (*val == ' ' || *val == '\t')
1897         val++;
1898     }
1899
1900   while (p != arg && (p[-1] == ' ' || p[-1] == '\t'))
1901     p--;
1902
1903   var = savestring (arg, p - arg);
1904   if (nullset)
1905     {
1906       printf_filtered (_("Setting environment variable "
1907                          "\"%s\" to null value.\n"),
1908                        var);
1909       set_in_environ (current_inferior ()->environment, var, "");
1910     }
1911   else
1912     set_in_environ (current_inferior ()->environment, var, val);
1913   xfree (var);
1914 }
1915
1916 static void
1917 unset_environment_command (char *var, int from_tty)
1918 {
1919   if (var == 0)
1920     {
1921       /* If there is no argument, delete all environment variables.
1922          Ask for confirmation if reading from the terminal.  */
1923       if (!from_tty || query (_("Delete all environment variables? ")))
1924         {
1925           free_environ (current_inferior ()->environment);
1926           current_inferior ()->environment = make_environ ();
1927         }
1928     }
1929   else
1930     unset_in_environ (current_inferior ()->environment, var);
1931 }
1932
1933 /* Handle the execution path (PATH variable).  */
1934
1935 static const char path_var_name[] = "PATH";
1936
1937 static void
1938 path_info (char *args, int from_tty)
1939 {
1940   puts_filtered ("Executable and object file path: ");
1941   puts_filtered (get_in_environ (current_inferior ()->environment,
1942                                  path_var_name));
1943   puts_filtered ("\n");
1944 }
1945
1946 /* Add zero or more directories to the front of the execution path.  */
1947
1948 static void
1949 path_command (char *dirname, int from_tty)
1950 {
1951   char *exec_path;
1952   char *env;
1953
1954   dont_repeat ();
1955   env = get_in_environ (current_inferior ()->environment, path_var_name);
1956   /* Can be null if path is not set.  */
1957   if (!env)
1958     env = "";
1959   exec_path = xstrdup (env);
1960   mod_path (dirname, &exec_path);
1961   set_in_environ (current_inferior ()->environment, path_var_name, exec_path);
1962   xfree (exec_path);
1963   if (from_tty)
1964     path_info ((char *) NULL, from_tty);
1965 }
1966 \f
1967
1968 /* Print out the register NAME with value VAL, to FILE, in the default
1969    fashion.  */
1970
1971 static void
1972 default_print_one_register_info (struct ui_file *file,
1973                                  const char *name,
1974                                  struct value *val)
1975 {
1976   struct type *regtype = value_type (val);
1977   int print_raw_format;
1978
1979   fputs_filtered (name, file);
1980   print_spaces_filtered (15 - strlen (name), file);
1981
1982   print_raw_format = (value_entirely_available (val)
1983                       && !value_optimized_out (val));
1984
1985   /* If virtual format is floating, print it that way, and in raw
1986      hex.  */
1987   if (TYPE_CODE (regtype) == TYPE_CODE_FLT
1988       || TYPE_CODE (regtype) == TYPE_CODE_DECFLOAT)
1989     {
1990       int j;
1991       struct value_print_options opts;
1992       const gdb_byte *valaddr = value_contents_for_printing (val);
1993       enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (regtype));
1994
1995       get_user_print_options (&opts);
1996       opts.deref_ref = 1;
1997
1998       val_print (regtype,
1999                  value_contents_for_printing (val),
2000                  value_embedded_offset (val), 0,
2001                  file, 0, val, &opts, current_language);
2002
2003       if (print_raw_format)
2004         {
2005           fprintf_filtered (file, "\t(raw ");
2006           print_hex_chars (file, valaddr, TYPE_LENGTH (regtype), byte_order);
2007           fprintf_filtered (file, ")");
2008         }
2009     }
2010   else
2011     {
2012       struct value_print_options opts;
2013
2014       /* Print the register in hex.  */
2015       get_formatted_print_options (&opts, 'x');
2016       opts.deref_ref = 1;
2017       val_print (regtype,
2018                  value_contents_for_printing (val),
2019                  value_embedded_offset (val), 0,
2020                  file, 0, val, &opts, current_language);
2021       /* If not a vector register, print it also according to its
2022          natural format.  */
2023       if (print_raw_format && TYPE_VECTOR (regtype) == 0)
2024         {
2025           get_user_print_options (&opts);
2026           opts.deref_ref = 1;
2027           fprintf_filtered (file, "\t");
2028           val_print (regtype,
2029                      value_contents_for_printing (val),
2030                      value_embedded_offset (val), 0,
2031                      file, 0, val, &opts, current_language);
2032         }
2033     }
2034
2035   fprintf_filtered (file, "\n");
2036 }
2037
2038 /* Print out the machine register regnum.  If regnum is -1, print all
2039    registers (print_all == 1) or all non-float and non-vector
2040    registers (print_all == 0).
2041
2042    For most machines, having all_registers_info() print the
2043    register(s) one per line is good enough.  If a different format is
2044    required, (eg, for MIPS or Pyramid 90x, which both have lots of
2045    regs), or there is an existing convention for showing all the
2046    registers, define the architecture method PRINT_REGISTERS_INFO to
2047    provide that format.  */
2048
2049 void
2050 default_print_registers_info (struct gdbarch *gdbarch,
2051                               struct ui_file *file,
2052                               struct frame_info *frame,
2053                               int regnum, int print_all)
2054 {
2055   int i;
2056   const int numregs = gdbarch_num_regs (gdbarch)
2057                       + gdbarch_num_pseudo_regs (gdbarch);
2058
2059   for (i = 0; i < numregs; i++)
2060     {
2061       /* Decide between printing all regs, non-float / vector regs, or
2062          specific reg.  */
2063       if (regnum == -1)
2064         {
2065           if (print_all)
2066             {
2067               if (!gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
2068                 continue;
2069             }
2070           else
2071             {
2072               if (!gdbarch_register_reggroup_p (gdbarch, i, general_reggroup))
2073                 continue;
2074             }
2075         }
2076       else
2077         {
2078           if (i != regnum)
2079             continue;
2080         }
2081
2082       /* If the register name is empty, it is undefined for this
2083          processor, so don't display anything.  */
2084       if (gdbarch_register_name (gdbarch, i) == NULL
2085           || *(gdbarch_register_name (gdbarch, i)) == '\0')
2086         continue;
2087
2088       default_print_one_register_info (file,
2089                                        gdbarch_register_name (gdbarch, i),
2090                                        value_of_register (i, frame));
2091     }
2092 }
2093
2094 void
2095 registers_info (char *addr_exp, int fpregs)
2096 {
2097   struct frame_info *frame;
2098   struct gdbarch *gdbarch;
2099
2100   if (!target_has_registers)
2101     error (_("The program has no registers now."));
2102   frame = get_selected_frame (NULL);
2103   gdbarch = get_frame_arch (frame);
2104
2105   if (!addr_exp)
2106     {
2107       gdbarch_print_registers_info (gdbarch, gdb_stdout,
2108                                     frame, -1, fpregs);
2109       return;
2110     }
2111
2112   while (*addr_exp != '\0')
2113     {
2114       char *start;
2115       const char *end;
2116
2117       /* Skip leading white space.  */
2118       addr_exp = skip_spaces (addr_exp);
2119
2120       /* Discard any leading ``$''.  Check that there is something
2121          resembling a register following it.  */
2122       if (addr_exp[0] == '$')
2123         addr_exp++;
2124       if (isspace ((*addr_exp)) || (*addr_exp) == '\0')
2125         error (_("Missing register name"));
2126
2127       /* Find the start/end of this register name/num/group.  */
2128       start = addr_exp;
2129       while ((*addr_exp) != '\0' && !isspace ((*addr_exp)))
2130         addr_exp++;
2131       end = addr_exp;
2132
2133       /* Figure out what we've found and display it.  */
2134
2135       /* A register name?  */
2136       {
2137         int regnum = user_reg_map_name_to_regnum (gdbarch, start, end - start);
2138
2139         if (regnum >= 0)
2140           {
2141             /* User registers lie completely outside of the range of
2142                normal registers.  Catch them early so that the target
2143                never sees them.  */
2144             if (regnum >= gdbarch_num_regs (gdbarch)
2145                           + gdbarch_num_pseudo_regs (gdbarch))
2146               {
2147                 struct value *regval = value_of_user_reg (regnum, frame);
2148                 const char *regname = user_reg_map_regnum_to_name (gdbarch,
2149                                                                    regnum);
2150
2151                 /* Print in the same fashion
2152                    gdbarch_print_registers_info's default
2153                    implementation prints.  */
2154                 default_print_one_register_info (gdb_stdout,
2155                                                  regname,
2156                                                  regval);
2157               }
2158             else
2159               gdbarch_print_registers_info (gdbarch, gdb_stdout,
2160                                             frame, regnum, fpregs);
2161             continue;
2162           }
2163       }
2164
2165       /* A register group?  */
2166       {
2167         struct reggroup *group;
2168
2169         for (group = reggroup_next (gdbarch, NULL);
2170              group != NULL;
2171              group = reggroup_next (gdbarch, group))
2172           {
2173             /* Don't bother with a length check.  Should the user
2174                enter a short register group name, go with the first
2175                group that matches.  */
2176             if (strncmp (start, reggroup_name (group), end - start) == 0)
2177               break;
2178           }
2179         if (group != NULL)
2180           {
2181             int regnum;
2182
2183             for (regnum = 0;
2184                  regnum < gdbarch_num_regs (gdbarch)
2185                           + gdbarch_num_pseudo_regs (gdbarch);
2186                  regnum++)
2187               {
2188                 if (gdbarch_register_reggroup_p (gdbarch, regnum, group))
2189                   gdbarch_print_registers_info (gdbarch,
2190                                                 gdb_stdout, frame,
2191                                                 regnum, fpregs);
2192               }
2193             continue;
2194           }
2195       }
2196
2197       /* Nothing matched.  */
2198       error (_("Invalid register `%.*s'"), (int) (end - start), start);
2199     }
2200 }
2201
2202 static void
2203 all_registers_info (char *addr_exp, int from_tty)
2204 {
2205   registers_info (addr_exp, 1);
2206 }
2207
2208 static void
2209 nofp_registers_info (char *addr_exp, int from_tty)
2210 {
2211   registers_info (addr_exp, 0);
2212 }
2213
2214 static void
2215 print_vector_info (struct ui_file *file,
2216                    struct frame_info *frame, const char *args)
2217 {
2218   struct gdbarch *gdbarch = get_frame_arch (frame);
2219
2220   if (gdbarch_print_vector_info_p (gdbarch))
2221     gdbarch_print_vector_info (gdbarch, file, frame, args);
2222   else
2223     {
2224       int regnum;
2225       int printed_something = 0;
2226
2227       for (regnum = 0;
2228            regnum < gdbarch_num_regs (gdbarch)
2229                     + gdbarch_num_pseudo_regs (gdbarch);
2230            regnum++)
2231         {
2232           if (gdbarch_register_reggroup_p (gdbarch, regnum, vector_reggroup))
2233             {
2234               printed_something = 1;
2235               gdbarch_print_registers_info (gdbarch, file, frame, regnum, 1);
2236             }
2237         }
2238       if (!printed_something)
2239         fprintf_filtered (file, "No vector information\n");
2240     }
2241 }
2242
2243 static void
2244 vector_info (char *args, int from_tty)
2245 {
2246   if (!target_has_registers)
2247     error (_("The program has no registers now."));
2248
2249   print_vector_info (gdb_stdout, get_selected_frame (NULL), args);
2250 }
2251 \f
2252 /* Kill the inferior process.  Make us have no inferior.  */
2253
2254 static void
2255 kill_command (char *arg, int from_tty)
2256 {
2257   /* FIXME:  This should not really be inferior_ptid (or target_has_execution).
2258      It should be a distinct flag that indicates that a target is active, cuz
2259      some targets don't have processes!  */
2260
2261   if (ptid_equal (inferior_ptid, null_ptid))
2262     error (_("The program is not being run."));
2263   if (!query (_("Kill the program being debugged? ")))
2264     error (_("Not confirmed."));
2265   target_kill ();
2266
2267   /* If we still have other inferiors to debug, then don't mess with
2268      with their threads.  */
2269   if (!have_inferiors ())
2270     {
2271       init_thread_list ();              /* Destroy thread info.  */
2272
2273       /* Killing off the inferior can leave us with a core file.  If
2274          so, print the state we are left in.  */
2275       if (target_has_stack)
2276         {
2277           printf_filtered (_("In %s,\n"), target_longname);
2278           print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2279         }
2280     }
2281   bfd_cache_close_all ();
2282 }
2283
2284 /* Used in `attach&' command.  ARG is a point to an integer
2285    representing a process id.  Proceed threads of this process iff
2286    they stopped due to debugger request, and when they did, they
2287    reported a clean stop (GDB_SIGNAL_0).  Do not proceed threads
2288    that have been explicitly been told to stop.  */
2289
2290 static int
2291 proceed_after_attach_callback (struct thread_info *thread,
2292                                void *arg)
2293 {
2294   int pid = * (int *) arg;
2295
2296   if (ptid_get_pid (thread->ptid) == pid
2297       && !is_exited (thread->ptid)
2298       && !is_executing (thread->ptid)
2299       && !thread->stop_requested
2300       && thread->suspend.stop_signal == GDB_SIGNAL_0)
2301     {
2302       switch_to_thread (thread->ptid);
2303       clear_proceed_status ();
2304       proceed ((CORE_ADDR) -1, GDB_SIGNAL_DEFAULT, 0);
2305     }
2306
2307   return 0;
2308 }
2309
2310 static void
2311 proceed_after_attach (int pid)
2312 {
2313   /* Don't error out if the current thread is running, because
2314      there may be other stopped threads.  */
2315   struct cleanup *old_chain;
2316
2317   /* Backup current thread and selected frame.  */
2318   old_chain = make_cleanup_restore_current_thread ();
2319
2320   iterate_over_threads (proceed_after_attach_callback, &pid);
2321
2322   /* Restore selected ptid.  */
2323   do_cleanups (old_chain);
2324 }
2325
2326 /*
2327  * TODO:
2328  * Should save/restore the tty state since it might be that the
2329  * program to be debugged was started on this tty and it wants
2330  * the tty in some state other than what we want.  If it's running
2331  * on another terminal or without a terminal, then saving and
2332  * restoring the tty state is a harmless no-op.
2333  * This only needs to be done if we are attaching to a process.
2334  */
2335
2336 /* attach_command --
2337    takes a program started up outside of gdb and ``attaches'' to it.
2338    This stops it cold in its tracks and allows us to start debugging it.
2339    and wait for the trace-trap that results from attaching.  */
2340
2341 static void
2342 attach_command_post_wait (char *args, int from_tty, int async_exec)
2343 {
2344   char *exec_file;
2345   char *full_exec_path = NULL;
2346   struct inferior *inferior;
2347
2348   inferior = current_inferior ();
2349   inferior->control.stop_soon = NO_STOP_QUIETLY;
2350
2351   /* If no exec file is yet known, try to determine it from the
2352      process itself.  */
2353   exec_file = (char *) get_exec_file (0);
2354   if (!exec_file)
2355     {
2356       exec_file = target_pid_to_exec_file (ptid_get_pid (inferior_ptid));
2357       if (exec_file)
2358         {
2359           /* It's possible we don't have a full path, but rather just a
2360              filename.  Some targets, such as HP-UX, don't provide the
2361              full path, sigh.
2362
2363              Attempt to qualify the filename against the source path.
2364              (If that fails, we'll just fall back on the original
2365              filename.  Not much more we can do...)  */
2366
2367           if (!source_full_path_of (exec_file, &full_exec_path))
2368             full_exec_path = xstrdup (exec_file);
2369
2370           exec_file_attach (full_exec_path, from_tty);
2371           symbol_file_add_main (full_exec_path, from_tty);
2372         }
2373     }
2374   else
2375     {
2376       reopen_exec_file ();
2377       reread_symbols ();
2378     }
2379
2380   /* Take any necessary post-attaching actions for this platform.  */
2381   target_post_attach (ptid_get_pid (inferior_ptid));
2382
2383   post_create_inferior (&current_target, from_tty);
2384
2385   /* Install inferior's terminal modes.  */
2386   target_terminal_inferior ();
2387
2388   if (async_exec)
2389     {
2390       /* The user requested an `attach&', so be sure to leave threads
2391          that didn't get a signal running.  */
2392
2393       /* Immediatelly resume all suspended threads of this inferior,
2394          and this inferior only.  This should have no effect on
2395          already running threads.  If a thread has been stopped with a
2396          signal, leave it be.  */
2397       if (non_stop)
2398         proceed_after_attach (inferior->pid);
2399       else
2400         {
2401           if (inferior_thread ()->suspend.stop_signal == GDB_SIGNAL_0)
2402             {
2403               clear_proceed_status ();
2404               proceed ((CORE_ADDR) -1, GDB_SIGNAL_DEFAULT, 0);
2405             }
2406         }
2407     }
2408   else
2409     {
2410       /* The user requested a plain `attach', so be sure to leave
2411          the inferior stopped.  */
2412
2413       if (target_can_async_p ())
2414         async_enable_stdin ();
2415
2416       /* At least the current thread is already stopped.  */
2417
2418       /* In all-stop, by definition, all threads have to be already
2419          stopped at this point.  In non-stop, however, although the
2420          selected thread is stopped, others may still be executing.
2421          Be sure to explicitly stop all threads of the process.  This
2422          should have no effect on already stopped threads.  */
2423       if (non_stop)
2424         target_stop (pid_to_ptid (inferior->pid));
2425
2426       /* Tell the user/frontend where we're stopped.  */
2427       normal_stop ();
2428       if (deprecated_attach_hook)
2429         deprecated_attach_hook ();
2430     }
2431 }
2432
2433 struct attach_command_continuation_args
2434 {
2435   char *args;
2436   int from_tty;
2437   int async_exec;
2438 };
2439
2440 static void
2441 attach_command_continuation (void *args, int err)
2442 {
2443   struct attach_command_continuation_args *a = args;
2444
2445   if (err)
2446     return;
2447
2448   attach_command_post_wait (a->args, a->from_tty, a->async_exec);
2449 }
2450
2451 static void
2452 attach_command_continuation_free_args (void *args)
2453 {
2454   struct attach_command_continuation_args *a = args;
2455
2456   xfree (a->args);
2457   xfree (a);
2458 }
2459
2460 void
2461 attach_command (char *args, int from_tty)
2462 {
2463   int async_exec = 0;
2464   struct target_ops *attach_target;
2465
2466   dont_repeat ();               /* Not for the faint of heart */
2467
2468   if (gdbarch_has_global_solist (target_gdbarch ()))
2469     /* Don't complain if all processes share the same symbol
2470        space.  */
2471     ;
2472   else if (target_has_execution)
2473     {
2474       if (query (_("A program is being debugged already.  Kill it? ")))
2475         target_kill ();
2476       else
2477         error (_("Not killed."));
2478     }
2479
2480   /* Clean up any leftovers from other runs.  Some other things from
2481      this function should probably be moved into target_pre_inferior.  */
2482   target_pre_inferior (from_tty);
2483
2484   if (args != NULL)
2485     async_exec = strip_bg_char (&args);
2486
2487   attach_target = find_attach_target ();
2488
2489   prepare_execution_command (attach_target, async_exec);
2490
2491   if (non_stop && !attach_target->to_supports_non_stop (attach_target))
2492     error (_("Cannot attach to this target in non-stop mode"));
2493
2494   attach_target->to_attach (attach_target, args, from_tty);
2495   /* to_attach should push the target, so after this point we
2496      shouldn't refer to attach_target again.  */
2497   attach_target = NULL;
2498
2499   /* Set up the "saved terminal modes" of the inferior
2500      based on what modes we are starting it with.  */
2501   target_terminal_init ();
2502
2503   /* Set up execution context to know that we should return from
2504      wait_for_inferior as soon as the target reports a stop.  */
2505   init_wait_for_inferior ();
2506   clear_proceed_status ();
2507
2508   if (non_stop)
2509     {
2510       /* If we find that the current thread isn't stopped, explicitly
2511          do so now, because we're going to install breakpoints and
2512          poke at memory.  */
2513
2514       if (async_exec)
2515         /* The user requested an `attach&'; stop just one thread.  */
2516         target_stop (inferior_ptid);
2517       else
2518         /* The user requested an `attach', so stop all threads of this
2519            inferior.  */
2520         target_stop (pid_to_ptid (ptid_get_pid (inferior_ptid)));
2521     }
2522
2523   /* Some system don't generate traps when attaching to inferior.
2524      E.g. Mach 3 or GNU hurd.  */
2525   if (!target_attach_no_wait)
2526     {
2527       struct inferior *inferior = current_inferior ();
2528
2529       /* Careful here.  See comments in inferior.h.  Basically some
2530          OSes don't ignore SIGSTOPs on continue requests anymore.  We
2531          need a way for handle_inferior_event to reset the stop_signal
2532          variable after an attach, and this is what
2533          STOP_QUIETLY_NO_SIGSTOP is for.  */
2534       inferior->control.stop_soon = STOP_QUIETLY_NO_SIGSTOP;
2535
2536       if (target_can_async_p ())
2537         {
2538           /* sync_execution mode.  Wait for stop.  */
2539           struct attach_command_continuation_args *a;
2540
2541           a = xmalloc (sizeof (*a));
2542           a->args = xstrdup (args);
2543           a->from_tty = from_tty;
2544           a->async_exec = async_exec;
2545           add_inferior_continuation (attach_command_continuation, a,
2546                                      attach_command_continuation_free_args);
2547           return;
2548         }
2549
2550       wait_for_inferior ();
2551     }
2552
2553   attach_command_post_wait (args, from_tty, async_exec);
2554 }
2555
2556 /* We had just found out that the target was already attached to an
2557    inferior.  PTID points at a thread of this new inferior, that is
2558    the most likely to be stopped right now, but not necessarily so.
2559    The new inferior is assumed to be already added to the inferior
2560    list at this point.  If LEAVE_RUNNING, then leave the threads of
2561    this inferior running, except those we've explicitly seen reported
2562    as stopped.  */
2563
2564 void
2565 notice_new_inferior (ptid_t ptid, int leave_running, int from_tty)
2566 {
2567   struct cleanup* old_chain;
2568   int async_exec;
2569
2570   old_chain = make_cleanup (null_cleanup, NULL);
2571
2572   /* If in non-stop, leave threads as running as they were.  If
2573      they're stopped for some reason other than us telling it to, the
2574      target reports a signal != GDB_SIGNAL_0.  We don't try to
2575      resume threads with such a stop signal.  */
2576   async_exec = non_stop;
2577
2578   if (!ptid_equal (inferior_ptid, null_ptid))
2579     make_cleanup_restore_current_thread ();
2580
2581   switch_to_thread (ptid);
2582
2583   /* When we "notice" a new inferior we need to do all the things we
2584      would normally do if we had just attached to it.  */
2585
2586   if (is_executing (inferior_ptid))
2587     {
2588       struct inferior *inferior = current_inferior ();
2589
2590       /* We're going to install breakpoints, and poke at memory,
2591          ensure that the inferior is stopped for a moment while we do
2592          that.  */
2593       target_stop (inferior_ptid);
2594
2595       inferior->control.stop_soon = STOP_QUIETLY_REMOTE;
2596
2597       /* Wait for stop before proceeding.  */
2598       if (target_can_async_p ())
2599         {
2600           struct attach_command_continuation_args *a;
2601
2602           a = xmalloc (sizeof (*a));
2603           a->args = xstrdup ("");
2604           a->from_tty = from_tty;
2605           a->async_exec = async_exec;
2606           add_inferior_continuation (attach_command_continuation, a,
2607                                      attach_command_continuation_free_args);
2608
2609           do_cleanups (old_chain);
2610           return;
2611         }
2612       else
2613         wait_for_inferior ();
2614     }
2615
2616   async_exec = leave_running;
2617   attach_command_post_wait ("" /* args */, from_tty, async_exec);
2618
2619   do_cleanups (old_chain);
2620 }
2621
2622 /*
2623  * detach_command --
2624  * takes a program previously attached to and detaches it.
2625  * The program resumes execution and will no longer stop
2626  * on signals, etc.  We better not have left any breakpoints
2627  * in the program or it'll die when it hits one.  For this
2628  * to work, it may be necessary for the process to have been
2629  * previously attached.  It *might* work if the program was
2630  * started via the normal ptrace (PTRACE_TRACEME).
2631  */
2632
2633 void
2634 detach_command (char *args, int from_tty)
2635 {
2636   dont_repeat ();               /* Not for the faint of heart.  */
2637
2638   if (ptid_equal (inferior_ptid, null_ptid))
2639     error (_("The program is not being run."));
2640
2641   query_if_trace_running (from_tty);
2642
2643   disconnect_tracing ();
2644
2645   target_detach (args, from_tty);
2646
2647   /* If the solist is global across inferiors, don't clear it when we
2648      detach from a single inferior.  */
2649   if (!gdbarch_has_global_solist (target_gdbarch ()))
2650     no_shared_libraries (NULL, from_tty);
2651
2652   /* If we still have inferiors to debug, then don't mess with their
2653      threads.  */
2654   if (!have_inferiors ())
2655     init_thread_list ();
2656
2657   if (deprecated_detach_hook)
2658     deprecated_detach_hook ();
2659 }
2660
2661 /* Disconnect from the current target without resuming it (leaving it
2662    waiting for a debugger).
2663
2664    We'd better not have left any breakpoints in the program or the
2665    next debugger will get confused.  Currently only supported for some
2666    remote targets, since the normal attach mechanisms don't work on
2667    stopped processes on some native platforms (e.g. GNU/Linux).  */
2668
2669 static void
2670 disconnect_command (char *args, int from_tty)
2671 {
2672   dont_repeat ();               /* Not for the faint of heart.  */
2673   query_if_trace_running (from_tty);
2674   disconnect_tracing ();
2675   target_disconnect (args, from_tty);
2676   no_shared_libraries (NULL, from_tty);
2677   init_thread_list ();
2678   if (deprecated_detach_hook)
2679     deprecated_detach_hook ();
2680 }
2681
2682 void 
2683 interrupt_target_1 (int all_threads)
2684 {
2685   ptid_t ptid;
2686
2687   if (all_threads)
2688     ptid = minus_one_ptid;
2689   else
2690     ptid = inferior_ptid;
2691   target_stop (ptid);
2692
2693   /* Tag the thread as having been explicitly requested to stop, so
2694      other parts of gdb know not to resume this thread automatically,
2695      if it was stopped due to an internal event.  Limit this to
2696      non-stop mode, as when debugging a multi-threaded application in
2697      all-stop mode, we will only get one stop event --- it's undefined
2698      which thread will report the event.  */
2699   if (non_stop)
2700     set_stop_requested (ptid, 1);
2701 }
2702
2703 /* interrupt [-a]
2704    Stop the execution of the target while running in async mode, in
2705    the backgound.  In all-stop, stop the whole process.  In non-stop
2706    mode, stop the current thread only by default, or stop all threads
2707    if the `-a' switch is used.  */
2708
2709 static void
2710 interrupt_command (char *args, int from_tty)
2711 {
2712   if (target_can_async_p ())
2713     {
2714       int all_threads = 0;
2715
2716       dont_repeat ();           /* Not for the faint of heart.  */
2717
2718       if (args != NULL
2719           && strncmp (args, "-a", sizeof ("-a") - 1) == 0)
2720         all_threads = 1;
2721
2722       if (!non_stop && all_threads)
2723         error (_("-a is meaningless in all-stop mode."));
2724
2725       interrupt_target_1 (all_threads);
2726     }
2727 }
2728
2729 static void
2730 print_float_info (struct ui_file *file,
2731                   struct frame_info *frame, const char *args)
2732 {
2733   struct gdbarch *gdbarch = get_frame_arch (frame);
2734
2735   if (gdbarch_print_float_info_p (gdbarch))
2736     gdbarch_print_float_info (gdbarch, file, frame, args);
2737   else
2738     {
2739       int regnum;
2740       int printed_something = 0;
2741
2742       for (regnum = 0;
2743            regnum < gdbarch_num_regs (gdbarch)
2744                     + gdbarch_num_pseudo_regs (gdbarch);
2745            regnum++)
2746         {
2747           if (gdbarch_register_reggroup_p (gdbarch, regnum, float_reggroup))
2748             {
2749               printed_something = 1;
2750               gdbarch_print_registers_info (gdbarch, file, frame, regnum, 1);
2751             }
2752         }
2753       if (!printed_something)
2754         fprintf_filtered (file, "No floating-point info "
2755                           "available for this processor.\n");
2756     }
2757 }
2758
2759 static void
2760 float_info (char *args, int from_tty)
2761 {
2762   if (!target_has_registers)
2763     error (_("The program has no registers now."));
2764
2765   print_float_info (gdb_stdout, get_selected_frame (NULL), args);
2766 }
2767 \f
2768 static void
2769 unset_command (char *args, int from_tty)
2770 {
2771   printf_filtered (_("\"unset\" must be followed by the "
2772                      "name of an unset subcommand.\n"));
2773   help_list (unsetlist, "unset ", -1, gdb_stdout);
2774 }
2775
2776 /* Implement `info proc' family of commands.  */
2777
2778 static void
2779 info_proc_cmd_1 (char *args, enum info_proc_what what, int from_tty)
2780 {
2781   struct gdbarch *gdbarch = get_current_arch ();
2782
2783   if (!target_info_proc (args, what))
2784     {
2785       if (gdbarch_info_proc_p (gdbarch))
2786         gdbarch_info_proc (gdbarch, args, what);
2787       else
2788         error (_("Not supported on this target."));
2789     }
2790 }
2791
2792 /* Implement `info proc' when given without any futher parameters.  */
2793
2794 static void
2795 info_proc_cmd (char *args, int from_tty)
2796 {
2797   info_proc_cmd_1 (args, IP_MINIMAL, from_tty);
2798 }
2799
2800 /* Implement `info proc mappings'.  */
2801
2802 static void
2803 info_proc_cmd_mappings (char *args, int from_tty)
2804 {
2805   info_proc_cmd_1 (args, IP_MAPPINGS, from_tty);
2806 }
2807
2808 /* Implement `info proc stat'.  */
2809
2810 static void
2811 info_proc_cmd_stat (char *args, int from_tty)
2812 {
2813   info_proc_cmd_1 (args, IP_STAT, from_tty);
2814 }
2815
2816 /* Implement `info proc status'.  */
2817
2818 static void
2819 info_proc_cmd_status (char *args, int from_tty)
2820 {
2821   info_proc_cmd_1 (args, IP_STATUS, from_tty);
2822 }
2823
2824 /* Implement `info proc cwd'.  */
2825
2826 static void
2827 info_proc_cmd_cwd (char *args, int from_tty)
2828 {
2829   info_proc_cmd_1 (args, IP_CWD, from_tty);
2830 }
2831
2832 /* Implement `info proc cmdline'.  */
2833
2834 static void
2835 info_proc_cmd_cmdline (char *args, int from_tty)
2836 {
2837   info_proc_cmd_1 (args, IP_CMDLINE, from_tty);
2838 }
2839
2840 /* Implement `info proc exe'.  */
2841
2842 static void
2843 info_proc_cmd_exe (char *args, int from_tty)
2844 {
2845   info_proc_cmd_1 (args, IP_EXE, from_tty);
2846 }
2847
2848 /* Implement `info proc all'.  */
2849
2850 static void
2851 info_proc_cmd_all (char *args, int from_tty)
2852 {
2853   info_proc_cmd_1 (args, IP_ALL, from_tty);
2854 }
2855
2856 void
2857 _initialize_infcmd (void)
2858 {
2859   static struct cmd_list_element *info_proc_cmdlist;
2860   struct cmd_list_element *c = NULL;
2861   const char *cmd_name;
2862
2863   /* Add the filename of the terminal connected to inferior I/O.  */
2864   add_setshow_filename_cmd ("inferior-tty", class_run,
2865                             &inferior_io_terminal_scratch, _("\
2866 Set terminal for future runs of program being debugged."), _("\
2867 Show terminal for future runs of program being debugged."), _("\
2868 Usage: set inferior-tty /dev/pts/1"),
2869                             set_inferior_tty_command,
2870                             show_inferior_tty_command,
2871                             &setlist, &showlist);
2872   add_com_alias ("tty", "set inferior-tty", class_alias, 0);
2873
2874   cmd_name = "args";
2875   add_setshow_string_noescape_cmd (cmd_name, class_run,
2876                                    &inferior_args_scratch, _("\
2877 Set argument list to give program being debugged when it is started."), _("\
2878 Show argument list to give program being debugged when it is started."), _("\
2879 Follow this command with any number of args, to be passed to the program."),
2880                                    set_args_command,
2881                                    show_args_command,
2882                                    &setlist, &showlist);
2883   c = lookup_cmd (&cmd_name, setlist, "", -1, 1);
2884   gdb_assert (c != NULL);
2885   set_cmd_completer (c, filename_completer);
2886
2887   c = add_cmd ("environment", no_class, environment_info, _("\
2888 The environment to give the program, or one variable's value.\n\
2889 With an argument VAR, prints the value of environment variable VAR to\n\
2890 give the program being debugged.  With no arguments, prints the entire\n\
2891 environment to be given to the program."), &showlist);
2892   set_cmd_completer (c, noop_completer);
2893
2894   add_prefix_cmd ("unset", no_class, unset_command,
2895                   _("Complement to certain \"set\" commands."),
2896                   &unsetlist, "unset ", 0, &cmdlist);
2897
2898   c = add_cmd ("environment", class_run, unset_environment_command, _("\
2899 Cancel environment variable VAR for the program.\n\
2900 This does not affect the program until the next \"run\" command."),
2901                &unsetlist);
2902   set_cmd_completer (c, noop_completer);
2903
2904   c = add_cmd ("environment", class_run, set_environment_command, _("\
2905 Set environment variable value to give the program.\n\
2906 Arguments are VAR VALUE where VAR is variable name and VALUE is value.\n\
2907 VALUES of environment variables are uninterpreted strings.\n\
2908 This does not affect the program until the next \"run\" command."),
2909                &setlist);
2910   set_cmd_completer (c, noop_completer);
2911
2912   c = add_com ("path", class_files, path_command, _("\
2913 Add directory DIR(s) to beginning of search path for object files.\n\
2914 $cwd in the path means the current working directory.\n\
2915 This path is equivalent to the $PATH shell variable.  It is a list of\n\
2916 directories, separated by colons.  These directories are searched to find\n\
2917 fully linked executable files and separately compiled object files as \
2918 needed."));
2919   set_cmd_completer (c, filename_completer);
2920
2921   c = add_cmd ("paths", no_class, path_info, _("\
2922 Current search path for finding object files.\n\
2923 $cwd in the path means the current working directory.\n\
2924 This path is equivalent to the $PATH shell variable.  It is a list of\n\
2925 directories, separated by colons.  These directories are searched to find\n\
2926 fully linked executable files and separately compiled object files as \
2927 needed."),
2928                &showlist);
2929   set_cmd_completer (c, noop_completer);
2930
2931   add_prefix_cmd ("kill", class_run, kill_command,
2932                   _("Kill execution of program being debugged."),
2933                   &killlist, "kill ", 0, &cmdlist);
2934
2935   add_com ("attach", class_run, attach_command, _("\
2936 Attach to a process or file outside of GDB.\n\
2937 This command attaches to another target, of the same type as your last\n\
2938 \"target\" command (\"info files\" will show your target stack).\n\
2939 The command may take as argument a process id or a device file.\n\
2940 For a process id, you must have permission to send the process a signal,\n\
2941 and it must have the same effective uid as the debugger.\n\
2942 When using \"attach\" with a process id, the debugger finds the\n\
2943 program running in the process, looking first in the current working\n\
2944 directory, or (if not found there) using the source file search path\n\
2945 (see the \"directory\" command).  You can also use the \"file\" command\n\
2946 to specify the program, and to load its symbol table."));
2947
2948   add_prefix_cmd ("detach", class_run, detach_command, _("\
2949 Detach a process or file previously attached.\n\
2950 If a process, it is no longer traced, and it continues its execution.  If\n\
2951 you were debugging a file, the file is closed and gdb no longer accesses it."),
2952                   &detachlist, "detach ", 0, &cmdlist);
2953
2954   add_com ("disconnect", class_run, disconnect_command, _("\
2955 Disconnect from a target.\n\
2956 The target will wait for another debugger to connect.  Not available for\n\
2957 all targets."));
2958
2959   c = add_com ("signal", class_run, signal_command, _("\
2960 Continue program with the specified signal.\n\
2961 Usage: signal SIGNAL\n\
2962 The SIGNAL argument is processed the same as the handle command.\n\
2963 \n\
2964 An argument of \"0\" means continue the program without sending it a signal.\n\
2965 This is useful in cases where the program stopped because of a signal,\n\
2966 and you want to resume the program while discarding the signal."));
2967   set_cmd_completer (c, signal_completer);
2968
2969   add_com ("stepi", class_run, stepi_command, _("\
2970 Step one instruction exactly.\n\
2971 Usage: stepi [N]\n\
2972 Argument N means step N times (or till program stops for another \
2973 reason)."));
2974   add_com_alias ("si", "stepi", class_alias, 0);
2975
2976   add_com ("nexti", class_run, nexti_command, _("\
2977 Step one instruction, but proceed through subroutine calls.\n\
2978 Usage: nexti [N]\n\
2979 Argument N means step N times (or till program stops for another \
2980 reason)."));
2981   add_com_alias ("ni", "nexti", class_alias, 0);
2982
2983   add_com ("finish", class_run, finish_command, _("\
2984 Execute until selected stack frame returns.\n\
2985 Usage: finish\n\
2986 Upon return, the value returned is printed and put in the value history."));
2987   add_com_alias ("fin", "finish", class_run, 1);
2988
2989   add_com ("next", class_run, next_command, _("\
2990 Step program, proceeding through subroutine calls.\n\
2991 Usage: next [N]\n\
2992 Unlike \"step\", if the current source line calls a subroutine,\n\
2993 this command does not enter the subroutine, but instead steps over\n\
2994 the call, in effect treating it as a single source line."));
2995   add_com_alias ("n", "next", class_run, 1);
2996   if (xdb_commands)
2997     add_com_alias ("S", "next", class_run, 1);
2998
2999   add_com ("step", class_run, step_command, _("\
3000 Step program until it reaches a different source line.\n\
3001 Usage: step [N]\n\
3002 Argument N means step N times (or till program stops for another \
3003 reason)."));
3004   add_com_alias ("s", "step", class_run, 1);
3005
3006   c = add_com ("until", class_run, until_command, _("\
3007 Execute until the program reaches a source line greater than the current\n\
3008 or a specified location (same args as break command) within the current \
3009 frame."));
3010   set_cmd_completer (c, location_completer);
3011   add_com_alias ("u", "until", class_run, 1);
3012
3013   c = add_com ("advance", class_run, advance_command, _("\
3014 Continue the program up to the given location (same form as args for break \
3015 command).\n\
3016 Execution will also stop upon exit from the current stack frame."));
3017   set_cmd_completer (c, location_completer);
3018
3019   c = add_com ("jump", class_run, jump_command, _("\
3020 Continue program being debugged at specified line or address.\n\
3021 Usage: jump <location>\n\
3022 Give as argument either LINENUM or *ADDR, where ADDR is an expression\n\
3023 for an address to start at."));
3024   set_cmd_completer (c, location_completer);
3025   add_com_alias ("j", "jump", class_run, 1);
3026
3027   if (xdb_commands)
3028     {
3029       c = add_com ("go", class_run, go_command, _("\
3030 Usage: go <location>\n\
3031 Continue program being debugged, stopping at specified line or \n\
3032 address.\n\
3033 Give as argument either LINENUM or *ADDR, where ADDR is an \n\
3034 expression for an address to start at.\n\
3035 This command is a combination of tbreak and jump."));
3036       set_cmd_completer (c, location_completer);
3037     }
3038
3039   if (xdb_commands)
3040     add_com_alias ("g", "go", class_run, 1);
3041
3042   add_com ("continue", class_run, continue_command, _("\
3043 Continue program being debugged, after signal or breakpoint.\n\
3044 Usage: continue [N]\n\
3045 If proceeding from breakpoint, a number N may be used as an argument,\n\
3046 which means to set the ignore count of that breakpoint to N - 1 (so that\n\
3047 the breakpoint won't break until the Nth time it is reached).\n\
3048 \n\
3049 If non-stop mode is enabled, continue only the current thread,\n\
3050 otherwise all the threads in the program are continued.  To \n\
3051 continue all stopped threads in non-stop mode, use the -a option.\n\
3052 Specifying -a and an ignore count simultaneously is an error."));
3053   add_com_alias ("c", "cont", class_run, 1);
3054   add_com_alias ("fg", "cont", class_run, 1);
3055
3056   c = add_com ("run", class_run, run_command, _("\
3057 Start debugged program.  You may specify arguments to give it.\n\
3058 Args may include \"*\", or \"[...]\"; they are expanded using \"sh\".\n\
3059 Input and output redirection with \">\", \"<\", or \">>\" are also \
3060 allowed.\n\n\
3061 With no arguments, uses arguments last specified (with \"run\" \
3062 or \"set args\").\n\
3063 To cancel previous arguments and run with no arguments,\n\
3064 use \"set args\" without arguments."));
3065   set_cmd_completer (c, filename_completer);
3066   add_com_alias ("r", "run", class_run, 1);
3067   if (xdb_commands)
3068     add_com ("R", class_run, run_no_args_command,
3069              _("Start debugged program with no arguments."));
3070
3071   c = add_com ("start", class_run, start_command, _("\
3072 Run the debugged program until the beginning of the main procedure.\n\
3073 You may specify arguments to give to your program, just as with the\n\
3074 \"run\" command."));
3075   set_cmd_completer (c, filename_completer);
3076
3077   add_com ("interrupt", class_run, interrupt_command,
3078            _("Interrupt the execution of the debugged program.\n\
3079 If non-stop mode is enabled, interrupt only the current thread,\n\
3080 otherwise all the threads in the program are stopped.  To \n\
3081 interrupt all running threads in non-stop mode, use the -a option."));
3082
3083   add_info ("registers", nofp_registers_info, _("\
3084 List of integer registers and their contents, for selected stack frame.\n\
3085 Register name as argument means describe only that register."));
3086   add_info_alias ("r", "registers", 1);
3087
3088   if (xdb_commands)
3089     add_com ("lr", class_info, nofp_registers_info, _("\
3090 List of integer registers and their contents, for selected stack frame.\n\
3091 Register name as argument means describe only that register."));
3092   add_info ("all-registers", all_registers_info, _("\
3093 List of all registers and their contents, for selected stack frame.\n\
3094 Register name as argument means describe only that register."));
3095
3096   add_info ("program", program_info,
3097             _("Execution status of the program."));
3098
3099   add_info ("float", float_info,
3100             _("Print the status of the floating point unit\n"));
3101
3102   add_info ("vector", vector_info,
3103             _("Print the status of the vector unit\n"));
3104
3105   add_prefix_cmd ("proc", class_info, info_proc_cmd,
3106                   _("\
3107 Show /proc process information about any running process.\n\
3108 Specify any process id, or use the program being debugged by default."),
3109                   &info_proc_cmdlist, "info proc ",
3110                   1/*allow-unknown*/, &infolist);
3111
3112   add_cmd ("mappings", class_info, info_proc_cmd_mappings, _("\
3113 List of mapped memory regions."),
3114            &info_proc_cmdlist);
3115
3116   add_cmd ("stat", class_info, info_proc_cmd_stat, _("\
3117 List process info from /proc/PID/stat."),
3118            &info_proc_cmdlist);
3119
3120   add_cmd ("status", class_info, info_proc_cmd_status, _("\
3121 List process info from /proc/PID/status."),
3122            &info_proc_cmdlist);
3123
3124   add_cmd ("cwd", class_info, info_proc_cmd_cwd, _("\
3125 List current working directory of the process."),
3126            &info_proc_cmdlist);
3127
3128   add_cmd ("cmdline", class_info, info_proc_cmd_cmdline, _("\
3129 List command line arguments of the process."),
3130            &info_proc_cmdlist);
3131
3132   add_cmd ("exe", class_info, info_proc_cmd_exe, _("\
3133 List absolute filename for executable of the process."),
3134            &info_proc_cmdlist);
3135
3136   add_cmd ("all", class_info, info_proc_cmd_all, _("\
3137 List all available /proc info."),
3138            &info_proc_cmdlist);
3139 }