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