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