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