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