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