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