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