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