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