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