Enable styling by default on Cygwin
[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 /* If we still have other inferiors to debug, then don't mess with
2515 with their threads. */
2516 if (!have_inferiors ())
2517 {
2518 init_thread_list (); /* Destroy thread info. */
2519
2520 /* Killing off the inferior can leave us with a core file. If
2521 so, print the state we are left in. */
2522 if (target_has_stack)
2523 {
2524 printf_filtered (_("In %s,\n"), target_longname);
2525 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2526 }
2527 }
2528 bfd_cache_close_all ();
2529 }
2530
2531 /* Used in `attach&' command. Proceed threads of inferior INF iff
2532 they stopped due to debugger request, and when they did, they
2533 reported a clean stop (GDB_SIGNAL_0). Do not proceed threads that
2534 have been explicitly been told to stop. */
2535
2536 static void
2537 proceed_after_attach (inferior *inf)
2538 {
2539 /* Don't error out if the current thread is running, because
2540 there may be other stopped threads. */
2541
2542 /* Backup current thread and selected frame. */
2543 scoped_restore_current_thread restore_thread;
2544
2545 for (thread_info *thread : inf->non_exited_threads ())
2546 if (!thread->executing
2547 && !thread->stop_requested
2548 && thread->suspend.stop_signal == GDB_SIGNAL_0)
2549 {
2550 switch_to_thread (thread);
2551 clear_proceed_status (0);
2552 proceed ((CORE_ADDR) -1, GDB_SIGNAL_DEFAULT);
2553 }
2554 }
2555
2556 /* See inferior.h. */
2557
2558 void
2559 setup_inferior (int from_tty)
2560 {
2561 struct inferior *inferior;
2562
2563 inferior = current_inferior ();
2564 inferior->needs_setup = 0;
2565
2566 /* If no exec file is yet known, try to determine it from the
2567 process itself. */
2568 if (get_exec_file (0) == NULL)
2569 exec_file_locate_attach (inferior_ptid.pid (), 1, from_tty);
2570 else
2571 {
2572 reopen_exec_file ();
2573 reread_symbols ();
2574 }
2575
2576 /* Take any necessary post-attaching actions for this platform. */
2577 target_post_attach (inferior_ptid.pid ());
2578
2579 post_create_inferior (current_top_target (), from_tty);
2580 }
2581
2582 /* What to do after the first program stops after attaching. */
2583 enum attach_post_wait_mode
2584 {
2585 /* Do nothing. Leaves threads as they are. */
2586 ATTACH_POST_WAIT_NOTHING,
2587
2588 /* Re-resume threads that are marked running. */
2589 ATTACH_POST_WAIT_RESUME,
2590
2591 /* Stop all threads. */
2592 ATTACH_POST_WAIT_STOP,
2593 };
2594
2595 /* Called after we've attached to a process and we've seen it stop for
2596 the first time. If ASYNC_EXEC is true, re-resume threads that
2597 should be running. Else if ATTACH, */
2598
2599 static void
2600 attach_post_wait (const char *args, int from_tty, enum attach_post_wait_mode mode)
2601 {
2602 struct inferior *inferior;
2603
2604 inferior = current_inferior ();
2605 inferior->control.stop_soon = NO_STOP_QUIETLY;
2606
2607 if (inferior->needs_setup)
2608 setup_inferior (from_tty);
2609
2610 if (mode == ATTACH_POST_WAIT_RESUME)
2611 {
2612 /* The user requested an `attach&', so be sure to leave threads
2613 that didn't get a signal running. */
2614
2615 /* Immediatelly resume all suspended threads of this inferior,
2616 and this inferior only. This should have no effect on
2617 already running threads. If a thread has been stopped with a
2618 signal, leave it be. */
2619 if (non_stop)
2620 proceed_after_attach (inferior);
2621 else
2622 {
2623 if (inferior_thread ()->suspend.stop_signal == GDB_SIGNAL_0)
2624 {
2625 clear_proceed_status (0);
2626 proceed ((CORE_ADDR) -1, GDB_SIGNAL_DEFAULT);
2627 }
2628 }
2629 }
2630 else if (mode == ATTACH_POST_WAIT_STOP)
2631 {
2632 /* The user requested a plain `attach', so be sure to leave
2633 the inferior stopped. */
2634
2635 /* At least the current thread is already stopped. */
2636
2637 /* In all-stop, by definition, all threads have to be already
2638 stopped at this point. In non-stop, however, although the
2639 selected thread is stopped, others may still be executing.
2640 Be sure to explicitly stop all threads of the process. This
2641 should have no effect on already stopped threads. */
2642 if (non_stop)
2643 target_stop (ptid_t (inferior->pid));
2644 else if (target_is_non_stop_p ())
2645 {
2646 struct thread_info *lowest = inferior_thread ();
2647
2648 stop_all_threads ();
2649
2650 /* It's not defined which thread will report the attach
2651 stop. For consistency, always select the thread with
2652 lowest GDB number, which should be the main thread, if it
2653 still exists. */
2654 for (thread_info *thread : current_inferior ()->non_exited_threads ())
2655 if (thread->inf->num < lowest->inf->num
2656 || thread->per_inf_num < lowest->per_inf_num)
2657 lowest = thread;
2658
2659 switch_to_thread (lowest);
2660 }
2661
2662 /* Tell the user/frontend where we're stopped. */
2663 normal_stop ();
2664 if (deprecated_attach_hook)
2665 deprecated_attach_hook ();
2666 }
2667 }
2668
2669 struct attach_command_continuation_args
2670 {
2671 char *args;
2672 int from_tty;
2673 enum attach_post_wait_mode mode;
2674 };
2675
2676 static void
2677 attach_command_continuation (void *args, int err)
2678 {
2679 struct attach_command_continuation_args *a
2680 = (struct attach_command_continuation_args *) args;
2681
2682 if (err)
2683 return;
2684
2685 attach_post_wait (a->args, a->from_tty, a->mode);
2686 }
2687
2688 static void
2689 attach_command_continuation_free_args (void *args)
2690 {
2691 struct attach_command_continuation_args *a
2692 = (struct attach_command_continuation_args *) args;
2693
2694 xfree (a->args);
2695 xfree (a);
2696 }
2697
2698 /* "attach" command entry point. Takes a program started up outside
2699 of gdb and ``attaches'' to it. This stops it cold in its tracks
2700 and allows us to start debugging it. */
2701
2702 void
2703 attach_command (const char *args, int from_tty)
2704 {
2705 int async_exec;
2706 struct target_ops *attach_target;
2707 struct inferior *inferior = current_inferior ();
2708 enum attach_post_wait_mode mode;
2709
2710 dont_repeat (); /* Not for the faint of heart */
2711
2712 if (gdbarch_has_global_solist (target_gdbarch ()))
2713 /* Don't complain if all processes share the same symbol
2714 space. */
2715 ;
2716 else if (target_has_execution)
2717 {
2718 if (query (_("A program is being debugged already. Kill it? ")))
2719 target_kill ();
2720 else
2721 error (_("Not killed."));
2722 }
2723
2724 /* Clean up any leftovers from other runs. Some other things from
2725 this function should probably be moved into target_pre_inferior. */
2726 target_pre_inferior (from_tty);
2727
2728 gdb::unique_xmalloc_ptr<char> stripped = strip_bg_char (args, &async_exec);
2729 args = stripped.get ();
2730
2731 attach_target = find_attach_target ();
2732
2733 prepare_execution_command (attach_target, async_exec);
2734
2735 if (non_stop && !attach_target->supports_non_stop ())
2736 error (_("Cannot attach to this target in non-stop mode"));
2737
2738 attach_target->attach (args, from_tty);
2739 /* to_attach should push the target, so after this point we
2740 shouldn't refer to attach_target again. */
2741 attach_target = NULL;
2742
2743 /* Set up the "saved terminal modes" of the inferior
2744 based on what modes we are starting it with. */
2745 target_terminal::init ();
2746
2747 /* Install inferior's terminal modes. This may look like a no-op,
2748 as we've just saved them above, however, this does more than
2749 restore terminal settings:
2750
2751 - installs a SIGINT handler that forwards SIGINT to the inferior.
2752 Otherwise a Ctrl-C pressed just while waiting for the initial
2753 stop would end up as a spurious Quit.
2754
2755 - removes stdin from the event loop, which we need if attaching
2756 in the foreground, otherwise on targets that report an initial
2757 stop on attach (which are most) we'd process input/commands
2758 while we're in the event loop waiting for that stop. That is,
2759 before the attach continuation runs and the command is really
2760 finished. */
2761 target_terminal::inferior ();
2762
2763 /* Set up execution context to know that we should return from
2764 wait_for_inferior as soon as the target reports a stop. */
2765 init_wait_for_inferior ();
2766 clear_proceed_status (0);
2767
2768 inferior->needs_setup = 1;
2769
2770 if (target_is_non_stop_p ())
2771 {
2772 /* If we find that the current thread isn't stopped, explicitly
2773 do so now, because we're going to install breakpoints and
2774 poke at memory. */
2775
2776 if (async_exec)
2777 /* The user requested an `attach&'; stop just one thread. */
2778 target_stop (inferior_ptid);
2779 else
2780 /* The user requested an `attach', so stop all threads of this
2781 inferior. */
2782 target_stop (ptid_t (inferior_ptid.pid ()));
2783 }
2784
2785 mode = async_exec ? ATTACH_POST_WAIT_RESUME : ATTACH_POST_WAIT_STOP;
2786
2787 /* Some system don't generate traps when attaching to inferior.
2788 E.g. Mach 3 or GNU hurd. */
2789 if (!target_attach_no_wait ())
2790 {
2791 struct attach_command_continuation_args *a;
2792
2793 /* Careful here. See comments in inferior.h. Basically some
2794 OSes don't ignore SIGSTOPs on continue requests anymore. We
2795 need a way for handle_inferior_event to reset the stop_signal
2796 variable after an attach, and this is what
2797 STOP_QUIETLY_NO_SIGSTOP is for. */
2798 inferior->control.stop_soon = STOP_QUIETLY_NO_SIGSTOP;
2799
2800 /* Wait for stop. */
2801 a = XNEW (struct attach_command_continuation_args);
2802 a->args = xstrdup (args);
2803 a->from_tty = from_tty;
2804 a->mode = mode;
2805 add_inferior_continuation (attach_command_continuation, a,
2806 attach_command_continuation_free_args);
2807
2808 if (!target_is_async_p ())
2809 mark_infrun_async_event_handler ();
2810 return;
2811 }
2812
2813 attach_post_wait (args, from_tty, mode);
2814 }
2815
2816 /* We had just found out that the target was already attached to an
2817 inferior. PTID points at a thread of this new inferior, that is
2818 the most likely to be stopped right now, but not necessarily so.
2819 The new inferior is assumed to be already added to the inferior
2820 list at this point. If LEAVE_RUNNING, then leave the threads of
2821 this inferior running, except those we've explicitly seen reported
2822 as stopped. */
2823
2824 void
2825 notice_new_inferior (thread_info *thr, int leave_running, int from_tty)
2826 {
2827 enum attach_post_wait_mode mode
2828 = leave_running ? ATTACH_POST_WAIT_RESUME : ATTACH_POST_WAIT_NOTHING;
2829
2830 gdb::optional<scoped_restore_current_thread> restore_thread;
2831
2832 if (inferior_ptid != null_ptid)
2833 restore_thread.emplace ();
2834
2835 /* Avoid reading registers -- we haven't fetched the target
2836 description yet. */
2837 switch_to_thread_no_regs (thr);
2838
2839 /* When we "notice" a new inferior we need to do all the things we
2840 would normally do if we had just attached to it. */
2841
2842 if (thr->executing)
2843 {
2844 struct attach_command_continuation_args *a;
2845 struct inferior *inferior = current_inferior ();
2846
2847 /* We're going to install breakpoints, and poke at memory,
2848 ensure that the inferior is stopped for a moment while we do
2849 that. */
2850 target_stop (inferior_ptid);
2851
2852 inferior->control.stop_soon = STOP_QUIETLY_REMOTE;
2853
2854 /* Wait for stop before proceeding. */
2855 a = XNEW (struct attach_command_continuation_args);
2856 a->args = xstrdup ("");
2857 a->from_tty = from_tty;
2858 a->mode = mode;
2859 add_inferior_continuation (attach_command_continuation, a,
2860 attach_command_continuation_free_args);
2861
2862 return;
2863 }
2864
2865 attach_post_wait ("" /* args */, from_tty, mode);
2866 }
2867
2868 /*
2869 * detach_command --
2870 * takes a program previously attached to and detaches it.
2871 * The program resumes execution and will no longer stop
2872 * on signals, etc. We better not have left any breakpoints
2873 * in the program or it'll die when it hits one. For this
2874 * to work, it may be necessary for the process to have been
2875 * previously attached. It *might* work if the program was
2876 * started via the normal ptrace (PTRACE_TRACEME).
2877 */
2878
2879 void
2880 detach_command (const char *args, int from_tty)
2881 {
2882 dont_repeat (); /* Not for the faint of heart. */
2883
2884 if (inferior_ptid == null_ptid)
2885 error (_("The program is not being run."));
2886
2887 query_if_trace_running (from_tty);
2888
2889 disconnect_tracing ();
2890
2891 target_detach (current_inferior (), from_tty);
2892
2893 /* The current inferior process was just detached successfully. Get
2894 rid of breakpoints that no longer make sense. Note we don't do
2895 this within target_detach because that is also used when
2896 following child forks, and in that case we will want to transfer
2897 breakpoints to the child, not delete them. */
2898 breakpoint_init_inferior (inf_exited);
2899
2900 /* If the solist is global across inferiors, don't clear it when we
2901 detach from a single inferior. */
2902 if (!gdbarch_has_global_solist (target_gdbarch ()))
2903 no_shared_libraries (NULL, from_tty);
2904
2905 if (deprecated_detach_hook)
2906 deprecated_detach_hook ();
2907 }
2908
2909 /* Disconnect from the current target without resuming it (leaving it
2910 waiting for a debugger).
2911
2912 We'd better not have left any breakpoints in the program or the
2913 next debugger will get confused. Currently only supported for some
2914 remote targets, since the normal attach mechanisms don't work on
2915 stopped processes on some native platforms (e.g. GNU/Linux). */
2916
2917 static void
2918 disconnect_command (const char *args, int from_tty)
2919 {
2920 dont_repeat (); /* Not for the faint of heart. */
2921 query_if_trace_running (from_tty);
2922 disconnect_tracing ();
2923 target_disconnect (args, from_tty);
2924 no_shared_libraries (NULL, from_tty);
2925 init_thread_list ();
2926 if (deprecated_detach_hook)
2927 deprecated_detach_hook ();
2928 }
2929
2930 void
2931 interrupt_target_1 (int all_threads)
2932 {
2933 ptid_t ptid;
2934
2935 if (all_threads)
2936 ptid = minus_one_ptid;
2937 else
2938 ptid = inferior_ptid;
2939
2940 if (non_stop)
2941 target_stop (ptid);
2942 else
2943 target_interrupt ();
2944
2945 /* Tag the thread as having been explicitly requested to stop, so
2946 other parts of gdb know not to resume this thread automatically,
2947 if it was stopped due to an internal event. Limit this to
2948 non-stop mode, as when debugging a multi-threaded application in
2949 all-stop mode, we will only get one stop event --- it's undefined
2950 which thread will report the event. */
2951 if (non_stop)
2952 set_stop_requested (ptid, 1);
2953 }
2954
2955 /* interrupt [-a]
2956 Stop the execution of the target while running in async mode, in
2957 the background. In all-stop, stop the whole process. In non-stop
2958 mode, stop the current thread only by default, or stop all threads
2959 if the `-a' switch is used. */
2960
2961 static void
2962 interrupt_command (const char *args, int from_tty)
2963 {
2964 if (target_can_async_p ())
2965 {
2966 int all_threads = 0;
2967
2968 dont_repeat (); /* Not for the faint of heart. */
2969
2970 if (args != NULL
2971 && startswith (args, "-a"))
2972 all_threads = 1;
2973
2974 if (!non_stop && all_threads)
2975 error (_("-a is meaningless in all-stop mode."));
2976
2977 interrupt_target_1 (all_threads);
2978 }
2979 }
2980
2981 /* See inferior.h. */
2982
2983 void
2984 default_print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
2985 struct frame_info *frame, const char *args)
2986 {
2987 int regnum;
2988 int printed_something = 0;
2989
2990 for (regnum = 0; regnum < gdbarch_num_cooked_regs (gdbarch); regnum++)
2991 {
2992 if (gdbarch_register_reggroup_p (gdbarch, regnum, float_reggroup))
2993 {
2994 printed_something = 1;
2995 gdbarch_print_registers_info (gdbarch, file, frame, regnum, 1);
2996 }
2997 }
2998 if (!printed_something)
2999 fprintf_filtered (file, "No floating-point info "
3000 "available for this processor.\n");
3001 }
3002
3003 static void
3004 info_float_command (const char *args, int from_tty)
3005 {
3006 struct frame_info *frame;
3007
3008 if (!target_has_registers)
3009 error (_("The program has no registers now."));
3010
3011 frame = get_selected_frame (NULL);
3012 gdbarch_print_float_info (get_frame_arch (frame), gdb_stdout, frame, args);
3013 }
3014 \f
3015 static void
3016 unset_command (const char *args, int from_tty)
3017 {
3018 printf_filtered (_("\"unset\" must be followed by the "
3019 "name of an unset subcommand.\n"));
3020 help_list (unsetlist, "unset ", all_commands, gdb_stdout);
3021 }
3022
3023 /* Implement `info proc' family of commands. */
3024
3025 static void
3026 info_proc_cmd_1 (const char *args, enum info_proc_what what, int from_tty)
3027 {
3028 struct gdbarch *gdbarch = get_current_arch ();
3029
3030 if (!target_info_proc (args, what))
3031 {
3032 if (gdbarch_info_proc_p (gdbarch))
3033 gdbarch_info_proc (gdbarch, args, what);
3034 else
3035 error (_("Not supported on this target."));
3036 }
3037 }
3038
3039 /* Implement `info proc' when given without any further parameters. */
3040
3041 static void
3042 info_proc_cmd (const char *args, int from_tty)
3043 {
3044 info_proc_cmd_1 (args, IP_MINIMAL, from_tty);
3045 }
3046
3047 /* Implement `info proc mappings'. */
3048
3049 static void
3050 info_proc_cmd_mappings (const char *args, int from_tty)
3051 {
3052 info_proc_cmd_1 (args, IP_MAPPINGS, from_tty);
3053 }
3054
3055 /* Implement `info proc stat'. */
3056
3057 static void
3058 info_proc_cmd_stat (const char *args, int from_tty)
3059 {
3060 info_proc_cmd_1 (args, IP_STAT, from_tty);
3061 }
3062
3063 /* Implement `info proc status'. */
3064
3065 static void
3066 info_proc_cmd_status (const char *args, int from_tty)
3067 {
3068 info_proc_cmd_1 (args, IP_STATUS, from_tty);
3069 }
3070
3071 /* Implement `info proc cwd'. */
3072
3073 static void
3074 info_proc_cmd_cwd (const char *args, int from_tty)
3075 {
3076 info_proc_cmd_1 (args, IP_CWD, from_tty);
3077 }
3078
3079 /* Implement `info proc cmdline'. */
3080
3081 static void
3082 info_proc_cmd_cmdline (const char *args, int from_tty)
3083 {
3084 info_proc_cmd_1 (args, IP_CMDLINE, from_tty);
3085 }
3086
3087 /* Implement `info proc exe'. */
3088
3089 static void
3090 info_proc_cmd_exe (const char *args, int from_tty)
3091 {
3092 info_proc_cmd_1 (args, IP_EXE, from_tty);
3093 }
3094
3095 /* Implement `info proc files'. */
3096
3097 static void
3098 info_proc_cmd_files (const char *args, int from_tty)
3099 {
3100 info_proc_cmd_1 (args, IP_FILES, from_tty);
3101 }
3102
3103 /* Implement `info proc all'. */
3104
3105 static void
3106 info_proc_cmd_all (const char *args, int from_tty)
3107 {
3108 info_proc_cmd_1 (args, IP_ALL, from_tty);
3109 }
3110
3111 /* Implement `show print finish'. */
3112
3113 static void
3114 show_print_finish (struct ui_file *file, int from_tty,
3115 struct cmd_list_element *c,
3116 const char *value)
3117 {
3118 fprintf_filtered (file, _("\
3119 Printing of return value after `finish' is %s.\n"),
3120 value);
3121 }
3122
3123
3124 /* This help string is used for the run, start, and starti commands.
3125 It is defined as a macro to prevent duplication. */
3126
3127 #define RUN_ARGS_HELP \
3128 "You may specify arguments to give it.\n\
3129 Args may include \"*\", or \"[...]\"; they are expanded using the\n\
3130 shell that will start the program (specified by the \"$SHELL\" environment\n\
3131 variable). Input and output redirection with \">\", \"<\", or \">>\"\n\
3132 are also allowed.\n\
3133 \n\
3134 With no arguments, uses arguments last specified (with \"run\" or \n\
3135 \"set args\"). To cancel previous arguments and run with no arguments,\n\
3136 use \"set args\" without arguments.\n\
3137 \n\
3138 To start the inferior without using a shell, use \"set startup-with-shell off\"."
3139
3140 void
3141 _initialize_infcmd (void)
3142 {
3143 static struct cmd_list_element *info_proc_cmdlist;
3144 struct cmd_list_element *c = NULL;
3145 const char *cmd_name;
3146
3147 /* Add the filename of the terminal connected to inferior I/O. */
3148 add_setshow_optional_filename_cmd ("inferior-tty", class_run,
3149 &inferior_io_terminal_scratch, _("\
3150 Set terminal for future runs of program being debugged."), _("\
3151 Show terminal for future runs of program being debugged."), _("\
3152 Usage: set inferior-tty [TTY]\n\n\
3153 If TTY is omitted, the default behavior of using the same terminal as GDB\n\
3154 is restored."),
3155 set_inferior_tty_command,
3156 show_inferior_tty_command,
3157 &setlist, &showlist);
3158 cmd_name = "inferior-tty";
3159 c = lookup_cmd (&cmd_name, setlist, "", -1, 1);
3160 gdb_assert (c != NULL);
3161 add_alias_cmd ("tty", c, class_alias, 0, &cmdlist);
3162
3163 cmd_name = "args";
3164 add_setshow_string_noescape_cmd (cmd_name, class_run,
3165 &inferior_args_scratch, _("\
3166 Set argument list to give program being debugged when it is started."), _("\
3167 Show argument list to give program being debugged when it is started."), _("\
3168 Follow this command with any number of args, to be passed to the program."),
3169 set_args_command,
3170 show_args_command,
3171 &setlist, &showlist);
3172 c = lookup_cmd (&cmd_name, setlist, "", -1, 1);
3173 gdb_assert (c != NULL);
3174 set_cmd_completer (c, filename_completer);
3175
3176 cmd_name = "cwd";
3177 add_setshow_string_noescape_cmd (cmd_name, class_run,
3178 &inferior_cwd_scratch, _("\
3179 Set the current working directory to be used when the inferior is started.\n\
3180 Changing this setting does not have any effect on inferiors that are\n\
3181 already running."),
3182 _("\
3183 Show the current working directory that is used when the inferior is started."),
3184 _("\
3185 Use this command to change the current working directory that will be used\n\
3186 when the inferior is started. This setting does not affect GDB's current\n\
3187 working directory."),
3188 set_cwd_command,
3189 show_cwd_command,
3190 &setlist, &showlist);
3191 c = lookup_cmd (&cmd_name, setlist, "", -1, 1);
3192 gdb_assert (c != NULL);
3193 set_cmd_completer (c, filename_completer);
3194
3195 c = add_cmd ("environment", no_class, environment_info, _("\
3196 The environment to give the program, or one variable's value.\n\
3197 With an argument VAR, prints the value of environment variable VAR to\n\
3198 give the program being debugged. With no arguments, prints the entire\n\
3199 environment to be given to the program."), &showlist);
3200 set_cmd_completer (c, noop_completer);
3201
3202 add_prefix_cmd ("unset", no_class, unset_command,
3203 _("Complement to certain \"set\" commands."),
3204 &unsetlist, "unset ", 0, &cmdlist);
3205
3206 c = add_cmd ("environment", class_run, unset_environment_command, _("\
3207 Cancel environment variable VAR for the program.\n\
3208 This does not affect the program until the next \"run\" command."),
3209 &unsetlist);
3210 set_cmd_completer (c, noop_completer);
3211
3212 c = add_cmd ("environment", class_run, set_environment_command, _("\
3213 Set environment variable value to give the program.\n\
3214 Arguments are VAR VALUE where VAR is variable name and VALUE is value.\n\
3215 VALUES of environment variables are uninterpreted strings.\n\
3216 This does not affect the program until the next \"run\" command."),
3217 &setlist);
3218 set_cmd_completer (c, noop_completer);
3219
3220 c = add_com ("path", class_files, path_command, _("\
3221 Add directory DIR(s) to beginning of search path for object files.\n\
3222 $cwd in the path means the current working directory.\n\
3223 This path is equivalent to the $PATH shell variable. It is a list of\n\
3224 directories, separated by colons. These directories are searched to find\n\
3225 fully linked executable files and separately compiled object files as \
3226 needed."));
3227 set_cmd_completer (c, filename_completer);
3228
3229 c = add_cmd ("paths", no_class, path_info, _("\
3230 Current search path for finding object files.\n\
3231 $cwd in the path means the current working directory.\n\
3232 This path is equivalent to the $PATH shell variable. It is a list of\n\
3233 directories, separated by colons. These directories are searched to find\n\
3234 fully linked executable files and separately compiled object files as \
3235 needed."),
3236 &showlist);
3237 set_cmd_completer (c, noop_completer);
3238
3239 add_prefix_cmd ("kill", class_run, kill_command,
3240 _("Kill execution of program being debugged."),
3241 &killlist, "kill ", 0, &cmdlist);
3242
3243 add_com ("attach", class_run, attach_command, _("\
3244 Attach to a process or file outside of GDB.\n\
3245 This command attaches to another target, of the same type as your last\n\
3246 \"target\" command (\"info files\" will show your target stack).\n\
3247 The command may take as argument a process id or a device file.\n\
3248 For a process id, you must have permission to send the process a signal,\n\
3249 and it must have the same effective uid as the debugger.\n\
3250 When using \"attach\" with a process id, the debugger finds the\n\
3251 program running in the process, looking first in the current working\n\
3252 directory, or (if not found there) using the source file search path\n\
3253 (see the \"directory\" command). You can also use the \"file\" command\n\
3254 to specify the program, and to load its symbol table."));
3255
3256 add_prefix_cmd ("detach", class_run, detach_command, _("\
3257 Detach a process or file previously attached.\n\
3258 If a process, it is no longer traced, and it continues its execution. If\n\
3259 you were debugging a file, the file is closed and gdb no longer accesses it."),
3260 &detachlist, "detach ", 0, &cmdlist);
3261
3262 add_com ("disconnect", class_run, disconnect_command, _("\
3263 Disconnect from a target.\n\
3264 The target will wait for another debugger to connect. Not available for\n\
3265 all targets."));
3266
3267 c = add_com ("signal", class_run, signal_command, _("\
3268 Continue program with the specified signal.\n\
3269 Usage: signal SIGNAL\n\
3270 The SIGNAL argument is processed the same as the handle command.\n\
3271 \n\
3272 An argument of \"0\" means continue the program without sending it a signal.\n\
3273 This is useful in cases where the program stopped because of a signal,\n\
3274 and you want to resume the program while discarding the signal.\n\
3275 \n\
3276 In a multi-threaded program the signal is delivered to, or discarded from,\n\
3277 the current thread only."));
3278 set_cmd_completer (c, signal_completer);
3279
3280 c = add_com ("queue-signal", class_run, queue_signal_command, _("\
3281 Queue a signal to be delivered to the current thread when it is resumed.\n\
3282 Usage: queue-signal SIGNAL\n\
3283 The SIGNAL argument is processed the same as the handle command.\n\
3284 It is an error if the handling state of SIGNAL is \"nopass\".\n\
3285 \n\
3286 An argument of \"0\" means remove any currently queued signal from\n\
3287 the current thread. This is useful in cases where the program stopped\n\
3288 because of a signal, and you want to resume it while discarding the signal.\n\
3289 \n\
3290 In a multi-threaded program the signal is queued with, or discarded from,\n\
3291 the current thread only."));
3292 set_cmd_completer (c, signal_completer);
3293
3294 add_com ("stepi", class_run, stepi_command, _("\
3295 Step one instruction exactly.\n\
3296 Usage: stepi [N]\n\
3297 Argument N means step N times (or till program stops for another \
3298 reason)."));
3299 add_com_alias ("si", "stepi", class_alias, 0);
3300
3301 add_com ("nexti", class_run, nexti_command, _("\
3302 Step one instruction, but proceed through subroutine calls.\n\
3303 Usage: nexti [N]\n\
3304 Argument N means step N times (or till program stops for another \
3305 reason)."));
3306 add_com_alias ("ni", "nexti", class_alias, 0);
3307
3308 add_com ("finish", class_run, finish_command, _("\
3309 Execute until selected stack frame returns.\n\
3310 Usage: finish\n\
3311 Upon return, the value returned is printed and put in the value history."));
3312 add_com_alias ("fin", "finish", class_run, 1);
3313
3314 add_com ("next", class_run, next_command, _("\
3315 Step program, proceeding through subroutine calls.\n\
3316 Usage: next [N]\n\
3317 Unlike \"step\", if the current source line calls a subroutine,\n\
3318 this command does not enter the subroutine, but instead steps over\n\
3319 the call, in effect treating it as a single source line."));
3320 add_com_alias ("n", "next", class_run, 1);
3321
3322 add_com ("step", class_run, step_command, _("\
3323 Step program until it reaches a different source line.\n\
3324 Usage: step [N]\n\
3325 Argument N means step N times (or till program stops for another \
3326 reason)."));
3327 add_com_alias ("s", "step", class_run, 1);
3328
3329 c = add_com ("until", class_run, until_command, _("\
3330 Execute until past the current line or past a LOCATION.\n\
3331 Execute until the program reaches a source line greater than the current\n\
3332 or a specified location (same args as break command) within the current \
3333 frame."));
3334 set_cmd_completer (c, location_completer);
3335 add_com_alias ("u", "until", class_run, 1);
3336
3337 c = add_com ("advance", class_run, advance_command, _("\
3338 Continue the program up to the given location (same form as args for break \
3339 command).\n\
3340 Execution will also stop upon exit from the current stack frame."));
3341 set_cmd_completer (c, location_completer);
3342
3343 c = add_com ("jump", class_run, jump_command, _("\
3344 Continue program being debugged at specified line or address.\n\
3345 Usage: jump LOCATION\n\
3346 Give as argument either LINENUM or *ADDR, where ADDR is an expression\n\
3347 for an address to start at."));
3348 set_cmd_completer (c, location_completer);
3349 add_com_alias ("j", "jump", class_run, 1);
3350
3351 add_com ("continue", class_run, continue_command, _("\
3352 Continue program being debugged, after signal or breakpoint.\n\
3353 Usage: continue [N]\n\
3354 If proceeding from breakpoint, a number N may be used as an argument,\n\
3355 which means to set the ignore count of that breakpoint to N - 1 (so that\n\
3356 the breakpoint won't break until the Nth time it is reached).\n\
3357 \n\
3358 If non-stop mode is enabled, continue only the current thread,\n\
3359 otherwise all the threads in the program are continued. To \n\
3360 continue all stopped threads in non-stop mode, use the -a option.\n\
3361 Specifying -a and an ignore count simultaneously is an error."));
3362 add_com_alias ("c", "cont", class_run, 1);
3363 add_com_alias ("fg", "cont", class_run, 1);
3364
3365 c = add_com ("run", class_run, run_command, _("\
3366 Start debugged program.\n"
3367 RUN_ARGS_HELP));
3368 set_cmd_completer (c, filename_completer);
3369 add_com_alias ("r", "run", class_run, 1);
3370
3371 c = add_com ("start", class_run, start_command, _("\
3372 Start the debugged program stopping at the beginning of the main procedure.\n"
3373 RUN_ARGS_HELP));
3374 set_cmd_completer (c, filename_completer);
3375
3376 c = add_com ("starti", class_run, starti_command, _("\
3377 Start the debugged program stopping at the first instruction.\n"
3378 RUN_ARGS_HELP));
3379 set_cmd_completer (c, filename_completer);
3380
3381 add_com ("interrupt", class_run, interrupt_command,
3382 _("Interrupt the execution of the debugged program.\n\
3383 If non-stop mode is enabled, interrupt only the current thread,\n\
3384 otherwise all the threads in the program are stopped. To \n\
3385 interrupt all running threads in non-stop mode, use the -a option."));
3386
3387 c = add_info ("registers", info_registers_command, _("\
3388 List of integer registers and their contents, for selected stack frame.\n\
3389 One or more register names as argument means describe the given registers.\n\
3390 One or more register group names as argument means describe the registers\n\
3391 in the named register groups."));
3392 add_info_alias ("r", "registers", 1);
3393 set_cmd_completer (c, reg_or_group_completer);
3394
3395 c = add_info ("all-registers", info_all_registers_command, _("\
3396 List of all registers and their contents, for selected stack frame.\n\
3397 One or more register names as argument means describe the given registers.\n\
3398 One or more register group names as argument means describe the registers\n\
3399 in the named register groups."));
3400 set_cmd_completer (c, reg_or_group_completer);
3401
3402 add_info ("program", info_program_command,
3403 _("Execution status of the program."));
3404
3405 add_info ("float", info_float_command,
3406 _("Print the status of the floating point unit."));
3407
3408 add_info ("vector", info_vector_command,
3409 _("Print the status of the vector unit."));
3410
3411 add_prefix_cmd ("proc", class_info, info_proc_cmd,
3412 _("\
3413 Show additional information about a process.\n\
3414 Specify any process id, or use the program being debugged by default."),
3415 &info_proc_cmdlist, "info proc ",
3416 1/*allow-unknown*/, &infolist);
3417
3418 add_cmd ("mappings", class_info, info_proc_cmd_mappings, _("\
3419 List memory regions mapped by the specified process."),
3420 &info_proc_cmdlist);
3421
3422 add_cmd ("stat", class_info, info_proc_cmd_stat, _("\
3423 List process info from /proc/PID/stat."),
3424 &info_proc_cmdlist);
3425
3426 add_cmd ("status", class_info, info_proc_cmd_status, _("\
3427 List process info from /proc/PID/status."),
3428 &info_proc_cmdlist);
3429
3430 add_cmd ("cwd", class_info, info_proc_cmd_cwd, _("\
3431 List current working directory of the specified process."),
3432 &info_proc_cmdlist);
3433
3434 add_cmd ("cmdline", class_info, info_proc_cmd_cmdline, _("\
3435 List command line arguments of the specified process."),
3436 &info_proc_cmdlist);
3437
3438 add_cmd ("exe", class_info, info_proc_cmd_exe, _("\
3439 List absolute filename for executable of the specified process."),
3440 &info_proc_cmdlist);
3441
3442 add_cmd ("files", class_info, info_proc_cmd_files, _("\
3443 List files opened by the specified process."),
3444 &info_proc_cmdlist);
3445
3446 add_cmd ("all", class_info, info_proc_cmd_all, _("\
3447 List all available info about the specified process."),
3448 &info_proc_cmdlist);
3449
3450 add_setshow_boolean_cmd ("finish", class_support,
3451 &user_print_options.finish_print, _("\
3452 Set whether `finish' prints the return value."), _("\
3453 Show whether `finish' prints the return value."), NULL,
3454 NULL,
3455 show_print_finish,
3456 &setprintlist, &showprintlist);
3457 }
This page took 0.100064 seconds and 4 git commands to generate.