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