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