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