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