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