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