daily update
[deliverable/binutils-gdb.git] / gdb / infcmd.c
CommitLineData
c906108c 1/* Memory-access and commands for "inferior" process, for GDB.
b6ba6518 2 Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
e74f0f02 3 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
c906108c
SS
4 Free Software Foundation, Inc.
5
c5aa993b 6 This file is part of GDB.
c906108c 7
c5aa993b
JM
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
c906108c 12
c5aa993b
JM
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
c906108c 17
c5aa993b
JM
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330,
21 Boston, MA 02111-1307, USA. */
c906108c
SS
22
23#include "defs.h"
24#include <signal.h>
25#include "gdb_string.h"
26#include "symtab.h"
27#include "gdbtypes.h"
28#include "frame.h"
29#include "inferior.h"
30#include "environ.h"
31#include "value.h"
32#include "gdbcmd.h"
1adeb98a 33#include "symfile.h"
c906108c
SS
34#include "gdbcore.h"
35#include "target.h"
36#include "language.h"
37#include "symfile.h"
38#include "objfiles.h"
c94fdfd0 39#include "completer.h"
8b93c638 40#include "ui-out.h"
6426a772 41#include "event-top.h"
96baa820 42#include "parser-defs.h"
36160dc4 43#include "regcache.h"
f9418c0f 44#include "reggroups.h"
fe898f56 45#include "block.h"
f9418c0f 46#include <ctype.h>
92ad9cd9 47#include "gdb_assert.h"
72cec141 48
a58dd373 49/* Functions exported for general use, in inferior.h: */
c906108c 50
a14ed312 51void all_registers_info (char *, int);
c906108c 52
a14ed312 53void registers_info (char *, int);
c906108c 54
a58dd373
EZ
55void nexti_command (char *, int);
56
57void stepi_command (char *, int);
c906108c 58
a14ed312 59void continue_command (char *, int);
c906108c 60
a58dd373
EZ
61void interrupt_target_command (char *args, int from_tty);
62
63/* Local functions: */
64
65static void nofp_registers_info (char *, int);
66
11cf8741
JM
67static void print_return_value (int struct_return, struct type *value_type);
68
a14ed312 69static void finish_command_continuation (struct continuation_arg *);
43ff13b4 70
a14ed312 71static void until_next_command (int);
c906108c 72
a14ed312 73static void until_command (char *, int);
c906108c 74
a14ed312 75static void path_info (char *, int);
c906108c 76
a14ed312 77static void path_command (char *, int);
c906108c 78
a14ed312 79static void unset_command (char *, int);
c906108c 80
a14ed312 81static void float_info (char *, int);
c906108c 82
a14ed312 83static void detach_command (char *, int);
c906108c 84
6ad8ae5c
DJ
85static void disconnect_command (char *, int);
86
a14ed312 87static void unset_environment_command (char *, int);
c906108c 88
a14ed312 89static void set_environment_command (char *, int);
c906108c 90
a14ed312 91static void environment_info (char *, int);
c906108c 92
a14ed312 93static void program_info (char *, int);
c906108c 94
a14ed312 95static void finish_command (char *, int);
c906108c 96
a14ed312 97static void signal_command (char *, int);
c906108c 98
a14ed312 99static void jump_command (char *, int);
c906108c 100
a14ed312 101static void step_1 (int, int, char *);
c2d11a7d
JM
102static void step_once (int skip_subroutines, int single_inst, int count);
103static void step_1_continuation (struct continuation_arg *arg);
c906108c 104
a14ed312 105static void next_command (char *, int);
c906108c 106
a14ed312 107static void step_command (char *, int);
c906108c 108
a14ed312 109static void run_command (char *, int);
c906108c 110
a14ed312 111static void run_no_args_command (char *args, int from_tty);
392a587b 112
a14ed312 113static void go_command (char *line_no, int from_tty);
392a587b 114
a14ed312 115static int strip_bg_char (char **);
43ff13b4 116
a14ed312 117void _initialize_infcmd (void);
c906108c
SS
118
119#define GO_USAGE "Usage: go <location>\n"
120
c906108c
SS
121#define ERROR_NO_INFERIOR \
122 if (!target_has_execution) error ("The program is not being run.");
123
124/* String containing arguments to give to the program, separated by spaces.
125 Empty string (pointer to '\0') means no args. */
126
127static char *inferior_args;
128
552c04a7
TT
129/* The inferior arguments as a vector. If INFERIOR_ARGC is nonzero,
130 then we must compute INFERIOR_ARGS from this (via the target). */
131
132static int inferior_argc;
133static char **inferior_argv;
134
c906108c
SS
135/* File name for default use for standard in/out in the inferior. */
136
137char *inferior_io_terminal;
138
139/* Pid of our debugged inferior, or 0 if no inferior now.
140 Since various parts of infrun.c test this to see whether there is a program
141 being debugged it should be nonzero (currently 3 is used) for remote
142 debugging. */
143
39f77062 144ptid_t inferior_ptid;
c906108c
SS
145
146/* Last signal that the inferior received (why it stopped). */
147
148enum target_signal stop_signal;
149
150/* Address at which inferior stopped. */
151
152CORE_ADDR stop_pc;
153
154/* Chain containing status of breakpoint(s) that we have stopped at. */
155
156bpstat stop_bpstat;
157
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
176/* Range to single step within.
177 If this is nonzero, respond to a single-step signal
178 by continuing to step if the pc is in this range. */
179
c5aa993b
JM
180CORE_ADDR step_range_start; /* Inclusive */
181CORE_ADDR step_range_end; /* Exclusive */
c906108c
SS
182
183/* Stack frame address as of when stepping command was issued.
184 This is how we know when we step into a subroutine call,
185 and how to set the frame for the breakpoint used to step out. */
186
aa0cd9c1 187struct frame_id step_frame_id;
c906108c 188
5fbbeb29 189enum step_over_calls_kind step_over_calls;
c906108c
SS
190
191/* If stepping, nonzero means step count is > 1
192 so don't print frame next time inferior stops
193 if it stops due to stepping. */
194
195int step_multi;
196
197/* Environment to use for running inferior,
198 in format described in environ.h. */
199
200struct environ *inferior_environ;
c906108c 201\f
07091751
FN
202/* Accessor routines. */
203
204char *
205get_inferior_args (void)
206{
552c04a7
TT
207 if (inferior_argc != 0)
208 {
209 char *n, *old;
210
211 n = gdbarch_construct_inferior_arguments (current_gdbarch,
212 inferior_argc, inferior_argv);
213 old = set_inferior_args (n);
214 xfree (old);
215 }
216
217 if (inferior_args == NULL)
218 inferior_args = xstrdup ("");
219
07091751
FN
220 return inferior_args;
221}
222
223char *
224set_inferior_args (char *newargs)
225{
226 char *saved_args = inferior_args;
227
228 inferior_args = newargs;
552c04a7
TT
229 inferior_argc = 0;
230 inferior_argv = 0;
07091751
FN
231
232 return saved_args;
233}
c5aa993b 234
552c04a7
TT
235void
236set_inferior_args_vector (int argc, char **argv)
237{
238 inferior_argc = argc;
239 inferior_argv = argv;
240}
241
242/* Notice when `set args' is run. */
243static void
244notice_args_set (char *args, int from_tty, struct cmd_list_element *c)
245{
246 inferior_argc = 0;
247 inferior_argv = 0;
248}
249
250/* Notice when `show args' is run. */
251static void
9f60d481 252notice_args_read (char *args, int from_tty, struct cmd_list_element *c)
552c04a7
TT
253{
254 /* Might compute the value. */
255 get_inferior_args ();
256}
257
c2a727fa
TT
258\f
259/* Compute command-line string given argument vector. This does the
260 same shell processing as fork_inferior. */
c2a727fa
TT
261char *
262construct_inferior_arguments (struct gdbarch *gdbarch, int argc, char **argv)
263{
264 char *result;
265
266 if (STARTUP_WITH_SHELL)
267 {
268 /* This holds all the characters considered special to the
269 typical Unix shells. We include `^' because the SunOS
270 /bin/sh treats it as a synonym for `|'. */
271 char *special = "\"!#$&*()\\|[]{}<>?'\"`~^; \t\n";
272 int i;
273 int length = 0;
274 char *out, *cp;
275
276 /* We over-compute the size. It shouldn't matter. */
277 for (i = 0; i < argc; ++i)
03c6228e 278 length += 2 * strlen (argv[i]) + 1 + 2 * (argv[i][0] == '\0');
c2a727fa
TT
279
280 result = (char *) xmalloc (length);
281 out = result;
282
283 for (i = 0; i < argc; ++i)
284 {
285 if (i > 0)
286 *out++ = ' ';
287
03c6228e
AS
288 /* Need to handle empty arguments specially. */
289 if (argv[i][0] == '\0')
c2a727fa 290 {
03c6228e
AS
291 *out++ = '\'';
292 *out++ = '\'';
293 }
294 else
295 {
296 for (cp = argv[i]; *cp; ++cp)
297 {
298 if (strchr (special, *cp) != NULL)
299 *out++ = '\\';
300 *out++ = *cp;
301 }
c2a727fa
TT
302 }
303 }
304 *out = '\0';
305 }
306 else
307 {
308 /* In this case we can't handle arguments that contain spaces,
309 tabs, or newlines -- see breakup_args(). */
310 int i;
311 int length = 0;
312
313 for (i = 0; i < argc; ++i)
314 {
315 char *cp = strchr (argv[i], ' ');
316 if (cp == NULL)
317 cp = strchr (argv[i], '\t');
318 if (cp == NULL)
319 cp = strchr (argv[i], '\n');
320 if (cp != NULL)
321 error ("can't handle command-line argument containing whitespace");
322 length += strlen (argv[i]) + 1;
323 }
324
325 result = (char *) xmalloc (length);
326 result[0] = '\0';
327 for (i = 0; i < argc; ++i)
328 {
329 if (i > 0)
330 strcat (result, " ");
331 strcat (result, argv[i]);
332 }
333 }
334
335 return result;
336}
552c04a7
TT
337\f
338
43ff13b4
JM
339/* This function detects whether or not a '&' character (indicating
340 background execution) has been added as *the last* of the arguments ARGS
341 of a command. If it has, it removes it and returns 1. Otherwise it
342 does nothing and returns 0. */
c5aa993b 343static int
fba45db2 344strip_bg_char (char **args)
43ff13b4
JM
345{
346 char *p = NULL;
c5aa993b 347
9846de1b 348 p = strchr (*args, '&');
c5aa993b 349
9846de1b 350 if (p)
43ff13b4
JM
351 {
352 if (p == (*args + strlen (*args) - 1))
353 {
c5aa993b 354 if (strlen (*args) > 1)
43ff13b4
JM
355 {
356 do
357 p--;
358 while (*p == ' ' || *p == '\t');
359 *(p + 1) = '\0';
360 }
361 else
362 *args = 0;
363 return 1;
364 }
365 }
366 return 0;
367}
368
c906108c 369void
fba45db2 370tty_command (char *file, int from_tty)
c906108c
SS
371{
372 if (file == 0)
373 error_no_arg ("terminal name for running target process");
374
375 inferior_io_terminal = savestring (file, strlen (file));
376}
377
378static void
fba45db2 379run_command (char *args, int from_tty)
c906108c
SS
380{
381 char *exec_file;
382
383 dont_repeat ();
384
39f77062 385 if (! ptid_equal (inferior_ptid, null_ptid) && target_has_execution)
c906108c 386 {
adf40b2e
JM
387 if (from_tty
388 && !query ("The program being debugged has been started already.\n\
c906108c
SS
389Start it from the beginning? "))
390 error ("Program not restarted.");
391 target_kill ();
392#if defined(SOLIB_RESTART)
393 SOLIB_RESTART ();
394#endif
395 init_wait_for_inferior ();
396 }
397
398 clear_breakpoint_hit_counts ();
399
c906108c
SS
400 /* Purge old solib objfiles. */
401 objfile_purge_solibs ();
402
403 do_run_cleanups (NULL);
404
39ad761d
JB
405 /* The comment here used to read, "The exec file is re-read every
406 time we do a generic_mourn_inferior, so we just have to worry
407 about the symbol file." The `generic_mourn_inferior' function
408 gets called whenever the program exits. However, suppose the
409 program exits, and *then* the executable file changes? We need
410 to check again here. Since reopen_exec_file doesn't do anything
411 if the timestamp hasn't changed, I don't see the harm. */
412 reopen_exec_file ();
c906108c
SS
413 reread_symbols ();
414
39ad761d
JB
415 exec_file = (char *) get_exec_file (0);
416
c906108c
SS
417 /* We keep symbols from add-symbol-file, on the grounds that the
418 user might want to add some symbols before running the program
419 (right?). But sometimes (dynamic loading where the user manually
420 introduces the new symbols with add-symbol-file), the code which
421 the symbols describe does not persist between runs. Currently
422 the user has to manually nuke all symbols between runs if they
423 want them to go away (PR 2207). This is probably reasonable. */
424
43ff13b4 425 if (!args)
6426a772
JM
426 {
427 if (event_loop_p && target_can_async_p ())
428 async_disable_stdin ();
429 }
43ff13b4 430 else
c906108c 431 {
43ff13b4
JM
432 int async_exec = strip_bg_char (&args);
433
434 /* If we get a request for running in the bg but the target
435 doesn't support it, error out. */
6426a772 436 if (event_loop_p && async_exec && !target_can_async_p ())
43ff13b4
JM
437 error ("Asynchronous execution not supported on this target.");
438
439 /* If we don't get a request of running in the bg, then we need
c5aa993b 440 to simulate synchronous (fg) execution. */
6426a772 441 if (event_loop_p && !async_exec && target_can_async_p ())
43ff13b4
JM
442 {
443 /* Simulate synchronous execution */
6426a772 444 async_disable_stdin ();
43ff13b4
JM
445 }
446
447 /* If there were other args, beside '&', process them. */
448 if (args)
449 {
07091751
FN
450 char *old_args = set_inferior_args (xstrdup (args));
451 xfree (old_args);
43ff13b4 452 }
c906108c
SS
453 }
454
455 if (from_tty)
456 {
8b93c638
JM
457 ui_out_field_string (uiout, NULL, "Starting program");
458 ui_out_text (uiout, ": ");
459 if (exec_file)
460 ui_out_field_string (uiout, "execfile", exec_file);
461 ui_out_spaces (uiout, 1);
552c04a7
TT
462 /* We call get_inferior_args() because we might need to compute
463 the value now. */
464 ui_out_field_string (uiout, "infargs", get_inferior_args ());
8b93c638
JM
465 ui_out_text (uiout, "\n");
466 ui_out_flush (uiout);
c906108c
SS
467 }
468
552c04a7
TT
469 /* We call get_inferior_args() because we might need to compute
470 the value now. */
471 target_create_inferior (exec_file, get_inferior_args (),
c906108c
SS
472 environ_vector (inferior_environ));
473}
474
475
476static void
fba45db2 477run_no_args_command (char *args, int from_tty)
c906108c 478{
07091751
FN
479 char *old_args = set_inferior_args (xstrdup (""));
480 xfree (old_args);
c906108c 481}
c906108c 482\f
c5aa993b 483
c906108c 484void
fba45db2 485continue_command (char *proc_count_exp, int from_tty)
c906108c 486{
c5aa993b 487 int async_exec = 0;
c906108c
SS
488 ERROR_NO_INFERIOR;
489
43ff13b4
JM
490 /* Find out whether we must run in the background. */
491 if (proc_count_exp != NULL)
492 async_exec = strip_bg_char (&proc_count_exp);
493
494 /* If we must run in the background, but the target can't do it,
495 error out. */
6426a772 496 if (event_loop_p && async_exec && !target_can_async_p ())
43ff13b4
JM
497 error ("Asynchronous execution not supported on this target.");
498
499 /* If we are not asked to run in the bg, then prepare to run in the
500 foreground, synchronously. */
6426a772 501 if (event_loop_p && !async_exec && target_can_async_p ())
c5aa993b 502 {
43ff13b4 503 /* Simulate synchronous execution */
6426a772 504 async_disable_stdin ();
43ff13b4 505 }
c906108c 506
43ff13b4
JM
507 /* If have argument (besides '&'), set proceed count of breakpoint
508 we stopped at. */
c906108c
SS
509 if (proc_count_exp != NULL)
510 {
511 bpstat bs = stop_bpstat;
512 int num = bpstat_num (&bs);
513 if (num == 0 && from_tty)
514 {
515 printf_filtered
516 ("Not stopped at any breakpoint; argument ignored.\n");
517 }
518 while (num != 0)
519 {
520 set_ignore_count (num,
bb518678 521 parse_and_eval_long (proc_count_exp) - 1,
c906108c
SS
522 from_tty);
523 /* set_ignore_count prints a message ending with a period.
524 So print two spaces before "Continuing.". */
525 if (from_tty)
526 printf_filtered (" ");
527 num = bpstat_num (&bs);
528 }
529 }
530
531 if (from_tty)
532 printf_filtered ("Continuing.\n");
533
534 clear_proceed_status ();
535
2acceee2 536 proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0);
c906108c
SS
537}
538\f
539/* Step until outside of current statement. */
540
c906108c 541static void
fba45db2 542step_command (char *count_string, int from_tty)
c906108c
SS
543{
544 step_1 (0, 0, count_string);
545}
546
547/* Likewise, but skip over subroutine calls as if single instructions. */
548
c906108c 549static void
fba45db2 550next_command (char *count_string, int from_tty)
c906108c
SS
551{
552 step_1 (1, 0, count_string);
553}
554
555/* Likewise, but step only one instruction. */
556
c906108c 557void
fba45db2 558stepi_command (char *count_string, int from_tty)
c906108c
SS
559{
560 step_1 (0, 1, count_string);
561}
562
c906108c 563void
fba45db2 564nexti_command (char *count_string, int from_tty)
c906108c
SS
565{
566 step_1 (1, 1, count_string);
567}
568
74b7792f
AC
569static void
570disable_longjmp_breakpoint_cleanup (void *ignore)
571{
572 disable_longjmp_breakpoint ();
573}
574
c906108c 575static void
fba45db2 576step_1 (int skip_subroutines, int single_inst, char *count_string)
c906108c 577{
52f0bd74 578 int count = 1;
c906108c
SS
579 struct frame_info *frame;
580 struct cleanup *cleanups = 0;
43ff13b4 581 int async_exec = 0;
c5aa993b 582
c906108c 583 ERROR_NO_INFERIOR;
43ff13b4
JM
584
585 if (count_string)
586 async_exec = strip_bg_char (&count_string);
c5aa993b 587
43ff13b4
JM
588 /* If we get a request for running in the bg but the target
589 doesn't support it, error out. */
6426a772 590 if (event_loop_p && async_exec && !target_can_async_p ())
43ff13b4
JM
591 error ("Asynchronous execution not supported on this target.");
592
593 /* If we don't get a request of running in the bg, then we need
594 to simulate synchronous (fg) execution. */
6426a772 595 if (event_loop_p && !async_exec && target_can_async_p ())
43ff13b4
JM
596 {
597 /* Simulate synchronous execution */
6426a772 598 async_disable_stdin ();
43ff13b4
JM
599 }
600
bb518678 601 count = count_string ? parse_and_eval_long (count_string) : 1;
c906108c 602
c5aa993b 603 if (!single_inst || skip_subroutines) /* leave si command alone */
c906108c 604 {
c5aa993b 605 enable_longjmp_breakpoint ();
c2d11a7d 606 if (!event_loop_p || !target_can_async_p ())
74b7792f 607 cleanups = make_cleanup (disable_longjmp_breakpoint_cleanup, 0 /*ignore*/);
c2d11a7d 608 else
74b7792f 609 make_exec_cleanup (disable_longjmp_breakpoint_cleanup, 0 /*ignore*/);
c2d11a7d
JM
610 }
611
612 /* In synchronous case, all is well, just use the regular for loop. */
613 if (!event_loop_p || !target_can_async_p ())
614 {
615 for (; count > 0; count--)
616 {
617 clear_proceed_status ();
618
619 frame = get_current_frame ();
620 if (!frame) /* Avoid coredump here. Why tho? */
621 error ("No current frame");
aa0cd9c1 622 step_frame_id = get_frame_id (frame);
c2d11a7d
JM
623
624 if (!single_inst)
625 {
626 find_pc_line_pc_range (stop_pc, &step_range_start, &step_range_end);
627 if (step_range_end == 0)
628 {
629 char *name;
630 if (find_pc_partial_function (stop_pc, &name, &step_range_start,
631 &step_range_end) == 0)
632 error ("Cannot find bounds of current function");
633
634 target_terminal_ours ();
635 printf_filtered ("\
636Single stepping until exit from function %s, \n\
637which has no line number information.\n", name);
638 }
639 }
640 else
641 {
642 /* Say we are stepping, but stop after one insn whatever it does. */
643 step_range_start = step_range_end = 1;
644 if (!skip_subroutines)
645 /* It is stepi.
646 Don't step over function calls, not even to functions lacking
647 line numbers. */
5fbbeb29 648 step_over_calls = STEP_OVER_NONE;
c2d11a7d
JM
649 }
650
651 if (skip_subroutines)
5fbbeb29 652 step_over_calls = STEP_OVER_ALL;
c2d11a7d
JM
653
654 step_multi = (count > 1);
655 proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1);
656
657 if (!stop_step)
658 break;
c2d11a7d
JM
659 }
660
661 if (!single_inst || skip_subroutines)
662 do_cleanups (cleanups);
663 return;
664 }
665 /* In case of asynchronous target things get complicated, do only
666 one step for now, before returning control to the event loop. Let
667 the continuation figure out how many other steps we need to do,
668 and handle them one at the time, through step_once(). */
669 else
670 {
671 if (event_loop_p && target_can_async_p ())
672 step_once (skip_subroutines, single_inst, count);
c906108c 673 }
c2d11a7d 674}
c906108c 675
c2d11a7d
JM
676/* Called after we are done with one step operation, to check whether
677 we need to step again, before we print the prompt and return control
678 to the user. If count is > 1, we will need to do one more call to
679 proceed(), via step_once(). Basically it is like step_once and
680 step_1_continuation are co-recursive. */
681static void
fba45db2 682step_1_continuation (struct continuation_arg *arg)
c2d11a7d 683{
57e687d9
MS
684 int count;
685 int skip_subroutines;
686 int single_inst;
687
688 skip_subroutines = arg->data.integer;
689 single_inst = arg->next->data.integer;
690 count = arg->next->next->data.integer;
691
692 if (stop_step)
e74f0f02 693 step_once (skip_subroutines, single_inst, count - 1);
57e687d9
MS
694 else
695 if (!single_inst || skip_subroutines)
696 do_exec_cleanups (ALL_CLEANUPS);
c2d11a7d
JM
697}
698
699/* Do just one step operation. If count >1 we will have to set up a
700 continuation to be done after the target stops (after this one
701 step). This is useful to implement the 'step n' kind of commands, in
702 case of asynchronous targets. We had to split step_1 into two parts,
703 one to be done before proceed() and one afterwards. This function is
704 called in case of step n with n>1, after the first step operation has
705 been completed.*/
706static void
0d06e24b 707step_once (int skip_subroutines, int single_inst, int count)
c2d11a7d 708{
0d06e24b
JM
709 struct continuation_arg *arg1;
710 struct continuation_arg *arg2;
711 struct continuation_arg *arg3;
712 struct frame_info *frame;
c2d11a7d
JM
713
714 if (count > 0)
c906108c
SS
715 {
716 clear_proceed_status ();
717
718 frame = get_current_frame ();
c5aa993b 719 if (!frame) /* Avoid coredump here. Why tho? */
c906108c 720 error ("No current frame");
aa0cd9c1 721 step_frame_id = get_frame_id (frame);
c906108c 722
c5aa993b 723 if (!single_inst)
c906108c
SS
724 {
725 find_pc_line_pc_range (stop_pc, &step_range_start, &step_range_end);
5fbbeb29
CF
726
727 /* If we have no line info, switch to stepi mode. */
728 if (step_range_end == 0 && step_stop_if_no_debug)
729 {
730 step_range_start = step_range_end = 1;
731 }
732 else if (step_range_end == 0)
c906108c
SS
733 {
734 char *name;
735 if (find_pc_partial_function (stop_pc, &name, &step_range_start,
736 &step_range_end) == 0)
737 error ("Cannot find bounds of current function");
738
739 target_terminal_ours ();
740 printf_filtered ("\
741Single stepping until exit from function %s, \n\
742which has no line number information.\n", name);
743 }
744 }
745 else
746 {
747 /* Say we are stepping, but stop after one insn whatever it does. */
748 step_range_start = step_range_end = 1;
749 if (!skip_subroutines)
750 /* It is stepi.
751 Don't step over function calls, not even to functions lacking
752 line numbers. */
5fbbeb29 753 step_over_calls = STEP_OVER_NONE;
c906108c
SS
754 }
755
756 if (skip_subroutines)
5fbbeb29 757 step_over_calls = STEP_OVER_ALL;
c906108c
SS
758
759 step_multi = (count > 1);
c2d11a7d
JM
760 arg1 =
761 (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
762 arg2 =
763 (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
764 arg3 =
765 (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
766 arg1->next = arg2;
57e687d9 767 arg1->data.integer = skip_subroutines;
c2d11a7d 768 arg2->next = arg3;
57e687d9 769 arg2->data.integer = single_inst;
c2d11a7d 770 arg3->next = NULL;
57e687d9 771 arg3->data.integer = count;
c2d11a7d 772 add_intermediate_continuation (step_1_continuation, arg1);
2acceee2 773 proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1);
c906108c 774 }
c906108c 775}
c2d11a7d 776
c906108c
SS
777\f
778/* Continue program at specified address. */
779
780static void
fba45db2 781jump_command (char *arg, int from_tty)
c906108c 782{
52f0bd74 783 CORE_ADDR addr;
c906108c
SS
784 struct symtabs_and_lines sals;
785 struct symtab_and_line sal;
786 struct symbol *fn;
787 struct symbol *sfn;
43ff13b4 788 int async_exec = 0;
c5aa993b 789
c906108c
SS
790 ERROR_NO_INFERIOR;
791
43ff13b4
JM
792 /* Find out whether we must run in the background. */
793 if (arg != NULL)
794 async_exec = strip_bg_char (&arg);
795
796 /* If we must run in the background, but the target can't do it,
797 error out. */
6426a772 798 if (event_loop_p && async_exec && !target_can_async_p ())
43ff13b4
JM
799 error ("Asynchronous execution not supported on this target.");
800
801 /* If we are not asked to run in the bg, then prepare to run in the
802 foreground, synchronously. */
6426a772 803 if (event_loop_p && !async_exec && target_can_async_p ())
c5aa993b 804 {
43ff13b4 805 /* Simulate synchronous execution */
6426a772 806 async_disable_stdin ();
43ff13b4
JM
807 }
808
c906108c
SS
809 if (!arg)
810 error_no_arg ("starting address");
811
812 sals = decode_line_spec_1 (arg, 1);
813 if (sals.nelts != 1)
814 {
815 error ("Unreasonable jump request");
816 }
817
818 sal = sals.sals[0];
b8c9b27d 819 xfree (sals.sals);
c906108c
SS
820
821 if (sal.symtab == 0 && sal.pc == 0)
822 error ("No source file has been specified.");
823
c5aa993b 824 resolve_sal_pc (&sal); /* May error out */
c906108c
SS
825
826 /* See if we are trying to jump to another function. */
827 fn = get_frame_function (get_current_frame ());
828 sfn = find_pc_function (sal.pc);
829 if (fn != NULL && sfn != fn)
830 {
831 if (!query ("Line %d is not in `%s'. Jump anyway? ", sal.line,
de5ad195 832 SYMBOL_PRINT_NAME (fn)))
c906108c
SS
833 {
834 error ("Not confirmed.");
835 /* NOTREACHED */
836 }
837 }
838
c5aa993b 839 if (sfn != NULL)
c906108c
SS
840 {
841 fixup_symbol_section (sfn, 0);
c5aa993b 842 if (section_is_overlay (SYMBOL_BFD_SECTION (sfn)) &&
c906108c
SS
843 !section_is_mapped (SYMBOL_BFD_SECTION (sfn)))
844 {
845 if (!query ("WARNING!!! Destination is in unmapped overlay! Jump anyway? "))
846 {
847 error ("Not confirmed.");
848 /* NOTREACHED */
849 }
850 }
851 }
852
c906108c
SS
853 addr = sal.pc;
854
855 if (from_tty)
856 {
857 printf_filtered ("Continuing at ");
858 print_address_numeric (addr, 1, gdb_stdout);
859 printf_filtered (".\n");
860 }
861
862 clear_proceed_status ();
863 proceed (addr, TARGET_SIGNAL_0, 0);
864}
c906108c 865\f
c5aa993b 866
c906108c
SS
867/* Go to line or address in current procedure */
868static void
fba45db2 869go_command (char *line_no, int from_tty)
c906108c 870{
c5aa993b 871 if (line_no == (char *) NULL || !*line_no)
b83266a0 872 printf_filtered (GO_USAGE);
c906108c
SS
873 else
874 {
b83266a0
SS
875 tbreak_command (line_no, from_tty);
876 jump_command (line_no, from_tty);
c906108c
SS
877 }
878}
c906108c 879\f
c5aa993b 880
c906108c
SS
881/* Continue program giving it specified signal. */
882
883static void
fba45db2 884signal_command (char *signum_exp, int from_tty)
c906108c
SS
885{
886 enum target_signal oursig;
887
888 dont_repeat (); /* Too dangerous. */
889 ERROR_NO_INFERIOR;
890
891 if (!signum_exp)
892 error_no_arg ("signal number");
893
894 /* It would be even slicker to make signal names be valid expressions,
895 (the type could be "enum $signal" or some such), then the user could
896 assign them to convenience variables. */
897 oursig = target_signal_from_name (signum_exp);
898
899 if (oursig == TARGET_SIGNAL_UNKNOWN)
900 {
901 /* No, try numeric. */
bb518678 902 int num = parse_and_eval_long (signum_exp);
c906108c
SS
903
904 if (num == 0)
905 oursig = TARGET_SIGNAL_0;
906 else
907 oursig = target_signal_from_command (num);
908 }
909
910 if (from_tty)
911 {
912 if (oursig == TARGET_SIGNAL_0)
913 printf_filtered ("Continuing with no signal.\n");
914 else
915 printf_filtered ("Continuing with signal %s.\n",
916 target_signal_to_name (oursig));
917 }
918
919 clear_proceed_status ();
920 /* "signal 0" should not get stuck if we are stopped at a breakpoint.
921 FIXME: Neither should "signal foo" but when I tried passing
922 (CORE_ADDR)-1 unconditionally I got a testsuite failure which I haven't
923 tried to track down yet. */
2acceee2 924 proceed (oursig == TARGET_SIGNAL_0 ? (CORE_ADDR) -1 : stop_pc, oursig, 0);
c906108c
SS
925}
926
c906108c
SS
927/* Proceed until we reach a different source line with pc greater than
928 our current one or exit the function. We skip calls in both cases.
929
930 Note that eventually this command should probably be changed so
931 that only source lines are printed out when we hit the breakpoint
932 we set. This may involve changes to wait_for_inferior and the
933 proceed status code. */
934
c906108c 935static void
fba45db2 936until_next_command (int from_tty)
c906108c
SS
937{
938 struct frame_info *frame;
939 CORE_ADDR pc;
940 struct symbol *func;
941 struct symtab_and_line sal;
c5aa993b 942
c906108c
SS
943 clear_proceed_status ();
944
945 frame = get_current_frame ();
946
947 /* Step until either exited from this function or greater
948 than the current line (if in symbolic section) or pc (if
949 not). */
950
951 pc = read_pc ();
952 func = find_pc_function (pc);
c5aa993b 953
c906108c
SS
954 if (!func)
955 {
956 struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (pc);
c5aa993b 957
c906108c
SS
958 if (msymbol == NULL)
959 error ("Execution is not within a known function.");
c5aa993b 960
c906108c
SS
961 step_range_start = SYMBOL_VALUE_ADDRESS (msymbol);
962 step_range_end = pc;
963 }
964 else
965 {
966 sal = find_pc_line (pc, 0);
c5aa993b 967
c906108c
SS
968 step_range_start = BLOCK_START (SYMBOL_BLOCK_VALUE (func));
969 step_range_end = sal.end;
970 }
c5aa993b 971
5fbbeb29 972 step_over_calls = STEP_OVER_ALL;
aa0cd9c1 973 step_frame_id = get_frame_id (frame);
c906108c
SS
974
975 step_multi = 0; /* Only one call to proceed */
c5aa993b 976
2acceee2 977 proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1);
c906108c
SS
978}
979
c5aa993b 980static void
fba45db2 981until_command (char *arg, int from_tty)
c906108c 982{
43ff13b4
JM
983 int async_exec = 0;
984
c906108c
SS
985 if (!target_has_execution)
986 error ("The program is not running.");
43ff13b4
JM
987
988 /* Find out whether we must run in the background. */
989 if (arg != NULL)
990 async_exec = strip_bg_char (&arg);
991
992 /* If we must run in the background, but the target can't do it,
993 error out. */
6426a772 994 if (event_loop_p && async_exec && !target_can_async_p ())
43ff13b4
JM
995 error ("Asynchronous execution not supported on this target.");
996
997 /* If we are not asked to run in the bg, then prepare to run in the
998 foreground, synchronously. */
6426a772 999 if (event_loop_p && !async_exec && target_can_async_p ())
c5aa993b 1000 {
43ff13b4 1001 /* Simulate synchronous execution */
6426a772 1002 async_disable_stdin ();
43ff13b4
JM
1003 }
1004
c906108c 1005 if (arg)
ae66c1fc 1006 until_break_command (arg, from_tty, 0);
c906108c
SS
1007 else
1008 until_next_command (from_tty);
1009}
ae66c1fc
EZ
1010
1011static void
1012advance_command (char *arg, int from_tty)
1013{
1014 int async_exec = 0;
1015
1016 if (!target_has_execution)
1017 error ("The program is not running.");
1018
1019 if (arg == NULL)
1020 error_no_arg ("a location");
1021
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. */
1028 if (event_loop_p && async_exec && !target_can_async_p ())
1029 error ("Asynchronous execution not supported on this target.");
1030
1031 /* If we are not asked to run in the bg, then prepare to run in the
1032 foreground, synchronously. */
1033 if (event_loop_p && !async_exec && target_can_async_p ())
1034 {
1035 /* Simulate synchronous execution. */
1036 async_disable_stdin ();
1037 }
1038
1039 until_break_command (arg, from_tty, 1);
1040}
c906108c 1041\f
43ff13b4 1042
31db7b6c
MK
1043static struct value *
1044legacy_return_value (int struct_return, struct type *value_type)
1045{
1046 struct value *value;
1047
1048 if (!struct_return)
1049 {
1050 /* The return value can be found in the inferior's registers. */
1051 return register_value_being_returned (value_type, stop_registers);
1052 }
1053
1054 if (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P ())
1055 {
1056 CORE_ADDR addr;
1057
1058 addr = DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS (stop_registers);
1059 if (!addr)
1060 error ("Function return value unknown.");
1061 return value_at (value_type, addr, NULL);
1062 }
1063
1064 /* It is "struct return" yet the value is being extracted,
1065 presumably from registers, using EXTRACT_RETURN_VALUE. This
1066 doesn't make sense. Unfortunately, the legacy interfaces allowed
1067 this behavior. Sigh! */
1068 value = allocate_value (value_type);
1069 CHECK_TYPEDEF (value_type);
1070 /* If the function returns void, don't bother fetching the return
1071 value. */
1072 EXTRACT_RETURN_VALUE (value_type, stop_registers,
1073 VALUE_CONTENTS_RAW (value));
1074 return value;
1075}
1076
f941662f
MK
1077/* Print the result of a function at the end of a 'finish' command. */
1078
11cf8741 1079static void
bb472c1e 1080print_return_value (int struct_return, struct type *value_type)
11cf8741 1081{
31db7b6c 1082 struct gdbarch *gdbarch = current_gdbarch;
bb472c1e
MK
1083 struct cleanup *old_chain;
1084 struct ui_stream *stb;
31db7b6c 1085 struct value *value = NULL;
11cf8741 1086
92ad9cd9
AC
1087 /* FIXME: 2003-09-27: When returning from a nested inferior function
1088 call, it's possible (with no help from the architecture vector)
1089 to locate and return/print a "struct return" value. This is just
1090 a more complicated case of what is already being done in in the
1091 inferior function call code. In fact, when inferior function
1092 calls are made async, this will likely be made the norm. */
31db7b6c
MK
1093
1094 if (gdbarch_return_value_p (gdbarch))
92ad9cd9 1095 {
31db7b6c 1096 switch (gdbarch_return_value (gdbarch, value_type, NULL, NULL, NULL))
5fe830e4 1097 {
31db7b6c
MK
1098 case RETURN_VALUE_REGISTER_CONVENTION:
1099 case RETURN_VALUE_ABI_RETURNS_ADDRESS:
5fe830e4
AC
1100 value = allocate_value (value_type);
1101 CHECK_TYPEDEF (value_type);
31db7b6c
MK
1102 gdbarch_return_value (current_gdbarch, value_type, stop_registers,
1103 VALUE_CONTENTS_RAW (value), NULL);
1104 break;
1105
1106 case RETURN_VALUE_STRUCT_CONVENTION:
1107 break;
5fe830e4 1108 }
11cf8741 1109 }
31db7b6c
MK
1110 else
1111 value = legacy_return_value (struct_return, value_type);
bb472c1e 1112
31db7b6c
MK
1113 if (value)
1114 {
1115 /* Print it. */
1116 stb = ui_out_stream_new (uiout);
1117 old_chain = make_cleanup_ui_out_stream_delete (stb);
1118 ui_out_text (uiout, "Value returned is ");
1119 ui_out_field_fmt (uiout, "gdb-result-var", "$%d",
1120 record_latest_value (value));
1121 ui_out_text (uiout, " = ");
1122 value_print (value, stb->stream, 0, Val_no_prettyprint);
1123 ui_out_field_stream (uiout, "return-value", stb);
1124 ui_out_text (uiout, "\n");
1125 do_cleanups (old_chain);
1126 }
1127 else
1128 {
1129 ui_out_text (uiout, "Value returned has type: ");
1130 ui_out_field_string (uiout, "return-type", TYPE_NAME (value_type));
1131 ui_out_text (uiout, ".");
1132 ui_out_text (uiout, " Cannot determine contents\n");
1133 }
11cf8741
JM
1134}
1135
43ff13b4 1136/* Stuff that needs to be done by the finish command after the target
f941662f
MK
1137 has stopped. In asynchronous mode, we wait for the target to stop
1138 in the call to poll or select in the event loop, so it is
1139 impossible to do all the stuff as part of the finish_command
1140 function itself. The only chance we have to complete this command
1141 is in fetch_inferior_event, which is called by the event loop as
1142 soon as it detects that the target has stopped. This function is
1143 called via the cmd_continuation pointer. */
1144
1145static void
fba45db2 1146finish_command_continuation (struct continuation_arg *arg)
43ff13b4 1147{
52f0bd74 1148 struct symbol *function;
43ff13b4 1149 struct breakpoint *breakpoint;
0d06e24b 1150 struct cleanup *cleanups;
c5aa993b 1151
57e687d9 1152 breakpoint = (struct breakpoint *) arg->data.pointer;
f941662f
MK
1153 function = (struct symbol *) arg->next->data.pointer;
1154 cleanups = (struct cleanup *) arg->next->next->data.pointer;
43ff13b4 1155
c5aa993b 1156 if (bpstat_find_breakpoint (stop_bpstat, breakpoint) != NULL
f941662f 1157 && function != NULL)
43ff13b4
JM
1158 {
1159 struct type *value_type;
43ff13b4 1160 int struct_return;
f941662f 1161 int gcc_compiled;
43ff13b4
JM
1162
1163 value_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (function));
1164 if (!value_type)
8e65ff28
AC
1165 internal_error (__FILE__, __LINE__,
1166 "finish_command: function has no target type");
c5aa993b 1167
43ff13b4
JM
1168 if (TYPE_CODE (value_type) == TYPE_CODE_VOID)
1169 {
0d06e24b 1170 do_exec_cleanups (cleanups);
43ff13b4
JM
1171 return;
1172 }
1173
f941662f
MK
1174 CHECK_TYPEDEF (value_type);
1175 gcc_compiled = BLOCK_GCC_COMPILED (SYMBOL_BLOCK_VALUE (function));
1176 struct_return = using_struct_return (value_type, gcc_compiled);
43ff13b4 1177
11cf8741 1178 print_return_value (struct_return, value_type);
43ff13b4 1179 }
f941662f 1180
0d06e24b 1181 do_exec_cleanups (cleanups);
43ff13b4
JM
1182}
1183
f941662f
MK
1184/* "finish": Set a temporary breakpoint at the place the selected
1185 frame will return to, then continue. */
c906108c
SS
1186
1187static void
fba45db2 1188finish_command (char *arg, int from_tty)
c906108c
SS
1189{
1190 struct symtab_and_line sal;
52f0bd74
AC
1191 struct frame_info *frame;
1192 struct symbol *function;
c906108c
SS
1193 struct breakpoint *breakpoint;
1194 struct cleanup *old_chain;
0d06e24b 1195 struct continuation_arg *arg1, *arg2, *arg3;
43ff13b4
JM
1196
1197 int async_exec = 0;
1198
f941662f 1199 /* Find out whether we must run in the background. */
43ff13b4
JM
1200 if (arg != NULL)
1201 async_exec = strip_bg_char (&arg);
1202
1203 /* If we must run in the background, but the target can't do it,
f941662f 1204 error out. */
6426a772 1205 if (event_loop_p && async_exec && !target_can_async_p ())
43ff13b4
JM
1206 error ("Asynchronous execution not supported on this target.");
1207
1208 /* If we are not asked to run in the bg, then prepare to run in the
f941662f 1209 foreground, synchronously. */
6426a772 1210 if (event_loop_p && !async_exec && target_can_async_p ())
c5aa993b 1211 {
f941662f 1212 /* Simulate synchronous execution. */
6426a772 1213 async_disable_stdin ();
43ff13b4 1214 }
c906108c
SS
1215
1216 if (arg)
1217 error ("The \"finish\" command does not take any arguments.");
1218 if (!target_has_execution)
1219 error ("The program is not running.");
6e7f8b9c 1220 if (deprecated_selected_frame == NULL)
c906108c
SS
1221 error ("No selected frame.");
1222
6e7f8b9c 1223 frame = get_prev_frame (deprecated_selected_frame);
c906108c
SS
1224 if (frame == 0)
1225 error ("\"finish\" not meaningful in the outermost frame.");
1226
1227 clear_proceed_status ();
1228
bdd78e62
AC
1229 sal = find_pc_line (get_frame_pc (frame), 0);
1230 sal.pc = get_frame_pc (frame);
c906108c 1231
818dd999 1232 breakpoint = set_momentary_breakpoint (sal, get_frame_id (frame), bp_finish);
c906108c 1233
6426a772 1234 if (!event_loop_p || !target_can_async_p ())
4d6140d9 1235 old_chain = make_cleanup_delete_breakpoint (breakpoint);
43ff13b4 1236 else
4d6140d9 1237 old_chain = make_exec_cleanup_delete_breakpoint (breakpoint);
c906108c
SS
1238
1239 /* Find the function we will return from. */
1240
bdd78e62 1241 function = find_pc_function (get_frame_pc (deprecated_selected_frame));
c906108c 1242
f941662f
MK
1243 /* Print info on the selected frame, including level number but not
1244 source. */
c906108c
SS
1245 if (from_tty)
1246 {
1247 printf_filtered ("Run till exit from ");
0faf0076 1248 print_stack_frame (get_selected_frame (), 1, LOCATION);
c906108c
SS
1249 }
1250
43ff13b4
JM
1251 /* If running asynchronously and the target support asynchronous
1252 execution, set things up for the rest of the finish command to be
1253 completed later on, when gdb has detected that the target has
f941662f 1254 stopped, in fetch_inferior_event. */
6426a772 1255 if (event_loop_p && target_can_async_p ())
43ff13b4 1256 {
c5aa993b 1257 arg1 =
43ff13b4 1258 (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
c5aa993b 1259 arg2 =
43ff13b4 1260 (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
0d06e24b
JM
1261 arg3 =
1262 (struct continuation_arg *) xmalloc (sizeof (struct continuation_arg));
43ff13b4 1263 arg1->next = arg2;
0d06e24b
JM
1264 arg2->next = arg3;
1265 arg3->next = NULL;
57e687d9
MS
1266 arg1->data.pointer = breakpoint;
1267 arg2->data.pointer = function;
1268 arg3->data.pointer = old_chain;
43ff13b4
JM
1269 add_continuation (finish_command_continuation, arg1);
1270 }
1271
f941662f 1272 proceed_to_finish = 1; /* We want stop_registers, please... */
2acceee2 1273 proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0);
c906108c 1274
43ff13b4 1275 /* Do this only if not running asynchronously or if the target
f941662f
MK
1276 cannot do async execution. Otherwise, complete this command when
1277 the target actually stops, in fetch_inferior_event. */
6426a772 1278 if (!event_loop_p || !target_can_async_p ())
c5aa993b 1279 {
f941662f 1280 /* Did we stop at our breakpoint? */
c5aa993b 1281 if (bpstat_find_breakpoint (stop_bpstat, breakpoint) != NULL
f941662f 1282 && function != NULL)
c5aa993b
JM
1283 {
1284 struct type *value_type;
c5aa993b 1285 int struct_return;
f941662f 1286 int gcc_compiled;
c5aa993b
JM
1287
1288 value_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (function));
1289 if (!value_type)
8e65ff28
AC
1290 internal_error (__FILE__, __LINE__,
1291 "finish_command: function has no target type");
c5aa993b 1292
f941662f 1293 /* FIXME: Shouldn't we do the cleanups before returning? */
c5aa993b
JM
1294 if (TYPE_CODE (value_type) == TYPE_CODE_VOID)
1295 return;
1296
f941662f
MK
1297 CHECK_TYPEDEF (value_type);
1298 gcc_compiled = BLOCK_GCC_COMPILED (SYMBOL_BLOCK_VALUE (function));
1299 struct_return = using_struct_return (value_type, gcc_compiled);
c5aa993b 1300
11cf8741 1301 print_return_value (struct_return, value_type);
c5aa993b 1302 }
f941662f 1303
c5aa993b
JM
1304 do_cleanups (old_chain);
1305 }
c906108c
SS
1306}
1307\f
f941662f 1308
c906108c 1309static void
fba45db2 1310program_info (char *args, int from_tty)
c906108c
SS
1311{
1312 bpstat bs = stop_bpstat;
1313 int num = bpstat_num (&bs);
c5aa993b 1314
c906108c
SS
1315 if (!target_has_execution)
1316 {
1317 printf_filtered ("The program being debugged is not being run.\n");
1318 return;
1319 }
1320
1321 target_files_info ();
1322 printf_filtered ("Program stopped at %s.\n",
c5aa993b 1323 local_hex_string ((unsigned long) stop_pc));
c906108c
SS
1324 if (stop_step)
1325 printf_filtered ("It stopped after being stepped.\n");
1326 else if (num != 0)
1327 {
1328 /* There may be several breakpoints in the same place, so this
c5aa993b 1329 isn't as strange as it seems. */
c906108c
SS
1330 while (num != 0)
1331 {
1332 if (num < 0)
1333 {
1334 printf_filtered ("It stopped at a breakpoint that has ");
1335 printf_filtered ("since been deleted.\n");
1336 }
1337 else
1338 printf_filtered ("It stopped at breakpoint %d.\n", num);
1339 num = bpstat_num (&bs);
1340 }
1341 }
1342 else if (stop_signal != TARGET_SIGNAL_0)
1343 {
1344 printf_filtered ("It stopped with signal %s, %s.\n",
1345 target_signal_to_name (stop_signal),
1346 target_signal_to_string (stop_signal));
1347 }
1348
1349 if (!from_tty)
1350 {
1351 printf_filtered ("Type \"info stack\" or \"info registers\" ");
1352 printf_filtered ("for more information.\n");
1353 }
1354}
1355\f
1356static void
fba45db2 1357environment_info (char *var, int from_tty)
c906108c
SS
1358{
1359 if (var)
1360 {
aa1ee363 1361 char *val = get_in_environ (inferior_environ, var);
c906108c
SS
1362 if (val)
1363 {
1364 puts_filtered (var);
1365 puts_filtered (" = ");
1366 puts_filtered (val);
1367 puts_filtered ("\n");
1368 }
1369 else
1370 {
1371 puts_filtered ("Environment variable \"");
1372 puts_filtered (var);
1373 puts_filtered ("\" not defined.\n");
1374 }
1375 }
1376 else
1377 {
aa1ee363 1378 char **vector = environ_vector (inferior_environ);
c906108c
SS
1379 while (*vector)
1380 {
1381 puts_filtered (*vector++);
1382 puts_filtered ("\n");
1383 }
1384 }
1385}
1386
1387static void
fba45db2 1388set_environment_command (char *arg, int from_tty)
c906108c 1389{
52f0bd74 1390 char *p, *val, *var;
c906108c
SS
1391 int nullset = 0;
1392
1393 if (arg == 0)
1394 error_no_arg ("environment variable and value");
1395
1396 /* Find seperation between variable name and value */
1397 p = (char *) strchr (arg, '=');
1398 val = (char *) strchr (arg, ' ');
1399
1400 if (p != 0 && val != 0)
1401 {
1402 /* We have both a space and an equals. If the space is before the
c5aa993b
JM
1403 equals, walk forward over the spaces til we see a nonspace
1404 (possibly the equals). */
c906108c
SS
1405 if (p > val)
1406 while (*val == ' ')
1407 val++;
1408
1409 /* Now if the = is after the char following the spaces,
c5aa993b 1410 take the char following the spaces. */
c906108c
SS
1411 if (p > val)
1412 p = val - 1;
1413 }
1414 else if (val != 0 && p == 0)
1415 p = val;
1416
1417 if (p == arg)
1418 error_no_arg ("environment variable to set");
1419
1420 if (p == 0 || p[1] == 0)
1421 {
1422 nullset = 1;
1423 if (p == 0)
1424 p = arg + strlen (arg); /* So that savestring below will work */
1425 }
1426 else
1427 {
1428 /* Not setting variable value to null */
1429 val = p + 1;
1430 while (*val == ' ' || *val == '\t')
1431 val++;
1432 }
1433
c5aa993b
JM
1434 while (p != arg && (p[-1] == ' ' || p[-1] == '\t'))
1435 p--;
c906108c
SS
1436
1437 var = savestring (arg, p - arg);
1438 if (nullset)
1439 {
1440 printf_filtered ("Setting environment variable ");
1441 printf_filtered ("\"%s\" to null value.\n", var);
1442 set_in_environ (inferior_environ, var, "");
1443 }
1444 else
1445 set_in_environ (inferior_environ, var, val);
b8c9b27d 1446 xfree (var);
c906108c
SS
1447}
1448
1449static void
fba45db2 1450unset_environment_command (char *var, int from_tty)
c906108c
SS
1451{
1452 if (var == 0)
1453 {
1454 /* If there is no argument, delete all environment variables.
c5aa993b 1455 Ask for confirmation if reading from the terminal. */
c906108c
SS
1456 if (!from_tty || query ("Delete all environment variables? "))
1457 {
1458 free_environ (inferior_environ);
1459 inferior_environ = make_environ ();
1460 }
1461 }
1462 else
1463 unset_in_environ (inferior_environ, var);
1464}
1465
1466/* Handle the execution path (PATH variable) */
1467
1468static const char path_var_name[] = "PATH";
1469
c906108c 1470static void
fba45db2 1471path_info (char *args, int from_tty)
c906108c
SS
1472{
1473 puts_filtered ("Executable and object file path: ");
1474 puts_filtered (get_in_environ (inferior_environ, path_var_name));
1475 puts_filtered ("\n");
1476}
1477
1478/* Add zero or more directories to the front of the execution path. */
1479
1480static void
fba45db2 1481path_command (char *dirname, int from_tty)
c906108c
SS
1482{
1483 char *exec_path;
1484 char *env;
1485 dont_repeat ();
1486 env = get_in_environ (inferior_environ, path_var_name);
1487 /* Can be null if path is not set */
1488 if (!env)
1489 env = "";
4fcf66da 1490 exec_path = xstrdup (env);
c906108c
SS
1491 mod_path (dirname, &exec_path);
1492 set_in_environ (inferior_environ, path_var_name, exec_path);
b8c9b27d 1493 xfree (exec_path);
c906108c 1494 if (from_tty)
c5aa993b 1495 path_info ((char *) NULL, from_tty);
c906108c 1496}
c906108c 1497\f
c5aa993b 1498
4782dc19 1499/* Print out the machine register regnum. If regnum is -1, print all
0ab7a791
AC
1500 registers (print_all == 1) or all non-float and non-vector
1501 registers (print_all == 0).
c906108c
SS
1502
1503 For most machines, having all_registers_info() print the
0ab7a791
AC
1504 register(s) one per line is good enough. If a different format is
1505 required, (eg, for MIPS or Pyramid 90x, which both have lots of
1506 regs), or there is an existing convention for showing all the
1507 registers, define the architecture method PRINT_REGISTERS_INFO to
1508 provide that format. */
c906108c 1509
666e11c5 1510void
0ab7a791
AC
1511default_print_registers_info (struct gdbarch *gdbarch,
1512 struct ui_file *file,
1513 struct frame_info *frame,
1514 int regnum, int print_all)
c906108c 1515{
0ab7a791
AC
1516 int i;
1517 const int numregs = NUM_REGS + NUM_PSEUDO_REGS;
0c92afe8
AC
1518 char raw_buffer[MAX_REGISTER_SIZE];
1519 char virtual_buffer[MAX_REGISTER_SIZE];
0ab7a791 1520
903ad3a6 1521 if (DEPRECATED_DO_REGISTERS_INFO_P ())
0ab7a791 1522 {
903ad3a6 1523 DEPRECATED_DO_REGISTERS_INFO (regnum, print_all);
0ab7a791
AC
1524 return;
1525 }
c906108c
SS
1526
1527 for (i = 0; i < numregs; i++)
1528 {
4782dc19
AC
1529 /* Decide between printing all regs, non-float / vector regs, or
1530 specific reg. */
c5aa993b
JM
1531 if (regnum == -1)
1532 {
f9418c0f 1533 if (print_all)
4782dc19 1534 {
f9418c0f 1535 if (!gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
4782dc19 1536 continue;
f9418c0f
AC
1537 }
1538 else
1539 {
1540 if (!gdbarch_register_reggroup_p (gdbarch, i, general_reggroup))
4782dc19
AC
1541 continue;
1542 }
c5aa993b
JM
1543 }
1544 else
1545 {
1546 if (i != regnum)
1547 continue;
1548 }
c906108c
SS
1549
1550 /* If the register name is empty, it is undefined for this
c5aa993b 1551 processor, so don't display anything. */
c906108c
SS
1552 if (REGISTER_NAME (i) == NULL || *(REGISTER_NAME (i)) == '\0')
1553 continue;
1554
0ab7a791
AC
1555 fputs_filtered (REGISTER_NAME (i), file);
1556 print_spaces_filtered (15 - strlen (REGISTER_NAME (i)), file);
c906108c
SS
1557
1558 /* Get the data in raw format. */
0ab7a791 1559 if (! frame_register_read (frame, i, raw_buffer))
c906108c 1560 {
0ab7a791 1561 fprintf_filtered (file, "*value not available*\n");
c906108c
SS
1562 continue;
1563 }
1564
0ab7a791
AC
1565 /* FIXME: cagney/2002-08-03: This code shouldn't be necessary.
1566 The function frame_register_read() should have returned the
1567 pre-cooked register so no conversion is necessary. */
c906108c 1568 /* Convert raw data to virtual format if necessary. */
cd0bfa36
AC
1569 if (DEPRECATED_REGISTER_CONVERTIBLE_P ()
1570 && DEPRECATED_REGISTER_CONVERTIBLE (i))
c906108c 1571 {
781a750d 1572 DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL (i, register_type (current_gdbarch, i),
c906108c
SS
1573 raw_buffer, virtual_buffer);
1574 }
1575 else
392a587b
JM
1576 {
1577 memcpy (virtual_buffer, raw_buffer,
f30992d4 1578 DEPRECATED_REGISTER_VIRTUAL_SIZE (i));
392a587b 1579 }
c906108c 1580
0ab7a791
AC
1581 /* If virtual format is floating, print it that way, and in raw
1582 hex. */
7b83296f 1583 if (TYPE_CODE (register_type (current_gdbarch, i)) == TYPE_CODE_FLT)
c906108c 1584 {
0ab7a791 1585 int j;
c906108c 1586
7b83296f 1587 val_print (register_type (current_gdbarch, i), virtual_buffer, 0, 0,
0ab7a791 1588 file, 0, 1, 0, Val_pretty_default);
c906108c 1589
0ab7a791 1590 fprintf_filtered (file, "\t(raw 0x");
12c266ea 1591 for (j = 0; j < DEPRECATED_REGISTER_RAW_SIZE (i); j++)
c906108c 1592 {
0ab7a791
AC
1593 int idx;
1594 if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
1595 idx = j;
1596 else
12c266ea 1597 idx = DEPRECATED_REGISTER_RAW_SIZE (i) - 1 - j;
0ab7a791 1598 fprintf_filtered (file, "%02x", (unsigned char) raw_buffer[idx]);
c906108c 1599 }
0ab7a791 1600 fprintf_filtered (file, ")");
c906108c 1601 }
c906108c
SS
1602 else
1603 {
ab4327e0 1604 /* Print the register in hex. */
7b83296f 1605 val_print (register_type (current_gdbarch, i), virtual_buffer, 0, 0,
9d84ac84 1606 file, 'x', 1, 0, Val_pretty_default);
ab4327e0
EZ
1607 /* If not a vector register, print it also according to its
1608 natural format. */
7b83296f 1609 if (TYPE_VECTOR (register_type (current_gdbarch, i)) == 0)
ab4327e0 1610 {
9d84ac84 1611 fprintf_filtered (file, "\t");
7b83296f 1612 val_print (register_type (current_gdbarch, i), virtual_buffer, 0, 0,
9d84ac84 1613 file, 0, 1, 0, Val_pretty_default);
ab4327e0 1614 }
c906108c
SS
1615 }
1616
0ab7a791 1617 fprintf_filtered (file, "\n");
c906108c
SS
1618 }
1619}
c906108c 1620
c906108c 1621void
fba45db2 1622registers_info (char *addr_exp, int fpregs)
c906108c
SS
1623{
1624 int regnum, numregs;
52f0bd74 1625 char *end;
c906108c
SS
1626
1627 if (!target_has_registers)
1628 error ("The program has no registers now.");
6e7f8b9c 1629 if (deprecated_selected_frame == NULL)
c906108c
SS
1630 error ("No selected frame.");
1631
1632 if (!addr_exp)
1633 {
0ab7a791 1634 gdbarch_print_registers_info (current_gdbarch, gdb_stdout,
6e7f8b9c 1635 deprecated_selected_frame, -1, fpregs);
c906108c
SS
1636 return;
1637 }
1638
f9418c0f 1639 while (*addr_exp != '\0')
c5aa993b 1640 {
f9418c0f
AC
1641 char *start;
1642 const char *end;
c906108c 1643
f9418c0f
AC
1644 /* Keep skipping leading white space. */
1645 if (isspace ((*addr_exp)))
1646 {
1647 addr_exp++;
1648 continue;
1649 }
c906108c 1650
f9418c0f
AC
1651 /* Discard any leading ``$''. Check that there is something
1652 resembling a register following it. */
1653 if (addr_exp[0] == '$')
1654 addr_exp++;
1655 if (isspace ((*addr_exp)) || (*addr_exp) == '\0')
1656 error ("Missing register name");
c906108c 1657
f9418c0f
AC
1658 /* Find the start/end of this register name/num/group. */
1659 start = addr_exp;
1660 while ((*addr_exp) != '\0' && !isspace ((*addr_exp)))
1661 addr_exp++;
1662 end = addr_exp;
1663
1664 /* Figure out what we've found and display it. */
1665
1666 /* A register name? */
1667 {
eb8bc282
AC
1668 int regnum = frame_map_name_to_regnum (deprecated_selected_frame,
1669 start, end - start);
f9418c0f
AC
1670 if (regnum >= 0)
1671 {
1672 gdbarch_print_registers_info (current_gdbarch, gdb_stdout,
6e7f8b9c 1673 deprecated_selected_frame, regnum, fpregs);
f9418c0f
AC
1674 continue;
1675 }
1676 }
1677
1678 /* A register number? (how portable is this one?). */
1679 {
1680 char *endptr;
1681 int regnum = strtol (start, &endptr, 0);
1682 if (endptr == end
1683 && regnum >= 0
1684 && regnum < NUM_REGS + NUM_PSEUDO_REGS)
1685 {
1686 gdbarch_print_registers_info (current_gdbarch, gdb_stdout,
6e7f8b9c 1687 deprecated_selected_frame, regnum, fpregs);
f9418c0f
AC
1688 continue;
1689 }
1690 }
1691
1692 /* A register group? */
1693 {
6c7d17ba
AC
1694 struct reggroup *group;
1695 for (group = reggroup_next (current_gdbarch, NULL);
1696 group != NULL;
1697 group = reggroup_next (current_gdbarch, group))
f9418c0f
AC
1698 {
1699 /* Don't bother with a length check. Should the user
1700 enter a short register group name, go with the first
1701 group that matches. */
6c7d17ba 1702 if (strncmp (start, reggroup_name (group), end - start) == 0)
f9418c0f
AC
1703 break;
1704 }
6c7d17ba 1705 if (group != NULL)
f9418c0f
AC
1706 {
1707 int regnum;
1708 for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
1709 {
1710 if (gdbarch_register_reggroup_p (current_gdbarch, regnum,
6c7d17ba 1711 group))
f9418c0f 1712 gdbarch_print_registers_info (current_gdbarch,
6e7f8b9c 1713 gdb_stdout, deprecated_selected_frame,
f9418c0f
AC
1714 regnum, fpregs);
1715 }
1716 continue;
1717 }
1718 }
c906108c 1719
f9418c0f
AC
1720 /* Nothing matched. */
1721 error ("Invalid register `%.*s'", (int) (end - start), start);
c5aa993b 1722 }
c906108c
SS
1723}
1724
1725void
fba45db2 1726all_registers_info (char *addr_exp, int from_tty)
c906108c
SS
1727{
1728 registers_info (addr_exp, 1);
1729}
1730
a58dd373 1731static void
fba45db2 1732nofp_registers_info (char *addr_exp, int from_tty)
c906108c
SS
1733{
1734 registers_info (addr_exp, 0);
1735}
e76f1f2e
AC
1736
1737static void
1738print_vector_info (struct gdbarch *gdbarch, struct ui_file *file,
1739 struct frame_info *frame, const char *args)
1740{
e71ecd70
MK
1741 if (!target_has_registers)
1742 error ("The program has no registers now.");
6e7f8b9c 1743 if (deprecated_selected_frame == NULL)
e71ecd70
MK
1744 error ("No selected frame.");
1745
e76f1f2e
AC
1746 if (gdbarch_print_vector_info_p (gdbarch))
1747 gdbarch_print_vector_info (gdbarch, file, frame, args);
1748 else
1749 {
1750 int regnum;
1751 int printed_something = 0;
ab4327e0 1752
e76f1f2e
AC
1753 for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
1754 {
f9418c0f 1755 if (gdbarch_register_reggroup_p (gdbarch, regnum, vector_reggroup))
e76f1f2e
AC
1756 {
1757 printed_something = 1;
e76f1f2e 1758 gdbarch_print_registers_info (gdbarch, file, frame, regnum, 1);
e76f1f2e
AC
1759 }
1760 }
1761 if (!printed_something)
1762 fprintf_filtered (file, "No vector information\n");
1763 }
1764}
1765
1766static void
1767vector_info (char *args, int from_tty)
1768{
6e7f8b9c 1769 print_vector_info (current_gdbarch, gdb_stdout, deprecated_selected_frame, args);
e76f1f2e 1770}
c906108c 1771\f
c5aa993b 1772
c906108c
SS
1773/*
1774 * TODO:
1775 * Should save/restore the tty state since it might be that the
1776 * program to be debugged was started on this tty and it wants
1777 * the tty in some state other than what we want. If it's running
1778 * on another terminal or without a terminal, then saving and
1779 * restoring the tty state is a harmless no-op.
1780 * This only needs to be done if we are attaching to a process.
1781 */
1782
1783/*
1784 attach_command --
1785 takes a program started up outside of gdb and ``attaches'' to it.
1786 This stops it cold in its tracks and allows us to start debugging it.
1787 and wait for the trace-trap that results from attaching. */
1788
1789void
fba45db2 1790attach_command (char *args, int from_tty)
c906108c 1791{
c5aa993b
JM
1792 char *exec_file;
1793 char *full_exec_path = NULL;
c906108c 1794
c5aa993b 1795 dont_repeat (); /* Not for the faint of heart */
c906108c
SS
1796
1797 if (target_has_execution)
1798 {
1799 if (query ("A program is being debugged already. Kill it? "))
1800 target_kill ();
1801 else
1802 error ("Not killed.");
1803 }
1804
1805 target_attach (args, from_tty);
1806
1807 /* Set up the "saved terminal modes" of the inferior
1808 based on what modes we are starting it with. */
1809 target_terminal_init ();
1810
1811 /* Install inferior's terminal modes. */
1812 target_terminal_inferior ();
1813
1814 /* Set up execution context to know that we should return from
1815 wait_for_inferior as soon as the target reports a stop. */
1816 init_wait_for_inferior ();
1817 clear_proceed_status ();
c906108c
SS
1818
1819 /* No traps are generated when attaching to inferior under Mach 3
1820 or GNU hurd. */
1821#ifndef ATTACH_NO_WAIT
c54cfec8
EZ
1822 /* Careful here. See comments in inferior.h. Basically some OSes
1823 don't ignore SIGSTOPs on continue requests anymore. We need a
1824 way for handle_inferior_event to reset the stop_signal variable
1825 after an attach, and this is what STOP_QUIETLY_NO_SIGSTOP is for. */
c0236d92 1826 stop_soon = STOP_QUIETLY_NO_SIGSTOP;
c906108c 1827 wait_for_inferior ();
c0236d92 1828 stop_soon = NO_STOP_QUIETLY;
c906108c
SS
1829#endif
1830
1831 /*
1832 * If no exec file is yet known, try to determine it from the
1833 * process itself.
1834 */
1835 exec_file = (char *) get_exec_file (0);
c5aa993b
JM
1836 if (!exec_file)
1837 {
39f77062 1838 exec_file = target_pid_to_exec_file (PIDGET (inferior_ptid));
c5aa993b
JM
1839 if (exec_file)
1840 {
1841 /* It's possible we don't have a full path, but rather just a
1842 filename. Some targets, such as HP-UX, don't provide the
1843 full path, sigh.
1844
1845 Attempt to qualify the filename against the source path.
1846 (If that fails, we'll just fall back on the original
1847 filename. Not much more we can do...)
1848 */
1849 if (!source_full_path_of (exec_file, &full_exec_path))
1850 full_exec_path = savestring (exec_file, strlen (exec_file));
1851
1852 exec_file_attach (full_exec_path, from_tty);
1adeb98a 1853 symbol_file_add_main (full_exec_path, from_tty);
c5aa993b 1854 }
c906108c 1855 }
63ed89b4
DJ
1856 else
1857 {
1858 reopen_exec_file ();
1859 reread_symbols ();
1860 }
c906108c
SS
1861
1862#ifdef SOLIB_ADD
990f9fe3
FF
1863 /* Add shared library symbols from the newly attached process, if any. */
1864 SOLIB_ADD ((char *) 0, from_tty, &current_target, auto_solib_add);
1865 re_enable_breakpoints_in_shlibs ();
c906108c
SS
1866#endif
1867
1868 /* Take any necessary post-attaching actions for this platform.
c5aa993b 1869 */
39f77062 1870 target_post_attach (PIDGET (inferior_ptid));
c906108c
SS
1871
1872 normal_stop ();
6426a772 1873
9a4105ab
AC
1874 if (deprecated_attach_hook)
1875 deprecated_attach_hook ();
c906108c
SS
1876}
1877
1878/*
1879 * detach_command --
1880 * takes a program previously attached to and detaches it.
1881 * The program resumes execution and will no longer stop
1882 * on signals, etc. We better not have left any breakpoints
1883 * in the program or it'll die when it hits one. For this
1884 * to work, it may be necessary for the process to have been
1885 * previously attached. It *might* work if the program was
1886 * started via the normal ptrace (PTRACE_TRACEME).
1887 */
1888
1889static void
fba45db2 1890detach_command (char *args, int from_tty)
c906108c 1891{
c5aa993b 1892 dont_repeat (); /* Not for the faint of heart */
c906108c
SS
1893 target_detach (args, from_tty);
1894#if defined(SOLIB_RESTART)
1895 SOLIB_RESTART ();
1896#endif
9a4105ab
AC
1897 if (deprecated_detach_hook)
1898 deprecated_detach_hook ();
c906108c
SS
1899}
1900
6ad8ae5c
DJ
1901/* Disconnect from the current target without resuming it (leaving it
1902 waiting for a debugger).
1903
1904 We'd better not have left any breakpoints in the program or the
1905 next debugger will get confused. Currently only supported for some
1906 remote targets, since the normal attach mechanisms don't work on
1907 stopped processes on some native platforms (e.g. GNU/Linux). */
1908
1909static void
1910disconnect_command (char *args, int from_tty)
1911{
1912 dont_repeat (); /* Not for the faint of heart */
1913 target_disconnect (args, from_tty);
1914#if defined(SOLIB_RESTART)
1915 SOLIB_RESTART ();
1916#endif
9a4105ab
AC
1917 if (deprecated_detach_hook)
1918 deprecated_detach_hook ();
6ad8ae5c
DJ
1919}
1920
43ff13b4
JM
1921/* Stop the execution of the target while running in async mode, in
1922 the backgound. */
8b93c638 1923void
fba45db2 1924interrupt_target_command (char *args, int from_tty)
43ff13b4 1925{
6426a772 1926 if (event_loop_p && target_can_async_p ())
43ff13b4 1927 {
c5aa993b 1928 dont_repeat (); /* Not for the faint of heart */
43ff13b4
JM
1929 target_stop ();
1930 }
1931}
1932
c906108c 1933static void
23e3a7ac
AC
1934print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
1935 struct frame_info *frame, const char *args)
c906108c 1936{
e71ecd70
MK
1937 if (!target_has_registers)
1938 error ("The program has no registers now.");
6e7f8b9c 1939 if (deprecated_selected_frame == NULL)
e71ecd70
MK
1940 error ("No selected frame.");
1941
23e3a7ac
AC
1942 if (gdbarch_print_float_info_p (gdbarch))
1943 gdbarch_print_float_info (gdbarch, file, frame, args);
1944 else
1945 {
23e3a7ac
AC
1946 int regnum;
1947 int printed_something = 0;
ab4327e0 1948
23e3a7ac
AC
1949 for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
1950 {
f9418c0f 1951 if (gdbarch_register_reggroup_p (gdbarch, regnum, float_reggroup))
23e3a7ac
AC
1952 {
1953 printed_something = 1;
23e3a7ac 1954 gdbarch_print_registers_info (gdbarch, file, frame, regnum, 1);
23e3a7ac
AC
1955 }
1956 }
1957 if (!printed_something)
1958 fprintf_filtered (file, "\
1959No floating-point info available for this processor.\n");
23e3a7ac
AC
1960 }
1961}
1962
1963static void
1964float_info (char *args, int from_tty)
1965{
6e7f8b9c 1966 print_float_info (current_gdbarch, gdb_stdout, deprecated_selected_frame, args);
c906108c
SS
1967}
1968\f
c906108c 1969static void
fba45db2 1970unset_command (char *args, int from_tty)
c906108c
SS
1971{
1972 printf_filtered ("\"unset\" must be followed by the name of ");
1973 printf_filtered ("an unset subcommand.\n");
1974 help_list (unsetlist, "unset ", -1, gdb_stdout);
1975}
1976
1977void
fba45db2 1978_initialize_infcmd (void)
c906108c
SS
1979{
1980 struct cmd_list_element *c;
c5aa993b 1981
c94fdfd0
EZ
1982 c = add_com ("tty", class_run, tty_command,
1983 "Set terminal for future runs of program being debugged.");
5ba2abeb 1984 set_cmd_completer (c, filename_completer);
c906108c 1985
fa58ee11
EZ
1986 c = add_set_cmd ("args", class_run, var_string_noescape,
1987 (char *) &inferior_args,
1988 "Set argument list to give program being debugged when it is started.\n\
c906108c 1989Follow this command with any number of args, to be passed to the program.",
fa58ee11 1990 &setlist);
5ba2abeb 1991 set_cmd_completer (c, filename_completer);
9f60d481 1992 set_cmd_sfunc (c, notice_args_set);
552c04a7 1993 c = add_show_from_set (c, &showlist);
9f60d481 1994 set_cmd_sfunc (c, notice_args_read);
c906108c
SS
1995
1996 c = add_cmd
1997 ("environment", no_class, environment_info,
1998 "The environment to give the program, or one variable's value.\n\
1999With an argument VAR, prints the value of environment variable VAR to\n\
2000give the program being debugged. With no arguments, prints the entire\n\
2001environment to be given to the program.", &showlist);
5ba2abeb 2002 set_cmd_completer (c, noop_completer);
c906108c
SS
2003
2004 add_prefix_cmd ("unset", no_class, unset_command,
d4654627 2005 "Complement to certain \"set\" commands.",
c906108c 2006 &unsetlist, "unset ", 0, &cmdlist);
c5aa993b 2007
c906108c 2008 c = add_cmd ("environment", class_run, unset_environment_command,
c5aa993b 2009 "Cancel environment variable VAR for the program.\n\
c906108c 2010This does not affect the program until the next \"run\" command.",
c5aa993b 2011 &unsetlist);
5ba2abeb 2012 set_cmd_completer (c, noop_completer);
c906108c
SS
2013
2014 c = add_cmd ("environment", class_run, set_environment_command,
2015 "Set environment variable value to give the program.\n\
2016Arguments are VAR VALUE where VAR is variable name and VALUE is value.\n\
2017VALUES of environment variables are uninterpreted strings.\n\
2018This does not affect the program until the next \"run\" command.",
c5aa993b 2019 &setlist);
5ba2abeb 2020 set_cmd_completer (c, noop_completer);
c5aa993b 2021
fa58ee11
EZ
2022 c = add_com ("path", class_files, path_command,
2023 "Add directory DIR(s) to beginning of search path for object files.\n\
c906108c
SS
2024$cwd in the path means the current working directory.\n\
2025This path is equivalent to the $PATH shell variable. It is a list of\n\
2026directories, separated by colons. These directories are searched to find\n\
2027fully linked executable files and separately compiled object files as needed.");
5ba2abeb 2028 set_cmd_completer (c, filename_completer);
c906108c
SS
2029
2030 c = add_cmd ("paths", no_class, path_info,
c5aa993b 2031 "Current search path for finding object files.\n\
c906108c
SS
2032$cwd in the path means the current working directory.\n\
2033This path is equivalent to the $PATH shell variable. It is a list of\n\
2034directories, separated by colons. These directories are searched to find\n\
2035fully linked executable files and separately compiled object files as needed.",
2036 &showlist);
5ba2abeb 2037 set_cmd_completer (c, noop_completer);
c906108c 2038
c5aa993b
JM
2039 add_com ("attach", class_run, attach_command,
2040 "Attach to a process or file outside of GDB.\n\
c906108c
SS
2041This command attaches to another target, of the same type as your last\n\
2042\"target\" command (\"info files\" will show your target stack).\n\
2043The command may take as argument a process id or a device file.\n\
2044For a process id, you must have permission to send the process a signal,\n\
2045and it must have the same effective uid as the debugger.\n\
2046When using \"attach\" with a process id, the debugger finds the\n\
2047program running in the process, looking first in the current working\n\
2048directory, or (if not found there) using the source file search path\n\
2049(see the \"directory\" command). You can also use the \"file\" command\n\
2050to specify the program, and to load its symbol table.");
2051
2052 add_com ("detach", class_run, detach_command,
2053 "Detach a process or file previously attached.\n\
2054If a process, it is no longer traced, and it continues its execution. If\n\
2055you were debugging a file, the file is closed and gdb no longer accesses it.");
2056
6ad8ae5c
DJ
2057 add_com ("disconnect", class_run, disconnect_command,
2058 "Disconnect from a target.\n\
2059The target will wait for another debugger to connect. Not available for\n\
2060all targets.");
2061
c906108c
SS
2062 add_com ("signal", class_run, signal_command,
2063 "Continue program giving it signal specified by the argument.\n\
2064An argument of \"0\" means continue program without giving it a signal.");
2065
2066 add_com ("stepi", class_run, stepi_command,
2067 "Step one instruction exactly.\n\
2068Argument N means do this N times (or till program stops for another reason).");
2069 add_com_alias ("si", "stepi", class_alias, 0);
2070
2071 add_com ("nexti", class_run, nexti_command,
2072 "Step one instruction, but proceed through subroutine calls.\n\
2073Argument N means do this N times (or till program stops for another reason).");
2074 add_com_alias ("ni", "nexti", class_alias, 0);
2075
2076 add_com ("finish", class_run, finish_command,
2077 "Execute until selected stack frame returns.\n\
2078Upon return, the value returned is printed and put in the value history.");
2079
2080 add_com ("next", class_run, next_command,
2081 "Step program, proceeding through subroutine calls.\n\
2082Like the \"step\" command as long as subroutine calls do not happen;\n\
2083when they do, the call is treated as one instruction.\n\
2084Argument N means do this N times (or till program stops for another reason).");
2085 add_com_alias ("n", "next", class_run, 1);
2086 if (xdb_commands)
c5aa993b 2087 add_com_alias ("S", "next", class_run, 1);
c906108c
SS
2088
2089 add_com ("step", class_run, step_command,
2090 "Step program until it reaches a different source line.\n\
2091Argument N means do this N times (or till program stops for another reason).");
2092 add_com_alias ("s", "step", class_run, 1);
2093
c94fdfd0
EZ
2094 c = add_com ("until", class_run, until_command,
2095 "Execute until the program reaches a source line greater than the current\n\
ae66c1fc 2096or a specified location (same args as break command) within the current frame.");
5ba2abeb 2097 set_cmd_completer (c, location_completer);
c906108c 2098 add_com_alias ("u", "until", class_run, 1);
c5aa993b 2099
ae66c1fc
EZ
2100 c = add_com ("advance", class_run, advance_command,
2101 "Continue the program up to the given location (same form as args for break command).\n\
2102Execution will also stop upon exit from the current stack frame.");
2103 set_cmd_completer (c, location_completer);
2104
c94fdfd0
EZ
2105 c = add_com ("jump", class_run, jump_command,
2106 "Continue program being debugged at specified line or address.\n\
c906108c
SS
2107Give as argument either LINENUM or *ADDR, where ADDR is an expression\n\
2108for an address to start at.");
5ba2abeb 2109 set_cmd_completer (c, location_completer);
c906108c 2110
b83266a0 2111 if (xdb_commands)
c94fdfd0
EZ
2112 {
2113 c = add_com ("go", class_run, go_command,
2114 "Usage: go <location>\n\
c906108c
SS
2115Continue program being debugged, stopping at specified line or \n\
2116address.\n\
2117Give as argument either LINENUM or *ADDR, where ADDR is an \n\
2118expression for an address to start at.\n\
2119This command is a combination of tbreak and jump.");
5ba2abeb 2120 set_cmd_completer (c, location_completer);
c94fdfd0 2121 }
b83266a0 2122
c906108c 2123 if (xdb_commands)
c5aa993b 2124 add_com_alias ("g", "go", class_run, 1);
c906108c
SS
2125
2126 add_com ("continue", class_run, continue_command,
2127 "Continue program being debugged, after signal or breakpoint.\n\
2128If proceeding from breakpoint, a number N may be used as an argument,\n\
2129which means to set the ignore count of that breakpoint to N - 1 (so that\n\
2130the breakpoint won't break until the Nth time it is reached).");
2131 add_com_alias ("c", "cont", class_run, 1);
2132 add_com_alias ("fg", "cont", class_run, 1);
2133
fa58ee11 2134 c = add_com ("run", class_run, run_command,
c906108c
SS
2135 "Start debugged program. You may specify arguments to give it.\n\
2136Args may include \"*\", or \"[...]\"; they are expanded using \"sh\".\n\
2137Input and output redirection with \">\", \"<\", or \">>\" are also allowed.\n\n\
2138With no arguments, uses arguments last specified (with \"run\" or \"set args\").\n\
2139To cancel previous arguments and run with no arguments,\n\
2140use \"set args\" without arguments.");
5ba2abeb 2141 set_cmd_completer (c, filename_completer);
c906108c
SS
2142 add_com_alias ("r", "run", class_run, 1);
2143 if (xdb_commands)
2144 add_com ("R", class_run, run_no_args_command,
c5aa993b 2145 "Start debugged program with no arguments.");
c906108c 2146
43ff13b4
JM
2147 add_com ("interrupt", class_run, interrupt_target_command,
2148 "Interrupt the execution of the debugged program.");
2149
c906108c 2150 add_info ("registers", nofp_registers_info,
c5aa993b 2151 "List of integer registers and their contents, for selected stack frame.\n\
c906108c 2152Register name as argument means describe only that register.");
7194c49b 2153 add_info_alias ("r", "registers", 1);
c906108c
SS
2154
2155 if (xdb_commands)
c5aa993b
JM
2156 add_com ("lr", class_info, nofp_registers_info,
2157 "List of integer registers and their contents, for selected stack frame.\n\
c906108c
SS
2158 Register name as argument means describe only that register.");
2159 add_info ("all-registers", all_registers_info,
c5aa993b 2160 "List of all registers and their contents, for selected stack frame.\n\
c906108c
SS
2161Register name as argument means describe only that register.");
2162
2163 add_info ("program", program_info,
2164 "Execution status of the program.");
2165
2166 add_info ("float", float_info,
2167 "Print the status of the floating point unit\n");
2168
e76f1f2e
AC
2169 add_info ("vector", vector_info,
2170 "Print the status of the vector unit\n");
2171
c906108c
SS
2172 inferior_environ = make_environ ();
2173 init_environ (inferior_environ);
2174}
This page took 0.493102 seconds and 4 git commands to generate.