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