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