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