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