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