2010-05-06 Michael Snyder <msnyder@vmware.com>
[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 cleanup *cleanups = make_cleanup (null_cleanup, NULL);
836   int async_exec = 0;
837   int thread = -1;
838
839   ERROR_NO_INFERIOR;
840   ensure_not_tfind_mode ();
841   ensure_valid_thread ();
842   ensure_not_running ();
843
844   if (count_string)
845     async_exec = strip_bg_char (&count_string);
846
847   /* If we get a request for running in the bg but the target
848      doesn't support it, error out. */
849   if (async_exec && !target_can_async_p ())
850     error (_("Asynchronous execution not supported on this target."));
851
852   /* If we don't get a request of running in the bg, then we need
853      to simulate synchronous (fg) execution. */
854   if (!async_exec && target_can_async_p ())
855     {
856       /* Simulate synchronous execution */
857       async_disable_stdin ();
858     }
859
860   count = count_string ? parse_and_eval_long (count_string) : 1;
861
862   if (!single_inst || skip_subroutines)         /* leave si command alone */
863     {
864       if (in_thread_list (inferior_ptid))
865         thread = pid_to_thread_id (inferior_ptid);
866
867       set_longjmp_breakpoint (thread);
868
869       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
870     }
871
872   /* In synchronous case, all is well; each step_once call will step once.  */
873   if (!target_can_async_p ())
874     {
875       for (; count > 0; count--)
876         {
877           struct thread_info *tp;
878           step_once (skip_subroutines, single_inst, count, thread);
879
880           if (target_has_execution
881               && !ptid_equal (inferior_ptid, null_ptid))
882             tp = inferior_thread ();
883           else
884             tp = NULL;
885
886           if (!tp || !tp->stop_step || !tp->step_multi)
887             {
888               /* If we stopped for some reason that is not stepping
889                  there are no further steps to make.  */
890               if (tp)
891                 tp->step_multi = 0;
892               break;
893             }
894         }
895
896       do_cleanups (cleanups);
897     }
898   else
899     {
900       /* In the case of an asynchronous target things get complicated;
901          do only one step for now, before returning control to the
902          event loop.  Let the continuation figure out how many other
903          steps we need to do, and handle them one at the time, through
904          step_once.  */
905       step_once (skip_subroutines, single_inst, count, thread);
906
907       /* We are running, and the continuation is installed.  It will
908          disable the longjmp breakpoint as appropriate.  */
909       discard_cleanups (cleanups);
910     }
911 }
912
913 struct step_1_continuation_args
914 {
915   int count;
916   int skip_subroutines;
917   int single_inst;
918   int thread;
919 };
920
921 /* Called after we are done with one step operation, to check whether
922    we need to step again, before we print the prompt and return control
923    to the user. If count is > 1, we will need to do one more call to
924    proceed(), via step_once(). Basically it is like step_once and
925    step_1_continuation are co-recursive. */
926 static void
927 step_1_continuation (void *args)
928 {
929   struct step_1_continuation_args *a = args;
930
931   if (target_has_execution)
932     {
933       struct thread_info *tp;
934
935       tp = inferior_thread ();
936       if (tp->step_multi && tp->stop_step)
937         {
938           /* There are more steps to make, and we did stop due to
939              ending a stepping range.  Do another step.  */
940           step_once (a->skip_subroutines, a->single_inst,
941                      a->count - 1, a->thread);
942           return;
943         }
944       tp->step_multi = 0;
945     }
946
947   /* We either stopped for some reason that is not stepping, or there
948      are no further steps to make.  Cleanup.  */
949   if (!a->single_inst || a->skip_subroutines)
950     delete_longjmp_breakpoint (a->thread);
951 }
952
953 /* Do just one step operation.  This is useful to implement the 'step
954    n' kind of commands.  In case of asynchronous targets, we will have
955    to set up a continuation to be done after the target stops (after
956    this one step).  For synch targets, the caller handles further
957    stepping.  */
958
959 static void
960 step_once (int skip_subroutines, int single_inst, int count, int thread)
961 {
962   struct frame_info *frame = get_current_frame ();
963
964   if (count > 0)
965     {
966       /* Don't assume THREAD is a valid thread id.  It is set to -1 if
967          the longjmp breakpoint was not required.  Use the
968          INFERIOR_PTID thread instead, which is the same thread when
969          THREAD is set.  */
970       struct thread_info *tp = inferior_thread ();
971       clear_proceed_status ();
972       set_step_frame ();
973
974       if (!single_inst)
975         {
976           CORE_ADDR pc;
977
978           /* Step at an inlined function behaves like "down".  */
979           if (!skip_subroutines && !single_inst
980               && inline_skipped_frames (inferior_ptid))
981             {
982               step_into_inline_frame (inferior_ptid);
983               if (count > 1)
984                 step_once (skip_subroutines, single_inst, count - 1, thread);
985               else
986                 /* Pretend that we've stopped.  */
987                 normal_stop ();
988               return;
989             }
990
991           pc = get_frame_pc (frame);
992           find_pc_line_pc_range (pc,
993                                  &tp->step_range_start, &tp->step_range_end);
994
995           /* If we have no line info, switch to stepi mode.  */
996           if (tp->step_range_end == 0 && step_stop_if_no_debug)
997             tp->step_range_start = tp->step_range_end = 1;
998           else if (tp->step_range_end == 0)
999             {
1000               char *name;
1001               if (find_pc_partial_function (pc, &name,
1002                                             &tp->step_range_start,
1003                                             &tp->step_range_end) == 0)
1004                 error (_("Cannot find bounds of current function"));
1005
1006               target_terminal_ours ();
1007               printf_filtered (_("\
1008 Single stepping until exit from function %s, \n\
1009 which has no line number information.\n"), name);
1010             }
1011         }
1012       else
1013         {
1014           /* Say we are stepping, but stop after one insn whatever it does.  */
1015           tp->step_range_start = tp->step_range_end = 1;
1016           if (!skip_subroutines)
1017             /* It is stepi.
1018                Don't step over function calls, not even to functions lacking
1019                line numbers.  */
1020             tp->step_over_calls = STEP_OVER_NONE;
1021         }
1022
1023       if (skip_subroutines)
1024         tp->step_over_calls = STEP_OVER_ALL;
1025
1026       tp->step_multi = (count > 1);
1027       proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1);
1028
1029       /* For async targets, register a continuation to do any
1030          additional steps.  For sync targets, the caller will handle
1031          further stepping.  */
1032       if (target_can_async_p ())
1033         {
1034           struct step_1_continuation_args *args;
1035
1036           args = xmalloc (sizeof (*args));
1037           args->skip_subroutines = skip_subroutines;
1038           args->single_inst = single_inst;
1039           args->count = count;
1040           args->thread = thread;
1041
1042           add_intermediate_continuation (tp, step_1_continuation, args, xfree);
1043         }
1044     }
1045 }
1046
1047 \f
1048 /* Continue program at specified address.  */
1049
1050 static void
1051 jump_command (char *arg, int from_tty)
1052 {
1053   struct gdbarch *gdbarch = get_current_arch ();
1054   CORE_ADDR addr;
1055   struct symtabs_and_lines sals;
1056   struct symtab_and_line sal;
1057   struct symbol *fn;
1058   struct symbol *sfn;
1059   int async_exec = 0;
1060
1061   ERROR_NO_INFERIOR;
1062   ensure_not_tfind_mode ();
1063   ensure_valid_thread ();
1064   ensure_not_running ();
1065
1066   /* Find out whether we must run in the background. */
1067   if (arg != NULL)
1068     async_exec = strip_bg_char (&arg);
1069
1070   /* If we must run in the background, but the target can't do it,
1071      error out. */
1072   if (async_exec && !target_can_async_p ())
1073     error (_("Asynchronous execution not supported on this target."));
1074
1075   if (!arg)
1076     error_no_arg (_("starting address"));
1077
1078   sals = decode_line_spec_1 (arg, 1);
1079   if (sals.nelts != 1)
1080     {
1081       error (_("Unreasonable jump request"));
1082     }
1083
1084   sal = sals.sals[0];
1085   xfree (sals.sals);
1086
1087   if (sal.symtab == 0 && sal.pc == 0)
1088     error (_("No source file has been specified."));
1089
1090   resolve_sal_pc (&sal);        /* May error out */
1091
1092   /* See if we are trying to jump to another function. */
1093   fn = get_frame_function (get_current_frame ());
1094   sfn = find_pc_function (sal.pc);
1095   if (fn != NULL && sfn != fn)
1096     {
1097       if (!query (_("Line %d is not in `%s'.  Jump anyway? "), sal.line,
1098                   SYMBOL_PRINT_NAME (fn)))
1099         {
1100           error (_("Not confirmed."));
1101           /* NOTREACHED */
1102         }
1103     }
1104
1105   if (sfn != NULL)
1106     {
1107       fixup_symbol_section (sfn, 0);
1108       if (section_is_overlay (SYMBOL_OBJ_SECTION (sfn)) &&
1109           !section_is_mapped (SYMBOL_OBJ_SECTION (sfn)))
1110         {
1111           if (!query (_("WARNING!!!  Destination is in unmapped overlay!  Jump anyway? ")))
1112             {
1113               error (_("Not confirmed."));
1114               /* NOTREACHED */
1115             }
1116         }
1117     }
1118
1119   addr = sal.pc;
1120
1121   if (from_tty)
1122     {
1123       printf_filtered (_("Continuing at "));
1124       fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
1125       printf_filtered (".\n");
1126     }
1127
1128   /* If we are not asked to run in the bg, then prepare to run in the
1129      foreground, synchronously. */
1130   if (!async_exec && target_can_async_p ())
1131     {
1132       /* Simulate synchronous execution */
1133       async_disable_stdin ();
1134     }
1135
1136   clear_proceed_status ();
1137   proceed (addr, TARGET_SIGNAL_0, 0);
1138 }
1139 \f
1140
1141 /* Go to line or address in current procedure */
1142 static void
1143 go_command (char *line_no, int from_tty)
1144 {
1145   if (line_no == (char *) NULL || !*line_no)
1146     printf_filtered (_("Usage: go <location>\n"));
1147   else
1148     {
1149       tbreak_command (line_no, from_tty);
1150       jump_command (line_no, from_tty);
1151     }
1152 }
1153 \f
1154
1155 /* Continue program giving it specified signal.  */
1156
1157 static void
1158 signal_command (char *signum_exp, int from_tty)
1159 {
1160   enum target_signal oursig;
1161   int async_exec = 0;
1162
1163   dont_repeat ();               /* Too dangerous.  */
1164   ERROR_NO_INFERIOR;
1165   ensure_not_tfind_mode ();
1166   ensure_valid_thread ();
1167   ensure_not_running ();
1168
1169   /* Find out whether we must run in the background.  */
1170   if (signum_exp != NULL)
1171     async_exec = strip_bg_char (&signum_exp);
1172
1173   /* If we must run in the background, but the target can't do it,
1174      error out.  */
1175   if (async_exec && !target_can_async_p ())
1176     error (_("Asynchronous execution not supported on this target."));
1177
1178   /* If we are not asked to run in the bg, then prepare to run in the
1179      foreground, synchronously.  */
1180   if (!async_exec && target_can_async_p ())
1181     {
1182       /* Simulate synchronous execution.  */
1183       async_disable_stdin ();
1184     }
1185
1186   if (!signum_exp)
1187     error_no_arg (_("signal number"));
1188
1189   /* It would be even slicker to make signal names be valid expressions,
1190      (the type could be "enum $signal" or some such), then the user could
1191      assign them to convenience variables.  */
1192   oursig = target_signal_from_name (signum_exp);
1193
1194   if (oursig == TARGET_SIGNAL_UNKNOWN)
1195     {
1196       /* No, try numeric.  */
1197       int num = parse_and_eval_long (signum_exp);
1198
1199       if (num == 0)
1200         oursig = TARGET_SIGNAL_0;
1201       else
1202         oursig = target_signal_from_command (num);
1203     }
1204
1205   if (from_tty)
1206     {
1207       if (oursig == TARGET_SIGNAL_0)
1208         printf_filtered (_("Continuing with no signal.\n"));
1209       else
1210         printf_filtered (_("Continuing with signal %s.\n"),
1211                          target_signal_to_name (oursig));
1212     }
1213
1214   clear_proceed_status ();
1215   proceed ((CORE_ADDR) -1, oursig, 0);
1216 }
1217
1218 /* Proceed until we reach a different source line with pc greater than
1219    our current one or exit the function.  We skip calls in both cases.
1220
1221    Note that eventually this command should probably be changed so
1222    that only source lines are printed out when we hit the breakpoint
1223    we set.  This may involve changes to wait_for_inferior and the
1224    proceed status code.  */
1225
1226 static void
1227 until_next_command (int from_tty)
1228 {
1229   struct frame_info *frame;
1230   CORE_ADDR pc;
1231   struct symbol *func;
1232   struct symtab_and_line sal;
1233   struct thread_info *tp = inferior_thread ();
1234
1235   clear_proceed_status ();
1236   set_step_frame ();
1237
1238   frame = get_current_frame ();
1239
1240   /* Step until either exited from this function or greater
1241      than the current line (if in symbolic section) or pc (if
1242      not). */
1243
1244   pc = get_frame_pc (frame);
1245   func = find_pc_function (pc);
1246
1247   if (!func)
1248     {
1249       struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (pc);
1250
1251       if (msymbol == NULL)
1252         error (_("Execution is not within a known function."));
1253
1254       tp->step_range_start = SYMBOL_VALUE_ADDRESS (msymbol);
1255       tp->step_range_end = pc;
1256     }
1257   else
1258     {
1259       sal = find_pc_line (pc, 0);
1260
1261       tp->step_range_start = BLOCK_START (SYMBOL_BLOCK_VALUE (func));
1262       tp->step_range_end = sal.end;
1263     }
1264
1265   tp->step_over_calls = STEP_OVER_ALL;
1266
1267   tp->step_multi = 0;           /* Only one call to proceed */
1268
1269   proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1);
1270 }
1271
1272 static void
1273 until_command (char *arg, int from_tty)
1274 {
1275   int async_exec = 0;
1276
1277   ERROR_NO_INFERIOR;
1278   ensure_not_tfind_mode ();
1279   ensure_valid_thread ();
1280   ensure_not_running ();
1281
1282   /* Find out whether we must run in the background. */
1283   if (arg != NULL)
1284     async_exec = strip_bg_char (&arg);
1285
1286   /* If we must run in the background, but the target can't do it,
1287      error out. */
1288   if (async_exec && !target_can_async_p ())
1289     error (_("Asynchronous execution not supported on this target."));
1290
1291   /* If we are not asked to run in the bg, then prepare to run in the
1292      foreground, synchronously. */
1293   if (!async_exec && target_can_async_p ())
1294     {
1295       /* Simulate synchronous execution */
1296       async_disable_stdin ();
1297     }
1298
1299   if (arg)
1300     until_break_command (arg, from_tty, 0);
1301   else
1302     until_next_command (from_tty);
1303 }
1304
1305 static void
1306 advance_command (char *arg, int from_tty)
1307 {
1308   int async_exec = 0;
1309
1310   ERROR_NO_INFERIOR;
1311   ensure_not_tfind_mode ();
1312   ensure_valid_thread ();
1313   ensure_not_running ();
1314
1315   if (arg == NULL)
1316     error_no_arg (_("a location"));
1317
1318   /* Find out whether we must run in the background.  */
1319   if (arg != NULL)
1320     async_exec = strip_bg_char (&arg);
1321
1322   /* If we must run in the background, but the target can't do it,
1323      error out.  */
1324   if (async_exec && !target_can_async_p ())
1325     error (_("Asynchronous execution not supported on this target."));
1326
1327   /* If we are not asked to run in the bg, then prepare to run in the
1328      foreground, synchronously.  */
1329   if (!async_exec && target_can_async_p ())
1330     {
1331       /* Simulate synchronous execution.  */
1332       async_disable_stdin ();
1333     }
1334
1335   until_break_command (arg, from_tty, 1);
1336 }
1337 \f
1338 /* Print the result of a function at the end of a 'finish' command.  */
1339
1340 static void
1341 print_return_value (struct type *func_type, struct type *value_type)
1342 {
1343   struct gdbarch *gdbarch = get_regcache_arch (stop_registers);
1344   struct cleanup *old_chain;
1345   struct ui_stream *stb;
1346   struct value *value;
1347
1348   CHECK_TYPEDEF (value_type);
1349   gdb_assert (TYPE_CODE (value_type) != TYPE_CODE_VOID);
1350
1351   /* FIXME: 2003-09-27: When returning from a nested inferior function
1352      call, it's possible (with no help from the architecture vector)
1353      to locate and return/print a "struct return" value.  This is just
1354      a more complicated case of what is already being done in in the
1355      inferior function call code.  In fact, when inferior function
1356      calls are made async, this will likely be made the norm.  */
1357
1358   switch (gdbarch_return_value (gdbarch, func_type, value_type,
1359                                 NULL, NULL, NULL))
1360     {
1361     case RETURN_VALUE_REGISTER_CONVENTION:
1362     case RETURN_VALUE_ABI_RETURNS_ADDRESS:
1363     case RETURN_VALUE_ABI_PRESERVES_ADDRESS:
1364       value = allocate_value (value_type);
1365       gdbarch_return_value (gdbarch, func_type, value_type, stop_registers,
1366                             value_contents_raw (value), NULL);
1367       break;
1368     case RETURN_VALUE_STRUCT_CONVENTION:
1369       value = NULL;
1370       break;
1371     default:
1372       internal_error (__FILE__, __LINE__, _("bad switch"));
1373     }
1374
1375   if (value)
1376     {
1377       struct value_print_options opts;
1378
1379       /* Print it.  */
1380       stb = ui_out_stream_new (uiout);
1381       old_chain = make_cleanup_ui_out_stream_delete (stb);
1382       ui_out_text (uiout, "Value returned is ");
1383       ui_out_field_fmt (uiout, "gdb-result-var", "$%d",
1384                         record_latest_value (value));
1385       ui_out_text (uiout, " = ");
1386       get_raw_print_options (&opts);
1387       value_print (value, stb->stream, &opts);
1388       ui_out_field_stream (uiout, "return-value", stb);
1389       ui_out_text (uiout, "\n");
1390       do_cleanups (old_chain);
1391     }
1392   else
1393     {
1394       ui_out_text (uiout, "Value returned has type: ");
1395       ui_out_field_string (uiout, "return-type", TYPE_NAME (value_type));
1396       ui_out_text (uiout, ".");
1397       ui_out_text (uiout, " Cannot determine contents\n");
1398     }
1399 }
1400
1401 /* Stuff that needs to be done by the finish command after the target
1402    has stopped.  In asynchronous mode, we wait for the target to stop
1403    in the call to poll or select in the event loop, so it is
1404    impossible to do all the stuff as part of the finish_command
1405    function itself.  The only chance we have to complete this command
1406    is in fetch_inferior_event, which is called by the event loop as
1407    soon as it detects that the target has stopped. This function is
1408    called via the cmd_continuation pointer.  */
1409
1410 struct finish_command_continuation_args
1411 {
1412   struct breakpoint *breakpoint;
1413   struct symbol *function;
1414 };
1415
1416 static void
1417 finish_command_continuation (void *arg)
1418 {
1419   struct finish_command_continuation_args *a = arg;
1420   struct thread_info *tp = NULL;
1421   bpstat bs = NULL;
1422
1423   if (!ptid_equal (inferior_ptid, null_ptid)
1424       && target_has_execution
1425       && is_stopped (inferior_ptid))
1426     {
1427       tp = inferior_thread ();
1428       bs = tp->stop_bpstat;
1429     }
1430
1431   if (bpstat_find_breakpoint (bs, a->breakpoint) != NULL
1432       && a->function != NULL)
1433     {
1434       struct type *value_type;
1435
1436       value_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (a->function));
1437       if (!value_type)
1438         internal_error (__FILE__, __LINE__,
1439                         _("finish_command: function has no target type"));
1440
1441       if (TYPE_CODE (value_type) != TYPE_CODE_VOID)
1442         {
1443           volatile struct gdb_exception ex;
1444
1445           TRY_CATCH (ex, RETURN_MASK_ALL)
1446             {
1447               /* print_return_value can throw an exception in some
1448                  circumstances.  We need to catch this so that we still
1449                  delete the breakpoint.  */
1450               print_return_value (SYMBOL_TYPE (a->function), value_type);
1451             }
1452           if (ex.reason < 0)
1453             exception_print (gdb_stdout, ex);
1454         }
1455     }
1456
1457   /* We suppress normal call of normal_stop observer and do it here so
1458      that the *stopped notification includes the return value.  */
1459   if (bs != NULL && tp->proceed_to_finish)
1460     observer_notify_normal_stop (bs, 1 /* print frame */);
1461   delete_breakpoint (a->breakpoint);
1462 }
1463
1464 static void
1465 finish_command_continuation_free_arg (void *arg)
1466 {
1467   xfree (arg);
1468 }
1469
1470 /* finish_backward -- helper function for finish_command.  */
1471
1472 static void
1473 finish_backward (struct symbol *function)
1474 {
1475   struct symtab_and_line sal;
1476   struct thread_info *tp = inferior_thread ();
1477   struct breakpoint *breakpoint;
1478   struct cleanup *old_chain;
1479   CORE_ADDR pc;
1480   CORE_ADDR func_addr;
1481   int back_up;
1482
1483   pc = get_frame_pc (get_current_frame ());
1484
1485   if (find_pc_partial_function (pc, NULL, &func_addr, NULL) == 0)
1486     internal_error (__FILE__, __LINE__,
1487                     _("Finish: couldn't find function."));
1488
1489   sal = find_pc_line (func_addr, 0);
1490
1491   /* We don't need a return value.  */
1492   tp->proceed_to_finish = 0;
1493   /* Special case: if we're sitting at the function entry point,
1494      then all we need to do is take a reverse singlestep.  We
1495      don't need to set a breakpoint, and indeed it would do us
1496      no good to do so.
1497
1498      Note that this can only happen at frame #0, since there's
1499      no way that a function up the stack can have a return address
1500      that's equal to its entry point.  */
1501
1502   if (sal.pc != pc)
1503     {
1504       struct frame_info *frame = get_selected_frame (NULL);
1505       struct gdbarch *gdbarch = get_frame_arch (frame);
1506
1507       /* Set breakpoint and continue.  */
1508       breakpoint =
1509         set_momentary_breakpoint (gdbarch, sal,
1510                                   get_stack_frame_id (frame),
1511                                   bp_breakpoint);
1512       /* Tell the breakpoint to keep quiet.  We won't be done
1513          until we've done another reverse single-step.  */
1514       make_breakpoint_silent (breakpoint);
1515       old_chain = make_cleanup_delete_breakpoint (breakpoint);
1516       proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0);
1517       /* We will be stopped when proceed returns.  */
1518       back_up = bpstat_find_breakpoint (tp->stop_bpstat, breakpoint) != NULL;
1519       do_cleanups (old_chain);
1520     }
1521   else
1522     back_up = 1;
1523   if (back_up)
1524     {
1525       /* If in fact we hit the step-resume breakpoint (and not
1526          some other breakpoint), then we're almost there --
1527          we just need to back up by one more single-step.  */
1528       tp->step_range_start = tp->step_range_end = 1;
1529       proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1);
1530     }
1531   return;
1532 }
1533
1534 /* finish_forward -- helper function for finish_command.  */
1535
1536 static void
1537 finish_forward (struct symbol *function, struct frame_info *frame)
1538 {
1539   struct gdbarch *gdbarch = get_frame_arch (frame);
1540   struct symtab_and_line sal;
1541   struct thread_info *tp = inferior_thread ();
1542   struct breakpoint *breakpoint;
1543   struct cleanup *old_chain;
1544   struct finish_command_continuation_args *cargs;
1545
1546   sal = find_pc_line (get_frame_pc (frame), 0);
1547   sal.pc = get_frame_pc (frame);
1548
1549   breakpoint = set_momentary_breakpoint (gdbarch, sal,
1550                                          get_stack_frame_id (frame),
1551                                          bp_finish);
1552
1553   old_chain = make_cleanup_delete_breakpoint (breakpoint);
1554
1555   tp->proceed_to_finish = 1;    /* We want stop_registers, please...  */
1556   cargs = xmalloc (sizeof (*cargs));
1557
1558   cargs->breakpoint = breakpoint;
1559   cargs->function = function;
1560   add_continuation (tp, finish_command_continuation, cargs,
1561                     finish_command_continuation_free_arg);
1562   proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0);
1563
1564   discard_cleanups (old_chain);
1565   if (!target_can_async_p ())
1566     do_all_continuations ();
1567 }
1568
1569 /* "finish": Set a temporary breakpoint at the place the selected
1570    frame will return to, then continue.  */
1571
1572 static void
1573 finish_command (char *arg, int from_tty)
1574 {
1575   struct frame_info *frame;
1576   struct symbol *function;
1577
1578   int async_exec = 0;
1579
1580   ERROR_NO_INFERIOR;
1581   ensure_not_tfind_mode ();
1582   ensure_valid_thread ();
1583   ensure_not_running ();
1584
1585   /* Find out whether we must run in the background.  */
1586   if (arg != NULL)
1587     async_exec = strip_bg_char (&arg);
1588
1589   /* If we must run in the background, but the target can't do it,
1590      error out.  */
1591   if (async_exec && !target_can_async_p ())
1592     error (_("Asynchronous execution not supported on this target."));
1593
1594   /* Don't try to async in reverse.  */
1595   if (async_exec && execution_direction == EXEC_REVERSE)
1596     error (_("Asynchronous 'finish' not supported in reverse."));
1597
1598   /* If we are not asked to run in the bg, then prepare to run in the
1599      foreground, synchronously.  */
1600   if (!async_exec && target_can_async_p ())
1601     {
1602       /* Simulate synchronous execution.  */
1603       async_disable_stdin ();
1604     }
1605
1606   if (arg)
1607     error (_("The \"finish\" command does not take any arguments."));
1608
1609   frame = get_prev_frame (get_selected_frame (_("No selected frame.")));
1610   if (frame == 0)
1611     error (_("\"finish\" not meaningful in the outermost frame."));
1612
1613   clear_proceed_status ();
1614
1615   /* Finishing from an inline frame is completely different.  We don't
1616      try to show the "return value" - no way to locate it.  So we do
1617      not need a completion.  */
1618   if (get_frame_type (get_selected_frame (_("No selected frame.")))
1619       == INLINE_FRAME)
1620     {
1621       /* Claim we are stepping in the calling frame.  An empty step
1622          range means that we will stop once we aren't in a function
1623          called by that frame.  We don't use the magic "1" value for
1624          step_range_end, because then infrun will think this is nexti,
1625          and not step over the rest of this inlined function call.  */
1626       struct thread_info *tp = inferior_thread ();
1627       struct symtab_and_line empty_sal;
1628       init_sal (&empty_sal);
1629       set_step_info (frame, empty_sal);
1630       tp->step_range_start = tp->step_range_end = get_frame_pc (frame);
1631       tp->step_over_calls = STEP_OVER_ALL;
1632
1633       /* Print info on the selected frame, including level number but not
1634          source.  */
1635       if (from_tty)
1636         {
1637           printf_filtered (_("Run till exit from "));
1638           print_stack_frame (get_selected_frame (NULL), 1, LOCATION);
1639         }
1640
1641       proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1);
1642       return;
1643     }
1644
1645   /* Find the function we will return from.  */
1646
1647   function = find_pc_function (get_frame_pc (get_selected_frame (NULL)));
1648
1649   /* Print info on the selected frame, including level number but not
1650      source.  */
1651   if (from_tty)
1652     {
1653       if (execution_direction == EXEC_REVERSE)
1654         printf_filtered (_("Run back to call of "));
1655       else
1656         printf_filtered (_("Run till exit from "));
1657
1658       print_stack_frame (get_selected_frame (NULL), 1, LOCATION);
1659     }
1660
1661   if (execution_direction == EXEC_REVERSE)
1662     finish_backward (function);
1663   else
1664     finish_forward (function, frame);
1665 }
1666 \f
1667
1668 static void
1669 program_info (char *args, int from_tty)
1670 {
1671   bpstat bs;
1672   int num, stat;
1673   struct thread_info *tp;
1674   ptid_t ptid;
1675
1676   if (!target_has_execution)
1677     {
1678       printf_filtered (_("The program being debugged is not being run.\n"));
1679       return;
1680     }
1681
1682   if (non_stop)
1683     ptid = inferior_ptid;
1684   else
1685     {
1686       struct target_waitstatus ws;
1687       get_last_target_status (&ptid, &ws);
1688     }
1689
1690   if (ptid_equal (ptid, null_ptid) || is_exited (ptid))
1691     error (_("Invalid selected thread."));
1692   else if (is_running (ptid))
1693     error (_("Selected thread is running."));
1694
1695   tp = find_thread_ptid (ptid);
1696   bs = tp->stop_bpstat;
1697   stat = bpstat_num (&bs, &num);
1698
1699   target_files_info ();
1700   printf_filtered (_("Program stopped at %s.\n"),
1701                    paddress (target_gdbarch, stop_pc));
1702   if (tp->stop_step)
1703     printf_filtered (_("It stopped after being stepped.\n"));
1704   else if (stat != 0)
1705     {
1706       /* There may be several breakpoints in the same place, so this
1707          isn't as strange as it seems.  */
1708       while (stat != 0)
1709         {
1710           if (stat < 0)
1711             {
1712               printf_filtered (_("\
1713 It stopped at a breakpoint that has since been deleted.\n"));
1714             }
1715           else
1716             printf_filtered (_("It stopped at breakpoint %d.\n"), num);
1717           stat = bpstat_num (&bs, &num);
1718         }
1719     }
1720   else if (tp->stop_signal != TARGET_SIGNAL_0)
1721     {
1722       printf_filtered (_("It stopped with signal %s, %s.\n"),
1723                        target_signal_to_name (tp->stop_signal),
1724                        target_signal_to_string (tp->stop_signal));
1725     }
1726
1727   if (!from_tty)
1728     {
1729       printf_filtered (_("\
1730 Type \"info stack\" or \"info registers\" for more information.\n"));
1731     }
1732 }
1733 \f
1734 static void
1735 environment_info (char *var, int from_tty)
1736 {
1737   if (var)
1738     {
1739       char *val = get_in_environ (current_inferior ()->environment, var);
1740       if (val)
1741         {
1742           puts_filtered (var);
1743           puts_filtered (" = ");
1744           puts_filtered (val);
1745           puts_filtered ("\n");
1746         }
1747       else
1748         {
1749           puts_filtered ("Environment variable \"");
1750           puts_filtered (var);
1751           puts_filtered ("\" not defined.\n");
1752         }
1753     }
1754   else
1755     {
1756       char **vector = environ_vector (current_inferior ()->environment);
1757       while (*vector)
1758         {
1759           puts_filtered (*vector++);
1760           puts_filtered ("\n");
1761         }
1762     }
1763 }
1764
1765 static void
1766 set_environment_command (char *arg, int from_tty)
1767 {
1768   char *p, *val, *var;
1769   int nullset = 0;
1770
1771   if (arg == 0)
1772     error_no_arg (_("environment variable and value"));
1773
1774   /* Find seperation between variable name and value */
1775   p = (char *) strchr (arg, '=');
1776   val = (char *) strchr (arg, ' ');
1777
1778   if (p != 0 && val != 0)
1779     {
1780       /* We have both a space and an equals.  If the space is before the
1781          equals, walk forward over the spaces til we see a nonspace 
1782          (possibly the equals). */
1783       if (p > val)
1784         while (*val == ' ')
1785           val++;
1786
1787       /* Now if the = is after the char following the spaces,
1788          take the char following the spaces.  */
1789       if (p > val)
1790         p = val - 1;
1791     }
1792   else if (val != 0 && p == 0)
1793     p = val;
1794
1795   if (p == arg)
1796     error_no_arg (_("environment variable to set"));
1797
1798   if (p == 0 || p[1] == 0)
1799     {
1800       nullset = 1;
1801       if (p == 0)
1802         p = arg + strlen (arg); /* So that savestring below will work */
1803     }
1804   else
1805     {
1806       /* Not setting variable value to null */
1807       val = p + 1;
1808       while (*val == ' ' || *val == '\t')
1809         val++;
1810     }
1811
1812   while (p != arg && (p[-1] == ' ' || p[-1] == '\t'))
1813     p--;
1814
1815   var = savestring (arg, p - arg);
1816   if (nullset)
1817     {
1818       printf_filtered (_("\
1819 Setting environment variable \"%s\" to null value.\n"),
1820                        var);
1821       set_in_environ (current_inferior ()->environment, var, "");
1822     }
1823   else
1824     set_in_environ (current_inferior ()->environment, var, val);
1825   xfree (var);
1826 }
1827
1828 static void
1829 unset_environment_command (char *var, int from_tty)
1830 {
1831   if (var == 0)
1832     {
1833       /* If there is no argument, delete all environment variables.
1834          Ask for confirmation if reading from the terminal.  */
1835       if (!from_tty || query (_("Delete all environment variables? ")))
1836         {
1837           free_environ (current_inferior ()->environment);
1838           current_inferior ()->environment = make_environ ();
1839         }
1840     }
1841   else
1842     unset_in_environ (current_inferior ()->environment, var);
1843 }
1844
1845 /* Handle the execution path (PATH variable) */
1846
1847 static const char path_var_name[] = "PATH";
1848
1849 static void
1850 path_info (char *args, int from_tty)
1851 {
1852   puts_filtered ("Executable and object file path: ");
1853   puts_filtered (get_in_environ (current_inferior ()->environment, path_var_name));
1854   puts_filtered ("\n");
1855 }
1856
1857 /* Add zero or more directories to the front of the execution path.  */
1858
1859 static void
1860 path_command (char *dirname, int from_tty)
1861 {
1862   char *exec_path;
1863   char *env;
1864   dont_repeat ();
1865   env = get_in_environ (current_inferior ()->environment, path_var_name);
1866   /* Can be null if path is not set */
1867   if (!env)
1868     env = "";
1869   exec_path = xstrdup (env);
1870   mod_path (dirname, &exec_path);
1871   set_in_environ (current_inferior ()->environment, path_var_name, exec_path);
1872   xfree (exec_path);
1873   if (from_tty)
1874     path_info ((char *) NULL, from_tty);
1875 }
1876 \f
1877
1878 /* Print out the machine register regnum. If regnum is -1, print all
1879    registers (print_all == 1) or all non-float and non-vector
1880    registers (print_all == 0).
1881
1882    For most machines, having all_registers_info() print the
1883    register(s) one per line is good enough.  If a different format is
1884    required, (eg, for MIPS or Pyramid 90x, which both have lots of
1885    regs), or there is an existing convention for showing all the
1886    registers, define the architecture method PRINT_REGISTERS_INFO to
1887    provide that format.  */
1888
1889 void
1890 default_print_registers_info (struct gdbarch *gdbarch,
1891                               struct ui_file *file,
1892                               struct frame_info *frame,
1893                               int regnum, int print_all)
1894 {
1895   int i;
1896   const int numregs = gdbarch_num_regs (gdbarch)
1897                       + gdbarch_num_pseudo_regs (gdbarch);
1898   gdb_byte buffer[MAX_REGISTER_SIZE];
1899
1900   for (i = 0; i < numregs; i++)
1901     {
1902       /* Decide between printing all regs, non-float / vector regs, or
1903          specific reg.  */
1904       if (regnum == -1)
1905         {
1906           if (print_all)
1907             {
1908               if (!gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
1909                 continue;
1910             }
1911           else
1912             {
1913               if (!gdbarch_register_reggroup_p (gdbarch, i, general_reggroup))
1914                 continue;
1915             }
1916         }
1917       else
1918         {
1919           if (i != regnum)
1920             continue;
1921         }
1922
1923       /* If the register name is empty, it is undefined for this
1924          processor, so don't display anything.  */
1925       if (gdbarch_register_name (gdbarch, i) == NULL
1926           || *(gdbarch_register_name (gdbarch, i)) == '\0')
1927         continue;
1928
1929       fputs_filtered (gdbarch_register_name (gdbarch, i), file);
1930       print_spaces_filtered (15 - strlen (gdbarch_register_name
1931                                           (gdbarch, i)), file);
1932
1933       /* Get the data in raw format.  */
1934       if (! frame_register_read (frame, i, buffer))
1935         {
1936           fprintf_filtered (file, "*value not available*\n");
1937           continue;
1938         }
1939
1940       /* If virtual format is floating, print it that way, and in raw
1941          hex.  */
1942       if (TYPE_CODE (register_type (gdbarch, i)) == TYPE_CODE_FLT
1943           || TYPE_CODE (register_type (gdbarch, i)) == TYPE_CODE_DECFLOAT)
1944         {
1945           int j;
1946           struct value_print_options opts;
1947
1948           get_user_print_options (&opts);
1949           opts.deref_ref = 1;
1950           val_print (register_type (gdbarch, i), buffer, 0, 0,
1951                      file, 0, &opts, current_language);
1952
1953           fprintf_filtered (file, "\t(raw 0x");
1954           for (j = 0; j < register_size (gdbarch, i); j++)
1955             {
1956               int idx;
1957               if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
1958                 idx = j;
1959               else
1960                 idx = register_size (gdbarch, i) - 1 - j;
1961               fprintf_filtered (file, "%02x", (unsigned char) buffer[idx]);
1962             }
1963           fprintf_filtered (file, ")");
1964         }
1965       else
1966         {
1967           struct value_print_options opts;
1968
1969           /* Print the register in hex.  */
1970           get_formatted_print_options (&opts, 'x');
1971           opts.deref_ref = 1;
1972           val_print (register_type (gdbarch, i), buffer, 0, 0,
1973                      file, 0, &opts,
1974                      current_language);
1975           /* If not a vector register, print it also according to its
1976              natural format.  */
1977           if (TYPE_VECTOR (register_type (gdbarch, i)) == 0)
1978             {
1979               get_user_print_options (&opts);
1980               opts.deref_ref = 1;
1981               fprintf_filtered (file, "\t");
1982               val_print (register_type (gdbarch, i), buffer, 0, 0,
1983                          file, 0, &opts, current_language);
1984             }
1985         }
1986
1987       fprintf_filtered (file, "\n");
1988     }
1989 }
1990
1991 void
1992 registers_info (char *addr_exp, int fpregs)
1993 {
1994   struct frame_info *frame;
1995   struct gdbarch *gdbarch;
1996
1997   if (!target_has_registers)
1998     error (_("The program has no registers now."));
1999   frame = get_selected_frame (NULL);
2000   gdbarch = get_frame_arch (frame);
2001
2002   if (!addr_exp)
2003     {
2004       gdbarch_print_registers_info (gdbarch, gdb_stdout,
2005                                     frame, -1, fpregs);
2006       return;
2007     }
2008
2009   while (*addr_exp != '\0')
2010     {
2011       char *start;
2012       const char *end;
2013
2014       /* Keep skipping leading white space.  */
2015       if (isspace ((*addr_exp)))
2016         {
2017           addr_exp++;
2018           continue;
2019         }
2020
2021       /* Discard any leading ``$''.  Check that there is something
2022          resembling a register following it.  */
2023       if (addr_exp[0] == '$')
2024         addr_exp++;
2025       if (isspace ((*addr_exp)) || (*addr_exp) == '\0')
2026         error (_("Missing register name"));
2027
2028       /* Find the start/end of this register name/num/group.  */
2029       start = addr_exp;
2030       while ((*addr_exp) != '\0' && !isspace ((*addr_exp)))
2031         addr_exp++;
2032       end = addr_exp;
2033
2034       /* Figure out what we've found and display it.  */
2035
2036       /* A register name?  */
2037       {
2038         int regnum = user_reg_map_name_to_regnum (gdbarch, start, end - start);
2039         if (regnum >= 0)
2040           {
2041             /* User registers lie completely outside of the range of
2042                normal registers.  Catch them early so that the target
2043                never sees them.  */
2044             if (regnum >= gdbarch_num_regs (gdbarch)
2045                           + gdbarch_num_pseudo_regs (gdbarch))
2046               {
2047                 struct value_print_options opts;
2048                 struct value *val = value_of_user_reg (regnum, frame);
2049
2050                 printf_filtered ("%s: ", start);
2051                 get_formatted_print_options (&opts, 'x');
2052                 print_scalar_formatted (value_contents (val),
2053                                         check_typedef (value_type (val)),
2054                                         &opts, 0, gdb_stdout);
2055                 printf_filtered ("\n");
2056               }
2057             else
2058               gdbarch_print_registers_info (gdbarch, gdb_stdout,
2059                                             frame, regnum, fpregs);
2060             continue;
2061           }
2062       }
2063
2064       /* A register group?  */
2065       {
2066         struct reggroup *group;
2067         for (group = reggroup_next (gdbarch, NULL);
2068              group != NULL;
2069              group = reggroup_next (gdbarch, group))
2070           {
2071             /* Don't bother with a length check.  Should the user
2072                enter a short register group name, go with the first
2073                group that matches.  */
2074             if (strncmp (start, reggroup_name (group), end - start) == 0)
2075               break;
2076           }
2077         if (group != NULL)
2078           {
2079             int regnum;
2080             for (regnum = 0;
2081                  regnum < gdbarch_num_regs (gdbarch)
2082                           + gdbarch_num_pseudo_regs (gdbarch);
2083                  regnum++)
2084               {
2085                 if (gdbarch_register_reggroup_p (gdbarch, regnum, group))
2086                   gdbarch_print_registers_info (gdbarch,
2087                                                 gdb_stdout, frame,
2088                                                 regnum, fpregs);
2089               }
2090             continue;
2091           }
2092       }
2093
2094       /* Nothing matched.  */
2095       error (_("Invalid register `%.*s'"), (int) (end - start), start);
2096     }
2097 }
2098
2099 void
2100 all_registers_info (char *addr_exp, int from_tty)
2101 {
2102   registers_info (addr_exp, 1);
2103 }
2104
2105 static void
2106 nofp_registers_info (char *addr_exp, int from_tty)
2107 {
2108   registers_info (addr_exp, 0);
2109 }
2110
2111 static void
2112 print_vector_info (struct ui_file *file,
2113                    struct frame_info *frame, const char *args)
2114 {
2115   struct gdbarch *gdbarch = get_frame_arch (frame);
2116
2117   if (gdbarch_print_vector_info_p (gdbarch))
2118     gdbarch_print_vector_info (gdbarch, file, frame, args);
2119   else
2120     {
2121       int regnum;
2122       int printed_something = 0;
2123
2124       for (regnum = 0;
2125            regnum < gdbarch_num_regs (gdbarch)
2126                     + gdbarch_num_pseudo_regs (gdbarch);
2127            regnum++)
2128         {
2129           if (gdbarch_register_reggroup_p (gdbarch, regnum, vector_reggroup))
2130             {
2131               printed_something = 1;
2132               gdbarch_print_registers_info (gdbarch, file, frame, regnum, 1);
2133             }
2134         }
2135       if (!printed_something)
2136         fprintf_filtered (file, "No vector information\n");
2137     }
2138 }
2139
2140 static void
2141 vector_info (char *args, int from_tty)
2142 {
2143   if (!target_has_registers)
2144     error (_("The program has no registers now."));
2145
2146   print_vector_info (gdb_stdout, get_selected_frame (NULL), args);
2147 }
2148 \f
2149 /* Kill the inferior process.  Make us have no inferior.  */
2150
2151 static void
2152 kill_command (char *arg, int from_tty)
2153 {
2154   /* FIXME:  This should not really be inferior_ptid (or target_has_execution).
2155      It should be a distinct flag that indicates that a target is active, cuz
2156      some targets don't have processes! */
2157
2158   if (ptid_equal (inferior_ptid, null_ptid))
2159     error (_("The program is not being run."));
2160   if (!query (_("Kill the program being debugged? ")))
2161     error (_("Not confirmed."));
2162   target_kill ();
2163
2164   /* If we still have other inferiors to debug, then don't mess with
2165      with their threads.  */
2166   if (!have_inferiors ())
2167     {
2168       init_thread_list ();              /* Destroy thread info */
2169
2170       /* Killing off the inferior can leave us with a core file.  If
2171          so, print the state we are left in.  */
2172       if (target_has_stack)
2173         {
2174           printf_filtered (_("In %s,\n"), target_longname);
2175           print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
2176         }
2177     }
2178   bfd_cache_close_all ();
2179 }
2180
2181 /* Used in `attach&' command.  ARG is a point to an integer
2182    representing a process id.  Proceed threads of this process iff
2183    they stopped due to debugger request, and when they did, they
2184    reported a clean stop (TARGET_SIGNAL_0).  Do not proceed threads
2185    that have been explicitly been told to stop.  */
2186
2187 static int
2188 proceed_after_attach_callback (struct thread_info *thread,
2189                                void *arg)
2190 {
2191   int pid = * (int *) arg;
2192
2193   if (ptid_get_pid (thread->ptid) == pid
2194       && !is_exited (thread->ptid)
2195       && !is_executing (thread->ptid)
2196       && !thread->stop_requested
2197       && thread->stop_signal == TARGET_SIGNAL_0)
2198     {
2199       switch_to_thread (thread->ptid);
2200       clear_proceed_status ();
2201       proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0);
2202     }
2203
2204   return 0;
2205 }
2206
2207 static void
2208 proceed_after_attach (int pid)
2209 {
2210   /* Don't error out if the current thread is running, because
2211      there may be other stopped threads.  */
2212   struct cleanup *old_chain;
2213
2214   /* Backup current thread and selected frame.  */
2215   old_chain = make_cleanup_restore_current_thread ();
2216
2217   iterate_over_threads (proceed_after_attach_callback, &pid);
2218
2219   /* Restore selected ptid.  */
2220   do_cleanups (old_chain);
2221 }
2222
2223 /*
2224  * TODO:
2225  * Should save/restore the tty state since it might be that the
2226  * program to be debugged was started on this tty and it wants
2227  * the tty in some state other than what we want.  If it's running
2228  * on another terminal or without a terminal, then saving and
2229  * restoring the tty state is a harmless no-op.
2230  * This only needs to be done if we are attaching to a process.
2231  */
2232
2233 /*
2234    attach_command --
2235    takes a program started up outside of gdb and ``attaches'' to it.
2236    This stops it cold in its tracks and allows us to start debugging it.
2237    and wait for the trace-trap that results from attaching.  */
2238
2239 static void
2240 attach_command_post_wait (char *args, int from_tty, int async_exec)
2241 {
2242   char *exec_file;
2243   char *full_exec_path = NULL;
2244   struct inferior *inferior;
2245
2246   inferior = current_inferior ();
2247   inferior->stop_soon = NO_STOP_QUIETLY;
2248
2249   /* If no exec file is yet known, try to determine it from the
2250      process itself.  */
2251   exec_file = (char *) get_exec_file (0);
2252   if (!exec_file)
2253     {
2254       exec_file = target_pid_to_exec_file (PIDGET (inferior_ptid));
2255       if (exec_file)
2256         {
2257           /* It's possible we don't have a full path, but rather just a
2258              filename.  Some targets, such as HP-UX, don't provide the
2259              full path, sigh.
2260
2261              Attempt to qualify the filename against the source path.
2262              (If that fails, we'll just fall back on the original
2263              filename.  Not much more we can do...)
2264            */
2265           if (!source_full_path_of (exec_file, &full_exec_path))
2266             full_exec_path = xstrdup (exec_file);
2267
2268           exec_file_attach (full_exec_path, from_tty);
2269           symbol_file_add_main (full_exec_path, from_tty);
2270         }
2271     }
2272   else
2273     {
2274       reopen_exec_file ();
2275       reread_symbols ();
2276     }
2277
2278   /* Take any necessary post-attaching actions for this platform.  */
2279   target_post_attach (PIDGET (inferior_ptid));
2280
2281   post_create_inferior (&current_target, from_tty);
2282
2283   /* Install inferior's terminal modes.  */
2284   target_terminal_inferior ();
2285
2286   if (async_exec)
2287     {
2288       /* The user requested an `attach&', so be sure to leave threads
2289          that didn't get a signal running.  */
2290
2291       /* Immediatelly resume all suspended threads of this inferior,
2292          and this inferior only.  This should have no effect on
2293          already running threads.  If a thread has been stopped with a
2294          signal, leave it be.  */
2295       if (non_stop)
2296         proceed_after_attach (inferior->pid);
2297       else
2298         {
2299           if (inferior_thread ()->stop_signal == TARGET_SIGNAL_0)
2300             {
2301               clear_proceed_status ();
2302               proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0);
2303             }
2304         }
2305     }
2306   else
2307     {
2308       /* The user requested a plain `attach', so be sure to leave
2309          the inferior stopped.  */
2310
2311       if (target_can_async_p ())
2312         async_enable_stdin ();
2313
2314       /* At least the current thread is already stopped.  */
2315
2316       /* In all-stop, by definition, all threads have to be already
2317          stopped at this point.  In non-stop, however, although the
2318          selected thread is stopped, others may still be executing.
2319          Be sure to explicitly stop all threads of the process.  This
2320          should have no effect on already stopped threads.  */
2321       if (non_stop)
2322         target_stop (pid_to_ptid (inferior->pid));
2323
2324       /* Tell the user/frontend where we're stopped.  */
2325       normal_stop ();
2326       if (deprecated_attach_hook)
2327         deprecated_attach_hook ();
2328     }
2329 }
2330
2331 struct attach_command_continuation_args
2332 {
2333   char *args;
2334   int from_tty;
2335   int async_exec;
2336 };
2337
2338 static void
2339 attach_command_continuation (void *args)
2340 {
2341   struct attach_command_continuation_args *a = args;
2342   attach_command_post_wait (a->args, a->from_tty, a->async_exec);
2343 }
2344
2345 static void
2346 attach_command_continuation_free_args (void *args)
2347 {
2348   struct attach_command_continuation_args *a = args;
2349   xfree (a->args);
2350   xfree (a);
2351 }
2352
2353 void
2354 attach_command (char *args, int from_tty)
2355 {
2356   int async_exec = 0;
2357   struct cleanup *back_to = make_cleanup (null_cleanup, NULL);
2358
2359   dont_repeat ();               /* Not for the faint of heart */
2360
2361   if (gdbarch_has_global_solist (target_gdbarch))
2362     /* Don't complain if all processes share the same symbol
2363        space.  */
2364     ;
2365   else if (target_has_execution)
2366     {
2367       if (query (_("A program is being debugged already.  Kill it? ")))
2368         target_kill ();
2369       else
2370         error (_("Not killed."));
2371     }
2372
2373   /* Clean up any leftovers from other runs.  Some other things from
2374      this function should probably be moved into target_pre_inferior.  */
2375   target_pre_inferior (from_tty);
2376
2377   if (non_stop && !target_supports_non_stop ())
2378     error (_("Cannot attach to this target in non-stop mode"));
2379
2380   if (args)
2381     {
2382       async_exec = strip_bg_char (&args);
2383
2384       /* If we get a request for running in the bg but the target
2385          doesn't support it, error out. */
2386       if (async_exec && !target_can_async_p ())
2387         error (_("Asynchronous execution not supported on this target."));
2388     }
2389
2390   /* If we don't get a request of running in the bg, then we need
2391      to simulate synchronous (fg) execution.  */
2392   if (!async_exec && target_can_async_p ())
2393     {
2394       /* Simulate synchronous execution */
2395       async_disable_stdin ();
2396       make_cleanup ((make_cleanup_ftype *)async_enable_stdin, NULL);
2397     }
2398
2399   target_attach (args, from_tty);
2400
2401   /* Set up the "saved terminal modes" of the inferior
2402      based on what modes we are starting it with.  */
2403   target_terminal_init ();
2404
2405   /* Set up execution context to know that we should return from
2406      wait_for_inferior as soon as the target reports a stop.  */
2407   init_wait_for_inferior ();
2408   clear_proceed_status ();
2409
2410   if (non_stop)
2411     {
2412       /* If we find that the current thread isn't stopped, explicitly
2413          do so now, because we're going to install breakpoints and
2414          poke at memory.  */
2415
2416       if (async_exec)
2417         /* The user requested an `attach&'; stop just one thread.  */
2418         target_stop (inferior_ptid);
2419       else
2420         /* The user requested an `attach', so stop all threads of this
2421            inferior.  */
2422         target_stop (pid_to_ptid (ptid_get_pid (inferior_ptid)));
2423     }
2424
2425   /* Some system don't generate traps when attaching to inferior.
2426      E.g. Mach 3 or GNU hurd.  */
2427   if (!target_attach_no_wait)
2428     {
2429       struct inferior *inferior = current_inferior ();
2430
2431       /* Careful here. See comments in inferior.h.  Basically some
2432          OSes don't ignore SIGSTOPs on continue requests anymore.  We
2433          need a way for handle_inferior_event to reset the stop_signal
2434          variable after an attach, and this is what
2435          STOP_QUIETLY_NO_SIGSTOP is for.  */
2436       inferior->stop_soon = STOP_QUIETLY_NO_SIGSTOP;
2437
2438       if (target_can_async_p ())
2439         {
2440           /* sync_execution mode.  Wait for stop.  */
2441           struct attach_command_continuation_args *a;
2442
2443           a = xmalloc (sizeof (*a));
2444           a->args = xstrdup (args);
2445           a->from_tty = from_tty;
2446           a->async_exec = async_exec;
2447           add_inferior_continuation (attach_command_continuation, a,
2448                                      attach_command_continuation_free_args);
2449           discard_cleanups (back_to);
2450           return;
2451         }
2452
2453       wait_for_inferior (0);
2454     }
2455
2456   attach_command_post_wait (args, from_tty, async_exec);
2457   discard_cleanups (back_to);
2458 }
2459
2460 /* We had just found out that the target was already attached to an
2461    inferior.  PTID points at a thread of this new inferior, that is
2462    the most likely to be stopped right now, but not necessarily so.
2463    The new inferior is assumed to be already added to the inferior
2464    list at this point.  If LEAVE_RUNNING, then leave the threads of
2465    this inferior running, except those we've explicitly seen reported
2466    as stopped.  */
2467
2468 void
2469 notice_new_inferior (ptid_t ptid, int leave_running, int from_tty)
2470 {
2471   struct cleanup* old_chain;
2472   int async_exec;
2473
2474   old_chain = make_cleanup (null_cleanup, NULL);
2475
2476   /* If in non-stop, leave threads as running as they were.  If
2477      they're stopped for some reason other than us telling it to, the
2478      target reports a signal != TARGET_SIGNAL_0.  We don't try to
2479      resume threads with such a stop signal.  */
2480   async_exec = non_stop;
2481
2482   if (!ptid_equal (inferior_ptid, null_ptid))
2483     make_cleanup_restore_current_thread ();
2484
2485   switch_to_thread (ptid);
2486
2487   /* When we "notice" a new inferior we need to do all the things we
2488      would normally do if we had just attached to it.  */
2489
2490   if (is_executing (inferior_ptid))
2491     {
2492       struct inferior *inferior = current_inferior ();
2493
2494       /* We're going to install breakpoints, and poke at memory,
2495          ensure that the inferior is stopped for a moment while we do
2496          that.  */
2497       target_stop (inferior_ptid);
2498
2499       inferior->stop_soon = STOP_QUIETLY_REMOTE;
2500
2501       /* Wait for stop before proceeding.  */
2502       if (target_can_async_p ())
2503         {
2504           struct attach_command_continuation_args *a;
2505
2506           a = xmalloc (sizeof (*a));
2507           a->args = xstrdup ("");
2508           a->from_tty = from_tty;
2509           a->async_exec = async_exec;
2510           add_inferior_continuation (attach_command_continuation, a,
2511                                      attach_command_continuation_free_args);
2512
2513           do_cleanups (old_chain);
2514           return;
2515         }
2516       else
2517         wait_for_inferior (0);
2518     }
2519
2520   async_exec = leave_running;
2521   attach_command_post_wait ("" /* args */, from_tty, async_exec);
2522
2523   do_cleanups (old_chain);
2524 }
2525
2526 /*
2527  * detach_command --
2528  * takes a program previously attached to and detaches it.
2529  * The program resumes execution and will no longer stop
2530  * on signals, etc.  We better not have left any breakpoints
2531  * in the program or it'll die when it hits one.  For this
2532  * to work, it may be necessary for the process to have been
2533  * previously attached.  It *might* work if the program was
2534  * started via the normal ptrace (PTRACE_TRACEME).
2535  */
2536
2537 void
2538 detach_command (char *args, int from_tty)
2539 {
2540   dont_repeat ();               /* Not for the faint of heart.  */
2541
2542   if (ptid_equal (inferior_ptid, null_ptid))
2543     error (_("The program is not being run."));
2544
2545   disconnect_tracing (from_tty);
2546
2547   target_detach (args, from_tty);
2548
2549   /* If the solist is global across inferiors, don't clear it when we
2550      detach from a single inferior.  */
2551   if (!gdbarch_has_global_solist (target_gdbarch))
2552     no_shared_libraries (NULL, from_tty);
2553
2554   /* If we still have inferiors to debug, then don't mess with their
2555      threads.  */
2556   if (!have_inferiors ())
2557     init_thread_list ();
2558
2559   if (deprecated_detach_hook)
2560     deprecated_detach_hook ();
2561 }
2562
2563 /* Disconnect from the current target without resuming it (leaving it
2564    waiting for a debugger).
2565
2566    We'd better not have left any breakpoints in the program or the
2567    next debugger will get confused.  Currently only supported for some
2568    remote targets, since the normal attach mechanisms don't work on
2569    stopped processes on some native platforms (e.g. GNU/Linux).  */
2570
2571 static void
2572 disconnect_command (char *args, int from_tty)
2573 {
2574   dont_repeat ();               /* Not for the faint of heart */
2575   target_disconnect (args, from_tty);
2576   no_shared_libraries (NULL, from_tty);
2577   init_thread_list ();
2578   if (deprecated_detach_hook)
2579     deprecated_detach_hook ();
2580 }
2581
2582 void 
2583 interrupt_target_1 (int all_threads)
2584 {
2585   ptid_t ptid;
2586   if (all_threads)
2587     ptid = minus_one_ptid;
2588   else
2589     ptid = inferior_ptid;
2590   target_stop (ptid);
2591
2592   /* Tag the thread as having been explicitly requested to stop, so
2593      other parts of gdb know not to resume this thread automatically,
2594      if it was stopped due to an internal event.  Limit this to
2595      non-stop mode, as when debugging a multi-threaded application in
2596      all-stop mode, we will only get one stop event --- it's undefined
2597      which thread will report the event.  */
2598   if (non_stop)
2599     set_stop_requested (ptid, 1);
2600 }
2601
2602 /* Stop the execution of the target while running in async mode, in
2603    the backgound.  In all-stop, stop the whole process.  In non-stop
2604    mode, stop the current thread only by default, or stop all threads
2605    if the `-a' switch is used.  */
2606
2607 /* interrupt [-a]  */
2608 void
2609 interrupt_target_command (char *args, int from_tty)
2610 {
2611   if (target_can_async_p ())
2612     {
2613       int all_threads = 0;
2614
2615       dont_repeat ();           /* Not for the faint of heart */
2616
2617       if (args != NULL
2618           && strncmp (args, "-a", sizeof ("-a") - 1) == 0)
2619         all_threads = 1;
2620
2621       if (!non_stop && all_threads)
2622         error (_("-a is meaningless in all-stop mode."));
2623
2624       interrupt_target_1 (all_threads);
2625     }
2626 }
2627
2628 static void
2629 print_float_info (struct ui_file *file,
2630                   struct frame_info *frame, const char *args)
2631 {
2632   struct gdbarch *gdbarch = get_frame_arch (frame);
2633
2634   if (gdbarch_print_float_info_p (gdbarch))
2635     gdbarch_print_float_info (gdbarch, file, frame, args);
2636   else
2637     {
2638       int regnum;
2639       int printed_something = 0;
2640
2641       for (regnum = 0;
2642            regnum < gdbarch_num_regs (gdbarch)
2643                     + gdbarch_num_pseudo_regs (gdbarch);
2644            regnum++)
2645         {
2646           if (gdbarch_register_reggroup_p (gdbarch, regnum, float_reggroup))
2647             {
2648               printed_something = 1;
2649               gdbarch_print_registers_info (gdbarch, file, frame, regnum, 1);
2650             }
2651         }
2652       if (!printed_something)
2653         fprintf_filtered (file, "\
2654 No floating-point info available for this processor.\n");
2655     }
2656 }
2657
2658 static void
2659 float_info (char *args, int from_tty)
2660 {
2661   if (!target_has_registers)
2662     error (_("The program has no registers now."));
2663
2664   print_float_info (gdb_stdout, get_selected_frame (NULL), args);
2665 }
2666 \f
2667 static void
2668 unset_command (char *args, int from_tty)
2669 {
2670   printf_filtered (_("\
2671 \"unset\" must be followed by the name of an unset subcommand.\n"));
2672   help_list (unsetlist, "unset ", -1, gdb_stdout);
2673 }
2674
2675 void
2676 _initialize_infcmd (void)
2677 {
2678   struct cmd_list_element *c = NULL;
2679
2680   /* add the filename of the terminal connected to inferior I/O */
2681   add_setshow_filename_cmd ("inferior-tty", class_run,
2682                             &inferior_io_terminal_scratch, _("\
2683 Set terminal for future runs of program being debugged."), _("\
2684 Show terminal for future runs of program being debugged."), _("\
2685 Usage: set inferior-tty /dev/pts/1"),
2686                             set_inferior_tty_command,
2687                             show_inferior_tty_command,
2688                             &setlist, &showlist);
2689   add_com_alias ("tty", "set inferior-tty", class_alias, 0);
2690
2691   add_setshow_optional_filename_cmd ("args", class_run,
2692                                      &inferior_args_scratch, _("\
2693 Set argument list to give program being debugged when it is started."), _("\
2694 Show argument list to give program being debugged when it is started."), _("\
2695 Follow this command with any number of args, to be passed to the program."),
2696                                      set_args_command,
2697                                      show_args_command,
2698                                      &setlist, &showlist);
2699
2700   c = add_cmd ("environment", no_class, environment_info, _("\
2701 The environment to give the program, or one variable's value.\n\
2702 With an argument VAR, prints the value of environment variable VAR to\n\
2703 give the program being debugged.  With no arguments, prints the entire\n\
2704 environment to be given to the program."), &showlist);
2705   set_cmd_completer (c, noop_completer);
2706
2707   add_prefix_cmd ("unset", no_class, unset_command,
2708                   _("Complement to certain \"set\" commands."),
2709                   &unsetlist, "unset ", 0, &cmdlist);
2710
2711   c = add_cmd ("environment", class_run, unset_environment_command, _("\
2712 Cancel environment variable VAR for the program.\n\
2713 This does not affect the program until the next \"run\" command."),
2714                &unsetlist);
2715   set_cmd_completer (c, noop_completer);
2716
2717   c = add_cmd ("environment", class_run, set_environment_command, _("\
2718 Set environment variable value to give the program.\n\
2719 Arguments are VAR VALUE where VAR is variable name and VALUE is value.\n\
2720 VALUES of environment variables are uninterpreted strings.\n\
2721 This does not affect the program until the next \"run\" command."),
2722                &setlist);
2723   set_cmd_completer (c, noop_completer);
2724
2725   c = add_com ("path", class_files, path_command, _("\
2726 Add directory DIR(s) to beginning of search path for object files.\n\
2727 $cwd in the path means the current working directory.\n\
2728 This path is equivalent to the $PATH shell variable.  It is a list of\n\
2729 directories, separated by colons.  These directories are searched to find\n\
2730 fully linked executable files and separately compiled object files as needed."));
2731   set_cmd_completer (c, filename_completer);
2732
2733   c = add_cmd ("paths", no_class, path_info, _("\
2734 Current search path for finding object files.\n\
2735 $cwd in the path means the current working directory.\n\
2736 This path is equivalent to the $PATH shell variable.  It is a list of\n\
2737 directories, separated by colons.  These directories are searched to find\n\
2738 fully linked executable files and separately compiled object files as needed."),
2739                &showlist);
2740   set_cmd_completer (c, noop_completer);
2741
2742   add_prefix_cmd ("kill", class_run, kill_command,
2743                   _("Kill execution of program being debugged."),
2744                   &killlist, "kill ", 0, &cmdlist);
2745
2746   add_com ("attach", class_run, attach_command, _("\
2747 Attach to a process or file outside of GDB.\n\
2748 This command attaches to another target, of the same type as your last\n\
2749 \"target\" command (\"info files\" will show your target stack).\n\
2750 The command may take as argument a process id or a device file.\n\
2751 For a process id, you must have permission to send the process a signal,\n\
2752 and it must have the same effective uid as the debugger.\n\
2753 When using \"attach\" with a process id, the debugger finds the\n\
2754 program running in the process, looking first in the current working\n\
2755 directory, or (if not found there) using the source file search path\n\
2756 (see the \"directory\" command).  You can also use the \"file\" command\n\
2757 to specify the program, and to load its symbol table."));
2758
2759   add_prefix_cmd ("detach", class_run, detach_command, _("\
2760 Detach a process or file previously attached.\n\
2761 If a process, it is no longer traced, and it continues its execution.  If\n\
2762 you were debugging a file, the file is closed and gdb no longer accesses it."),
2763                   &detachlist, "detach ", 0, &cmdlist);
2764
2765   add_com ("disconnect", class_run, disconnect_command, _("\
2766 Disconnect from a target.\n\
2767 The target will wait for another debugger to connect.  Not available for\n\
2768 all targets."));
2769
2770   add_com ("signal", class_run, signal_command, _("\
2771 Continue program giving it signal specified by the argument.\n\
2772 An argument of \"0\" means continue program without giving it a signal."));
2773
2774   add_com ("stepi", class_run, stepi_command, _("\
2775 Step one instruction exactly.\n\
2776 Argument N means do this N times (or till program stops for another reason)."));
2777   add_com_alias ("si", "stepi", class_alias, 0);
2778
2779   add_com ("nexti", class_run, nexti_command, _("\
2780 Step one instruction, but proceed through subroutine calls.\n\
2781 Argument N means do this N times (or till program stops for another reason)."));
2782   add_com_alias ("ni", "nexti", class_alias, 0);
2783
2784   add_com ("finish", class_run, finish_command, _("\
2785 Execute until selected stack frame returns.\n\
2786 Upon return, the value returned is printed and put in the value history."));
2787   add_com_alias ("fin", "finish", class_run, 1);
2788
2789   add_com ("next", class_run, next_command, _("\
2790 Step program, proceeding through subroutine calls.\n\
2791 Like the \"step\" command as long as subroutine calls do not happen;\n\
2792 when they do, the call is treated as one instruction.\n\
2793 Argument N means do this N times (or till program stops for another reason)."));
2794   add_com_alias ("n", "next", class_run, 1);
2795   if (xdb_commands)
2796     add_com_alias ("S", "next", class_run, 1);
2797
2798   add_com ("step", class_run, step_command, _("\
2799 Step program until it reaches a different source line.\n\
2800 Argument N means do this N times (or till program stops for another reason)."));
2801   add_com_alias ("s", "step", class_run, 1);
2802
2803   c = add_com ("until", class_run, until_command, _("\
2804 Execute until the program reaches a source line greater than the current\n\
2805 or a specified location (same args as break command) within the current frame."));
2806   set_cmd_completer (c, location_completer);
2807   add_com_alias ("u", "until", class_run, 1);
2808
2809   c = add_com ("advance", class_run, advance_command, _("\
2810 Continue the program up to the given location (same form as args for break command).\n\
2811 Execution will also stop upon exit from the current stack frame."));
2812   set_cmd_completer (c, location_completer);
2813
2814   c = add_com ("jump", class_run, jump_command, _("\
2815 Continue program being debugged at specified line or address.\n\
2816 Give as argument either LINENUM or *ADDR, where ADDR is an expression\n\
2817 for an address to start at."));
2818   set_cmd_completer (c, location_completer);
2819
2820   if (xdb_commands)
2821     {
2822       c = add_com ("go", class_run, go_command, _("\
2823 Usage: go <location>\n\
2824 Continue program being debugged, stopping at specified line or \n\
2825 address.\n\
2826 Give as argument either LINENUM or *ADDR, where ADDR is an \n\
2827 expression for an address to start at.\n\
2828 This command is a combination of tbreak and jump."));
2829       set_cmd_completer (c, location_completer);
2830     }
2831
2832   if (xdb_commands)
2833     add_com_alias ("g", "go", class_run, 1);
2834
2835   c = add_com ("continue", class_run, continue_command, _("\
2836 Continue program being debugged, after signal or breakpoint.\n\
2837 If proceeding from breakpoint, a number N may be used as an argument,\n\
2838 which means to set the ignore count of that breakpoint to N - 1 (so that\n\
2839 the breakpoint won't break until the Nth time it is reached).\n\
2840 \n\
2841 If non-stop mode is enabled, continue only the current thread,\n\
2842 otherwise all the threads in the program are continued.  To \n\
2843 continue all stopped threads in non-stop mode, use the -a option.\n\
2844 Specifying -a and an ignore count simultaneously is an error."));
2845   add_com_alias ("c", "cont", class_run, 1);
2846   add_com_alias ("fg", "cont", class_run, 1);
2847
2848   c = add_com ("run", class_run, run_command, _("\
2849 Start debugged program.  You may specify arguments to give it.\n\
2850 Args may include \"*\", or \"[...]\"; they are expanded using \"sh\".\n\
2851 Input and output redirection with \">\", \"<\", or \">>\" are also allowed.\n\n\
2852 With no arguments, uses arguments last specified (with \"run\" or \"set args\").\n\
2853 To cancel previous arguments and run with no arguments,\n\
2854 use \"set args\" without arguments."));
2855   set_cmd_completer (c, filename_completer);
2856   add_com_alias ("r", "run", class_run, 1);
2857   if (xdb_commands)
2858     add_com ("R", class_run, run_no_args_command,
2859              _("Start debugged program with no arguments."));
2860
2861   c = add_com ("start", class_run, start_command, _("\
2862 Run the debugged program until the beginning of the main procedure.\n\
2863 You may specify arguments to give to your program, just as with the\n\
2864 \"run\" command."));
2865   set_cmd_completer (c, filename_completer);
2866
2867   c = add_com ("interrupt", class_run, interrupt_target_command,
2868                _("Interrupt the execution of the debugged program.\n\
2869 If non-stop mode is enabled, interrupt only the current thread,\n\
2870 otherwise all the threads in the program are stopped.  To \n\
2871 interrupt all running threads in non-stop mode, use the -a option."));
2872
2873   add_info ("registers", nofp_registers_info, _("\
2874 List of integer registers and their contents, for selected stack frame.\n\
2875 Register name as argument means describe only that register."));
2876   add_info_alias ("r", "registers", 1);
2877
2878   if (xdb_commands)
2879     add_com ("lr", class_info, nofp_registers_info, _("\
2880 List of integer registers and their contents, for selected stack frame.\n\
2881 Register name as argument means describe only that register."));
2882   add_info ("all-registers", all_registers_info, _("\
2883 List of all registers and their contents, for selected stack frame.\n\
2884 Register name as argument means describe only that register."));
2885
2886   add_info ("program", program_info,
2887             _("Execution status of the program."));
2888
2889   add_info ("float", float_info,
2890             _("Print the status of the floating point unit\n"));
2891
2892   add_info ("vector", vector_info,
2893             _("Print the status of the vector unit\n"));
2894 }