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