]> Git Repo - binutils.git/blob - gdb/infrun.c
PR27684, PowerPC missing mfsprg0 and others
[binutils.git] / gdb / infrun.c
1 /* Target-struct-independent code to start (run) and stop an inferior
2    process.
3
4    Copyright (C) 1986-2021 Free Software Foundation, Inc.
5
6    This file is part of GDB.
7
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 3 of the License, or
11    (at your option) any later version.
12
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
20
21 #include "defs.h"
22 #include "displaced-stepping.h"
23 #include "infrun.h"
24 #include <ctype.h>
25 #include "symtab.h"
26 #include "frame.h"
27 #include "inferior.h"
28 #include "breakpoint.h"
29 #include "gdbcore.h"
30 #include "gdbcmd.h"
31 #include "target.h"
32 #include "target-connection.h"
33 #include "gdbthread.h"
34 #include "annotate.h"
35 #include "symfile.h"
36 #include "top.h"
37 #include "inf-loop.h"
38 #include "regcache.h"
39 #include "value.h"
40 #include "observable.h"
41 #include "language.h"
42 #include "solib.h"
43 #include "main.h"
44 #include "block.h"
45 #include "mi/mi-common.h"
46 #include "event-top.h"
47 #include "record.h"
48 #include "record-full.h"
49 #include "inline-frame.h"
50 #include "jit.h"
51 #include "tracepoint.h"
52 #include "skip.h"
53 #include "probe.h"
54 #include "objfiles.h"
55 #include "completer.h"
56 #include "target-descriptions.h"
57 #include "target-dcache.h"
58 #include "terminal.h"
59 #include "solist.h"
60 #include "gdbsupport/event-loop.h"
61 #include "thread-fsm.h"
62 #include "gdbsupport/enum-flags.h"
63 #include "progspace-and-thread.h"
64 #include "gdbsupport/gdb_optional.h"
65 #include "arch-utils.h"
66 #include "gdbsupport/scope-exit.h"
67 #include "gdbsupport/forward-scope-exit.h"
68 #include "gdbsupport/gdb_select.h"
69 #include <unordered_map>
70 #include "async-event.h"
71 #include "gdbsupport/selftest.h"
72 #include "scoped-mock-context.h"
73 #include "test-target.h"
74 #include "gdbsupport/common-debug.h"
75
76 /* Prototypes for local functions */
77
78 static void sig_print_info (enum gdb_signal);
79
80 static void sig_print_header (void);
81
82 static void follow_inferior_reset_breakpoints (void);
83
84 static bool currently_stepping (struct thread_info *tp);
85
86 static void insert_hp_step_resume_breakpoint_at_frame (struct frame_info *);
87
88 static void insert_step_resume_breakpoint_at_caller (struct frame_info *);
89
90 static void insert_longjmp_resume_breakpoint (struct gdbarch *, CORE_ADDR);
91
92 static bool maybe_software_singlestep (struct gdbarch *gdbarch, CORE_ADDR pc);
93
94 static void resume (gdb_signal sig);
95
96 static void wait_for_inferior (inferior *inf);
97
98 /* Asynchronous signal handler registered as event loop source for
99    when we have pending events ready to be passed to the core.  */
100 static struct async_event_handler *infrun_async_inferior_event_token;
101
102 /* Stores whether infrun_async was previously enabled or disabled.
103    Starts off as -1, indicating "never enabled/disabled".  */
104 static int infrun_is_async = -1;
105
106 /* See infrun.h.  */
107
108 void
109 infrun_async (int enable)
110 {
111   if (infrun_is_async != enable)
112     {
113       infrun_is_async = enable;
114
115       infrun_debug_printf ("enable=%d", enable);
116
117       if (enable)
118         mark_async_event_handler (infrun_async_inferior_event_token);
119       else
120         clear_async_event_handler (infrun_async_inferior_event_token);
121     }
122 }
123
124 /* See infrun.h.  */
125
126 void
127 mark_infrun_async_event_handler (void)
128 {
129   mark_async_event_handler (infrun_async_inferior_event_token);
130 }
131
132 /* When set, stop the 'step' command if we enter a function which has
133    no line number information.  The normal behavior is that we step
134    over such function.  */
135 bool step_stop_if_no_debug = false;
136 static void
137 show_step_stop_if_no_debug (struct ui_file *file, int from_tty,
138                             struct cmd_list_element *c, const char *value)
139 {
140   fprintf_filtered (file, _("Mode of the step operation is %s.\n"), value);
141 }
142
143 /* proceed and normal_stop use this to notify the user when the
144    inferior stopped in a different thread than it had been running
145    in.  */
146
147 static ptid_t previous_inferior_ptid;
148
149 /* If set (default for legacy reasons), when following a fork, GDB
150    will detach from one of the fork branches, child or parent.
151    Exactly which branch is detached depends on 'set follow-fork-mode'
152    setting.  */
153
154 static bool detach_fork = true;
155
156 bool debug_infrun = false;
157 static void
158 show_debug_infrun (struct ui_file *file, int from_tty,
159                    struct cmd_list_element *c, const char *value)
160 {
161   fprintf_filtered (file, _("Inferior debugging is %s.\n"), value);
162 }
163
164 /* Support for disabling address space randomization.  */
165
166 bool disable_randomization = true;
167
168 static void
169 show_disable_randomization (struct ui_file *file, int from_tty,
170                             struct cmd_list_element *c, const char *value)
171 {
172   if (target_supports_disable_randomization ())
173     fprintf_filtered (file,
174                       _("Disabling randomization of debuggee's "
175                         "virtual address space is %s.\n"),
176                       value);
177   else
178     fputs_filtered (_("Disabling randomization of debuggee's "
179                       "virtual address space is unsupported on\n"
180                       "this platform.\n"), file);
181 }
182
183 static void
184 set_disable_randomization (const char *args, int from_tty,
185                            struct cmd_list_element *c)
186 {
187   if (!target_supports_disable_randomization ())
188     error (_("Disabling randomization of debuggee's "
189              "virtual address space is unsupported on\n"
190              "this platform."));
191 }
192
193 /* User interface for non-stop mode.  */
194
195 bool non_stop = false;
196 static bool non_stop_1 = false;
197
198 static void
199 set_non_stop (const char *args, int from_tty,
200               struct cmd_list_element *c)
201 {
202   if (target_has_execution ())
203     {
204       non_stop_1 = non_stop;
205       error (_("Cannot change this setting while the inferior is running."));
206     }
207
208   non_stop = non_stop_1;
209 }
210
211 static void
212 show_non_stop (struct ui_file *file, int from_tty,
213                struct cmd_list_element *c, const char *value)
214 {
215   fprintf_filtered (file,
216                     _("Controlling the inferior in non-stop mode is %s.\n"),
217                     value);
218 }
219
220 /* "Observer mode" is somewhat like a more extreme version of
221    non-stop, in which all GDB operations that might affect the
222    target's execution have been disabled.  */
223
224 static bool observer_mode = false;
225 static bool observer_mode_1 = false;
226
227 static void
228 set_observer_mode (const char *args, int from_tty,
229                    struct cmd_list_element *c)
230 {
231   if (target_has_execution ())
232     {
233       observer_mode_1 = observer_mode;
234       error (_("Cannot change this setting while the inferior is running."));
235     }
236
237   observer_mode = observer_mode_1;
238
239   may_write_registers = !observer_mode;
240   may_write_memory = !observer_mode;
241   may_insert_breakpoints = !observer_mode;
242   may_insert_tracepoints = !observer_mode;
243   /* We can insert fast tracepoints in or out of observer mode,
244      but enable them if we're going into this mode.  */
245   if (observer_mode)
246     may_insert_fast_tracepoints = true;
247   may_stop = !observer_mode;
248   update_target_permissions ();
249
250   /* Going *into* observer mode we must force non-stop, then
251      going out we leave it that way.  */
252   if (observer_mode)
253     {
254       pagination_enabled = 0;
255       non_stop = non_stop_1 = true;
256     }
257
258   if (from_tty)
259     printf_filtered (_("Observer mode is now %s.\n"),
260                      (observer_mode ? "on" : "off"));
261 }
262
263 static void
264 show_observer_mode (struct ui_file *file, int from_tty,
265                     struct cmd_list_element *c, const char *value)
266 {
267   fprintf_filtered (file, _("Observer mode is %s.\n"), value);
268 }
269
270 /* This updates the value of observer mode based on changes in
271    permissions.  Note that we are deliberately ignoring the values of
272    may-write-registers and may-write-memory, since the user may have
273    reason to enable these during a session, for instance to turn on a
274    debugging-related global.  */
275
276 void
277 update_observer_mode (void)
278 {
279   bool newval = (!may_insert_breakpoints
280                  && !may_insert_tracepoints
281                  && may_insert_fast_tracepoints
282                  && !may_stop
283                  && non_stop);
284
285   /* Let the user know if things change.  */
286   if (newval != observer_mode)
287     printf_filtered (_("Observer mode is now %s.\n"),
288                      (newval ? "on" : "off"));
289
290   observer_mode = observer_mode_1 = newval;
291 }
292
293 /* Tables of how to react to signals; the user sets them.  */
294
295 static unsigned char signal_stop[GDB_SIGNAL_LAST];
296 static unsigned char signal_print[GDB_SIGNAL_LAST];
297 static unsigned char signal_program[GDB_SIGNAL_LAST];
298
299 /* Table of signals that are registered with "catch signal".  A
300    non-zero entry indicates that the signal is caught by some "catch
301    signal" command.  */
302 static unsigned char signal_catch[GDB_SIGNAL_LAST];
303
304 /* Table of signals that the target may silently handle.
305    This is automatically determined from the flags above,
306    and simply cached here.  */
307 static unsigned char signal_pass[GDB_SIGNAL_LAST];
308
309 #define SET_SIGS(nsigs,sigs,flags) \
310   do { \
311     int signum = (nsigs); \
312     while (signum-- > 0) \
313       if ((sigs)[signum]) \
314         (flags)[signum] = 1; \
315   } while (0)
316
317 #define UNSET_SIGS(nsigs,sigs,flags) \
318   do { \
319     int signum = (nsigs); \
320     while (signum-- > 0) \
321       if ((sigs)[signum]) \
322         (flags)[signum] = 0; \
323   } while (0)
324
325 /* Update the target's copy of SIGNAL_PROGRAM.  The sole purpose of
326    this function is to avoid exporting `signal_program'.  */
327
328 void
329 update_signals_program_target (void)
330 {
331   target_program_signals (signal_program);
332 }
333
334 /* Value to pass to target_resume() to cause all threads to resume.  */
335
336 #define RESUME_ALL minus_one_ptid
337
338 /* Command list pointer for the "stop" placeholder.  */
339
340 static struct cmd_list_element *stop_command;
341
342 /* Nonzero if we want to give control to the user when we're notified
343    of shared library events by the dynamic linker.  */
344 int stop_on_solib_events;
345
346 /* Enable or disable optional shared library event breakpoints
347    as appropriate when the above flag is changed.  */
348
349 static void
350 set_stop_on_solib_events (const char *args,
351                           int from_tty, struct cmd_list_element *c)
352 {
353   update_solib_breakpoints ();
354 }
355
356 static void
357 show_stop_on_solib_events (struct ui_file *file, int from_tty,
358                            struct cmd_list_element *c, const char *value)
359 {
360   fprintf_filtered (file, _("Stopping for shared library events is %s.\n"),
361                     value);
362 }
363
364 /* True after stop if current stack frame should be printed.  */
365
366 static bool stop_print_frame;
367
368 /* This is a cached copy of the target/ptid/waitstatus of the last
369    event returned by target_wait()/deprecated_target_wait_hook().
370    This information is returned by get_last_target_status().  */
371 static process_stratum_target *target_last_proc_target;
372 static ptid_t target_last_wait_ptid;
373 static struct target_waitstatus target_last_waitstatus;
374
375 void init_thread_stepping_state (struct thread_info *tss);
376
377 static const char follow_fork_mode_child[] = "child";
378 static const char follow_fork_mode_parent[] = "parent";
379
380 static const char *const follow_fork_mode_kind_names[] = {
381   follow_fork_mode_child,
382   follow_fork_mode_parent,
383   NULL
384 };
385
386 static const char *follow_fork_mode_string = follow_fork_mode_parent;
387 static void
388 show_follow_fork_mode_string (struct ui_file *file, int from_tty,
389                               struct cmd_list_element *c, const char *value)
390 {
391   fprintf_filtered (file,
392                     _("Debugger response to a program "
393                       "call of fork or vfork is \"%s\".\n"),
394                     value);
395 }
396 \f
397
398 /* Handle changes to the inferior list based on the type of fork,
399    which process is being followed, and whether the other process
400    should be detached.  On entry inferior_ptid must be the ptid of
401    the fork parent.  At return inferior_ptid is the ptid of the
402    followed inferior.  */
403
404 static bool
405 follow_fork_inferior (bool follow_child, bool detach_fork)
406 {
407   int has_vforked;
408   ptid_t parent_ptid, child_ptid;
409
410   has_vforked = (inferior_thread ()->pending_follow.kind
411                  == TARGET_WAITKIND_VFORKED);
412   parent_ptid = inferior_ptid;
413   child_ptid = inferior_thread ()->pending_follow.value.related_pid;
414
415   if (has_vforked
416       && !non_stop /* Non-stop always resumes both branches.  */
417       && current_ui->prompt_state == PROMPT_BLOCKED
418       && !(follow_child || detach_fork || sched_multi))
419     {
420       /* The parent stays blocked inside the vfork syscall until the
421          child execs or exits.  If we don't let the child run, then
422          the parent stays blocked.  If we're telling the parent to run
423          in the foreground, the user will not be able to ctrl-c to get
424          back the terminal, effectively hanging the debug session.  */
425       fprintf_filtered (gdb_stderr, _("\
426 Can not resume the parent process over vfork in the foreground while\n\
427 holding the child stopped.  Try \"set detach-on-fork\" or \
428 \"set schedule-multiple\".\n"));
429       return true;
430     }
431
432   if (!follow_child)
433     {
434       /* Detach new forked process?  */
435       if (detach_fork)
436         {
437           /* Before detaching from the child, remove all breakpoints
438              from it.  If we forked, then this has already been taken
439              care of by infrun.c.  If we vforked however, any
440              breakpoint inserted in the parent is visible in the
441              child, even those added while stopped in a vfork
442              catchpoint.  This will remove the breakpoints from the
443              parent also, but they'll be reinserted below.  */
444           if (has_vforked)
445             {
446               /* Keep breakpoints list in sync.  */
447               remove_breakpoints_inf (current_inferior ());
448             }
449
450           if (print_inferior_events)
451             {
452               /* Ensure that we have a process ptid.  */
453               ptid_t process_ptid = ptid_t (child_ptid.pid ());
454
455               target_terminal::ours_for_output ();
456               fprintf_filtered (gdb_stdlog,
457                                 _("[Detaching after %s from child %s]\n"),
458                                 has_vforked ? "vfork" : "fork",
459                                 target_pid_to_str (process_ptid).c_str ());
460             }
461         }
462       else
463         {
464           struct inferior *parent_inf, *child_inf;
465
466           /* Add process to GDB's tables.  */
467           child_inf = add_inferior (child_ptid.pid ());
468
469           parent_inf = current_inferior ();
470           child_inf->attach_flag = parent_inf->attach_flag;
471           copy_terminal_info (child_inf, parent_inf);
472           child_inf->gdbarch = parent_inf->gdbarch;
473           copy_inferior_target_desc_info (child_inf, parent_inf);
474
475           scoped_restore_current_pspace_and_thread restore_pspace_thread;
476
477           set_current_inferior (child_inf);
478           switch_to_no_thread ();
479           child_inf->symfile_flags = SYMFILE_NO_READ;
480           child_inf->push_target (parent_inf->process_target ());
481           thread_info *child_thr
482             = add_thread_silent (child_inf->process_target (), child_ptid);
483
484           /* If this is a vfork child, then the address-space is
485              shared with the parent.  */
486           if (has_vforked)
487             {
488               child_inf->pspace = parent_inf->pspace;
489               child_inf->aspace = parent_inf->aspace;
490
491               exec_on_vfork ();
492
493               /* The parent will be frozen until the child is done
494                  with the shared region.  Keep track of the
495                  parent.  */
496               child_inf->vfork_parent = parent_inf;
497               child_inf->pending_detach = 0;
498               parent_inf->vfork_child = child_inf;
499               parent_inf->pending_detach = 0;
500
501               /* Now that the inferiors and program spaces are all
502                  wired up, we can switch to the child thread (which
503                  switches inferior and program space too).  */
504               switch_to_thread (child_thr);
505             }
506           else
507             {
508               child_inf->aspace = new_address_space ();
509               child_inf->pspace = new program_space (child_inf->aspace);
510               child_inf->removable = 1;
511               set_current_program_space (child_inf->pspace);
512               clone_program_space (child_inf->pspace, parent_inf->pspace);
513
514               /* solib_create_inferior_hook relies on the current
515                  thread.  */
516               switch_to_thread (child_thr);
517
518               /* Let the shared library layer (e.g., solib-svr4) learn
519                  about this new process, relocate the cloned exec, pull
520                  in shared libraries, and install the solib event
521                  breakpoint.  If a "cloned-VM" event was propagated
522                  better throughout the core, this wouldn't be
523                  required.  */
524               solib_create_inferior_hook (0);
525             }
526         }
527
528       if (has_vforked)
529         {
530           struct inferior *parent_inf;
531
532           parent_inf = current_inferior ();
533
534           /* If we detached from the child, then we have to be careful
535              to not insert breakpoints in the parent until the child
536              is done with the shared memory region.  However, if we're
537              staying attached to the child, then we can and should
538              insert breakpoints, so that we can debug it.  A
539              subsequent child exec or exit is enough to know when does
540              the child stops using the parent's address space.  */
541           parent_inf->waiting_for_vfork_done = detach_fork;
542           parent_inf->pspace->breakpoints_not_allowed = detach_fork;
543         }
544     }
545   else
546     {
547       /* Follow the child.  */
548       struct inferior *parent_inf, *child_inf;
549       struct program_space *parent_pspace;
550
551       if (print_inferior_events)
552         {
553           std::string parent_pid = target_pid_to_str (parent_ptid);
554           std::string child_pid = target_pid_to_str (child_ptid);
555
556           target_terminal::ours_for_output ();
557           fprintf_filtered (gdb_stdlog,
558                             _("[Attaching after %s %s to child %s]\n"),
559                             parent_pid.c_str (),
560                             has_vforked ? "vfork" : "fork",
561                             child_pid.c_str ());
562         }
563
564       /* Add the new inferior first, so that the target_detach below
565          doesn't unpush the target.  */
566
567       child_inf = add_inferior (child_ptid.pid ());
568
569       parent_inf = current_inferior ();
570       child_inf->attach_flag = parent_inf->attach_flag;
571       copy_terminal_info (child_inf, parent_inf);
572       child_inf->gdbarch = parent_inf->gdbarch;
573       copy_inferior_target_desc_info (child_inf, parent_inf);
574
575       parent_pspace = parent_inf->pspace;
576
577       process_stratum_target *target = parent_inf->process_target ();
578
579       {
580         /* Hold a strong reference to the target while (maybe)
581            detaching the parent.  Otherwise detaching could close the
582            target.  */
583         auto target_ref = target_ops_ref::new_reference (target);
584
585         /* If we're vforking, we want to hold on to the parent until
586            the child exits or execs.  At child exec or exit time we
587            can remove the old breakpoints from the parent and detach
588            or resume debugging it.  Otherwise, detach the parent now;
589            we'll want to reuse it's program/address spaces, but we
590            can't set them to the child before removing breakpoints
591            from the parent, otherwise, the breakpoints module could
592            decide to remove breakpoints from the wrong process (since
593            they'd be assigned to the same address space).  */
594
595         if (has_vforked)
596           {
597             gdb_assert (child_inf->vfork_parent == NULL);
598             gdb_assert (parent_inf->vfork_child == NULL);
599             child_inf->vfork_parent = parent_inf;
600             child_inf->pending_detach = 0;
601             parent_inf->vfork_child = child_inf;
602             parent_inf->pending_detach = detach_fork;
603             parent_inf->waiting_for_vfork_done = 0;
604           }
605         else if (detach_fork)
606           {
607             if (print_inferior_events)
608               {
609                 /* Ensure that we have a process ptid.  */
610                 ptid_t process_ptid = ptid_t (parent_ptid.pid ());
611
612                 target_terminal::ours_for_output ();
613                 fprintf_filtered (gdb_stdlog,
614                                   _("[Detaching after fork from "
615                                     "parent %s]\n"),
616                                   target_pid_to_str (process_ptid).c_str ());
617               }
618
619             target_detach (parent_inf, 0);
620             parent_inf = NULL;
621           }
622
623         /* Note that the detach above makes PARENT_INF dangling.  */
624
625         /* Add the child thread to the appropriate lists, and switch
626            to this new thread, before cloning the program space, and
627            informing the solib layer about this new process.  */
628
629         set_current_inferior (child_inf);
630         child_inf->push_target (target);
631       }
632
633       thread_info *child_thr = add_thread_silent (target, child_ptid);
634
635       /* If this is a vfork child, then the address-space is shared
636          with the parent.  If we detached from the parent, then we can
637          reuse the parent's program/address spaces.  */
638       if (has_vforked || detach_fork)
639         {
640           child_inf->pspace = parent_pspace;
641           child_inf->aspace = child_inf->pspace->aspace;
642
643           exec_on_vfork ();
644         }
645       else
646         {
647           child_inf->aspace = new_address_space ();
648           child_inf->pspace = new program_space (child_inf->aspace);
649           child_inf->removable = 1;
650           child_inf->symfile_flags = SYMFILE_NO_READ;
651           set_current_program_space (child_inf->pspace);
652           clone_program_space (child_inf->pspace, parent_pspace);
653
654           /* Let the shared library layer (e.g., solib-svr4) learn
655              about this new process, relocate the cloned exec, pull in
656              shared libraries, and install the solib event breakpoint.
657              If a "cloned-VM" event was propagated better throughout
658              the core, this wouldn't be required.  */
659           solib_create_inferior_hook (0);
660         }
661
662       switch_to_thread (child_thr);
663     }
664
665   target_follow_fork (follow_child, detach_fork);
666
667   return false;
668 }
669
670 /* Tell the target to follow the fork we're stopped at.  Returns true
671    if the inferior should be resumed; false, if the target for some
672    reason decided it's best not to resume.  */
673
674 static bool
675 follow_fork ()
676 {
677   bool follow_child = (follow_fork_mode_string == follow_fork_mode_child);
678   bool should_resume = true;
679   struct thread_info *tp;
680
681   /* Copy user stepping state to the new inferior thread.  FIXME: the
682      followed fork child thread should have a copy of most of the
683      parent thread structure's run control related fields, not just these.
684      Initialized to avoid "may be used uninitialized" warnings from gcc.  */
685   struct breakpoint *step_resume_breakpoint = NULL;
686   struct breakpoint *exception_resume_breakpoint = NULL;
687   CORE_ADDR step_range_start = 0;
688   CORE_ADDR step_range_end = 0;
689   int current_line = 0;
690   symtab *current_symtab = NULL;
691   struct frame_id step_frame_id = { 0 };
692   struct thread_fsm *thread_fsm = NULL;
693
694   if (!non_stop)
695     {
696       process_stratum_target *wait_target;
697       ptid_t wait_ptid;
698       struct target_waitstatus wait_status;
699
700       /* Get the last target status returned by target_wait().  */
701       get_last_target_status (&wait_target, &wait_ptid, &wait_status);
702
703       /* If not stopped at a fork event, then there's nothing else to
704          do.  */
705       if (wait_status.kind != TARGET_WAITKIND_FORKED
706           && wait_status.kind != TARGET_WAITKIND_VFORKED)
707         return 1;
708
709       /* Check if we switched over from WAIT_PTID, since the event was
710          reported.  */
711       if (wait_ptid != minus_one_ptid
712           && (current_inferior ()->process_target () != wait_target
713               || inferior_ptid != wait_ptid))
714         {
715           /* We did.  Switch back to WAIT_PTID thread, to tell the
716              target to follow it (in either direction).  We'll
717              afterwards refuse to resume, and inform the user what
718              happened.  */
719           thread_info *wait_thread = find_thread_ptid (wait_target, wait_ptid);
720           switch_to_thread (wait_thread);
721           should_resume = false;
722         }
723     }
724
725   tp = inferior_thread ();
726
727   /* If there were any forks/vforks that were caught and are now to be
728      followed, then do so now.  */
729   switch (tp->pending_follow.kind)
730     {
731     case TARGET_WAITKIND_FORKED:
732     case TARGET_WAITKIND_VFORKED:
733       {
734         ptid_t parent, child;
735
736         /* If the user did a next/step, etc, over a fork call,
737            preserve the stepping state in the fork child.  */
738         if (follow_child && should_resume)
739           {
740             step_resume_breakpoint = clone_momentary_breakpoint
741                                          (tp->control.step_resume_breakpoint);
742             step_range_start = tp->control.step_range_start;
743             step_range_end = tp->control.step_range_end;
744             current_line = tp->current_line;
745             current_symtab = tp->current_symtab;
746             step_frame_id = tp->control.step_frame_id;
747             exception_resume_breakpoint
748               = clone_momentary_breakpoint (tp->control.exception_resume_breakpoint);
749             thread_fsm = tp->thread_fsm;
750
751             /* For now, delete the parent's sr breakpoint, otherwise,
752                parent/child sr breakpoints are considered duplicates,
753                and the child version will not be installed.  Remove
754                this when the breakpoints module becomes aware of
755                inferiors and address spaces.  */
756             delete_step_resume_breakpoint (tp);
757             tp->control.step_range_start = 0;
758             tp->control.step_range_end = 0;
759             tp->control.step_frame_id = null_frame_id;
760             delete_exception_resume_breakpoint (tp);
761             tp->thread_fsm = NULL;
762           }
763
764         parent = inferior_ptid;
765         child = tp->pending_follow.value.related_pid;
766
767         process_stratum_target *parent_targ = tp->inf->process_target ();
768         /* Set up inferior(s) as specified by the caller, and tell the
769            target to do whatever is necessary to follow either parent
770            or child.  */
771         if (follow_fork_inferior (follow_child, detach_fork))
772           {
773             /* Target refused to follow, or there's some other reason
774                we shouldn't resume.  */
775             should_resume = 0;
776           }
777         else
778           {
779             /* This pending follow fork event is now handled, one way
780                or another.  The previous selected thread may be gone
781                from the lists by now, but if it is still around, need
782                to clear the pending follow request.  */
783             tp = find_thread_ptid (parent_targ, parent);
784             if (tp)
785               tp->pending_follow.kind = TARGET_WAITKIND_SPURIOUS;
786
787             /* This makes sure we don't try to apply the "Switched
788                over from WAIT_PID" logic above.  */
789             nullify_last_target_wait_ptid ();
790
791             /* If we followed the child, switch to it...  */
792             if (follow_child)
793               {
794                 thread_info *child_thr = find_thread_ptid (parent_targ, child);
795                 switch_to_thread (child_thr);
796
797                 /* ... and preserve the stepping state, in case the
798                    user was stepping over the fork call.  */
799                 if (should_resume)
800                   {
801                     tp = inferior_thread ();
802                     tp->control.step_resume_breakpoint
803                       = step_resume_breakpoint;
804                     tp->control.step_range_start = step_range_start;
805                     tp->control.step_range_end = step_range_end;
806                     tp->current_line = current_line;
807                     tp->current_symtab = current_symtab;
808                     tp->control.step_frame_id = step_frame_id;
809                     tp->control.exception_resume_breakpoint
810                       = exception_resume_breakpoint;
811                     tp->thread_fsm = thread_fsm;
812                   }
813                 else
814                   {
815                     /* If we get here, it was because we're trying to
816                        resume from a fork catchpoint, but, the user
817                        has switched threads away from the thread that
818                        forked.  In that case, the resume command
819                        issued is most likely not applicable to the
820                        child, so just warn, and refuse to resume.  */
821                     warning (_("Not resuming: switched threads "
822                                "before following fork child."));
823                   }
824
825                 /* Reset breakpoints in the child as appropriate.  */
826                 follow_inferior_reset_breakpoints ();
827               }
828           }
829       }
830       break;
831     case TARGET_WAITKIND_SPURIOUS:
832       /* Nothing to follow.  */
833       break;
834     default:
835       internal_error (__FILE__, __LINE__,
836                       "Unexpected pending_follow.kind %d\n",
837                       tp->pending_follow.kind);
838       break;
839     }
840
841   return should_resume;
842 }
843
844 static void
845 follow_inferior_reset_breakpoints (void)
846 {
847   struct thread_info *tp = inferior_thread ();
848
849   /* Was there a step_resume breakpoint?  (There was if the user
850      did a "next" at the fork() call.)  If so, explicitly reset its
851      thread number.  Cloned step_resume breakpoints are disabled on
852      creation, so enable it here now that it is associated with the
853      correct thread.
854
855      step_resumes are a form of bp that are made to be per-thread.
856      Since we created the step_resume bp when the parent process
857      was being debugged, and now are switching to the child process,
858      from the breakpoint package's viewpoint, that's a switch of
859      "threads".  We must update the bp's notion of which thread
860      it is for, or it'll be ignored when it triggers.  */
861
862   if (tp->control.step_resume_breakpoint)
863     {
864       breakpoint_re_set_thread (tp->control.step_resume_breakpoint);
865       tp->control.step_resume_breakpoint->loc->enabled = 1;
866     }
867
868   /* Treat exception_resume breakpoints like step_resume breakpoints.  */
869   if (tp->control.exception_resume_breakpoint)
870     {
871       breakpoint_re_set_thread (tp->control.exception_resume_breakpoint);
872       tp->control.exception_resume_breakpoint->loc->enabled = 1;
873     }
874
875   /* Reinsert all breakpoints in the child.  The user may have set
876      breakpoints after catching the fork, in which case those
877      were never set in the child, but only in the parent.  This makes
878      sure the inserted breakpoints match the breakpoint list.  */
879
880   breakpoint_re_set ();
881   insert_breakpoints ();
882 }
883
884 /* The child has exited or execed: resume threads of the parent the
885    user wanted to be executing.  */
886
887 static int
888 proceed_after_vfork_done (struct thread_info *thread,
889                           void *arg)
890 {
891   int pid = * (int *) arg;
892
893   if (thread->ptid.pid () == pid
894       && thread->state == THREAD_RUNNING
895       && !thread->executing
896       && !thread->stop_requested
897       && thread->suspend.stop_signal == GDB_SIGNAL_0)
898     {
899       infrun_debug_printf ("resuming vfork parent thread %s",
900                            target_pid_to_str (thread->ptid).c_str ());
901
902       switch_to_thread (thread);
903       clear_proceed_status (0);
904       proceed ((CORE_ADDR) -1, GDB_SIGNAL_DEFAULT);
905     }
906
907   return 0;
908 }
909
910 /* Called whenever we notice an exec or exit event, to handle
911    detaching or resuming a vfork parent.  */
912
913 static void
914 handle_vfork_child_exec_or_exit (int exec)
915 {
916   struct inferior *inf = current_inferior ();
917
918   if (inf->vfork_parent)
919     {
920       int resume_parent = -1;
921
922       /* This exec or exit marks the end of the shared memory region
923          between the parent and the child.  Break the bonds.  */
924       inferior *vfork_parent = inf->vfork_parent;
925       inf->vfork_parent->vfork_child = NULL;
926       inf->vfork_parent = NULL;
927
928       /* If the user wanted to detach from the parent, now is the
929          time.  */
930       if (vfork_parent->pending_detach)
931         {
932           struct program_space *pspace;
933           struct address_space *aspace;
934
935           /* follow-fork child, detach-on-fork on.  */
936
937           vfork_parent->pending_detach = 0;
938
939           scoped_restore_current_pspace_and_thread restore_thread;
940
941           /* We're letting loose of the parent.  */
942           thread_info *tp = any_live_thread_of_inferior (vfork_parent);
943           switch_to_thread (tp);
944
945           /* We're about to detach from the parent, which implicitly
946              removes breakpoints from its address space.  There's a
947              catch here: we want to reuse the spaces for the child,
948              but, parent/child are still sharing the pspace at this
949              point, although the exec in reality makes the kernel give
950              the child a fresh set of new pages.  The problem here is
951              that the breakpoints module being unaware of this, would
952              likely chose the child process to write to the parent
953              address space.  Swapping the child temporarily away from
954              the spaces has the desired effect.  Yes, this is "sort
955              of" a hack.  */
956
957           pspace = inf->pspace;
958           aspace = inf->aspace;
959           inf->aspace = NULL;
960           inf->pspace = NULL;
961
962           if (print_inferior_events)
963             {
964               std::string pidstr
965                 = target_pid_to_str (ptid_t (vfork_parent->pid));
966
967               target_terminal::ours_for_output ();
968
969               if (exec)
970                 {
971                   fprintf_filtered (gdb_stdlog,
972                                     _("[Detaching vfork parent %s "
973                                       "after child exec]\n"), pidstr.c_str ());
974                 }
975               else
976                 {
977                   fprintf_filtered (gdb_stdlog,
978                                     _("[Detaching vfork parent %s "
979                                       "after child exit]\n"), pidstr.c_str ());
980                 }
981             }
982
983           target_detach (vfork_parent, 0);
984
985           /* Put it back.  */
986           inf->pspace = pspace;
987           inf->aspace = aspace;
988         }
989       else if (exec)
990         {
991           /* We're staying attached to the parent, so, really give the
992              child a new address space.  */
993           inf->pspace = new program_space (maybe_new_address_space ());
994           inf->aspace = inf->pspace->aspace;
995           inf->removable = 1;
996           set_current_program_space (inf->pspace);
997
998           resume_parent = vfork_parent->pid;
999         }
1000       else
1001         {
1002           /* If this is a vfork child exiting, then the pspace and
1003              aspaces were shared with the parent.  Since we're
1004              reporting the process exit, we'll be mourning all that is
1005              found in the address space, and switching to null_ptid,
1006              preparing to start a new inferior.  But, since we don't
1007              want to clobber the parent's address/program spaces, we
1008              go ahead and create a new one for this exiting
1009              inferior.  */
1010
1011           /* Switch to no-thread while running clone_program_space, so
1012              that clone_program_space doesn't want to read the
1013              selected frame of a dead process.  */
1014           scoped_restore_current_thread restore_thread;
1015           switch_to_no_thread ();
1016
1017           inf->pspace = new program_space (maybe_new_address_space ());
1018           inf->aspace = inf->pspace->aspace;
1019           set_current_program_space (inf->pspace);
1020           inf->removable = 1;
1021           inf->symfile_flags = SYMFILE_NO_READ;
1022           clone_program_space (inf->pspace, vfork_parent->pspace);
1023
1024           resume_parent = vfork_parent->pid;
1025         }
1026
1027       gdb_assert (current_program_space == inf->pspace);
1028
1029       if (non_stop && resume_parent != -1)
1030         {
1031           /* If the user wanted the parent to be running, let it go
1032              free now.  */
1033           scoped_restore_current_thread restore_thread;
1034
1035           infrun_debug_printf ("resuming vfork parent process %d",
1036                                resume_parent);
1037
1038           iterate_over_threads (proceed_after_vfork_done, &resume_parent);
1039         }
1040     }
1041 }
1042
1043 /* Enum strings for "set|show follow-exec-mode".  */
1044
1045 static const char follow_exec_mode_new[] = "new";
1046 static const char follow_exec_mode_same[] = "same";
1047 static const char *const follow_exec_mode_names[] =
1048 {
1049   follow_exec_mode_new,
1050   follow_exec_mode_same,
1051   NULL,
1052 };
1053
1054 static const char *follow_exec_mode_string = follow_exec_mode_same;
1055 static void
1056 show_follow_exec_mode_string (struct ui_file *file, int from_tty,
1057                               struct cmd_list_element *c, const char *value)
1058 {
1059   fprintf_filtered (file, _("Follow exec mode is \"%s\".\n"),  value);
1060 }
1061
1062 /* EXEC_FILE_TARGET is assumed to be non-NULL.  */
1063
1064 static void
1065 follow_exec (ptid_t ptid, const char *exec_file_target)
1066 {
1067   struct inferior *inf = current_inferior ();
1068   int pid = ptid.pid ();
1069   ptid_t process_ptid;
1070
1071   /* Switch terminal for any messages produced e.g. by
1072      breakpoint_re_set.  */
1073   target_terminal::ours_for_output ();
1074
1075   /* This is an exec event that we actually wish to pay attention to.
1076      Refresh our symbol table to the newly exec'd program, remove any
1077      momentary bp's, etc.
1078
1079      If there are breakpoints, they aren't really inserted now,
1080      since the exec() transformed our inferior into a fresh set
1081      of instructions.
1082
1083      We want to preserve symbolic breakpoints on the list, since
1084      we have hopes that they can be reset after the new a.out's
1085      symbol table is read.
1086
1087      However, any "raw" breakpoints must be removed from the list
1088      (e.g., the solib bp's), since their address is probably invalid
1089      now.
1090
1091      And, we DON'T want to call delete_breakpoints() here, since
1092      that may write the bp's "shadow contents" (the instruction
1093      value that was overwritten with a TRAP instruction).  Since
1094      we now have a new a.out, those shadow contents aren't valid.  */
1095
1096   mark_breakpoints_out ();
1097
1098   /* The target reports the exec event to the main thread, even if
1099      some other thread does the exec, and even if the main thread was
1100      stopped or already gone.  We may still have non-leader threads of
1101      the process on our list.  E.g., on targets that don't have thread
1102      exit events (like remote); or on native Linux in non-stop mode if
1103      there were only two threads in the inferior and the non-leader
1104      one is the one that execs (and nothing forces an update of the
1105      thread list up to here).  When debugging remotely, it's best to
1106      avoid extra traffic, when possible, so avoid syncing the thread
1107      list with the target, and instead go ahead and delete all threads
1108      of the process but one that reported the event.  Note this must
1109      be done before calling update_breakpoints_after_exec, as
1110      otherwise clearing the threads' resources would reference stale
1111      thread breakpoints -- it may have been one of these threads that
1112      stepped across the exec.  We could just clear their stepping
1113      states, but as long as we're iterating, might as well delete
1114      them.  Deleting them now rather than at the next user-visible
1115      stop provides a nicer sequence of events for user and MI
1116      notifications.  */
1117   for (thread_info *th : all_threads_safe ())
1118     if (th->ptid.pid () == pid && th->ptid != ptid)
1119       delete_thread (th);
1120
1121   /* We also need to clear any left over stale state for the
1122      leader/event thread.  E.g., if there was any step-resume
1123      breakpoint or similar, it's gone now.  We cannot truly
1124      step-to-next statement through an exec().  */
1125   thread_info *th = inferior_thread ();
1126   th->control.step_resume_breakpoint = NULL;
1127   th->control.exception_resume_breakpoint = NULL;
1128   th->control.single_step_breakpoints = NULL;
1129   th->control.step_range_start = 0;
1130   th->control.step_range_end = 0;
1131
1132   /* The user may have had the main thread held stopped in the
1133      previous image (e.g., schedlock on, or non-stop).  Release
1134      it now.  */
1135   th->stop_requested = 0;
1136
1137   update_breakpoints_after_exec ();
1138
1139   /* What is this a.out's name?  */
1140   process_ptid = ptid_t (pid);
1141   printf_unfiltered (_("%s is executing new program: %s\n"),
1142                      target_pid_to_str (process_ptid).c_str (),
1143                      exec_file_target);
1144
1145   /* We've followed the inferior through an exec.  Therefore, the
1146      inferior has essentially been killed & reborn.  */
1147
1148   breakpoint_init_inferior (inf_execd);
1149
1150   gdb::unique_xmalloc_ptr<char> exec_file_host
1151     = exec_file_find (exec_file_target, NULL);
1152
1153   /* If we were unable to map the executable target pathname onto a host
1154      pathname, tell the user that.  Otherwise GDB's subsequent behavior
1155      is confusing.  Maybe it would even be better to stop at this point
1156      so that the user can specify a file manually before continuing.  */
1157   if (exec_file_host == NULL)
1158     warning (_("Could not load symbols for executable %s.\n"
1159                "Do you need \"set sysroot\"?"),
1160              exec_file_target);
1161
1162   /* Reset the shared library package.  This ensures that we get a
1163      shlib event when the child reaches "_start", at which point the
1164      dld will have had a chance to initialize the child.  */
1165   /* Also, loading a symbol file below may trigger symbol lookups, and
1166      we don't want those to be satisfied by the libraries of the
1167      previous incarnation of this process.  */
1168   no_shared_libraries (NULL, 0);
1169
1170   if (follow_exec_mode_string == follow_exec_mode_new)
1171     {
1172       /* The user wants to keep the old inferior and program spaces
1173          around.  Create a new fresh one, and switch to it.  */
1174
1175       /* Do exit processing for the original inferior before setting the new
1176          inferior's pid.  Having two inferiors with the same pid would confuse
1177          find_inferior_p(t)id.  Transfer the terminal state and info from the
1178           old to the new inferior.  */
1179       inf = add_inferior_with_spaces ();
1180       swap_terminal_info (inf, current_inferior ());
1181       exit_inferior_silent (current_inferior ());
1182
1183       inf->pid = pid;
1184       target_follow_exec (inf, exec_file_target);
1185
1186       inferior *org_inferior = current_inferior ();
1187       switch_to_inferior_no_thread (inf);
1188       inf->push_target (org_inferior->process_target ());
1189       thread_info *thr = add_thread (inf->process_target (), ptid);
1190       switch_to_thread (thr);
1191     }
1192   else
1193     {
1194       /* The old description may no longer be fit for the new image.
1195          E.g, a 64-bit process exec'ed a 32-bit process.  Clear the
1196          old description; we'll read a new one below.  No need to do
1197          this on "follow-exec-mode new", as the old inferior stays
1198          around (its description is later cleared/refetched on
1199          restart).  */
1200       target_clear_description ();
1201     }
1202
1203   gdb_assert (current_program_space == inf->pspace);
1204
1205   /* Attempt to open the exec file.  SYMFILE_DEFER_BP_RESET is used
1206      because the proper displacement for a PIE (Position Independent
1207      Executable) main symbol file will only be computed by
1208      solib_create_inferior_hook below.  breakpoint_re_set would fail
1209      to insert the breakpoints with the zero displacement.  */
1210   try_open_exec_file (exec_file_host.get (), inf, SYMFILE_DEFER_BP_RESET);
1211
1212   /* If the target can specify a description, read it.  Must do this
1213      after flipping to the new executable (because the target supplied
1214      description must be compatible with the executable's
1215      architecture, and the old executable may e.g., be 32-bit, while
1216      the new one 64-bit), and before anything involving memory or
1217      registers.  */
1218   target_find_description ();
1219
1220   gdb::observers::inferior_execd.notify (inf);
1221
1222   breakpoint_re_set ();
1223
1224   /* Reinsert all breakpoints.  (Those which were symbolic have
1225      been reset to the proper address in the new a.out, thanks
1226      to symbol_file_command...).  */
1227   insert_breakpoints ();
1228
1229   /* The next resume of this inferior should bring it to the shlib
1230      startup breakpoints.  (If the user had also set bp's on
1231      "main" from the old (parent) process, then they'll auto-
1232      matically get reset there in the new process.).  */
1233 }
1234
1235 /* The chain of threads that need to do a step-over operation to get
1236    past e.g., a breakpoint.  What technique is used to step over the
1237    breakpoint/watchpoint does not matter -- all threads end up in the
1238    same queue, to maintain rough temporal order of execution, in order
1239    to avoid starvation, otherwise, we could e.g., find ourselves
1240    constantly stepping the same couple threads past their breakpoints
1241    over and over, if the single-step finish fast enough.  */
1242 struct thread_info *global_thread_step_over_chain_head;
1243
1244 /* Bit flags indicating what the thread needs to step over.  */
1245
1246 enum step_over_what_flag
1247   {
1248     /* Step over a breakpoint.  */
1249     STEP_OVER_BREAKPOINT = 1,
1250
1251     /* Step past a non-continuable watchpoint, in order to let the
1252        instruction execute so we can evaluate the watchpoint
1253        expression.  */
1254     STEP_OVER_WATCHPOINT = 2
1255   };
1256 DEF_ENUM_FLAGS_TYPE (enum step_over_what_flag, step_over_what);
1257
1258 /* Info about an instruction that is being stepped over.  */
1259
1260 struct step_over_info
1261 {
1262   /* If we're stepping past a breakpoint, this is the address space
1263      and address of the instruction the breakpoint is set at.  We'll
1264      skip inserting all breakpoints here.  Valid iff ASPACE is
1265      non-NULL.  */
1266   const address_space *aspace = nullptr;
1267   CORE_ADDR address = 0;
1268
1269   /* The instruction being stepped over triggers a nonsteppable
1270      watchpoint.  If true, we'll skip inserting watchpoints.  */
1271   int nonsteppable_watchpoint_p = 0;
1272
1273   /* The thread's global number.  */
1274   int thread = -1;
1275 };
1276
1277 /* The step-over info of the location that is being stepped over.
1278
1279    Note that with async/breakpoint always-inserted mode, a user might
1280    set a new breakpoint/watchpoint/etc. exactly while a breakpoint is
1281    being stepped over.  As setting a new breakpoint inserts all
1282    breakpoints, we need to make sure the breakpoint being stepped over
1283    isn't inserted then.  We do that by only clearing the step-over
1284    info when the step-over is actually finished (or aborted).
1285
1286    Presently GDB can only step over one breakpoint at any given time.
1287    Given threads that can't run code in the same address space as the
1288    breakpoint's can't really miss the breakpoint, GDB could be taught
1289    to step-over at most one breakpoint per address space (so this info
1290    could move to the address space object if/when GDB is extended).
1291    The set of breakpoints being stepped over will normally be much
1292    smaller than the set of all breakpoints, so a flag in the
1293    breakpoint location structure would be wasteful.  A separate list
1294    also saves complexity and run-time, as otherwise we'd have to go
1295    through all breakpoint locations clearing their flag whenever we
1296    start a new sequence.  Similar considerations weigh against storing
1297    this info in the thread object.  Plus, not all step overs actually
1298    have breakpoint locations -- e.g., stepping past a single-step
1299    breakpoint, or stepping to complete a non-continuable
1300    watchpoint.  */
1301 static struct step_over_info step_over_info;
1302
1303 /* Record the address of the breakpoint/instruction we're currently
1304    stepping over.
1305    N.B. We record the aspace and address now, instead of say just the thread,
1306    because when we need the info later the thread may be running.  */
1307
1308 static void
1309 set_step_over_info (const address_space *aspace, CORE_ADDR address,
1310                     int nonsteppable_watchpoint_p,
1311                     int thread)
1312 {
1313   step_over_info.aspace = aspace;
1314   step_over_info.address = address;
1315   step_over_info.nonsteppable_watchpoint_p = nonsteppable_watchpoint_p;
1316   step_over_info.thread = thread;
1317 }
1318
1319 /* Called when we're not longer stepping over a breakpoint / an
1320    instruction, so all breakpoints are free to be (re)inserted.  */
1321
1322 static void
1323 clear_step_over_info (void)
1324 {
1325   infrun_debug_printf ("clearing step over info");
1326   step_over_info.aspace = NULL;
1327   step_over_info.address = 0;
1328   step_over_info.nonsteppable_watchpoint_p = 0;
1329   step_over_info.thread = -1;
1330 }
1331
1332 /* See infrun.h.  */
1333
1334 int
1335 stepping_past_instruction_at (struct address_space *aspace,
1336                               CORE_ADDR address)
1337 {
1338   return (step_over_info.aspace != NULL
1339           && breakpoint_address_match (aspace, address,
1340                                        step_over_info.aspace,
1341                                        step_over_info.address));
1342 }
1343
1344 /* See infrun.h.  */
1345
1346 int
1347 thread_is_stepping_over_breakpoint (int thread)
1348 {
1349   return (step_over_info.thread != -1
1350           && thread == step_over_info.thread);
1351 }
1352
1353 /* See infrun.h.  */
1354
1355 int
1356 stepping_past_nonsteppable_watchpoint (void)
1357 {
1358   return step_over_info.nonsteppable_watchpoint_p;
1359 }
1360
1361 /* Returns true if step-over info is valid.  */
1362
1363 static bool
1364 step_over_info_valid_p (void)
1365 {
1366   return (step_over_info.aspace != NULL
1367           || stepping_past_nonsteppable_watchpoint ());
1368 }
1369
1370 \f
1371 /* Displaced stepping.  */
1372
1373 /* In non-stop debugging mode, we must take special care to manage
1374    breakpoints properly; in particular, the traditional strategy for
1375    stepping a thread past a breakpoint it has hit is unsuitable.
1376    'Displaced stepping' is a tactic for stepping one thread past a
1377    breakpoint it has hit while ensuring that other threads running
1378    concurrently will hit the breakpoint as they should.
1379
1380    The traditional way to step a thread T off a breakpoint in a
1381    multi-threaded program in all-stop mode is as follows:
1382
1383    a0) Initially, all threads are stopped, and breakpoints are not
1384        inserted.
1385    a1) We single-step T, leaving breakpoints uninserted.
1386    a2) We insert breakpoints, and resume all threads.
1387
1388    In non-stop debugging, however, this strategy is unsuitable: we
1389    don't want to have to stop all threads in the system in order to
1390    continue or step T past a breakpoint.  Instead, we use displaced
1391    stepping:
1392
1393    n0) Initially, T is stopped, other threads are running, and
1394        breakpoints are inserted.
1395    n1) We copy the instruction "under" the breakpoint to a separate
1396        location, outside the main code stream, making any adjustments
1397        to the instruction, register, and memory state as directed by
1398        T's architecture.
1399    n2) We single-step T over the instruction at its new location.
1400    n3) We adjust the resulting register and memory state as directed
1401        by T's architecture.  This includes resetting T's PC to point
1402        back into the main instruction stream.
1403    n4) We resume T.
1404
1405    This approach depends on the following gdbarch methods:
1406
1407    - gdbarch_max_insn_length and gdbarch_displaced_step_location
1408      indicate where to copy the instruction, and how much space must
1409      be reserved there.  We use these in step n1.
1410
1411    - gdbarch_displaced_step_copy_insn copies a instruction to a new
1412      address, and makes any necessary adjustments to the instruction,
1413      register contents, and memory.  We use this in step n1.
1414
1415    - gdbarch_displaced_step_fixup adjusts registers and memory after
1416      we have successfully single-stepped the instruction, to yield the
1417      same effect the instruction would have had if we had executed it
1418      at its original address.  We use this in step n3.
1419
1420    The gdbarch_displaced_step_copy_insn and
1421    gdbarch_displaced_step_fixup functions must be written so that
1422    copying an instruction with gdbarch_displaced_step_copy_insn,
1423    single-stepping across the copied instruction, and then applying
1424    gdbarch_displaced_insn_fixup should have the same effects on the
1425    thread's memory and registers as stepping the instruction in place
1426    would have.  Exactly which responsibilities fall to the copy and
1427    which fall to the fixup is up to the author of those functions.
1428
1429    See the comments in gdbarch.sh for details.
1430
1431    Note that displaced stepping and software single-step cannot
1432    currently be used in combination, although with some care I think
1433    they could be made to.  Software single-step works by placing
1434    breakpoints on all possible subsequent instructions; if the
1435    displaced instruction is a PC-relative jump, those breakpoints
1436    could fall in very strange places --- on pages that aren't
1437    executable, or at addresses that are not proper instruction
1438    boundaries.  (We do generally let other threads run while we wait
1439    to hit the software single-step breakpoint, and they might
1440    encounter such a corrupted instruction.)  One way to work around
1441    this would be to have gdbarch_displaced_step_copy_insn fully
1442    simulate the effect of PC-relative instructions (and return NULL)
1443    on architectures that use software single-stepping.
1444
1445    In non-stop mode, we can have independent and simultaneous step
1446    requests, so more than one thread may need to simultaneously step
1447    over a breakpoint.  The current implementation assumes there is
1448    only one scratch space per process.  In this case, we have to
1449    serialize access to the scratch space.  If thread A wants to step
1450    over a breakpoint, but we are currently waiting for some other
1451    thread to complete a displaced step, we leave thread A stopped and
1452    place it in the displaced_step_request_queue.  Whenever a displaced
1453    step finishes, we pick the next thread in the queue and start a new
1454    displaced step operation on it.  See displaced_step_prepare and
1455    displaced_step_finish for details.  */
1456
1457 /* Return true if THREAD is doing a displaced step.  */
1458
1459 static bool
1460 displaced_step_in_progress_thread (thread_info *thread)
1461 {
1462   gdb_assert (thread != NULL);
1463
1464   return thread->displaced_step_state.in_progress ();
1465 }
1466
1467 /* Return true if INF has a thread doing a displaced step.  */
1468
1469 static bool
1470 displaced_step_in_progress (inferior *inf)
1471 {
1472   return inf->displaced_step_state.in_progress_count > 0;
1473 }
1474
1475 /* Return true if any thread is doing a displaced step.  */
1476
1477 static bool
1478 displaced_step_in_progress_any_thread ()
1479 {
1480   for (inferior *inf : all_non_exited_inferiors ())
1481     {
1482       if (displaced_step_in_progress (inf))
1483         return true;
1484     }
1485
1486   return false;
1487 }
1488
1489 static void
1490 infrun_inferior_exit (struct inferior *inf)
1491 {
1492   inf->displaced_step_state.reset ();
1493 }
1494
1495 static void
1496 infrun_inferior_execd (inferior *inf)
1497 {
1498   /* If some threads where was doing a displaced step in this inferior at the
1499      moment of the exec, they no longer exist.  Even if the exec'ing thread
1500      doing a displaced step, we don't want to to any fixup nor restore displaced
1501      stepping buffer bytes.  */
1502   inf->displaced_step_state.reset ();
1503
1504   for (thread_info *thread : inf->threads ())
1505     thread->displaced_step_state.reset ();
1506
1507   /* Since an in-line step is done with everything else stopped, if there was
1508      one in progress at the time of the exec, it must have been the exec'ing
1509      thread.  */
1510   clear_step_over_info ();
1511 }
1512
1513 /* If ON, and the architecture supports it, GDB will use displaced
1514    stepping to step over breakpoints.  If OFF, or if the architecture
1515    doesn't support it, GDB will instead use the traditional
1516    hold-and-step approach.  If AUTO (which is the default), GDB will
1517    decide which technique to use to step over breakpoints depending on
1518    whether the target works in a non-stop way (see use_displaced_stepping).  */
1519
1520 static enum auto_boolean can_use_displaced_stepping = AUTO_BOOLEAN_AUTO;
1521
1522 static void
1523 show_can_use_displaced_stepping (struct ui_file *file, int from_tty,
1524                                  struct cmd_list_element *c,
1525                                  const char *value)
1526 {
1527   if (can_use_displaced_stepping == AUTO_BOOLEAN_AUTO)
1528     fprintf_filtered (file,
1529                       _("Debugger's willingness to use displaced stepping "
1530                         "to step over breakpoints is %s (currently %s).\n"),
1531                       value, target_is_non_stop_p () ? "on" : "off");
1532   else
1533     fprintf_filtered (file,
1534                       _("Debugger's willingness to use displaced stepping "
1535                         "to step over breakpoints is %s.\n"), value);
1536 }
1537
1538 /* Return true if the gdbarch implements the required methods to use
1539    displaced stepping.  */
1540
1541 static bool
1542 gdbarch_supports_displaced_stepping (gdbarch *arch)
1543 {
1544   /* Only check for the presence of `prepare`.  The gdbarch verification ensures
1545      that if `prepare` is provided, so is `finish`.  */
1546   return gdbarch_displaced_step_prepare_p (arch);
1547 }
1548
1549 /* Return non-zero if displaced stepping can/should be used to step
1550    over breakpoints of thread TP.  */
1551
1552 static bool
1553 use_displaced_stepping (thread_info *tp)
1554 {
1555   /* If the user disabled it explicitly, don't use displaced stepping.  */
1556   if (can_use_displaced_stepping == AUTO_BOOLEAN_FALSE)
1557     return false;
1558
1559   /* If "auto", only use displaced stepping if the target operates in a non-stop
1560      way.  */
1561   if (can_use_displaced_stepping == AUTO_BOOLEAN_AUTO
1562       && !target_is_non_stop_p ())
1563     return false;
1564
1565   gdbarch *gdbarch = get_thread_regcache (tp)->arch ();
1566
1567   /* If the architecture doesn't implement displaced stepping, don't use
1568      it.  */
1569   if (!gdbarch_supports_displaced_stepping (gdbarch))
1570     return false;
1571
1572   /* If recording, don't use displaced stepping.  */
1573   if (find_record_target () != nullptr)
1574     return false;
1575
1576   /* If displaced stepping failed before for this inferior, don't bother trying
1577      again.  */
1578   if (tp->inf->displaced_step_state.failed_before)
1579     return false;
1580
1581   return true;
1582 }
1583
1584 /* Simple function wrapper around displaced_step_thread_state::reset.  */
1585
1586 static void
1587 displaced_step_reset (displaced_step_thread_state *displaced)
1588 {
1589   displaced->reset ();
1590 }
1591
1592 /* A cleanup that wraps displaced_step_reset.  We use this instead of, say,
1593    SCOPE_EXIT, because it needs to be discardable with "cleanup.release ()".  */
1594
1595 using displaced_step_reset_cleanup = FORWARD_SCOPE_EXIT (displaced_step_reset);
1596
1597 /* See infrun.h.  */
1598
1599 std::string
1600 displaced_step_dump_bytes (const gdb_byte *buf, size_t len)
1601 {
1602   std::string ret;
1603
1604   for (size_t i = 0; i < len; i++)
1605     {
1606       if (i == 0)
1607         ret += string_printf ("%02x", buf[i]);
1608       else
1609         ret += string_printf (" %02x", buf[i]);
1610     }
1611
1612   return ret;
1613 }
1614
1615 /* Prepare to single-step, using displaced stepping.
1616
1617    Note that we cannot use displaced stepping when we have a signal to
1618    deliver.  If we have a signal to deliver and an instruction to step
1619    over, then after the step, there will be no indication from the
1620    target whether the thread entered a signal handler or ignored the
1621    signal and stepped over the instruction successfully --- both cases
1622    result in a simple SIGTRAP.  In the first case we mustn't do a
1623    fixup, and in the second case we must --- but we can't tell which.
1624    Comments in the code for 'random signals' in handle_inferior_event
1625    explain how we handle this case instead.
1626
1627    Returns DISPLACED_STEP_PREPARE_STATUS_OK if preparing was successful -- this
1628    thread is going to be stepped now; DISPLACED_STEP_PREPARE_STATUS_UNAVAILABLE
1629    if displaced stepping this thread got queued; or
1630    DISPLACED_STEP_PREPARE_STATUS_CANT if this instruction can't be displaced
1631    stepped.  */
1632
1633 static displaced_step_prepare_status
1634 displaced_step_prepare_throw (thread_info *tp)
1635 {
1636   regcache *regcache = get_thread_regcache (tp);
1637   struct gdbarch *gdbarch = regcache->arch ();
1638   displaced_step_thread_state &disp_step_thread_state
1639     = tp->displaced_step_state;
1640
1641   /* We should never reach this function if the architecture does not
1642      support displaced stepping.  */
1643   gdb_assert (gdbarch_supports_displaced_stepping (gdbarch));
1644
1645   /* Nor if the thread isn't meant to step over a breakpoint.  */
1646   gdb_assert (tp->control.trap_expected);
1647
1648   /* Disable range stepping while executing in the scratch pad.  We
1649      want a single-step even if executing the displaced instruction in
1650      the scratch buffer lands within the stepping range (e.g., a
1651      jump/branch).  */
1652   tp->control.may_range_step = 0;
1653
1654   /* We are about to start a displaced step for this thread.  If one is already
1655      in progress, something's wrong.  */
1656   gdb_assert (!disp_step_thread_state.in_progress ());
1657
1658   if (tp->inf->displaced_step_state.unavailable)
1659     {
1660       /* The gdbarch tells us it's not worth asking to try a prepare because
1661          it is likely that it will return unavailable, so don't bother asking.  */
1662
1663       displaced_debug_printf ("deferring step of %s",
1664                               target_pid_to_str (tp->ptid).c_str ());
1665
1666       global_thread_step_over_chain_enqueue (tp);
1667       return DISPLACED_STEP_PREPARE_STATUS_UNAVAILABLE;
1668     }
1669
1670   displaced_debug_printf ("displaced-stepping %s now",
1671                           target_pid_to_str (tp->ptid).c_str ());
1672
1673   scoped_restore_current_thread restore_thread;
1674
1675   switch_to_thread (tp);
1676
1677   CORE_ADDR original_pc = regcache_read_pc (regcache);
1678   CORE_ADDR displaced_pc;
1679
1680   displaced_step_prepare_status status
1681     = gdbarch_displaced_step_prepare (gdbarch, tp, displaced_pc);
1682
1683   if (status == DISPLACED_STEP_PREPARE_STATUS_CANT)
1684     {
1685       displaced_debug_printf ("failed to prepare (%s)",
1686                               target_pid_to_str (tp->ptid).c_str ());
1687
1688       return DISPLACED_STEP_PREPARE_STATUS_CANT;
1689     }
1690   else if (status == DISPLACED_STEP_PREPARE_STATUS_UNAVAILABLE)
1691     {
1692       /* Not enough displaced stepping resources available, defer this
1693          request by placing it the queue.  */
1694
1695       displaced_debug_printf ("not enough resources available, "
1696                               "deferring step of %s",
1697                               target_pid_to_str (tp->ptid).c_str ());
1698
1699       global_thread_step_over_chain_enqueue (tp);
1700
1701       return DISPLACED_STEP_PREPARE_STATUS_UNAVAILABLE;
1702     }
1703
1704   gdb_assert (status == DISPLACED_STEP_PREPARE_STATUS_OK);
1705
1706   /* Save the information we need to fix things up if the step
1707      succeeds.  */
1708   disp_step_thread_state.set (gdbarch);
1709
1710   tp->inf->displaced_step_state.in_progress_count++;
1711
1712   displaced_debug_printf ("prepared successfully thread=%s, "
1713                           "original_pc=%s, displaced_pc=%s",
1714                           target_pid_to_str (tp->ptid).c_str (),
1715                           paddress (gdbarch, original_pc),
1716                           paddress (gdbarch, displaced_pc));
1717
1718   return DISPLACED_STEP_PREPARE_STATUS_OK;
1719 }
1720
1721 /* Wrapper for displaced_step_prepare_throw that disabled further
1722    attempts at displaced stepping if we get a memory error.  */
1723
1724 static displaced_step_prepare_status
1725 displaced_step_prepare (thread_info *thread)
1726 {
1727   displaced_step_prepare_status status
1728     = DISPLACED_STEP_PREPARE_STATUS_CANT;
1729
1730   try
1731     {
1732       status = displaced_step_prepare_throw (thread);
1733     }
1734   catch (const gdb_exception_error &ex)
1735     {
1736       if (ex.error != MEMORY_ERROR
1737           && ex.error != NOT_SUPPORTED_ERROR)
1738         throw;
1739
1740       infrun_debug_printf ("caught exception, disabling displaced stepping: %s",
1741                            ex.what ());
1742
1743       /* Be verbose if "set displaced-stepping" is "on", silent if
1744          "auto".  */
1745       if (can_use_displaced_stepping == AUTO_BOOLEAN_TRUE)
1746         {
1747           warning (_("disabling displaced stepping: %s"),
1748                    ex.what ());
1749         }
1750
1751       /* Disable further displaced stepping attempts.  */
1752       thread->inf->displaced_step_state.failed_before = 1;
1753     }
1754
1755   return status;
1756 }
1757
1758 /* If we displaced stepped an instruction successfully, adjust registers and
1759    memory to yield the same effect the instruction would have had if we had
1760    executed it at its original address, and return
1761    DISPLACED_STEP_FINISH_STATUS_OK.  If the instruction didn't complete,
1762    relocate the PC and return DISPLACED_STEP_FINISH_STATUS_NOT_EXECUTED.
1763
1764    If the thread wasn't displaced stepping, return
1765    DISPLACED_STEP_FINISH_STATUS_OK as well.  */
1766
1767 static displaced_step_finish_status
1768 displaced_step_finish (thread_info *event_thread, enum gdb_signal signal)
1769 {
1770   displaced_step_thread_state *displaced = &event_thread->displaced_step_state;
1771
1772   /* Was this thread performing a displaced step?  */
1773   if (!displaced->in_progress ())
1774     return DISPLACED_STEP_FINISH_STATUS_OK;
1775
1776   gdb_assert (event_thread->inf->displaced_step_state.in_progress_count > 0);
1777   event_thread->inf->displaced_step_state.in_progress_count--;
1778
1779   /* Fixup may need to read memory/registers.  Switch to the thread
1780      that we're fixing up.  Also, target_stopped_by_watchpoint checks
1781      the current thread, and displaced_step_restore performs ptid-dependent
1782      memory accesses using current_inferior().  */
1783   switch_to_thread (event_thread);
1784
1785   displaced_step_reset_cleanup cleanup (displaced);
1786
1787   /* Do the fixup, and release the resources acquired to do the displaced
1788      step. */
1789   return gdbarch_displaced_step_finish (displaced->get_original_gdbarch (),
1790                                         event_thread, signal);
1791 }
1792
1793 /* Data to be passed around while handling an event.  This data is
1794    discarded between events.  */
1795 struct execution_control_state
1796 {
1797   process_stratum_target *target;
1798   ptid_t ptid;
1799   /* The thread that got the event, if this was a thread event; NULL
1800      otherwise.  */
1801   struct thread_info *event_thread;
1802
1803   struct target_waitstatus ws;
1804   int stop_func_filled_in;
1805   CORE_ADDR stop_func_start;
1806   CORE_ADDR stop_func_end;
1807   const char *stop_func_name;
1808   int wait_some_more;
1809
1810   /* True if the event thread hit the single-step breakpoint of
1811      another thread.  Thus the event doesn't cause a stop, the thread
1812      needs to be single-stepped past the single-step breakpoint before
1813      we can switch back to the original stepping thread.  */
1814   int hit_singlestep_breakpoint;
1815 };
1816
1817 /* Clear ECS and set it to point at TP.  */
1818
1819 static void
1820 reset_ecs (struct execution_control_state *ecs, struct thread_info *tp)
1821 {
1822   memset (ecs, 0, sizeof (*ecs));
1823   ecs->event_thread = tp;
1824   ecs->ptid = tp->ptid;
1825 }
1826
1827 static void keep_going_pass_signal (struct execution_control_state *ecs);
1828 static void prepare_to_wait (struct execution_control_state *ecs);
1829 static bool keep_going_stepped_thread (struct thread_info *tp);
1830 static step_over_what thread_still_needs_step_over (struct thread_info *tp);
1831
1832 /* Are there any pending step-over requests?  If so, run all we can
1833    now and return true.  Otherwise, return false.  */
1834
1835 static bool
1836 start_step_over (void)
1837 {
1838   INFRUN_SCOPED_DEBUG_ENTER_EXIT;
1839
1840   thread_info *next;
1841
1842   /* Don't start a new step-over if we already have an in-line
1843      step-over operation ongoing.  */
1844   if (step_over_info_valid_p ())
1845     return false;
1846
1847   /* Steal the global thread step over chain.  As we try to initiate displaced
1848      steps, threads will be enqueued in the global chain if no buffers are
1849      available.  If we iterated on the global chain directly, we might iterate
1850      indefinitely.  */
1851   thread_info *threads_to_step = global_thread_step_over_chain_head;
1852   global_thread_step_over_chain_head = NULL;
1853
1854   infrun_debug_printf ("stealing global queue of threads to step, length = %d",
1855                        thread_step_over_chain_length (threads_to_step));
1856
1857   bool started = false;
1858
1859   /* On scope exit (whatever the reason, return or exception), if there are
1860      threads left in the THREADS_TO_STEP chain, put back these threads in the
1861      global list.  */
1862   SCOPE_EXIT
1863     {
1864       if (threads_to_step == nullptr)
1865         infrun_debug_printf ("step-over queue now empty");
1866       else
1867         {
1868           infrun_debug_printf ("putting back %d threads to step in global queue",
1869                                thread_step_over_chain_length (threads_to_step));
1870
1871           global_thread_step_over_chain_enqueue_chain (threads_to_step);
1872         }
1873     };
1874
1875   for (thread_info *tp = threads_to_step; tp != NULL; tp = next)
1876     {
1877       struct execution_control_state ecss;
1878       struct execution_control_state *ecs = &ecss;
1879       step_over_what step_what;
1880       int must_be_in_line;
1881
1882       gdb_assert (!tp->stop_requested);
1883
1884       next = thread_step_over_chain_next (threads_to_step, tp);
1885
1886       if (tp->inf->displaced_step_state.unavailable)
1887         {
1888           /* The arch told us to not even try preparing another displaced step
1889              for this inferior.  Just leave the thread in THREADS_TO_STEP, it
1890              will get moved to the global chain on scope exit.  */
1891           continue;
1892         }
1893
1894       /* Remove thread from the THREADS_TO_STEP chain.  If anything goes wrong
1895          while we try to prepare the displaced step, we don't add it back to
1896          the global step over chain.  This is to avoid a thread staying in the
1897          step over chain indefinitely if something goes wrong when resuming it
1898          If the error is intermittent and it still needs a step over, it will
1899          get enqueued again when we try to resume it normally.  */
1900       thread_step_over_chain_remove (&threads_to_step, tp);
1901
1902       step_what = thread_still_needs_step_over (tp);
1903       must_be_in_line = ((step_what & STEP_OVER_WATCHPOINT)
1904                          || ((step_what & STEP_OVER_BREAKPOINT)
1905                              && !use_displaced_stepping (tp)));
1906
1907       /* We currently stop all threads of all processes to step-over
1908          in-line.  If we need to start a new in-line step-over, let
1909          any pending displaced steps finish first.  */
1910       if (must_be_in_line && displaced_step_in_progress_any_thread ())
1911         {
1912           global_thread_step_over_chain_enqueue (tp);
1913           continue;
1914         }
1915
1916       if (tp->control.trap_expected
1917           || tp->resumed
1918           || tp->executing)
1919         {
1920           internal_error (__FILE__, __LINE__,
1921                           "[%s] has inconsistent state: "
1922                           "trap_expected=%d, resumed=%d, executing=%d\n",
1923                           target_pid_to_str (tp->ptid).c_str (),
1924                           tp->control.trap_expected,
1925                           tp->resumed,
1926                           tp->executing);
1927         }
1928
1929       infrun_debug_printf ("resuming [%s] for step-over",
1930                            target_pid_to_str (tp->ptid).c_str ());
1931
1932       /* keep_going_pass_signal skips the step-over if the breakpoint
1933          is no longer inserted.  In all-stop, we want to keep looking
1934          for a thread that needs a step-over instead of resuming TP,
1935          because we wouldn't be able to resume anything else until the
1936          target stops again.  In non-stop, the resume always resumes
1937          only TP, so it's OK to let the thread resume freely.  */
1938       if (!target_is_non_stop_p () && !step_what)
1939         continue;
1940
1941       switch_to_thread (tp);
1942       reset_ecs (ecs, tp);
1943       keep_going_pass_signal (ecs);
1944
1945       if (!ecs->wait_some_more)
1946         error (_("Command aborted."));
1947
1948       /* If the thread's step over could not be initiated because no buffers
1949          were available, it was re-added to the global step over chain.  */
1950       if (tp->resumed)
1951         {
1952           infrun_debug_printf ("[%s] was resumed.",
1953                                target_pid_to_str (tp->ptid).c_str ());
1954           gdb_assert (!thread_is_in_step_over_chain (tp));
1955         }
1956       else
1957         {
1958           infrun_debug_printf ("[%s] was NOT resumed.",
1959                                target_pid_to_str (tp->ptid).c_str ());
1960           gdb_assert (thread_is_in_step_over_chain (tp));
1961         }
1962
1963       /* If we started a new in-line step-over, we're done.  */
1964       if (step_over_info_valid_p ())
1965         {
1966           gdb_assert (tp->control.trap_expected);
1967           started = true;
1968           break;
1969         }
1970
1971       if (!target_is_non_stop_p ())
1972         {
1973           /* On all-stop, shouldn't have resumed unless we needed a
1974              step over.  */
1975           gdb_assert (tp->control.trap_expected
1976                       || tp->step_after_step_resume_breakpoint);
1977
1978           /* With remote targets (at least), in all-stop, we can't
1979              issue any further remote commands until the program stops
1980              again.  */
1981           started = true;
1982           break;
1983         }
1984
1985       /* Either the thread no longer needed a step-over, or a new
1986          displaced stepping sequence started.  Even in the latter
1987          case, continue looking.  Maybe we can also start another
1988          displaced step on a thread of other process. */
1989     }
1990
1991   return started;
1992 }
1993
1994 /* Update global variables holding ptids to hold NEW_PTID if they were
1995    holding OLD_PTID.  */
1996 static void
1997 infrun_thread_ptid_changed (process_stratum_target *target,
1998                             ptid_t old_ptid, ptid_t new_ptid)
1999 {
2000   if (inferior_ptid == old_ptid
2001       && current_inferior ()->process_target () == target)
2002     inferior_ptid = new_ptid;
2003 }
2004
2005 \f
2006
2007 static const char schedlock_off[] = "off";
2008 static const char schedlock_on[] = "on";
2009 static const char schedlock_step[] = "step";
2010 static const char schedlock_replay[] = "replay";
2011 static const char *const scheduler_enums[] = {
2012   schedlock_off,
2013   schedlock_on,
2014   schedlock_step,
2015   schedlock_replay,
2016   NULL
2017 };
2018 static const char *scheduler_mode = schedlock_replay;
2019 static void
2020 show_scheduler_mode (struct ui_file *file, int from_tty,
2021                      struct cmd_list_element *c, const char *value)
2022 {
2023   fprintf_filtered (file,
2024                     _("Mode for locking scheduler "
2025                       "during execution is \"%s\".\n"),
2026                     value);
2027 }
2028
2029 static void
2030 set_schedlock_func (const char *args, int from_tty, struct cmd_list_element *c)
2031 {
2032   if (!target_can_lock_scheduler ())
2033     {
2034       scheduler_mode = schedlock_off;
2035       error (_("Target '%s' cannot support this command."),
2036              target_shortname ());
2037     }
2038 }
2039
2040 /* True if execution commands resume all threads of all processes by
2041    default; otherwise, resume only threads of the current inferior
2042    process.  */
2043 bool sched_multi = false;
2044
2045 /* Try to setup for software single stepping over the specified location.
2046    Return true if target_resume() should use hardware single step.
2047
2048    GDBARCH the current gdbarch.
2049    PC the location to step over.  */
2050
2051 static bool
2052 maybe_software_singlestep (struct gdbarch *gdbarch, CORE_ADDR pc)
2053 {
2054   bool hw_step = true;
2055
2056   if (execution_direction == EXEC_FORWARD
2057       && gdbarch_software_single_step_p (gdbarch))
2058     hw_step = !insert_single_step_breakpoints (gdbarch);
2059
2060   return hw_step;
2061 }
2062
2063 /* See infrun.h.  */
2064
2065 ptid_t
2066 user_visible_resume_ptid (int step)
2067 {
2068   ptid_t resume_ptid;
2069
2070   if (non_stop)
2071     {
2072       /* With non-stop mode on, threads are always handled
2073          individually.  */
2074       resume_ptid = inferior_ptid;
2075     }
2076   else if ((scheduler_mode == schedlock_on)
2077            || (scheduler_mode == schedlock_step && step))
2078     {
2079       /* User-settable 'scheduler' mode requires solo thread
2080          resume.  */
2081       resume_ptid = inferior_ptid;
2082     }
2083   else if ((scheduler_mode == schedlock_replay)
2084            && target_record_will_replay (minus_one_ptid, execution_direction))
2085     {
2086       /* User-settable 'scheduler' mode requires solo thread resume in replay
2087          mode.  */
2088       resume_ptid = inferior_ptid;
2089     }
2090   else if (!sched_multi && target_supports_multi_process ())
2091     {
2092       /* Resume all threads of the current process (and none of other
2093          processes).  */
2094       resume_ptid = ptid_t (inferior_ptid.pid ());
2095     }
2096   else
2097     {
2098       /* Resume all threads of all processes.  */
2099       resume_ptid = RESUME_ALL;
2100     }
2101
2102   return resume_ptid;
2103 }
2104
2105 /* See infrun.h.  */
2106
2107 process_stratum_target *
2108 user_visible_resume_target (ptid_t resume_ptid)
2109 {
2110   return (resume_ptid == minus_one_ptid && sched_multi
2111           ? NULL
2112           : current_inferior ()->process_target ());
2113 }
2114
2115 /* Return a ptid representing the set of threads that we will resume,
2116    in the perspective of the target, assuming run control handling
2117    does not require leaving some threads stopped (e.g., stepping past
2118    breakpoint).  USER_STEP indicates whether we're about to start the
2119    target for a stepping command.  */
2120
2121 static ptid_t
2122 internal_resume_ptid (int user_step)
2123 {
2124   /* In non-stop, we always control threads individually.  Note that
2125      the target may always work in non-stop mode even with "set
2126      non-stop off", in which case user_visible_resume_ptid could
2127      return a wildcard ptid.  */
2128   if (target_is_non_stop_p ())
2129     return inferior_ptid;
2130   else
2131     return user_visible_resume_ptid (user_step);
2132 }
2133
2134 /* Wrapper for target_resume, that handles infrun-specific
2135    bookkeeping.  */
2136
2137 static void
2138 do_target_resume (ptid_t resume_ptid, bool step, enum gdb_signal sig)
2139 {
2140   struct thread_info *tp = inferior_thread ();
2141
2142   gdb_assert (!tp->stop_requested);
2143
2144   /* Install inferior's terminal modes.  */
2145   target_terminal::inferior ();
2146
2147   /* Avoid confusing the next resume, if the next stop/resume
2148      happens to apply to another thread.  */
2149   tp->suspend.stop_signal = GDB_SIGNAL_0;
2150
2151   /* Advise target which signals may be handled silently.
2152
2153      If we have removed breakpoints because we are stepping over one
2154      in-line (in any thread), we need to receive all signals to avoid
2155      accidentally skipping a breakpoint during execution of a signal
2156      handler.
2157
2158      Likewise if we're displaced stepping, otherwise a trap for a
2159      breakpoint in a signal handler might be confused with the
2160      displaced step finishing.  We don't make the displaced_step_finish
2161      step distinguish the cases instead, because:
2162
2163      - a backtrace while stopped in the signal handler would show the
2164        scratch pad as frame older than the signal handler, instead of
2165        the real mainline code.
2166
2167      - when the thread is later resumed, the signal handler would
2168        return to the scratch pad area, which would no longer be
2169        valid.  */
2170   if (step_over_info_valid_p ()
2171       || displaced_step_in_progress (tp->inf))
2172     target_pass_signals ({});
2173   else
2174     target_pass_signals (signal_pass);
2175
2176   target_resume (resume_ptid, step, sig);
2177
2178   if (target_can_async_p ())
2179     target_async (1);
2180 }
2181
2182 /* Resume the inferior.  SIG is the signal to give the inferior
2183    (GDB_SIGNAL_0 for none).  Note: don't call this directly; instead
2184    call 'resume', which handles exceptions.  */
2185
2186 static void
2187 resume_1 (enum gdb_signal sig)
2188 {
2189   struct regcache *regcache = get_current_regcache ();
2190   struct gdbarch *gdbarch = regcache->arch ();
2191   struct thread_info *tp = inferior_thread ();
2192   const address_space *aspace = regcache->aspace ();
2193   ptid_t resume_ptid;
2194   /* This represents the user's step vs continue request.  When
2195      deciding whether "set scheduler-locking step" applies, it's the
2196      user's intention that counts.  */
2197   const int user_step = tp->control.stepping_command;
2198   /* This represents what we'll actually request the target to do.
2199      This can decay from a step to a continue, if e.g., we need to
2200      implement single-stepping with breakpoints (software
2201      single-step).  */
2202   bool step;
2203
2204   gdb_assert (!tp->stop_requested);
2205   gdb_assert (!thread_is_in_step_over_chain (tp));
2206
2207   if (tp->suspend.waitstatus_pending_p)
2208     {
2209       infrun_debug_printf
2210         ("thread %s has pending wait "
2211          "status %s (currently_stepping=%d).",
2212          target_pid_to_str (tp->ptid).c_str (),
2213          target_waitstatus_to_string (&tp->suspend.waitstatus).c_str (),
2214          currently_stepping (tp));
2215
2216       tp->inf->process_target ()->threads_executing = true;
2217       tp->resumed = true;
2218
2219       /* FIXME: What should we do if we are supposed to resume this
2220          thread with a signal?  Maybe we should maintain a queue of
2221          pending signals to deliver.  */
2222       if (sig != GDB_SIGNAL_0)
2223         {
2224           warning (_("Couldn't deliver signal %s to %s."),
2225                    gdb_signal_to_name (sig),
2226                    target_pid_to_str (tp->ptid).c_str ());
2227         }
2228
2229       tp->suspend.stop_signal = GDB_SIGNAL_0;
2230
2231       if (target_can_async_p ())
2232         {
2233           target_async (1);
2234           /* Tell the event loop we have an event to process. */
2235           mark_async_event_handler (infrun_async_inferior_event_token);
2236         }
2237       return;
2238     }
2239
2240   tp->stepped_breakpoint = 0;
2241
2242   /* Depends on stepped_breakpoint.  */
2243   step = currently_stepping (tp);
2244
2245   if (current_inferior ()->waiting_for_vfork_done)
2246     {
2247       /* Don't try to single-step a vfork parent that is waiting for
2248          the child to get out of the shared memory region (by exec'ing
2249          or exiting).  This is particularly important on software
2250          single-step archs, as the child process would trip on the
2251          software single step breakpoint inserted for the parent
2252          process.  Since the parent will not actually execute any
2253          instruction until the child is out of the shared region (such
2254          are vfork's semantics), it is safe to simply continue it.
2255          Eventually, we'll see a TARGET_WAITKIND_VFORK_DONE event for
2256          the parent, and tell it to `keep_going', which automatically
2257          re-sets it stepping.  */
2258       infrun_debug_printf ("resume : clear step");
2259       step = false;
2260     }
2261
2262   CORE_ADDR pc = regcache_read_pc (regcache);
2263
2264   infrun_debug_printf ("step=%d, signal=%s, trap_expected=%d, "
2265                        "current thread [%s] at %s",
2266                        step, gdb_signal_to_symbol_string (sig),
2267                        tp->control.trap_expected,
2268                        target_pid_to_str (inferior_ptid).c_str (),
2269                        paddress (gdbarch, pc));
2270
2271   /* Normally, by the time we reach `resume', the breakpoints are either
2272      removed or inserted, as appropriate.  The exception is if we're sitting
2273      at a permanent breakpoint; we need to step over it, but permanent
2274      breakpoints can't be removed.  So we have to test for it here.  */
2275   if (breakpoint_here_p (aspace, pc) == permanent_breakpoint_here)
2276     {
2277       if (sig != GDB_SIGNAL_0)
2278         {
2279           /* We have a signal to pass to the inferior.  The resume
2280              may, or may not take us to the signal handler.  If this
2281              is a step, we'll need to stop in the signal handler, if
2282              there's one, (if the target supports stepping into
2283              handlers), or in the next mainline instruction, if
2284              there's no handler.  If this is a continue, we need to be
2285              sure to run the handler with all breakpoints inserted.
2286              In all cases, set a breakpoint at the current address
2287              (where the handler returns to), and once that breakpoint
2288              is hit, resume skipping the permanent breakpoint.  If
2289              that breakpoint isn't hit, then we've stepped into the
2290              signal handler (or hit some other event).  We'll delete
2291              the step-resume breakpoint then.  */
2292
2293           infrun_debug_printf ("resume: skipping permanent breakpoint, "
2294                                "deliver signal first");
2295
2296           clear_step_over_info ();
2297           tp->control.trap_expected = 0;
2298
2299           if (tp->control.step_resume_breakpoint == NULL)
2300             {
2301               /* Set a "high-priority" step-resume, as we don't want
2302                  user breakpoints at PC to trigger (again) when this
2303                  hits.  */
2304               insert_hp_step_resume_breakpoint_at_frame (get_current_frame ());
2305               gdb_assert (tp->control.step_resume_breakpoint->loc->permanent);
2306
2307               tp->step_after_step_resume_breakpoint = step;
2308             }
2309
2310           insert_breakpoints ();
2311         }
2312       else
2313         {
2314           /* There's no signal to pass, we can go ahead and skip the
2315              permanent breakpoint manually.  */
2316           infrun_debug_printf ("skipping permanent breakpoint");
2317           gdbarch_skip_permanent_breakpoint (gdbarch, regcache);
2318           /* Update pc to reflect the new address from which we will
2319              execute instructions.  */
2320           pc = regcache_read_pc (regcache);
2321
2322           if (step)
2323             {
2324               /* We've already advanced the PC, so the stepping part
2325                  is done.  Now we need to arrange for a trap to be
2326                  reported to handle_inferior_event.  Set a breakpoint
2327                  at the current PC, and run to it.  Don't update
2328                  prev_pc, because if we end in
2329                  switch_back_to_stepped_thread, we want the "expected
2330                  thread advanced also" branch to be taken.  IOW, we
2331                  don't want this thread to step further from PC
2332                  (overstep).  */
2333               gdb_assert (!step_over_info_valid_p ());
2334               insert_single_step_breakpoint (gdbarch, aspace, pc);
2335               insert_breakpoints ();
2336
2337               resume_ptid = internal_resume_ptid (user_step);
2338               do_target_resume (resume_ptid, false, GDB_SIGNAL_0);
2339               tp->resumed = true;
2340               return;
2341             }
2342         }
2343     }
2344
2345   /* If we have a breakpoint to step over, make sure to do a single
2346      step only.  Same if we have software watchpoints.  */
2347   if (tp->control.trap_expected || bpstat_should_step ())
2348     tp->control.may_range_step = 0;
2349
2350   /* If displaced stepping is enabled, step over breakpoints by executing a
2351      copy of the instruction at a different address.
2352
2353      We can't use displaced stepping when we have a signal to deliver;
2354      the comments for displaced_step_prepare explain why.  The
2355      comments in the handle_inferior event for dealing with 'random
2356      signals' explain what we do instead.
2357
2358      We can't use displaced stepping when we are waiting for vfork_done
2359      event, displaced stepping breaks the vfork child similarly as single
2360      step software breakpoint.  */
2361   if (tp->control.trap_expected
2362       && use_displaced_stepping (tp)
2363       && !step_over_info_valid_p ()
2364       && sig == GDB_SIGNAL_0
2365       && !current_inferior ()->waiting_for_vfork_done)
2366     {
2367       displaced_step_prepare_status prepare_status
2368         = displaced_step_prepare (tp);
2369
2370       if (prepare_status == DISPLACED_STEP_PREPARE_STATUS_UNAVAILABLE)
2371         {
2372           infrun_debug_printf ("Got placed in step-over queue");
2373
2374           tp->control.trap_expected = 0;
2375           return;
2376         }
2377       else if (prepare_status == DISPLACED_STEP_PREPARE_STATUS_CANT)
2378         {
2379           /* Fallback to stepping over the breakpoint in-line.  */
2380
2381           if (target_is_non_stop_p ())
2382             stop_all_threads ();
2383
2384           set_step_over_info (regcache->aspace (),
2385                               regcache_read_pc (regcache), 0, tp->global_num);
2386
2387           step = maybe_software_singlestep (gdbarch, pc);
2388
2389           insert_breakpoints ();
2390         }
2391       else if (prepare_status == DISPLACED_STEP_PREPARE_STATUS_OK)
2392         {
2393           /* Update pc to reflect the new address from which we will
2394              execute instructions due to displaced stepping.  */
2395           pc = regcache_read_pc (get_thread_regcache (tp));
2396
2397           step = gdbarch_displaced_step_hw_singlestep (gdbarch);
2398         }
2399       else
2400         gdb_assert_not_reached (_("Invalid displaced_step_prepare_status "
2401                                   "value."));
2402     }
2403
2404   /* Do we need to do it the hard way, w/temp breakpoints?  */
2405   else if (step)
2406     step = maybe_software_singlestep (gdbarch, pc);
2407
2408   /* Currently, our software single-step implementation leads to different
2409      results than hardware single-stepping in one situation: when stepping
2410      into delivering a signal which has an associated signal handler,
2411      hardware single-step will stop at the first instruction of the handler,
2412      while software single-step will simply skip execution of the handler.
2413
2414      For now, this difference in behavior is accepted since there is no
2415      easy way to actually implement single-stepping into a signal handler
2416      without kernel support.
2417
2418      However, there is one scenario where this difference leads to follow-on
2419      problems: if we're stepping off a breakpoint by removing all breakpoints
2420      and then single-stepping.  In this case, the software single-step
2421      behavior means that even if there is a *breakpoint* in the signal
2422      handler, GDB still would not stop.
2423
2424      Fortunately, we can at least fix this particular issue.  We detect
2425      here the case where we are about to deliver a signal while software
2426      single-stepping with breakpoints removed.  In this situation, we
2427      revert the decisions to remove all breakpoints and insert single-
2428      step breakpoints, and instead we install a step-resume breakpoint
2429      at the current address, deliver the signal without stepping, and
2430      once we arrive back at the step-resume breakpoint, actually step
2431      over the breakpoint we originally wanted to step over.  */
2432   if (thread_has_single_step_breakpoints_set (tp)
2433       && sig != GDB_SIGNAL_0
2434       && step_over_info_valid_p ())
2435     {
2436       /* If we have nested signals or a pending signal is delivered
2437          immediately after a handler returns, might already have
2438          a step-resume breakpoint set on the earlier handler.  We cannot
2439          set another step-resume breakpoint; just continue on until the
2440          original breakpoint is hit.  */
2441       if (tp->control.step_resume_breakpoint == NULL)
2442         {
2443           insert_hp_step_resume_breakpoint_at_frame (get_current_frame ());
2444           tp->step_after_step_resume_breakpoint = 1;
2445         }
2446
2447       delete_single_step_breakpoints (tp);
2448
2449       clear_step_over_info ();
2450       tp->control.trap_expected = 0;
2451
2452       insert_breakpoints ();
2453     }
2454
2455   /* If STEP is set, it's a request to use hardware stepping
2456      facilities.  But in that case, we should never
2457      use singlestep breakpoint.  */
2458   gdb_assert (!(thread_has_single_step_breakpoints_set (tp) && step));
2459
2460   /* Decide the set of threads to ask the target to resume.  */
2461   if (tp->control.trap_expected)
2462     {
2463       /* We're allowing a thread to run past a breakpoint it has
2464          hit, either by single-stepping the thread with the breakpoint
2465          removed, or by displaced stepping, with the breakpoint inserted.
2466          In the former case, we need to single-step only this thread,
2467          and keep others stopped, as they can miss this breakpoint if
2468          allowed to run.  That's not really a problem for displaced
2469          stepping, but, we still keep other threads stopped, in case
2470          another thread is also stopped for a breakpoint waiting for
2471          its turn in the displaced stepping queue.  */
2472       resume_ptid = inferior_ptid;
2473     }
2474   else
2475     resume_ptid = internal_resume_ptid (user_step);
2476
2477   if (execution_direction != EXEC_REVERSE
2478       && step && breakpoint_inserted_here_p (aspace, pc))
2479     {
2480       /* There are two cases where we currently need to step a
2481          breakpoint instruction when we have a signal to deliver:
2482
2483          - See handle_signal_stop where we handle random signals that
2484          could take out us out of the stepping range.  Normally, in
2485          that case we end up continuing (instead of stepping) over the
2486          signal handler with a breakpoint at PC, but there are cases
2487          where we should _always_ single-step, even if we have a
2488          step-resume breakpoint, like when a software watchpoint is
2489          set.  Assuming single-stepping and delivering a signal at the
2490          same time would takes us to the signal handler, then we could
2491          have removed the breakpoint at PC to step over it.  However,
2492          some hardware step targets (like e.g., Mac OS) can't step
2493          into signal handlers, and for those, we need to leave the
2494          breakpoint at PC inserted, as otherwise if the handler
2495          recurses and executes PC again, it'll miss the breakpoint.
2496          So we leave the breakpoint inserted anyway, but we need to
2497          record that we tried to step a breakpoint instruction, so
2498          that adjust_pc_after_break doesn't end up confused.
2499
2500          - In non-stop if we insert a breakpoint (e.g., a step-resume)
2501          in one thread after another thread that was stepping had been
2502          momentarily paused for a step-over.  When we re-resume the
2503          stepping thread, it may be resumed from that address with a
2504          breakpoint that hasn't trapped yet.  Seen with
2505          gdb.threads/non-stop-fair-events.exp, on targets that don't
2506          do displaced stepping.  */
2507
2508       infrun_debug_printf ("resume: [%s] stepped breakpoint",
2509                            target_pid_to_str (tp->ptid).c_str ());
2510
2511       tp->stepped_breakpoint = 1;
2512
2513       /* Most targets can step a breakpoint instruction, thus
2514          executing it normally.  But if this one cannot, just
2515          continue and we will hit it anyway.  */
2516       if (gdbarch_cannot_step_breakpoint (gdbarch))
2517         step = false;
2518     }
2519
2520   if (debug_displaced
2521       && tp->control.trap_expected
2522       && use_displaced_stepping (tp)
2523       && !step_over_info_valid_p ())
2524     {
2525       struct regcache *resume_regcache = get_thread_regcache (tp);
2526       struct gdbarch *resume_gdbarch = resume_regcache->arch ();
2527       CORE_ADDR actual_pc = regcache_read_pc (resume_regcache);
2528       gdb_byte buf[4];
2529
2530       read_memory (actual_pc, buf, sizeof (buf));
2531       displaced_debug_printf ("run %s: %s",
2532                               paddress (resume_gdbarch, actual_pc),
2533                               displaced_step_dump_bytes
2534                                 (buf, sizeof (buf)).c_str ());
2535     }
2536
2537   if (tp->control.may_range_step)
2538     {
2539       /* If we're resuming a thread with the PC out of the step
2540          range, then we're doing some nested/finer run control
2541          operation, like stepping the thread out of the dynamic
2542          linker or the displaced stepping scratch pad.  We
2543          shouldn't have allowed a range step then.  */
2544       gdb_assert (pc_in_thread_step_range (pc, tp));
2545     }
2546
2547   do_target_resume (resume_ptid, step, sig);
2548   tp->resumed = true;
2549 }
2550
2551 /* Resume the inferior.  SIG is the signal to give the inferior
2552    (GDB_SIGNAL_0 for none).  This is a wrapper around 'resume_1' that
2553    rolls back state on error.  */
2554
2555 static void
2556 resume (gdb_signal sig)
2557 {
2558   try
2559     {
2560       resume_1 (sig);
2561     }
2562   catch (const gdb_exception &ex)
2563     {
2564       /* If resuming is being aborted for any reason, delete any
2565          single-step breakpoint resume_1 may have created, to avoid
2566          confusing the following resumption, and to avoid leaving
2567          single-step breakpoints perturbing other threads, in case
2568          we're running in non-stop mode.  */
2569       if (inferior_ptid != null_ptid)
2570         delete_single_step_breakpoints (inferior_thread ());
2571       throw;
2572     }
2573 }
2574
2575 \f
2576 /* Proceeding.  */
2577
2578 /* See infrun.h.  */
2579
2580 /* Counter that tracks number of user visible stops.  This can be used
2581    to tell whether a command has proceeded the inferior past the
2582    current location.  This allows e.g., inferior function calls in
2583    breakpoint commands to not interrupt the command list.  When the
2584    call finishes successfully, the inferior is standing at the same
2585    breakpoint as if nothing happened (and so we don't call
2586    normal_stop).  */
2587 static ULONGEST current_stop_id;
2588
2589 /* See infrun.h.  */
2590
2591 ULONGEST
2592 get_stop_id (void)
2593 {
2594   return current_stop_id;
2595 }
2596
2597 /* Called when we report a user visible stop.  */
2598
2599 static void
2600 new_stop_id (void)
2601 {
2602   current_stop_id++;
2603 }
2604
2605 /* Clear out all variables saying what to do when inferior is continued.
2606    First do this, then set the ones you want, then call `proceed'.  */
2607
2608 static void
2609 clear_proceed_status_thread (struct thread_info *tp)
2610 {
2611   infrun_debug_printf ("%s", target_pid_to_str (tp->ptid).c_str ());
2612
2613   /* If we're starting a new sequence, then the previous finished
2614      single-step is no longer relevant.  */
2615   if (tp->suspend.waitstatus_pending_p)
2616     {
2617       if (tp->suspend.stop_reason == TARGET_STOPPED_BY_SINGLE_STEP)
2618         {
2619           infrun_debug_printf ("pending event of %s was a finished step. "
2620                                "Discarding.",
2621                                target_pid_to_str (tp->ptid).c_str ());
2622
2623           tp->suspend.waitstatus_pending_p = 0;
2624           tp->suspend.stop_reason = TARGET_STOPPED_BY_NO_REASON;
2625         }
2626       else
2627         {
2628           infrun_debug_printf
2629             ("thread %s has pending wait status %s (currently_stepping=%d).",
2630              target_pid_to_str (tp->ptid).c_str (),
2631              target_waitstatus_to_string (&tp->suspend.waitstatus).c_str (),
2632              currently_stepping (tp));
2633         }
2634     }
2635
2636   /* If this signal should not be seen by program, give it zero.
2637      Used for debugging signals.  */
2638   if (!signal_pass_state (tp->suspend.stop_signal))
2639     tp->suspend.stop_signal = GDB_SIGNAL_0;
2640
2641   delete tp->thread_fsm;
2642   tp->thread_fsm = NULL;
2643
2644   tp->control.trap_expected = 0;
2645   tp->control.step_range_start = 0;
2646   tp->control.step_range_end = 0;
2647   tp->control.may_range_step = 0;
2648   tp->control.step_frame_id = null_frame_id;
2649   tp->control.step_stack_frame_id = null_frame_id;
2650   tp->control.step_over_calls = STEP_OVER_UNDEBUGGABLE;
2651   tp->control.step_start_function = NULL;
2652   tp->stop_requested = 0;
2653
2654   tp->control.stop_step = 0;
2655
2656   tp->control.proceed_to_finish = 0;
2657
2658   tp->control.stepping_command = 0;
2659
2660   /* Discard any remaining commands or status from previous stop.  */
2661   bpstat_clear (&tp->control.stop_bpstat);
2662 }
2663
2664 void
2665 clear_proceed_status (int step)
2666 {
2667   /* With scheduler-locking replay, stop replaying other threads if we're
2668      not replaying the user-visible resume ptid.
2669
2670      This is a convenience feature to not require the user to explicitly
2671      stop replaying the other threads.  We're assuming that the user's
2672      intent is to resume tracing the recorded process.  */
2673   if (!non_stop && scheduler_mode == schedlock_replay
2674       && target_record_is_replaying (minus_one_ptid)
2675       && !target_record_will_replay (user_visible_resume_ptid (step),
2676                                      execution_direction))
2677     target_record_stop_replaying ();
2678
2679   if (!non_stop && inferior_ptid != null_ptid)
2680     {
2681       ptid_t resume_ptid = user_visible_resume_ptid (step);
2682       process_stratum_target *resume_target
2683         = user_visible_resume_target (resume_ptid);
2684
2685       /* In all-stop mode, delete the per-thread status of all threads
2686          we're about to resume, implicitly and explicitly.  */
2687       for (thread_info *tp : all_non_exited_threads (resume_target, resume_ptid))
2688         clear_proceed_status_thread (tp);
2689     }
2690
2691   if (inferior_ptid != null_ptid)
2692     {
2693       struct inferior *inferior;
2694
2695       if (non_stop)
2696         {
2697           /* If in non-stop mode, only delete the per-thread status of
2698              the current thread.  */
2699           clear_proceed_status_thread (inferior_thread ());
2700         }
2701
2702       inferior = current_inferior ();
2703       inferior->control.stop_soon = NO_STOP_QUIETLY;
2704     }
2705
2706   gdb::observers::about_to_proceed.notify ();
2707 }
2708
2709 /* Returns true if TP is still stopped at a breakpoint that needs
2710    stepping-over in order to make progress.  If the breakpoint is gone
2711    meanwhile, we can skip the whole step-over dance.  */
2712
2713 static bool
2714 thread_still_needs_step_over_bp (struct thread_info *tp)
2715 {
2716   if (tp->stepping_over_breakpoint)
2717     {
2718       struct regcache *regcache = get_thread_regcache (tp);
2719
2720       if (breakpoint_here_p (regcache->aspace (),
2721                              regcache_read_pc (regcache))
2722           == ordinary_breakpoint_here)
2723         return true;
2724
2725       tp->stepping_over_breakpoint = 0;
2726     }
2727
2728   return false;
2729 }
2730
2731 /* Check whether thread TP still needs to start a step-over in order
2732    to make progress when resumed.  Returns an bitwise or of enum
2733    step_over_what bits, indicating what needs to be stepped over.  */
2734
2735 static step_over_what
2736 thread_still_needs_step_over (struct thread_info *tp)
2737 {
2738   step_over_what what = 0;
2739
2740   if (thread_still_needs_step_over_bp (tp))
2741     what |= STEP_OVER_BREAKPOINT;
2742
2743   if (tp->stepping_over_watchpoint
2744       && !target_have_steppable_watchpoint ())
2745     what |= STEP_OVER_WATCHPOINT;
2746
2747   return what;
2748 }
2749
2750 /* Returns true if scheduler locking applies.  STEP indicates whether
2751    we're about to do a step/next-like command to a thread.  */
2752
2753 static bool
2754 schedlock_applies (struct thread_info *tp)
2755 {
2756   return (scheduler_mode == schedlock_on
2757           || (scheduler_mode == schedlock_step
2758               && tp->control.stepping_command)
2759           || (scheduler_mode == schedlock_replay
2760               && target_record_will_replay (minus_one_ptid,
2761                                             execution_direction)));
2762 }
2763
2764 /* Set process_stratum_target::COMMIT_RESUMED_STATE in all target
2765    stacks that have threads executing and don't have threads with
2766    pending events.  */
2767
2768 static void
2769 maybe_set_commit_resumed_all_targets ()
2770 {
2771   scoped_restore_current_thread restore_thread;
2772
2773   for (inferior *inf : all_non_exited_inferiors ())
2774     {
2775       process_stratum_target *proc_target = inf->process_target ();
2776
2777       if (proc_target->commit_resumed_state)
2778         {
2779           /* We already set this in a previous iteration, via another
2780              inferior sharing the process_stratum target.  */
2781           continue;
2782         }
2783
2784       /* If the target has no resumed threads, it would be useless to
2785          ask it to commit the resumed threads.  */
2786       if (!proc_target->threads_executing)
2787         {
2788           infrun_debug_printf ("not requesting commit-resumed for target "
2789                                "%s, no resumed threads",
2790                                proc_target->shortname ());
2791           continue;
2792         }
2793
2794       /* As an optimization, if a thread from this target has some
2795          status to report, handle it before requiring the target to
2796          commit its resumed threads: handling the status might lead to
2797          resuming more threads.  */
2798       bool has_thread_with_pending_status = false;
2799       for (thread_info *thread : all_non_exited_threads (proc_target))
2800         if (thread->resumed && thread->suspend.waitstatus_pending_p)
2801           {
2802             has_thread_with_pending_status = true;
2803             break;
2804           }
2805
2806       if (has_thread_with_pending_status)
2807         {
2808           infrun_debug_printf ("not requesting commit-resumed for target %s, a"
2809                                " thread has a pending waitstatus",
2810                                proc_target->shortname ());
2811           continue;
2812         }
2813
2814       switch_to_inferior_no_thread (inf);
2815
2816       if (target_has_pending_events ())
2817         {
2818           infrun_debug_printf ("not requesting commit-resumed for target %s, "
2819                                "target has pending events",
2820                                proc_target->shortname ());
2821           continue;
2822         }
2823
2824       infrun_debug_printf ("enabling commit-resumed for target %s",
2825                            proc_target->shortname ());
2826
2827       proc_target->commit_resumed_state = true;
2828     }
2829 }
2830
2831 /* See infrun.h.  */
2832
2833 void
2834 maybe_call_commit_resumed_all_targets ()
2835 {
2836   scoped_restore_current_thread restore_thread;
2837
2838   for (inferior *inf : all_non_exited_inferiors ())
2839     {
2840       process_stratum_target *proc_target = inf->process_target ();
2841
2842       if (!proc_target->commit_resumed_state)
2843         continue;
2844
2845       switch_to_inferior_no_thread (inf);
2846
2847       infrun_debug_printf ("calling commit_resumed for target %s",
2848                            proc_target->shortname());
2849
2850       target_commit_resumed ();
2851     }
2852 }
2853
2854 /* To track nesting of scoped_disable_commit_resumed objects, ensuring
2855    that only the outermost one attempts to re-enable
2856    commit-resumed.  */
2857 static bool enable_commit_resumed = true;
2858
2859 /* See infrun.h.  */
2860
2861 scoped_disable_commit_resumed::scoped_disable_commit_resumed
2862   (const char *reason)
2863   : m_reason (reason),
2864     m_prev_enable_commit_resumed (enable_commit_resumed)
2865 {
2866   infrun_debug_printf ("reason=%s", m_reason);
2867
2868   enable_commit_resumed = false;
2869
2870   for (inferior *inf : all_non_exited_inferiors ())
2871     {
2872       process_stratum_target *proc_target = inf->process_target ();
2873
2874       if (m_prev_enable_commit_resumed)
2875         {
2876           /* This is the outermost instance: force all
2877              COMMIT_RESUMED_STATE to false.  */
2878           proc_target->commit_resumed_state = false;
2879         }
2880       else
2881         {
2882           /* This is not the outermost instance, we expect
2883              COMMIT_RESUMED_STATE to have been cleared by the
2884              outermost instance.  */
2885           gdb_assert (!proc_target->commit_resumed_state);
2886         }
2887     }
2888 }
2889
2890 /* See infrun.h.  */
2891
2892 void
2893 scoped_disable_commit_resumed::reset ()
2894 {
2895   if (m_reset)
2896     return;
2897   m_reset = true;
2898
2899   infrun_debug_printf ("reason=%s", m_reason);
2900
2901   gdb_assert (!enable_commit_resumed);
2902
2903   enable_commit_resumed = m_prev_enable_commit_resumed;
2904
2905   if (m_prev_enable_commit_resumed)
2906     {
2907       /* This is the outermost instance, re-enable
2908          COMMIT_RESUMED_STATE on the targets where it's possible.  */
2909       maybe_set_commit_resumed_all_targets ();
2910     }
2911   else
2912     {
2913       /* This is not the outermost instance, we expect
2914          COMMIT_RESUMED_STATE to still be false.  */
2915       for (inferior *inf : all_non_exited_inferiors ())
2916         {
2917           process_stratum_target *proc_target = inf->process_target ();
2918           gdb_assert (!proc_target->commit_resumed_state);
2919         }
2920     }
2921 }
2922
2923 /* See infrun.h.  */
2924
2925 scoped_disable_commit_resumed::~scoped_disable_commit_resumed ()
2926 {
2927   reset ();
2928 }
2929
2930 /* See infrun.h.  */
2931
2932 void
2933 scoped_disable_commit_resumed::reset_and_commit ()
2934 {
2935   reset ();
2936   maybe_call_commit_resumed_all_targets ();
2937 }
2938
2939 /* See infrun.h.  */
2940
2941 scoped_enable_commit_resumed::scoped_enable_commit_resumed
2942   (const char *reason)
2943   : m_reason (reason),
2944     m_prev_enable_commit_resumed (enable_commit_resumed)
2945 {
2946   infrun_debug_printf ("reason=%s", m_reason);
2947
2948   if (!enable_commit_resumed)
2949     {
2950       enable_commit_resumed = true;
2951
2952       /* Re-enable COMMIT_RESUMED_STATE on the targets where it's
2953          possible.  */
2954       maybe_set_commit_resumed_all_targets ();
2955
2956       maybe_call_commit_resumed_all_targets ();
2957     }
2958 }
2959
2960 /* See infrun.h.  */
2961
2962 scoped_enable_commit_resumed::~scoped_enable_commit_resumed ()
2963 {
2964   infrun_debug_printf ("reason=%s", m_reason);
2965
2966   gdb_assert (enable_commit_resumed);
2967
2968   enable_commit_resumed = m_prev_enable_commit_resumed;
2969
2970   if (!enable_commit_resumed)
2971     {
2972       /* Force all COMMIT_RESUMED_STATE back to false.  */
2973       for (inferior *inf : all_non_exited_inferiors ())
2974         {
2975           process_stratum_target *proc_target = inf->process_target ();
2976           proc_target->commit_resumed_state = false;
2977         }
2978     }
2979 }
2980
2981 /* Check that all the targets we're about to resume are in non-stop
2982    mode.  Ideally, we'd only care whether all targets support
2983    target-async, but we're not there yet.  E.g., stop_all_threads
2984    doesn't know how to handle all-stop targets.  Also, the remote
2985    protocol in all-stop mode is synchronous, irrespective of
2986    target-async, which means that things like a breakpoint re-set
2987    triggered by one target would try to read memory from all targets
2988    and fail.  */
2989
2990 static void
2991 check_multi_target_resumption (process_stratum_target *resume_target)
2992 {
2993   if (!non_stop && resume_target == nullptr)
2994     {
2995       scoped_restore_current_thread restore_thread;
2996
2997       /* This is used to track whether we're resuming more than one
2998          target.  */
2999       process_stratum_target *first_connection = nullptr;
3000
3001       /* The first inferior we see with a target that does not work in
3002          always-non-stop mode.  */
3003       inferior *first_not_non_stop = nullptr;
3004
3005       for (inferior *inf : all_non_exited_inferiors ())
3006         {
3007           switch_to_inferior_no_thread (inf);
3008
3009           if (!target_has_execution ())
3010             continue;
3011
3012           process_stratum_target *proc_target
3013             = current_inferior ()->process_target();
3014
3015           if (!target_is_non_stop_p ())
3016             first_not_non_stop = inf;
3017
3018           if (first_connection == nullptr)
3019             first_connection = proc_target;
3020           else if (first_connection != proc_target
3021                    && first_not_non_stop != nullptr)
3022             {
3023               switch_to_inferior_no_thread (first_not_non_stop);
3024
3025               proc_target = current_inferior ()->process_target();
3026
3027               error (_("Connection %d (%s) does not support "
3028                        "multi-target resumption."),
3029                      proc_target->connection_number,
3030                      make_target_connection_string (proc_target).c_str ());
3031             }
3032         }
3033     }
3034 }
3035
3036 /* Basic routine for continuing the program in various fashions.
3037
3038    ADDR is the address to resume at, or -1 for resume where stopped.
3039    SIGGNAL is the signal to give it, or GDB_SIGNAL_0 for none,
3040    or GDB_SIGNAL_DEFAULT for act according to how it stopped.
3041
3042    You should call clear_proceed_status before calling proceed.  */
3043
3044 void
3045 proceed (CORE_ADDR addr, enum gdb_signal siggnal)
3046 {
3047   INFRUN_SCOPED_DEBUG_ENTER_EXIT;
3048
3049   struct regcache *regcache;
3050   struct gdbarch *gdbarch;
3051   CORE_ADDR pc;
3052   struct execution_control_state ecss;
3053   struct execution_control_state *ecs = &ecss;
3054   bool started;
3055
3056   /* If we're stopped at a fork/vfork, follow the branch set by the
3057      "set follow-fork-mode" command; otherwise, we'll just proceed
3058      resuming the current thread.  */
3059   if (!follow_fork ())
3060     {
3061       /* The target for some reason decided not to resume.  */
3062       normal_stop ();
3063       if (target_can_async_p ())
3064         inferior_event_handler (INF_EXEC_COMPLETE);
3065       return;
3066     }
3067
3068   /* We'll update this if & when we switch to a new thread.  */
3069   previous_inferior_ptid = inferior_ptid;
3070
3071   regcache = get_current_regcache ();
3072   gdbarch = regcache->arch ();
3073   const address_space *aspace = regcache->aspace ();
3074
3075   pc = regcache_read_pc_protected (regcache);
3076
3077   thread_info *cur_thr = inferior_thread ();
3078
3079   /* Fill in with reasonable starting values.  */
3080   init_thread_stepping_state (cur_thr);
3081
3082   gdb_assert (!thread_is_in_step_over_chain (cur_thr));
3083
3084   ptid_t resume_ptid
3085     = user_visible_resume_ptid (cur_thr->control.stepping_command);
3086   process_stratum_target *resume_target
3087     = user_visible_resume_target (resume_ptid);
3088
3089   check_multi_target_resumption (resume_target);
3090
3091   if (addr == (CORE_ADDR) -1)
3092     {
3093       if (pc == cur_thr->suspend.stop_pc
3094           && breakpoint_here_p (aspace, pc) == ordinary_breakpoint_here
3095           && execution_direction != EXEC_REVERSE)
3096         /* There is a breakpoint at the address we will resume at,
3097            step one instruction before inserting breakpoints so that
3098            we do not stop right away (and report a second hit at this
3099            breakpoint).
3100
3101            Note, we don't do this in reverse, because we won't
3102            actually be executing the breakpoint insn anyway.
3103            We'll be (un-)executing the previous instruction.  */
3104         cur_thr->stepping_over_breakpoint = 1;
3105       else if (gdbarch_single_step_through_delay_p (gdbarch)
3106                && gdbarch_single_step_through_delay (gdbarch,
3107                                                      get_current_frame ()))
3108         /* We stepped onto an instruction that needs to be stepped
3109            again before re-inserting the breakpoint, do so.  */
3110         cur_thr->stepping_over_breakpoint = 1;
3111     }
3112   else
3113     {
3114       regcache_write_pc (regcache, addr);
3115     }
3116
3117   if (siggnal != GDB_SIGNAL_DEFAULT)
3118     cur_thr->suspend.stop_signal = siggnal;
3119
3120   /* If an exception is thrown from this point on, make sure to
3121      propagate GDB's knowledge of the executing state to the
3122      frontend/user running state.  */
3123   scoped_finish_thread_state finish_state (resume_target, resume_ptid);
3124
3125   /* Even if RESUME_PTID is a wildcard, and we end up resuming fewer
3126      threads (e.g., we might need to set threads stepping over
3127      breakpoints first), from the user/frontend's point of view, all
3128      threads in RESUME_PTID are now running.  Unless we're calling an
3129      inferior function, as in that case we pretend the inferior
3130      doesn't run at all.  */
3131   if (!cur_thr->control.in_infcall)
3132     set_running (resume_target, resume_ptid, true);
3133
3134   infrun_debug_printf ("addr=%s, signal=%s", paddress (gdbarch, addr),
3135                        gdb_signal_to_symbol_string (siggnal));
3136
3137   annotate_starting ();
3138
3139   /* Make sure that output from GDB appears before output from the
3140      inferior.  */
3141   gdb_flush (gdb_stdout);
3142
3143   /* Since we've marked the inferior running, give it the terminal.  A
3144      QUIT/Ctrl-C from here on is forwarded to the target (which can
3145      still detect attempts to unblock a stuck connection with repeated
3146      Ctrl-C from within target_pass_ctrlc).  */
3147   target_terminal::inferior ();
3148
3149   /* In a multi-threaded task we may select another thread and
3150      then continue or step.
3151
3152      But if a thread that we're resuming had stopped at a breakpoint,
3153      it will immediately cause another breakpoint stop without any
3154      execution (i.e. it will report a breakpoint hit incorrectly).  So
3155      we must step over it first.
3156
3157      Look for threads other than the current (TP) that reported a
3158      breakpoint hit and haven't been resumed yet since.  */
3159
3160   /* If scheduler locking applies, we can avoid iterating over all
3161      threads.  */
3162   if (!non_stop && !schedlock_applies (cur_thr))
3163     {
3164       for (thread_info *tp : all_non_exited_threads (resume_target,
3165                                                      resume_ptid))
3166         {
3167           switch_to_thread_no_regs (tp);
3168
3169           /* Ignore the current thread here.  It's handled
3170              afterwards.  */
3171           if (tp == cur_thr)
3172             continue;
3173
3174           if (!thread_still_needs_step_over (tp))
3175             continue;
3176
3177           gdb_assert (!thread_is_in_step_over_chain (tp));
3178
3179           infrun_debug_printf ("need to step-over [%s] first",
3180                                target_pid_to_str (tp->ptid).c_str ());
3181
3182           global_thread_step_over_chain_enqueue (tp);
3183         }
3184
3185       switch_to_thread (cur_thr);
3186     }
3187
3188   /* Enqueue the current thread last, so that we move all other
3189      threads over their breakpoints first.  */
3190   if (cur_thr->stepping_over_breakpoint)
3191     global_thread_step_over_chain_enqueue (cur_thr);
3192
3193   /* If the thread isn't started, we'll still need to set its prev_pc,
3194      so that switch_back_to_stepped_thread knows the thread hasn't
3195      advanced.  Must do this before resuming any thread, as in
3196      all-stop/remote, once we resume we can't send any other packet
3197      until the target stops again.  */
3198   cur_thr->prev_pc = regcache_read_pc_protected (regcache);
3199
3200   {
3201     scoped_disable_commit_resumed disable_commit_resumed ("proceeding");
3202
3203     started = start_step_over ();
3204
3205     if (step_over_info_valid_p ())
3206       {
3207         /* Either this thread started a new in-line step over, or some
3208            other thread was already doing one.  In either case, don't
3209            resume anything else until the step-over is finished.  */
3210       }
3211     else if (started && !target_is_non_stop_p ())
3212       {
3213         /* A new displaced stepping sequence was started.  In all-stop,
3214            we can't talk to the target anymore until it next stops.  */
3215       }
3216     else if (!non_stop && target_is_non_stop_p ())
3217       {
3218         INFRUN_SCOPED_DEBUG_START_END
3219           ("resuming threads, all-stop-on-top-of-non-stop");
3220
3221         /* In all-stop, but the target is always in non-stop mode.
3222            Start all other threads that are implicitly resumed too.  */
3223         for (thread_info *tp : all_non_exited_threads (resume_target,
3224                                                        resume_ptid))
3225           {
3226             switch_to_thread_no_regs (tp);
3227
3228             if (!tp->inf->has_execution ())
3229               {
3230                 infrun_debug_printf ("[%s] target has no execution",
3231                                      target_pid_to_str (tp->ptid).c_str ());
3232                 continue;
3233               }
3234
3235             if (tp->resumed)
3236               {
3237                 infrun_debug_printf ("[%s] resumed",
3238                                      target_pid_to_str (tp->ptid).c_str ());
3239                 gdb_assert (tp->executing || tp->suspend.waitstatus_pending_p);
3240                 continue;
3241               }
3242
3243             if (thread_is_in_step_over_chain (tp))
3244               {
3245                 infrun_debug_printf ("[%s] needs step-over",
3246                                      target_pid_to_str (tp->ptid).c_str ());
3247                 continue;
3248               }
3249
3250             infrun_debug_printf ("resuming %s",
3251                                  target_pid_to_str (tp->ptid).c_str ());
3252
3253             reset_ecs (ecs, tp);
3254             switch_to_thread (tp);
3255             keep_going_pass_signal (ecs);
3256             if (!ecs->wait_some_more)
3257               error (_("Command aborted."));
3258           }
3259       }
3260     else if (!cur_thr->resumed && !thread_is_in_step_over_chain (cur_thr))
3261       {
3262         /* The thread wasn't started, and isn't queued, run it now.  */
3263         reset_ecs (ecs, cur_thr);
3264         switch_to_thread (cur_thr);
3265         keep_going_pass_signal (ecs);
3266         if (!ecs->wait_some_more)
3267           error (_("Command aborted."));
3268       }
3269
3270     disable_commit_resumed.reset_and_commit ();
3271   }
3272
3273   finish_state.release ();
3274
3275   /* If we've switched threads above, switch back to the previously
3276      current thread.  We don't want the user to see a different
3277      selected thread.  */
3278   switch_to_thread (cur_thr);
3279
3280   /* Tell the event loop to wait for it to stop.  If the target
3281      supports asynchronous execution, it'll do this from within
3282      target_resume.  */
3283   if (!target_can_async_p ())
3284     mark_async_event_handler (infrun_async_inferior_event_token);
3285 }
3286 \f
3287
3288 /* Start remote-debugging of a machine over a serial link.  */
3289
3290 void
3291 start_remote (int from_tty)
3292 {
3293   inferior *inf = current_inferior ();
3294   inf->control.stop_soon = STOP_QUIETLY_REMOTE;
3295
3296   /* Always go on waiting for the target, regardless of the mode.  */
3297   /* FIXME: cagney/1999-09-23: At present it isn't possible to
3298      indicate to wait_for_inferior that a target should timeout if
3299      nothing is returned (instead of just blocking).  Because of this,
3300      targets expecting an immediate response need to, internally, set
3301      things up so that the target_wait() is forced to eventually
3302      timeout.  */
3303   /* FIXME: cagney/1999-09-24: It isn't possible for target_open() to
3304      differentiate to its caller what the state of the target is after
3305      the initial open has been performed.  Here we're assuming that
3306      the target has stopped.  It should be possible to eventually have
3307      target_open() return to the caller an indication that the target
3308      is currently running and GDB state should be set to the same as
3309      for an async run.  */
3310   wait_for_inferior (inf);
3311
3312   /* Now that the inferior has stopped, do any bookkeeping like
3313      loading shared libraries.  We want to do this before normal_stop,
3314      so that the displayed frame is up to date.  */
3315   post_create_inferior (from_tty);
3316
3317   normal_stop ();
3318 }
3319
3320 /* Initialize static vars when a new inferior begins.  */
3321
3322 void
3323 init_wait_for_inferior (void)
3324 {
3325   /* These are meaningless until the first time through wait_for_inferior.  */
3326
3327   breakpoint_init_inferior (inf_starting);
3328
3329   clear_proceed_status (0);
3330
3331   nullify_last_target_wait_ptid ();
3332
3333   previous_inferior_ptid = inferior_ptid;
3334 }
3335
3336 \f
3337
3338 static void handle_inferior_event (struct execution_control_state *ecs);
3339
3340 static void handle_step_into_function (struct gdbarch *gdbarch,
3341                                        struct execution_control_state *ecs);
3342 static void handle_step_into_function_backward (struct gdbarch *gdbarch,
3343                                                 struct execution_control_state *ecs);
3344 static void handle_signal_stop (struct execution_control_state *ecs);
3345 static void check_exception_resume (struct execution_control_state *,
3346                                     struct frame_info *);
3347
3348 static void end_stepping_range (struct execution_control_state *ecs);
3349 static void stop_waiting (struct execution_control_state *ecs);
3350 static void keep_going (struct execution_control_state *ecs);
3351 static void process_event_stop_test (struct execution_control_state *ecs);
3352 static bool switch_back_to_stepped_thread (struct execution_control_state *ecs);
3353
3354 /* This function is attached as a "thread_stop_requested" observer.
3355    Cleanup local state that assumed the PTID was to be resumed, and
3356    report the stop to the frontend.  */
3357
3358 static void
3359 infrun_thread_stop_requested (ptid_t ptid)
3360 {
3361   process_stratum_target *curr_target = current_inferior ()->process_target ();
3362
3363   /* PTID was requested to stop.  If the thread was already stopped,
3364      but the user/frontend doesn't know about that yet (e.g., the
3365      thread had been temporarily paused for some step-over), set up
3366      for reporting the stop now.  */
3367   for (thread_info *tp : all_threads (curr_target, ptid))
3368     {
3369       if (tp->state != THREAD_RUNNING)
3370         continue;
3371       if (tp->executing)
3372         continue;
3373
3374       /* Remove matching threads from the step-over queue, so
3375          start_step_over doesn't try to resume them
3376          automatically.  */
3377       if (thread_is_in_step_over_chain (tp))
3378         global_thread_step_over_chain_remove (tp);
3379
3380       /* If the thread is stopped, but the user/frontend doesn't
3381          know about that yet, queue a pending event, as if the
3382          thread had just stopped now.  Unless the thread already had
3383          a pending event.  */
3384       if (!tp->suspend.waitstatus_pending_p)
3385         {
3386           tp->suspend.waitstatus_pending_p = 1;
3387           tp->suspend.waitstatus.kind = TARGET_WAITKIND_STOPPED;
3388           tp->suspend.waitstatus.value.sig = GDB_SIGNAL_0;
3389         }
3390
3391       /* Clear the inline-frame state, since we're re-processing the
3392          stop.  */
3393       clear_inline_frame_state (tp);
3394
3395       /* If this thread was paused because some other thread was
3396          doing an inline-step over, let that finish first.  Once
3397          that happens, we'll restart all threads and consume pending
3398          stop events then.  */
3399       if (step_over_info_valid_p ())
3400         continue;
3401
3402       /* Otherwise we can process the (new) pending event now.  Set
3403          it so this pending event is considered by
3404          do_target_wait.  */
3405       tp->resumed = true;
3406     }
3407 }
3408
3409 static void
3410 infrun_thread_thread_exit (struct thread_info *tp, int silent)
3411 {
3412   if (target_last_proc_target == tp->inf->process_target ()
3413       && target_last_wait_ptid == tp->ptid)
3414     nullify_last_target_wait_ptid ();
3415 }
3416
3417 /* Delete the step resume, single-step and longjmp/exception resume
3418    breakpoints of TP.  */
3419
3420 static void
3421 delete_thread_infrun_breakpoints (struct thread_info *tp)
3422 {
3423   delete_step_resume_breakpoint (tp);
3424   delete_exception_resume_breakpoint (tp);
3425   delete_single_step_breakpoints (tp);
3426 }
3427
3428 /* If the target still has execution, call FUNC for each thread that
3429    just stopped.  In all-stop, that's all the non-exited threads; in
3430    non-stop, that's the current thread, only.  */
3431
3432 typedef void (*for_each_just_stopped_thread_callback_func)
3433   (struct thread_info *tp);
3434
3435 static void
3436 for_each_just_stopped_thread (for_each_just_stopped_thread_callback_func func)
3437 {
3438   if (!target_has_execution () || inferior_ptid == null_ptid)
3439     return;
3440
3441   if (target_is_non_stop_p ())
3442     {
3443       /* If in non-stop mode, only the current thread stopped.  */
3444       func (inferior_thread ());
3445     }
3446   else
3447     {
3448       /* In all-stop mode, all threads have stopped.  */
3449       for (thread_info *tp : all_non_exited_threads ())
3450         func (tp);
3451     }
3452 }
3453
3454 /* Delete the step resume and longjmp/exception resume breakpoints of
3455    the threads that just stopped.  */
3456
3457 static void
3458 delete_just_stopped_threads_infrun_breakpoints (void)
3459 {
3460   for_each_just_stopped_thread (delete_thread_infrun_breakpoints);
3461 }
3462
3463 /* Delete the single-step breakpoints of the threads that just
3464    stopped.  */
3465
3466 static void
3467 delete_just_stopped_threads_single_step_breakpoints (void)
3468 {
3469   for_each_just_stopped_thread (delete_single_step_breakpoints);
3470 }
3471
3472 /* See infrun.h.  */
3473
3474 void
3475 print_target_wait_results (ptid_t waiton_ptid, ptid_t result_ptid,
3476                            const struct target_waitstatus *ws)
3477 {
3478   infrun_debug_printf ("target_wait (%d.%ld.%ld [%s], status) =",
3479                        waiton_ptid.pid (),
3480                        waiton_ptid.lwp (),
3481                        waiton_ptid.tid (),
3482                        target_pid_to_str (waiton_ptid).c_str ());
3483   infrun_debug_printf ("  %d.%ld.%ld [%s],",
3484                        result_ptid.pid (),
3485                        result_ptid.lwp (),
3486                        result_ptid.tid (),
3487                        target_pid_to_str (result_ptid).c_str ());
3488   infrun_debug_printf ("  %s", target_waitstatus_to_string (ws).c_str ());
3489 }
3490
3491 /* Select a thread at random, out of those which are resumed and have
3492    had events.  */
3493
3494 static struct thread_info *
3495 random_pending_event_thread (inferior *inf, ptid_t waiton_ptid)
3496 {
3497   int num_events = 0;
3498
3499   auto has_event = [&] (thread_info *tp)
3500     {
3501       return (tp->ptid.matches (waiton_ptid)
3502               && tp->resumed
3503               && tp->suspend.waitstatus_pending_p);
3504     };
3505
3506   /* First see how many events we have.  Count only resumed threads
3507      that have an event pending.  */
3508   for (thread_info *tp : inf->non_exited_threads ())
3509     if (has_event (tp))
3510       num_events++;
3511
3512   if (num_events == 0)
3513     return NULL;
3514
3515   /* Now randomly pick a thread out of those that have had events.  */
3516   int random_selector = (int) ((num_events * (double) rand ())
3517                                / (RAND_MAX + 1.0));
3518
3519   if (num_events > 1)
3520     infrun_debug_printf ("Found %d events, selecting #%d",
3521                          num_events, random_selector);
3522
3523   /* Select the Nth thread that has had an event.  */
3524   for (thread_info *tp : inf->non_exited_threads ())
3525     if (has_event (tp))
3526       if (random_selector-- == 0)
3527         return tp;
3528
3529   gdb_assert_not_reached ("event thread not found");
3530 }
3531
3532 /* Wrapper for target_wait that first checks whether threads have
3533    pending statuses to report before actually asking the target for
3534    more events.  INF is the inferior we're using to call target_wait
3535    on.  */
3536
3537 static ptid_t
3538 do_target_wait_1 (inferior *inf, ptid_t ptid,
3539                   target_waitstatus *status, target_wait_flags options)
3540 {
3541   ptid_t event_ptid;
3542   struct thread_info *tp;
3543
3544   /* We know that we are looking for an event in the target of inferior
3545      INF, but we don't know which thread the event might come from.  As
3546      such we want to make sure that INFERIOR_PTID is reset so that none of
3547      the wait code relies on it - doing so is always a mistake.  */
3548   switch_to_inferior_no_thread (inf);
3549
3550   /* First check if there is a resumed thread with a wait status
3551      pending.  */
3552   if (ptid == minus_one_ptid || ptid.is_pid ())
3553     {
3554       tp = random_pending_event_thread (inf, ptid);
3555     }
3556   else
3557     {
3558       infrun_debug_printf ("Waiting for specific thread %s.",
3559                            target_pid_to_str (ptid).c_str ());
3560
3561       /* We have a specific thread to check.  */
3562       tp = find_thread_ptid (inf, ptid);
3563       gdb_assert (tp != NULL);
3564       if (!tp->suspend.waitstatus_pending_p)
3565         tp = NULL;
3566     }
3567
3568   if (tp != NULL
3569       && (tp->suspend.stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT
3570           || tp->suspend.stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT))
3571     {
3572       struct regcache *regcache = get_thread_regcache (tp);
3573       struct gdbarch *gdbarch = regcache->arch ();
3574       CORE_ADDR pc;
3575       int discard = 0;
3576
3577       pc = regcache_read_pc (regcache);
3578
3579       if (pc != tp->suspend.stop_pc)
3580         {
3581           infrun_debug_printf ("PC of %s changed.  was=%s, now=%s",
3582                                target_pid_to_str (tp->ptid).c_str (),
3583                                paddress (gdbarch, tp->suspend.stop_pc),
3584                                paddress (gdbarch, pc));
3585           discard = 1;
3586         }
3587       else if (!breakpoint_inserted_here_p (regcache->aspace (), pc))
3588         {
3589           infrun_debug_printf ("previous breakpoint of %s, at %s gone",
3590                                target_pid_to_str (tp->ptid).c_str (),
3591                                paddress (gdbarch, pc));
3592
3593           discard = 1;
3594         }
3595
3596       if (discard)
3597         {
3598           infrun_debug_printf ("pending event of %s cancelled.",
3599                                target_pid_to_str (tp->ptid).c_str ());
3600
3601           tp->suspend.waitstatus.kind = TARGET_WAITKIND_SPURIOUS;
3602           tp->suspend.stop_reason = TARGET_STOPPED_BY_NO_REASON;
3603         }
3604     }
3605
3606   if (tp != NULL)
3607     {
3608       infrun_debug_printf ("Using pending wait status %s for %s.",
3609                            target_waitstatus_to_string
3610                              (&tp->suspend.waitstatus).c_str (),
3611                            target_pid_to_str (tp->ptid).c_str ());
3612
3613       /* Now that we've selected our final event LWP, un-adjust its PC
3614          if it was a software breakpoint (and the target doesn't
3615          always adjust the PC itself).  */
3616       if (tp->suspend.stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT
3617           && !target_supports_stopped_by_sw_breakpoint ())
3618         {
3619           struct regcache *regcache;
3620           struct gdbarch *gdbarch;
3621           int decr_pc;
3622
3623           regcache = get_thread_regcache (tp);
3624           gdbarch = regcache->arch ();
3625
3626           decr_pc = gdbarch_decr_pc_after_break (gdbarch);
3627           if (decr_pc != 0)
3628             {
3629               CORE_ADDR pc;
3630
3631               pc = regcache_read_pc (regcache);
3632               regcache_write_pc (regcache, pc + decr_pc);
3633             }
3634         }
3635
3636       tp->suspend.stop_reason = TARGET_STOPPED_BY_NO_REASON;
3637       *status = tp->suspend.waitstatus;
3638       tp->suspend.waitstatus_pending_p = 0;
3639
3640       /* Wake up the event loop again, until all pending events are
3641          processed.  */
3642       if (target_is_async_p ())
3643         mark_async_event_handler (infrun_async_inferior_event_token);
3644       return tp->ptid;
3645     }
3646
3647   /* But if we don't find one, we'll have to wait.  */
3648
3649   /* We can't ask a non-async target to do a non-blocking wait, so this will be
3650      a blocking wait.  */
3651   if (!target_can_async_p ())
3652     options &= ~TARGET_WNOHANG;
3653
3654   if (deprecated_target_wait_hook)
3655     event_ptid = deprecated_target_wait_hook (ptid, status, options);
3656   else
3657     event_ptid = target_wait (ptid, status, options);
3658
3659   return event_ptid;
3660 }
3661
3662 /* Wrapper for target_wait that first checks whether threads have
3663    pending statuses to report before actually asking the target for
3664    more events.  Polls for events from all inferiors/targets.  */
3665
3666 static bool
3667 do_target_wait (ptid_t wait_ptid, execution_control_state *ecs,
3668                 target_wait_flags options)
3669 {
3670   int num_inferiors = 0;
3671   int random_selector;
3672
3673   /* For fairness, we pick the first inferior/target to poll at random
3674      out of all inferiors that may report events, and then continue
3675      polling the rest of the inferior list starting from that one in a
3676      circular fashion until the whole list is polled once.  */
3677
3678   auto inferior_matches = [&wait_ptid] (inferior *inf)
3679     {
3680       return (inf->process_target () != NULL
3681               && ptid_t (inf->pid).matches (wait_ptid));
3682     };
3683
3684   /* First see how many matching inferiors we have.  */
3685   for (inferior *inf : all_inferiors ())
3686     if (inferior_matches (inf))
3687       num_inferiors++;
3688
3689   if (num_inferiors == 0)
3690     {
3691       ecs->ws.kind = TARGET_WAITKIND_IGNORE;
3692       return false;
3693     }
3694
3695   /* Now randomly pick an inferior out of those that matched.  */
3696   random_selector = (int)
3697     ((num_inferiors * (double) rand ()) / (RAND_MAX + 1.0));
3698
3699   if (num_inferiors > 1)
3700     infrun_debug_printf ("Found %d inferiors, starting at #%d",
3701                          num_inferiors, random_selector);
3702
3703   /* Select the Nth inferior that matched.  */
3704
3705   inferior *selected = nullptr;
3706
3707   for (inferior *inf : all_inferiors ())
3708     if (inferior_matches (inf))
3709       if (random_selector-- == 0)
3710         {
3711           selected = inf;
3712           break;
3713         }
3714
3715   /* Now poll for events out of each of the matching inferior's
3716      targets, starting from the selected one.  */
3717
3718   auto do_wait = [&] (inferior *inf)
3719   {
3720     ecs->ptid = do_target_wait_1 (inf, wait_ptid, &ecs->ws, options);
3721     ecs->target = inf->process_target ();
3722     return (ecs->ws.kind != TARGET_WAITKIND_IGNORE);
3723   };
3724
3725   /* Needed in 'all-stop + target-non-stop' mode, because we end up
3726      here spuriously after the target is all stopped and we've already
3727      reported the stop to the user, polling for events.  */
3728   scoped_restore_current_thread restore_thread;
3729
3730   int inf_num = selected->num;
3731   for (inferior *inf = selected; inf != NULL; inf = inf->next)
3732     if (inferior_matches (inf))
3733       if (do_wait (inf))
3734         return true;
3735
3736   for (inferior *inf = inferior_list;
3737        inf != NULL && inf->num < inf_num;
3738        inf = inf->next)
3739     if (inferior_matches (inf))
3740       if (do_wait (inf))
3741         return true;
3742
3743   ecs->ws.kind = TARGET_WAITKIND_IGNORE;
3744   return false;
3745 }
3746
3747 /* An event reported by wait_one.  */
3748
3749 struct wait_one_event
3750 {
3751   /* The target the event came out of.  */
3752   process_stratum_target *target;
3753
3754   /* The PTID the event was for.  */
3755   ptid_t ptid;
3756
3757   /* The waitstatus.  */
3758   target_waitstatus ws;
3759 };
3760
3761 static bool handle_one (const wait_one_event &event);
3762 static void restart_threads (struct thread_info *event_thread);
3763
3764 /* Prepare and stabilize the inferior for detaching it.  E.g.,
3765    detaching while a thread is displaced stepping is a recipe for
3766    crashing it, as nothing would readjust the PC out of the scratch
3767    pad.  */
3768
3769 void
3770 prepare_for_detach (void)
3771 {
3772   struct inferior *inf = current_inferior ();
3773   ptid_t pid_ptid = ptid_t (inf->pid);
3774   scoped_restore_current_thread restore_thread;
3775
3776   scoped_restore restore_detaching = make_scoped_restore (&inf->detaching, true);
3777
3778   /* Remove all threads of INF from the global step-over chain.  We
3779      want to stop any ongoing step-over, not start any new one.  */
3780   thread_info *next;
3781   for (thread_info *tp = global_thread_step_over_chain_head;
3782        tp != nullptr;
3783        tp = next)
3784     {
3785       next = global_thread_step_over_chain_next (tp);
3786       if (tp->inf == inf)
3787         global_thread_step_over_chain_remove (tp);
3788     }
3789
3790   /* If we were already in the middle of an inline step-over, and the
3791      thread stepping belongs to the inferior we're detaching, we need
3792      to restart the threads of other inferiors.  */
3793   if (step_over_info.thread != -1)
3794     {
3795       infrun_debug_printf ("inline step-over in-process while detaching");
3796
3797       thread_info *thr = find_thread_global_id (step_over_info.thread);
3798       if (thr->inf == inf)
3799         {
3800           /* Since we removed threads of INF from the step-over chain,
3801              we know this won't start a step-over for INF.  */
3802           clear_step_over_info ();
3803
3804           if (target_is_non_stop_p ())
3805             {
3806               /* Start a new step-over in another thread if there's
3807                  one that needs it.  */
3808               start_step_over ();
3809
3810               /* Restart all other threads (except the
3811                  previously-stepping thread, since that one is still
3812                  running).  */
3813               if (!step_over_info_valid_p ())
3814                 restart_threads (thr);
3815             }
3816         }
3817     }
3818
3819   if (displaced_step_in_progress (inf))
3820     {
3821       infrun_debug_printf ("displaced-stepping in-process while detaching");
3822
3823       /* Stop threads currently displaced stepping, aborting it.  */
3824
3825       for (thread_info *thr : inf->non_exited_threads ())
3826         {
3827           if (thr->displaced_step_state.in_progress ())
3828             {
3829               if (thr->executing)
3830                 {
3831                   if (!thr->stop_requested)
3832                     {
3833                       target_stop (thr->ptid);
3834                       thr->stop_requested = true;
3835                     }
3836                 }
3837               else
3838                 thr->resumed = false;
3839             }
3840         }
3841
3842       while (displaced_step_in_progress (inf))
3843         {
3844           wait_one_event event;
3845
3846           event.target = inf->process_target ();
3847           event.ptid = do_target_wait_1 (inf, pid_ptid, &event.ws, 0);
3848
3849           if (debug_infrun)
3850             print_target_wait_results (pid_ptid, event.ptid, &event.ws);
3851
3852           handle_one (event);
3853         }
3854
3855       /* It's OK to leave some of the threads of INF stopped, since
3856          they'll be detached shortly.  */
3857     }
3858 }
3859
3860 /* Wait for control to return from inferior to debugger.
3861
3862    If inferior gets a signal, we may decide to start it up again
3863    instead of returning.  That is why there is a loop in this function.
3864    When this function actually returns it means the inferior
3865    should be left stopped and GDB should read more commands.  */
3866
3867 static void
3868 wait_for_inferior (inferior *inf)
3869 {
3870   infrun_debug_printf ("wait_for_inferior ()");
3871
3872   SCOPE_EXIT { delete_just_stopped_threads_infrun_breakpoints (); };
3873
3874   /* If an error happens while handling the event, propagate GDB's
3875      knowledge of the executing state to the frontend/user running
3876      state.  */
3877   scoped_finish_thread_state finish_state
3878     (inf->process_target (), minus_one_ptid);
3879
3880   while (1)
3881     {
3882       struct execution_control_state ecss;
3883       struct execution_control_state *ecs = &ecss;
3884
3885       memset (ecs, 0, sizeof (*ecs));
3886
3887       overlay_cache_invalid = 1;
3888
3889       /* Flush target cache before starting to handle each event.
3890          Target was running and cache could be stale.  This is just a
3891          heuristic.  Running threads may modify target memory, but we
3892          don't get any event.  */
3893       target_dcache_invalidate ();
3894
3895       ecs->ptid = do_target_wait_1 (inf, minus_one_ptid, &ecs->ws, 0);
3896       ecs->target = inf->process_target ();
3897
3898       if (debug_infrun)
3899         print_target_wait_results (minus_one_ptid, ecs->ptid, &ecs->ws);
3900
3901       /* Now figure out what to do with the result of the result.  */
3902       handle_inferior_event (ecs);
3903
3904       if (!ecs->wait_some_more)
3905         break;
3906     }
3907
3908   /* No error, don't finish the state yet.  */
3909   finish_state.release ();
3910 }
3911
3912 /* Cleanup that reinstalls the readline callback handler, if the
3913    target is running in the background.  If while handling the target
3914    event something triggered a secondary prompt, like e.g., a
3915    pagination prompt, we'll have removed the callback handler (see
3916    gdb_readline_wrapper_line).  Need to do this as we go back to the
3917    event loop, ready to process further input.  Note this has no
3918    effect if the handler hasn't actually been removed, because calling
3919    rl_callback_handler_install resets the line buffer, thus losing
3920    input.  */
3921
3922 static void
3923 reinstall_readline_callback_handler_cleanup ()
3924 {
3925   struct ui *ui = current_ui;
3926
3927   if (!ui->async)
3928     {
3929       /* We're not going back to the top level event loop yet.  Don't
3930          install the readline callback, as it'd prep the terminal,
3931          readline-style (raw, noecho) (e.g., --batch).  We'll install
3932          it the next time the prompt is displayed, when we're ready
3933          for input.  */
3934       return;
3935     }
3936
3937   if (ui->command_editing && ui->prompt_state != PROMPT_BLOCKED)
3938     gdb_rl_callback_handler_reinstall ();
3939 }
3940
3941 /* Clean up the FSMs of threads that are now stopped.  In non-stop,
3942    that's just the event thread.  In all-stop, that's all threads.  */
3943
3944 static void
3945 clean_up_just_stopped_threads_fsms (struct execution_control_state *ecs)
3946 {
3947   if (ecs->event_thread != NULL
3948       && ecs->event_thread->thread_fsm != NULL)
3949     ecs->event_thread->thread_fsm->clean_up (ecs->event_thread);
3950
3951   if (!non_stop)
3952     {
3953       for (thread_info *thr : all_non_exited_threads ())
3954         {
3955           if (thr->thread_fsm == NULL)
3956             continue;
3957           if (thr == ecs->event_thread)
3958             continue;
3959
3960           switch_to_thread (thr);
3961           thr->thread_fsm->clean_up (thr);
3962         }
3963
3964       if (ecs->event_thread != NULL)
3965         switch_to_thread (ecs->event_thread);
3966     }
3967 }
3968
3969 /* Helper for all_uis_check_sync_execution_done that works on the
3970    current UI.  */
3971
3972 static void
3973 check_curr_ui_sync_execution_done (void)
3974 {
3975   struct ui *ui = current_ui;
3976
3977   if (ui->prompt_state == PROMPT_NEEDED
3978       && ui->async
3979       && !gdb_in_secondary_prompt_p (ui))
3980     {
3981       target_terminal::ours ();
3982       gdb::observers::sync_execution_done.notify ();
3983       ui_register_input_event_handler (ui);
3984     }
3985 }
3986
3987 /* See infrun.h.  */
3988
3989 void
3990 all_uis_check_sync_execution_done (void)
3991 {
3992   SWITCH_THRU_ALL_UIS ()
3993     {
3994       check_curr_ui_sync_execution_done ();
3995     }
3996 }
3997
3998 /* See infrun.h.  */
3999
4000 void
4001 all_uis_on_sync_execution_starting (void)
4002 {
4003   SWITCH_THRU_ALL_UIS ()
4004     {
4005       if (current_ui->prompt_state == PROMPT_NEEDED)
4006         async_disable_stdin ();
4007     }
4008 }
4009
4010 /* Asynchronous version of wait_for_inferior.  It is called by the
4011    event loop whenever a change of state is detected on the file
4012    descriptor corresponding to the target.  It can be called more than
4013    once to complete a single execution command.  In such cases we need
4014    to keep the state in a global variable ECSS.  If it is the last time
4015    that this function is called for a single execution command, then
4016    report to the user that the inferior has stopped, and do the
4017    necessary cleanups.  */
4018
4019 void
4020 fetch_inferior_event ()
4021 {
4022   INFRUN_SCOPED_DEBUG_ENTER_EXIT;
4023
4024   struct execution_control_state ecss;
4025   struct execution_control_state *ecs = &ecss;
4026   int cmd_done = 0;
4027
4028   memset (ecs, 0, sizeof (*ecs));
4029
4030   /* Events are always processed with the main UI as current UI.  This
4031      way, warnings, debug output, etc. are always consistently sent to
4032      the main console.  */
4033   scoped_restore save_ui = make_scoped_restore (&current_ui, main_ui);
4034
4035   /* Temporarily disable pagination.  Otherwise, the user would be
4036      given an option to press 'q' to quit, which would cause an early
4037      exit and could leave GDB in a half-baked state.  */
4038   scoped_restore save_pagination
4039     = make_scoped_restore (&pagination_enabled, false);
4040
4041   /* End up with readline processing input, if necessary.  */
4042   {
4043     SCOPE_EXIT { reinstall_readline_callback_handler_cleanup (); };
4044
4045     /* We're handling a live event, so make sure we're doing live
4046        debugging.  If we're looking at traceframes while the target is
4047        running, we're going to need to get back to that mode after
4048        handling the event.  */
4049     gdb::optional<scoped_restore_current_traceframe> maybe_restore_traceframe;
4050     if (non_stop)
4051       {
4052         maybe_restore_traceframe.emplace ();
4053         set_current_traceframe (-1);
4054       }
4055
4056     /* The user/frontend should not notice a thread switch due to
4057        internal events.  Make sure we revert to the user selected
4058        thread and frame after handling the event and running any
4059        breakpoint commands.  */
4060     scoped_restore_current_thread restore_thread;
4061
4062     overlay_cache_invalid = 1;
4063     /* Flush target cache before starting to handle each event.  Target
4064        was running and cache could be stale.  This is just a heuristic.
4065        Running threads may modify target memory, but we don't get any
4066        event.  */
4067     target_dcache_invalidate ();
4068
4069     scoped_restore save_exec_dir
4070       = make_scoped_restore (&execution_direction,
4071                              target_execution_direction ());
4072
4073     /* Allow targets to pause their resumed threads while we handle
4074        the event.  */
4075     scoped_disable_commit_resumed disable_commit_resumed ("handling event");
4076
4077     if (!do_target_wait (minus_one_ptid, ecs, TARGET_WNOHANG))
4078       {
4079         infrun_debug_printf ("do_target_wait returned no event");
4080         disable_commit_resumed.reset_and_commit ();
4081         return;
4082       }
4083
4084     gdb_assert (ecs->ws.kind != TARGET_WAITKIND_IGNORE);
4085
4086     /* Switch to the target that generated the event, so we can do
4087        target calls.  */
4088     switch_to_target_no_thread (ecs->target);
4089
4090     if (debug_infrun)
4091       print_target_wait_results (minus_one_ptid, ecs->ptid, &ecs->ws);
4092
4093     /* If an error happens while handling the event, propagate GDB's
4094        knowledge of the executing state to the frontend/user running
4095        state.  */
4096     ptid_t finish_ptid = !target_is_non_stop_p () ? minus_one_ptid : ecs->ptid;
4097     scoped_finish_thread_state finish_state (ecs->target, finish_ptid);
4098
4099     /* Get executed before scoped_restore_current_thread above to apply
4100        still for the thread which has thrown the exception.  */
4101     auto defer_bpstat_clear
4102       = make_scope_exit (bpstat_clear_actions);
4103     auto defer_delete_threads
4104       = make_scope_exit (delete_just_stopped_threads_infrun_breakpoints);
4105
4106     /* Now figure out what to do with the result of the result.  */
4107     handle_inferior_event (ecs);
4108
4109     if (!ecs->wait_some_more)
4110       {
4111         struct inferior *inf = find_inferior_ptid (ecs->target, ecs->ptid);
4112         bool should_stop = true;
4113         struct thread_info *thr = ecs->event_thread;
4114
4115         delete_just_stopped_threads_infrun_breakpoints ();
4116
4117         if (thr != NULL)
4118           {
4119             struct thread_fsm *thread_fsm = thr->thread_fsm;
4120
4121             if (thread_fsm != NULL)
4122               should_stop = thread_fsm->should_stop (thr);
4123           }
4124
4125         if (!should_stop)
4126           {
4127             keep_going (ecs);
4128           }
4129         else
4130           {
4131             bool should_notify_stop = true;
4132             int proceeded = 0;
4133
4134             clean_up_just_stopped_threads_fsms (ecs);
4135
4136             if (thr != NULL && thr->thread_fsm != NULL)
4137               should_notify_stop = thr->thread_fsm->should_notify_stop ();
4138
4139             if (should_notify_stop)
4140               {
4141                 /* We may not find an inferior if this was a process exit.  */
4142                 if (inf == NULL || inf->control.stop_soon == NO_STOP_QUIETLY)
4143                   proceeded = normal_stop ();
4144               }
4145
4146             if (!proceeded)
4147               {
4148                 inferior_event_handler (INF_EXEC_COMPLETE);
4149                 cmd_done = 1;
4150               }
4151
4152             /* If we got a TARGET_WAITKIND_NO_RESUMED event, then the
4153                previously selected thread is gone.  We have two
4154                choices - switch to no thread selected, or restore the
4155                previously selected thread (now exited).  We chose the
4156                later, just because that's what GDB used to do.  After
4157                this, "info threads" says "The current thread <Thread
4158                ID 2> has terminated." instead of "No thread
4159                selected.".  */
4160             if (!non_stop
4161                 && cmd_done
4162                 && ecs->ws.kind != TARGET_WAITKIND_NO_RESUMED)
4163               restore_thread.dont_restore ();
4164           }
4165       }
4166
4167     defer_delete_threads.release ();
4168     defer_bpstat_clear.release ();
4169
4170     /* No error, don't finish the thread states yet.  */
4171     finish_state.release ();
4172
4173     disable_commit_resumed.reset_and_commit ();
4174
4175     /* This scope is used to ensure that readline callbacks are
4176        reinstalled here.  */
4177   }
4178
4179   /* If a UI was in sync execution mode, and now isn't, restore its
4180      prompt (a synchronous execution command has finished, and we're
4181      ready for input).  */
4182   all_uis_check_sync_execution_done ();
4183
4184   if (cmd_done
4185       && exec_done_display_p
4186       && (inferior_ptid == null_ptid
4187           || inferior_thread ()->state != THREAD_RUNNING))
4188     printf_unfiltered (_("completed.\n"));
4189 }
4190
4191 /* See infrun.h.  */
4192
4193 void
4194 set_step_info (thread_info *tp, struct frame_info *frame,
4195                struct symtab_and_line sal)
4196 {
4197   /* This can be removed once this function no longer implicitly relies on the
4198      inferior_ptid value.  */
4199   gdb_assert (inferior_ptid == tp->ptid);
4200
4201   tp->control.step_frame_id = get_frame_id (frame);
4202   tp->control.step_stack_frame_id = get_stack_frame_id (frame);
4203
4204   tp->current_symtab = sal.symtab;
4205   tp->current_line = sal.line;
4206 }
4207
4208 /* Clear context switchable stepping state.  */
4209
4210 void
4211 init_thread_stepping_state (struct thread_info *tss)
4212 {
4213   tss->stepped_breakpoint = 0;
4214   tss->stepping_over_breakpoint = 0;
4215   tss->stepping_over_watchpoint = 0;
4216   tss->step_after_step_resume_breakpoint = 0;
4217 }
4218
4219 /* See infrun.h.  */
4220
4221 void
4222 set_last_target_status (process_stratum_target *target, ptid_t ptid,
4223                         target_waitstatus status)
4224 {
4225   target_last_proc_target = target;
4226   target_last_wait_ptid = ptid;
4227   target_last_waitstatus = status;
4228 }
4229
4230 /* See infrun.h.  */
4231
4232 void
4233 get_last_target_status (process_stratum_target **target, ptid_t *ptid,
4234                         target_waitstatus *status)
4235 {
4236   if (target != nullptr)
4237     *target = target_last_proc_target;
4238   if (ptid != nullptr)
4239     *ptid = target_last_wait_ptid;
4240   if (status != nullptr)
4241     *status = target_last_waitstatus;
4242 }
4243
4244 /* See infrun.h.  */
4245
4246 void
4247 nullify_last_target_wait_ptid (void)
4248 {
4249   target_last_proc_target = nullptr;
4250   target_last_wait_ptid = minus_one_ptid;
4251   target_last_waitstatus = {};
4252 }
4253
4254 /* Switch thread contexts.  */
4255
4256 static void
4257 context_switch (execution_control_state *ecs)
4258 {
4259   if (ecs->ptid != inferior_ptid
4260       && (inferior_ptid == null_ptid
4261           || ecs->event_thread != inferior_thread ()))
4262     {
4263       infrun_debug_printf ("Switching context from %s to %s",
4264                            target_pid_to_str (inferior_ptid).c_str (),
4265                            target_pid_to_str (ecs->ptid).c_str ());
4266     }
4267
4268   switch_to_thread (ecs->event_thread);
4269 }
4270
4271 /* If the target can't tell whether we've hit breakpoints
4272    (target_supports_stopped_by_sw_breakpoint), and we got a SIGTRAP,
4273    check whether that could have been caused by a breakpoint.  If so,
4274    adjust the PC, per gdbarch_decr_pc_after_break.  */
4275
4276 static void
4277 adjust_pc_after_break (struct thread_info *thread,
4278                        struct target_waitstatus *ws)
4279 {
4280   struct regcache *regcache;
4281   struct gdbarch *gdbarch;
4282   CORE_ADDR breakpoint_pc, decr_pc;
4283
4284   /* If we've hit a breakpoint, we'll normally be stopped with SIGTRAP.  If
4285      we aren't, just return.
4286
4287      We assume that waitkinds other than TARGET_WAITKIND_STOPPED are not
4288      affected by gdbarch_decr_pc_after_break.  Other waitkinds which are
4289      implemented by software breakpoints should be handled through the normal
4290      breakpoint layer.
4291
4292      NOTE drow/2004-01-31: On some targets, breakpoints may generate
4293      different signals (SIGILL or SIGEMT for instance), but it is less
4294      clear where the PC is pointing afterwards.  It may not match
4295      gdbarch_decr_pc_after_break.  I don't know any specific target that
4296      generates these signals at breakpoints (the code has been in GDB since at
4297      least 1992) so I can not guess how to handle them here.
4298
4299      In earlier versions of GDB, a target with 
4300      gdbarch_have_nonsteppable_watchpoint would have the PC after hitting a
4301      watchpoint affected by gdbarch_decr_pc_after_break.  I haven't found any
4302      target with both of these set in GDB history, and it seems unlikely to be
4303      correct, so gdbarch_have_nonsteppable_watchpoint is not checked here.  */
4304
4305   if (ws->kind != TARGET_WAITKIND_STOPPED)
4306     return;
4307
4308   if (ws->value.sig != GDB_SIGNAL_TRAP)
4309     return;
4310
4311   /* In reverse execution, when a breakpoint is hit, the instruction
4312      under it has already been de-executed.  The reported PC always
4313      points at the breakpoint address, so adjusting it further would
4314      be wrong.  E.g., consider this case on a decr_pc_after_break == 1
4315      architecture:
4316
4317        B1         0x08000000 :   INSN1
4318        B2         0x08000001 :   INSN2
4319                   0x08000002 :   INSN3
4320             PC -> 0x08000003 :   INSN4
4321
4322      Say you're stopped at 0x08000003 as above.  Reverse continuing
4323      from that point should hit B2 as below.  Reading the PC when the
4324      SIGTRAP is reported should read 0x08000001 and INSN2 should have
4325      been de-executed already.
4326
4327        B1         0x08000000 :   INSN1
4328        B2   PC -> 0x08000001 :   INSN2
4329                   0x08000002 :   INSN3
4330                   0x08000003 :   INSN4
4331
4332      We can't apply the same logic as for forward execution, because
4333      we would wrongly adjust the PC to 0x08000000, since there's a
4334      breakpoint at PC - 1.  We'd then report a hit on B1, although
4335      INSN1 hadn't been de-executed yet.  Doing nothing is the correct
4336      behaviour.  */
4337   if (execution_direction == EXEC_REVERSE)
4338     return;
4339
4340   /* If the target can tell whether the thread hit a SW breakpoint,
4341      trust it.  Targets that can tell also adjust the PC
4342      themselves.  */
4343   if (target_supports_stopped_by_sw_breakpoint ())
4344     return;
4345
4346   /* Note that relying on whether a breakpoint is planted in memory to
4347      determine this can fail.  E.g,. the breakpoint could have been
4348      removed since.  Or the thread could have been told to step an
4349      instruction the size of a breakpoint instruction, and only
4350      _after_ was a breakpoint inserted at its address.  */
4351
4352   /* If this target does not decrement the PC after breakpoints, then
4353      we have nothing to do.  */
4354   regcache = get_thread_regcache (thread);
4355   gdbarch = regcache->arch ();
4356
4357   decr_pc = gdbarch_decr_pc_after_break (gdbarch);
4358   if (decr_pc == 0)
4359     return;
4360
4361   const address_space *aspace = regcache->aspace ();
4362
4363   /* Find the location where (if we've hit a breakpoint) the
4364      breakpoint would be.  */
4365   breakpoint_pc = regcache_read_pc (regcache) - decr_pc;
4366
4367   /* If the target can't tell whether a software breakpoint triggered,
4368      fallback to figuring it out based on breakpoints we think were
4369      inserted in the target, and on whether the thread was stepped or
4370      continued.  */
4371
4372   /* Check whether there actually is a software breakpoint inserted at
4373      that location.
4374
4375      If in non-stop mode, a race condition is possible where we've
4376      removed a breakpoint, but stop events for that breakpoint were
4377      already queued and arrive later.  To suppress those spurious
4378      SIGTRAPs, we keep a list of such breakpoint locations for a bit,
4379      and retire them after a number of stop events are reported.  Note
4380      this is an heuristic and can thus get confused.  The real fix is
4381      to get the "stopped by SW BP and needs adjustment" info out of
4382      the target/kernel (and thus never reach here; see above).  */
4383   if (software_breakpoint_inserted_here_p (aspace, breakpoint_pc)
4384       || (target_is_non_stop_p ()
4385           && moribund_breakpoint_here_p (aspace, breakpoint_pc)))
4386     {
4387       gdb::optional<scoped_restore_tmpl<int>> restore_operation_disable;
4388
4389       if (record_full_is_used ())
4390         restore_operation_disable.emplace
4391           (record_full_gdb_operation_disable_set ());
4392
4393       /* When using hardware single-step, a SIGTRAP is reported for both
4394          a completed single-step and a software breakpoint.  Need to
4395          differentiate between the two, as the latter needs adjusting
4396          but the former does not.
4397
4398          The SIGTRAP can be due to a completed hardware single-step only if 
4399           - we didn't insert software single-step breakpoints
4400           - this thread is currently being stepped
4401
4402          If any of these events did not occur, we must have stopped due
4403          to hitting a software breakpoint, and have to back up to the
4404          breakpoint address.
4405
4406          As a special case, we could have hardware single-stepped a
4407          software breakpoint.  In this case (prev_pc == breakpoint_pc),
4408          we also need to back up to the breakpoint address.  */
4409
4410       if (thread_has_single_step_breakpoints_set (thread)
4411           || !currently_stepping (thread)
4412           || (thread->stepped_breakpoint
4413               && thread->prev_pc == breakpoint_pc))
4414         regcache_write_pc (regcache, breakpoint_pc);
4415     }
4416 }
4417
4418 static bool
4419 stepped_in_from (struct frame_info *frame, struct frame_id step_frame_id)
4420 {
4421   for (frame = get_prev_frame (frame);
4422        frame != NULL;
4423        frame = get_prev_frame (frame))
4424     {
4425       if (frame_id_eq (get_frame_id (frame), step_frame_id))
4426         return true;
4427
4428       if (get_frame_type (frame) != INLINE_FRAME)
4429         break;
4430     }
4431
4432   return false;
4433 }
4434
4435 /* Look for an inline frame that is marked for skip.
4436    If PREV_FRAME is TRUE start at the previous frame,
4437    otherwise start at the current frame.  Stop at the
4438    first non-inline frame, or at the frame where the
4439    step started.  */
4440
4441 static bool
4442 inline_frame_is_marked_for_skip (bool prev_frame, struct thread_info *tp)
4443 {
4444   struct frame_info *frame = get_current_frame ();
4445
4446   if (prev_frame)
4447     frame = get_prev_frame (frame);
4448
4449   for (; frame != NULL; frame = get_prev_frame (frame))
4450     {
4451       const char *fn = NULL;
4452       symtab_and_line sal;
4453       struct symbol *sym;
4454
4455       if (frame_id_eq (get_frame_id (frame), tp->control.step_frame_id))
4456         break;
4457       if (get_frame_type (frame) != INLINE_FRAME)
4458         break;
4459
4460       sal = find_frame_sal (frame);
4461       sym = get_frame_function (frame);
4462
4463       if (sym != NULL)
4464         fn = sym->print_name ();
4465
4466       if (sal.line != 0
4467           && function_name_is_marked_for_skip (fn, sal))
4468         return true;
4469     }
4470
4471   return false;
4472 }
4473
4474 /* If the event thread has the stop requested flag set, pretend it
4475    stopped for a GDB_SIGNAL_0 (i.e., as if it stopped due to
4476    target_stop).  */
4477
4478 static bool
4479 handle_stop_requested (struct execution_control_state *ecs)
4480 {
4481   if (ecs->event_thread->stop_requested)
4482     {
4483       ecs->ws.kind = TARGET_WAITKIND_STOPPED;
4484       ecs->ws.value.sig = GDB_SIGNAL_0;
4485       handle_signal_stop (ecs);
4486       return true;
4487     }
4488   return false;
4489 }
4490
4491 /* Auxiliary function that handles syscall entry/return events.
4492    It returns true if the inferior should keep going (and GDB
4493    should ignore the event), or false if the event deserves to be
4494    processed.  */
4495
4496 static bool
4497 handle_syscall_event (struct execution_control_state *ecs)
4498 {
4499   struct regcache *regcache;
4500   int syscall_number;
4501
4502   context_switch (ecs);
4503
4504   regcache = get_thread_regcache (ecs->event_thread);
4505   syscall_number = ecs->ws.value.syscall_number;
4506   ecs->event_thread->suspend.stop_pc = regcache_read_pc (regcache);
4507
4508   if (catch_syscall_enabled () > 0
4509       && catching_syscall_number (syscall_number) > 0)
4510     {
4511       infrun_debug_printf ("syscall number=%d", syscall_number);
4512
4513       ecs->event_thread->control.stop_bpstat
4514         = bpstat_stop_status (regcache->aspace (),
4515                               ecs->event_thread->suspend.stop_pc,
4516                               ecs->event_thread, &ecs->ws);
4517
4518       if (handle_stop_requested (ecs))
4519         return false;
4520
4521       if (bpstat_causes_stop (ecs->event_thread->control.stop_bpstat))
4522         {
4523           /* Catchpoint hit.  */
4524           return false;
4525         }
4526     }
4527
4528   if (handle_stop_requested (ecs))
4529     return false;
4530
4531   /* If no catchpoint triggered for this, then keep going.  */
4532   keep_going (ecs);
4533
4534   return true;
4535 }
4536
4537 /* Lazily fill in the execution_control_state's stop_func_* fields.  */
4538
4539 static void
4540 fill_in_stop_func (struct gdbarch *gdbarch,
4541                    struct execution_control_state *ecs)
4542 {
4543   if (!ecs->stop_func_filled_in)
4544     {
4545       const block *block;
4546       const general_symbol_info *gsi;
4547
4548       /* Don't care about return value; stop_func_start and stop_func_name
4549          will both be 0 if it doesn't work.  */
4550       find_pc_partial_function_sym (ecs->event_thread->suspend.stop_pc,
4551                                     &gsi,
4552                                     &ecs->stop_func_start,
4553                                     &ecs->stop_func_end,
4554                                     &block);
4555       ecs->stop_func_name = gsi == nullptr ? nullptr : gsi->print_name ();
4556
4557       /* The call to find_pc_partial_function, above, will set
4558          stop_func_start and stop_func_end to the start and end
4559          of the range containing the stop pc.  If this range
4560          contains the entry pc for the block (which is always the
4561          case for contiguous blocks), advance stop_func_start past
4562          the function's start offset and entrypoint.  Note that
4563          stop_func_start is NOT advanced when in a range of a
4564          non-contiguous block that does not contain the entry pc.  */
4565       if (block != nullptr
4566           && ecs->stop_func_start <= BLOCK_ENTRY_PC (block)
4567           && BLOCK_ENTRY_PC (block) < ecs->stop_func_end)
4568         {
4569           ecs->stop_func_start
4570             += gdbarch_deprecated_function_start_offset (gdbarch);
4571
4572           if (gdbarch_skip_entrypoint_p (gdbarch))
4573             ecs->stop_func_start
4574               = gdbarch_skip_entrypoint (gdbarch, ecs->stop_func_start);
4575         }
4576
4577       ecs->stop_func_filled_in = 1;
4578     }
4579 }
4580
4581
4582 /* Return the STOP_SOON field of the inferior pointed at by ECS.  */
4583
4584 static enum stop_kind
4585 get_inferior_stop_soon (execution_control_state *ecs)
4586 {
4587   struct inferior *inf = find_inferior_ptid (ecs->target, ecs->ptid);
4588
4589   gdb_assert (inf != NULL);
4590   return inf->control.stop_soon;
4591 }
4592
4593 /* Poll for one event out of the current target.  Store the resulting
4594    waitstatus in WS, and return the event ptid.  Does not block.  */
4595
4596 static ptid_t
4597 poll_one_curr_target (struct target_waitstatus *ws)
4598 {
4599   ptid_t event_ptid;
4600
4601   overlay_cache_invalid = 1;
4602
4603   /* Flush target cache before starting to handle each event.
4604      Target was running and cache could be stale.  This is just a
4605      heuristic.  Running threads may modify target memory, but we
4606      don't get any event.  */
4607   target_dcache_invalidate ();
4608
4609   if (deprecated_target_wait_hook)
4610     event_ptid = deprecated_target_wait_hook (minus_one_ptid, ws, TARGET_WNOHANG);
4611   else
4612     event_ptid = target_wait (minus_one_ptid, ws, TARGET_WNOHANG);
4613
4614   if (debug_infrun)
4615     print_target_wait_results (minus_one_ptid, event_ptid, ws);
4616
4617   return event_ptid;
4618 }
4619
4620 /* Wait for one event out of any target.  */
4621
4622 static wait_one_event
4623 wait_one ()
4624 {
4625   while (1)
4626     {
4627       for (inferior *inf : all_inferiors ())
4628         {
4629           process_stratum_target *target = inf->process_target ();
4630           if (target == NULL
4631               || !target->is_async_p ()
4632               || !target->threads_executing)
4633             continue;
4634
4635           switch_to_inferior_no_thread (inf);
4636
4637           wait_one_event event;
4638           event.target = target;
4639           event.ptid = poll_one_curr_target (&event.ws);
4640
4641           if (event.ws.kind == TARGET_WAITKIND_NO_RESUMED)
4642             {
4643               /* If nothing is resumed, remove the target from the
4644                  event loop.  */
4645               target_async (0);
4646             }
4647           else if (event.ws.kind != TARGET_WAITKIND_IGNORE)
4648             return event;
4649         }
4650
4651       /* Block waiting for some event.  */
4652
4653       fd_set readfds;
4654       int nfds = 0;
4655
4656       FD_ZERO (&readfds);
4657
4658       for (inferior *inf : all_inferiors ())
4659         {
4660           process_stratum_target *target = inf->process_target ();
4661           if (target == NULL
4662               || !target->is_async_p ()
4663               || !target->threads_executing)
4664             continue;
4665
4666           int fd = target->async_wait_fd ();
4667           FD_SET (fd, &readfds);
4668           if (nfds <= fd)
4669             nfds = fd + 1;
4670         }
4671
4672       if (nfds == 0)
4673         {
4674           /* No waitable targets left.  All must be stopped.  */
4675           return {NULL, minus_one_ptid, {TARGET_WAITKIND_NO_RESUMED}};
4676         }
4677
4678       QUIT;
4679
4680       int numfds = interruptible_select (nfds, &readfds, 0, NULL, 0);
4681       if (numfds < 0)
4682         {
4683           if (errno == EINTR)
4684             continue;
4685           else
4686             perror_with_name ("interruptible_select");
4687         }
4688     }
4689 }
4690
4691 /* Save the thread's event and stop reason to process it later.  */
4692
4693 static void
4694 save_waitstatus (struct thread_info *tp, const target_waitstatus *ws)
4695 {
4696   infrun_debug_printf ("saving status %s for %d.%ld.%ld",
4697                        target_waitstatus_to_string (ws).c_str (),
4698                        tp->ptid.pid (),
4699                        tp->ptid.lwp (),
4700                        tp->ptid.tid ());
4701
4702   /* Record for later.  */
4703   tp->suspend.waitstatus = *ws;
4704   tp->suspend.waitstatus_pending_p = 1;
4705
4706   struct regcache *regcache = get_thread_regcache (tp);
4707   const address_space *aspace = regcache->aspace ();
4708
4709   if (ws->kind == TARGET_WAITKIND_STOPPED
4710       && ws->value.sig == GDB_SIGNAL_TRAP)
4711     {
4712       CORE_ADDR pc = regcache_read_pc (regcache);
4713
4714       adjust_pc_after_break (tp, &tp->suspend.waitstatus);
4715
4716       scoped_restore_current_thread restore_thread;
4717       switch_to_thread (tp);
4718
4719       if (target_stopped_by_watchpoint ())
4720         {
4721           tp->suspend.stop_reason
4722             = TARGET_STOPPED_BY_WATCHPOINT;
4723         }
4724       else if (target_supports_stopped_by_sw_breakpoint ()
4725                && target_stopped_by_sw_breakpoint ())
4726         {
4727           tp->suspend.stop_reason
4728             = TARGET_STOPPED_BY_SW_BREAKPOINT;
4729         }
4730       else if (target_supports_stopped_by_hw_breakpoint ()
4731                && target_stopped_by_hw_breakpoint ())
4732         {
4733           tp->suspend.stop_reason
4734             = TARGET_STOPPED_BY_HW_BREAKPOINT;
4735         }
4736       else if (!target_supports_stopped_by_hw_breakpoint ()
4737                && hardware_breakpoint_inserted_here_p (aspace,
4738                                                        pc))
4739         {
4740           tp->suspend.stop_reason
4741             = TARGET_STOPPED_BY_HW_BREAKPOINT;
4742         }
4743       else if (!target_supports_stopped_by_sw_breakpoint ()
4744                && software_breakpoint_inserted_here_p (aspace,
4745                                                        pc))
4746         {
4747           tp->suspend.stop_reason
4748             = TARGET_STOPPED_BY_SW_BREAKPOINT;
4749         }
4750       else if (!thread_has_single_step_breakpoints_set (tp)
4751                && currently_stepping (tp))
4752         {
4753           tp->suspend.stop_reason
4754             = TARGET_STOPPED_BY_SINGLE_STEP;
4755         }
4756     }
4757 }
4758
4759 /* Mark the non-executing threads accordingly.  In all-stop, all
4760    threads of all processes are stopped when we get any event
4761    reported.  In non-stop mode, only the event thread stops.  */
4762
4763 static void
4764 mark_non_executing_threads (process_stratum_target *target,
4765                             ptid_t event_ptid,
4766                             struct target_waitstatus ws)
4767 {
4768   ptid_t mark_ptid;
4769
4770   if (!target_is_non_stop_p ())
4771     mark_ptid = minus_one_ptid;
4772   else if (ws.kind == TARGET_WAITKIND_SIGNALLED
4773            || ws.kind == TARGET_WAITKIND_EXITED)
4774     {
4775       /* If we're handling a process exit in non-stop mode, even
4776          though threads haven't been deleted yet, one would think
4777          that there is nothing to do, as threads of the dead process
4778          will be soon deleted, and threads of any other process were
4779          left running.  However, on some targets, threads survive a
4780          process exit event.  E.g., for the "checkpoint" command,
4781          when the current checkpoint/fork exits, linux-fork.c
4782          automatically switches to another fork from within
4783          target_mourn_inferior, by associating the same
4784          inferior/thread to another fork.  We haven't mourned yet at
4785          this point, but we must mark any threads left in the
4786          process as not-executing so that finish_thread_state marks
4787          them stopped (in the user's perspective) if/when we present
4788          the stop to the user.  */
4789       mark_ptid = ptid_t (event_ptid.pid ());
4790     }
4791   else
4792     mark_ptid = event_ptid;
4793
4794   set_executing (target, mark_ptid, false);
4795
4796   /* Likewise the resumed flag.  */
4797   set_resumed (target, mark_ptid, false);
4798 }
4799
4800 /* Handle one event after stopping threads.  If the eventing thread
4801    reports back any interesting event, we leave it pending.  If the
4802    eventing thread was in the middle of a displaced step, we
4803    cancel/finish it, and unless the thread's inferior is being
4804    detached, put the thread back in the step-over chain.  Returns true
4805    if there are no resumed threads left in the target (thus there's no
4806    point in waiting further), false otherwise.  */
4807
4808 static bool
4809 handle_one (const wait_one_event &event)
4810 {
4811   infrun_debug_printf
4812     ("%s %s", target_waitstatus_to_string (&event.ws).c_str (),
4813      target_pid_to_str (event.ptid).c_str ());
4814
4815   if (event.ws.kind == TARGET_WAITKIND_NO_RESUMED)
4816     {
4817       /* All resumed threads exited.  */
4818       return true;
4819     }
4820   else if (event.ws.kind == TARGET_WAITKIND_THREAD_EXITED
4821            || event.ws.kind == TARGET_WAITKIND_EXITED
4822            || event.ws.kind == TARGET_WAITKIND_SIGNALLED)
4823     {
4824       /* One thread/process exited/signalled.  */
4825
4826       thread_info *t = nullptr;
4827
4828       /* The target may have reported just a pid.  If so, try
4829          the first non-exited thread.  */
4830       if (event.ptid.is_pid ())
4831         {
4832           int pid  = event.ptid.pid ();
4833           inferior *inf = find_inferior_pid (event.target, pid);
4834           for (thread_info *tp : inf->non_exited_threads ())
4835             {
4836               t = tp;
4837               break;
4838             }
4839
4840           /* If there is no available thread, the event would
4841              have to be appended to a per-inferior event list,
4842              which does not exist (and if it did, we'd have
4843              to adjust run control command to be able to
4844              resume such an inferior).  We assert here instead
4845              of going into an infinite loop.  */
4846           gdb_assert (t != nullptr);
4847
4848           infrun_debug_printf
4849             ("using %s", target_pid_to_str (t->ptid).c_str ());
4850         }
4851       else
4852         {
4853           t = find_thread_ptid (event.target, event.ptid);
4854           /* Check if this is the first time we see this thread.
4855              Don't bother adding if it individually exited.  */
4856           if (t == nullptr
4857               && event.ws.kind != TARGET_WAITKIND_THREAD_EXITED)
4858             t = add_thread (event.target, event.ptid);
4859         }
4860
4861       if (t != nullptr)
4862         {
4863           /* Set the threads as non-executing to avoid
4864              another stop attempt on them.  */
4865           switch_to_thread_no_regs (t);
4866           mark_non_executing_threads (event.target, event.ptid,
4867                                       event.ws);
4868           save_waitstatus (t, &event.ws);
4869           t->stop_requested = false;
4870         }
4871     }
4872   else
4873     {
4874       thread_info *t = find_thread_ptid (event.target, event.ptid);
4875       if (t == NULL)
4876         t = add_thread (event.target, event.ptid);
4877
4878       t->stop_requested = 0;
4879       t->executing = 0;
4880       t->resumed = false;
4881       t->control.may_range_step = 0;
4882
4883       /* This may be the first time we see the inferior report
4884          a stop.  */
4885       inferior *inf = find_inferior_ptid (event.target, event.ptid);
4886       if (inf->needs_setup)
4887         {
4888           switch_to_thread_no_regs (t);
4889           setup_inferior (0);
4890         }
4891
4892       if (event.ws.kind == TARGET_WAITKIND_STOPPED
4893           && event.ws.value.sig == GDB_SIGNAL_0)
4894         {
4895           /* We caught the event that we intended to catch, so
4896              there's no event pending.  */
4897           t->suspend.waitstatus.kind = TARGET_WAITKIND_IGNORE;
4898           t->suspend.waitstatus_pending_p = 0;
4899
4900           if (displaced_step_finish (t, GDB_SIGNAL_0)
4901               == DISPLACED_STEP_FINISH_STATUS_NOT_EXECUTED)
4902             {
4903               /* Add it back to the step-over queue.  */
4904               infrun_debug_printf
4905                 ("displaced-step of %s canceled",
4906                  target_pid_to_str (t->ptid).c_str ());
4907
4908               t->control.trap_expected = 0;
4909               if (!t->inf->detaching)
4910                 global_thread_step_over_chain_enqueue (t);
4911             }
4912         }
4913       else
4914         {
4915           enum gdb_signal sig;
4916           struct regcache *regcache;
4917
4918           infrun_debug_printf
4919             ("target_wait %s, saving status for %d.%ld.%ld",
4920              target_waitstatus_to_string (&event.ws).c_str (),
4921              t->ptid.pid (), t->ptid.lwp (), t->ptid.tid ());
4922
4923           /* Record for later.  */
4924           save_waitstatus (t, &event.ws);
4925
4926           sig = (event.ws.kind == TARGET_WAITKIND_STOPPED
4927                  ? event.ws.value.sig : GDB_SIGNAL_0);
4928
4929           if (displaced_step_finish (t, sig)
4930               == DISPLACED_STEP_FINISH_STATUS_NOT_EXECUTED)
4931             {
4932               /* Add it back to the step-over queue.  */
4933               t->control.trap_expected = 0;
4934               if (!t->inf->detaching)
4935                 global_thread_step_over_chain_enqueue (t);
4936             }
4937
4938           regcache = get_thread_regcache (t);
4939           t->suspend.stop_pc = regcache_read_pc (regcache);
4940
4941           infrun_debug_printf ("saved stop_pc=%s for %s "
4942                                "(currently_stepping=%d)",
4943                                paddress (target_gdbarch (),
4944                                          t->suspend.stop_pc),
4945                                target_pid_to_str (t->ptid).c_str (),
4946                                currently_stepping (t));
4947         }
4948     }
4949
4950   return false;
4951 }
4952
4953 /* See infrun.h.  */
4954
4955 void
4956 stop_all_threads (void)
4957 {
4958   /* We may need multiple passes to discover all threads.  */
4959   int pass;
4960   int iterations = 0;
4961
4962   gdb_assert (exists_non_stop_target ());
4963
4964   infrun_debug_printf ("starting");
4965
4966   scoped_restore_current_thread restore_thread;
4967
4968   /* Enable thread events of all targets.  */
4969   for (auto *target : all_non_exited_process_targets ())
4970     {
4971       switch_to_target_no_thread (target);
4972       target_thread_events (true);
4973     }
4974
4975   SCOPE_EXIT
4976     {
4977       /* Disable thread events of all targets.  */
4978       for (auto *target : all_non_exited_process_targets ())
4979         {
4980           switch_to_target_no_thread (target);
4981           target_thread_events (false);
4982         }
4983
4984       /* Use debug_prefixed_printf directly to get a meaningful function
4985          name.  */
4986       if (debug_infrun)
4987         debug_prefixed_printf ("infrun", "stop_all_threads", "done");
4988     };
4989
4990   /* Request threads to stop, and then wait for the stops.  Because
4991      threads we already know about can spawn more threads while we're
4992      trying to stop them, and we only learn about new threads when we
4993      update the thread list, do this in a loop, and keep iterating
4994      until two passes find no threads that need to be stopped.  */
4995   for (pass = 0; pass < 2; pass++, iterations++)
4996     {
4997       infrun_debug_printf ("pass=%d, iterations=%d", pass, iterations);
4998       while (1)
4999         {
5000           int waits_needed = 0;
5001
5002           for (auto *target : all_non_exited_process_targets ())
5003             {
5004               switch_to_target_no_thread (target);
5005               update_thread_list ();
5006             }
5007
5008           /* Go through all threads looking for threads that we need
5009              to tell the target to stop.  */
5010           for (thread_info *t : all_non_exited_threads ())
5011             {
5012               /* For a single-target setting with an all-stop target,
5013                  we would not even arrive here.  For a multi-target
5014                  setting, until GDB is able to handle a mixture of
5015                  all-stop and non-stop targets, simply skip all-stop
5016                  targets' threads.  This should be fine due to the
5017                  protection of 'check_multi_target_resumption'.  */
5018
5019               switch_to_thread_no_regs (t);
5020               if (!target_is_non_stop_p ())
5021                 continue;
5022
5023               if (t->executing)
5024                 {
5025                   /* If already stopping, don't request a stop again.
5026                      We just haven't seen the notification yet.  */
5027                   if (!t->stop_requested)
5028                     {
5029                       infrun_debug_printf ("  %s executing, need stop",
5030                                            target_pid_to_str (t->ptid).c_str ());
5031                       target_stop (t->ptid);
5032                       t->stop_requested = 1;
5033                     }
5034                   else
5035                     {
5036                       infrun_debug_printf ("  %s executing, already stopping",
5037                                            target_pid_to_str (t->ptid).c_str ());
5038                     }
5039
5040                   if (t->stop_requested)
5041                     waits_needed++;
5042                 }
5043               else
5044                 {
5045                   infrun_debug_printf ("  %s not executing",
5046                                        target_pid_to_str (t->ptid).c_str ());
5047
5048                   /* The thread may be not executing, but still be
5049                      resumed with a pending status to process.  */
5050                   t->resumed = false;
5051                 }
5052             }
5053
5054           if (waits_needed == 0)
5055             break;
5056
5057           /* If we find new threads on the second iteration, restart
5058              over.  We want to see two iterations in a row with all
5059              threads stopped.  */
5060           if (pass > 0)
5061             pass = -1;
5062
5063           for (int i = 0; i < waits_needed; i++)
5064             {
5065               wait_one_event event = wait_one ();
5066               if (handle_one (event))
5067                 break;
5068             }
5069         }
5070     }
5071 }
5072
5073 /* Handle a TARGET_WAITKIND_NO_RESUMED event.  */
5074
5075 static bool
5076 handle_no_resumed (struct execution_control_state *ecs)
5077 {
5078   if (target_can_async_p ())
5079     {
5080       bool any_sync = false;
5081
5082       for (ui *ui : all_uis ())
5083         {
5084           if (ui->prompt_state == PROMPT_BLOCKED)
5085             {
5086               any_sync = true;
5087               break;
5088             }
5089         }
5090       if (!any_sync)
5091         {
5092           /* There were no unwaited-for children left in the target, but,
5093              we're not synchronously waiting for events either.  Just
5094              ignore.  */
5095
5096           infrun_debug_printf ("TARGET_WAITKIND_NO_RESUMED (ignoring: bg)");
5097           prepare_to_wait (ecs);
5098           return true;
5099         }
5100     }
5101
5102   /* Otherwise, if we were running a synchronous execution command, we
5103      may need to cancel it and give the user back the terminal.
5104
5105      In non-stop mode, the target can't tell whether we've already
5106      consumed previous stop events, so it can end up sending us a
5107      no-resumed event like so:
5108
5109        #0 - thread 1 is left stopped
5110
5111        #1 - thread 2 is resumed and hits breakpoint
5112                -> TARGET_WAITKIND_STOPPED
5113
5114        #2 - thread 3 is resumed and exits
5115             this is the last resumed thread, so
5116                -> TARGET_WAITKIND_NO_RESUMED
5117
5118        #3 - gdb processes stop for thread 2 and decides to re-resume
5119             it.
5120
5121        #4 - gdb processes the TARGET_WAITKIND_NO_RESUMED event.
5122             thread 2 is now resumed, so the event should be ignored.
5123
5124      IOW, if the stop for thread 2 doesn't end a foreground command,
5125      then we need to ignore the following TARGET_WAITKIND_NO_RESUMED
5126      event.  But it could be that the event meant that thread 2 itself
5127      (or whatever other thread was the last resumed thread) exited.
5128
5129      To address this we refresh the thread list and check whether we
5130      have resumed threads _now_.  In the example above, this removes
5131      thread 3 from the thread list.  If thread 2 was re-resumed, we
5132      ignore this event.  If we find no thread resumed, then we cancel
5133      the synchronous command and show "no unwaited-for " to the
5134      user.  */
5135
5136   inferior *curr_inf = current_inferior ();
5137
5138   scoped_restore_current_thread restore_thread;
5139
5140   for (auto *target : all_non_exited_process_targets ())
5141     {
5142       switch_to_target_no_thread (target);
5143       update_thread_list ();
5144     }
5145
5146   /* If:
5147
5148        - the current target has no thread executing, and
5149        - the current inferior is native, and
5150        - the current inferior is the one which has the terminal, and
5151        - we did nothing,
5152
5153      then a Ctrl-C from this point on would remain stuck in the
5154      kernel, until a thread resumes and dequeues it.  That would
5155      result in the GDB CLI not reacting to Ctrl-C, not able to
5156      interrupt the program.  To address this, if the current inferior
5157      no longer has any thread executing, we give the terminal to some
5158      other inferior that has at least one thread executing.  */
5159   bool swap_terminal = true;
5160
5161   /* Whether to ignore this TARGET_WAITKIND_NO_RESUMED event, or
5162      whether to report it to the user.  */
5163   bool ignore_event = false;
5164
5165   for (thread_info *thread : all_non_exited_threads ())
5166     {
5167       if (swap_terminal && thread->executing)
5168         {
5169           if (thread->inf != curr_inf)
5170             {
5171               target_terminal::ours ();
5172
5173               switch_to_thread (thread);
5174               target_terminal::inferior ();
5175             }
5176           swap_terminal = false;
5177         }
5178
5179       if (!ignore_event
5180           && (thread->executing
5181               || thread->suspend.waitstatus_pending_p))
5182         {
5183           /* Either there were no unwaited-for children left in the
5184              target at some point, but there are now, or some target
5185              other than the eventing one has unwaited-for children
5186              left.  Just ignore.  */
5187           infrun_debug_printf ("TARGET_WAITKIND_NO_RESUMED "
5188                                "(ignoring: found resumed)");
5189
5190           ignore_event = true;
5191         }
5192
5193       if (ignore_event && !swap_terminal)
5194         break;
5195     }
5196
5197   if (ignore_event)
5198     {
5199       switch_to_inferior_no_thread (curr_inf);
5200       prepare_to_wait (ecs);
5201       return true;
5202     }
5203
5204   /* Go ahead and report the event.  */
5205   return false;
5206 }
5207
5208 /* Given an execution control state that has been freshly filled in by
5209    an event from the inferior, figure out what it means and take
5210    appropriate action.
5211
5212    The alternatives are:
5213
5214    1) stop_waiting and return; to really stop and return to the
5215    debugger.
5216
5217    2) keep_going and return; to wait for the next event (set
5218    ecs->event_thread->stepping_over_breakpoint to 1 to single step
5219    once).  */
5220
5221 static void
5222 handle_inferior_event (struct execution_control_state *ecs)
5223 {
5224   /* Make sure that all temporary struct value objects that were
5225      created during the handling of the event get deleted at the
5226      end.  */
5227   scoped_value_mark free_values;
5228
5229   infrun_debug_printf ("%s", target_waitstatus_to_string (&ecs->ws).c_str ());
5230
5231   if (ecs->ws.kind == TARGET_WAITKIND_IGNORE)
5232     {
5233       /* We had an event in the inferior, but we are not interested in
5234          handling it at this level.  The lower layers have already
5235          done what needs to be done, if anything.
5236
5237          One of the possible circumstances for this is when the
5238          inferior produces output for the console.  The inferior has
5239          not stopped, and we are ignoring the event.  Another possible
5240          circumstance is any event which the lower level knows will be
5241          reported multiple times without an intervening resume.  */
5242       prepare_to_wait (ecs);
5243       return;
5244     }
5245
5246   if (ecs->ws.kind == TARGET_WAITKIND_THREAD_EXITED)
5247     {
5248       prepare_to_wait (ecs);
5249       return;
5250     }
5251
5252   if (ecs->ws.kind == TARGET_WAITKIND_NO_RESUMED
5253       && handle_no_resumed (ecs))
5254     return;
5255
5256   /* Cache the last target/ptid/waitstatus.  */
5257   set_last_target_status (ecs->target, ecs->ptid, ecs->ws);
5258
5259   /* Always clear state belonging to the previous time we stopped.  */
5260   stop_stack_dummy = STOP_NONE;
5261
5262   if (ecs->ws.kind == TARGET_WAITKIND_NO_RESUMED)
5263     {
5264       /* No unwaited-for children left.  IOW, all resumed children
5265          have exited.  */
5266       stop_print_frame = false;
5267       stop_waiting (ecs);
5268       return;
5269     }
5270
5271   if (ecs->ws.kind != TARGET_WAITKIND_EXITED
5272       && ecs->ws.kind != TARGET_WAITKIND_SIGNALLED)
5273     {
5274       ecs->event_thread = find_thread_ptid (ecs->target, ecs->ptid);
5275       /* If it's a new thread, add it to the thread database.  */
5276       if (ecs->event_thread == NULL)
5277         ecs->event_thread = add_thread (ecs->target, ecs->ptid);
5278
5279       /* Disable range stepping.  If the next step request could use a
5280          range, this will be end up re-enabled then.  */
5281       ecs->event_thread->control.may_range_step = 0;
5282     }
5283
5284   /* Dependent on valid ECS->EVENT_THREAD.  */
5285   adjust_pc_after_break (ecs->event_thread, &ecs->ws);
5286
5287   /* Dependent on the current PC value modified by adjust_pc_after_break.  */
5288   reinit_frame_cache ();
5289
5290   breakpoint_retire_moribund ();
5291
5292   /* First, distinguish signals caused by the debugger from signals
5293      that have to do with the program's own actions.  Note that
5294      breakpoint insns may cause SIGTRAP or SIGILL or SIGEMT, depending
5295      on the operating system version.  Here we detect when a SIGILL or
5296      SIGEMT is really a breakpoint and change it to SIGTRAP.  We do
5297      something similar for SIGSEGV, since a SIGSEGV will be generated
5298      when we're trying to execute a breakpoint instruction on a
5299      non-executable stack.  This happens for call dummy breakpoints
5300      for architectures like SPARC that place call dummies on the
5301      stack.  */
5302   if (ecs->ws.kind == TARGET_WAITKIND_STOPPED
5303       && (ecs->ws.value.sig == GDB_SIGNAL_ILL
5304           || ecs->ws.value.sig == GDB_SIGNAL_SEGV
5305           || ecs->ws.value.sig == GDB_SIGNAL_EMT))
5306     {
5307       struct regcache *regcache = get_thread_regcache (ecs->event_thread);
5308
5309       if (breakpoint_inserted_here_p (regcache->aspace (),
5310                                       regcache_read_pc (regcache)))
5311         {
5312           infrun_debug_printf ("Treating signal as SIGTRAP");
5313           ecs->ws.value.sig = GDB_SIGNAL_TRAP;
5314         }
5315     }
5316
5317   mark_non_executing_threads (ecs->target, ecs->ptid, ecs->ws);
5318
5319   switch (ecs->ws.kind)
5320     {
5321     case TARGET_WAITKIND_LOADED:
5322       {
5323         context_switch (ecs);
5324         /* Ignore gracefully during startup of the inferior, as it might
5325            be the shell which has just loaded some objects, otherwise
5326            add the symbols for the newly loaded objects.  Also ignore at
5327            the beginning of an attach or remote session; we will query
5328            the full list of libraries once the connection is
5329            established.  */
5330
5331         stop_kind stop_soon = get_inferior_stop_soon (ecs);
5332         if (stop_soon == NO_STOP_QUIETLY)
5333           {
5334             struct regcache *regcache;
5335
5336             regcache = get_thread_regcache (ecs->event_thread);
5337
5338             handle_solib_event ();
5339
5340             ecs->event_thread->control.stop_bpstat
5341               = bpstat_stop_status (regcache->aspace (),
5342                                     ecs->event_thread->suspend.stop_pc,
5343                                     ecs->event_thread, &ecs->ws);
5344
5345             if (handle_stop_requested (ecs))
5346               return;
5347
5348             if (bpstat_causes_stop (ecs->event_thread->control.stop_bpstat))
5349               {
5350                 /* A catchpoint triggered.  */
5351                 process_event_stop_test (ecs);
5352                 return;
5353               }
5354
5355             /* If requested, stop when the dynamic linker notifies
5356                gdb of events.  This allows the user to get control
5357                and place breakpoints in initializer routines for
5358                dynamically loaded objects (among other things).  */
5359             ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0;
5360             if (stop_on_solib_events)
5361               {
5362                 /* Make sure we print "Stopped due to solib-event" in
5363                    normal_stop.  */
5364                 stop_print_frame = true;
5365
5366                 stop_waiting (ecs);
5367                 return;
5368               }
5369           }
5370
5371         /* If we are skipping through a shell, or through shared library
5372            loading that we aren't interested in, resume the program.  If
5373            we're running the program normally, also resume.  */
5374         if (stop_soon == STOP_QUIETLY || stop_soon == NO_STOP_QUIETLY)
5375           {
5376             /* Loading of shared libraries might have changed breakpoint
5377                addresses.  Make sure new breakpoints are inserted.  */
5378             if (stop_soon == NO_STOP_QUIETLY)
5379               insert_breakpoints ();
5380             resume (GDB_SIGNAL_0);
5381             prepare_to_wait (ecs);
5382             return;
5383           }
5384
5385         /* But stop if we're attaching or setting up a remote
5386            connection.  */
5387         if (stop_soon == STOP_QUIETLY_NO_SIGSTOP
5388             || stop_soon == STOP_QUIETLY_REMOTE)
5389           {
5390             infrun_debug_printf ("quietly stopped");
5391             stop_waiting (ecs);
5392             return;
5393           }
5394
5395         internal_error (__FILE__, __LINE__,
5396                         _("unhandled stop_soon: %d"), (int) stop_soon);
5397       }
5398
5399     case TARGET_WAITKIND_SPURIOUS:
5400       if (handle_stop_requested (ecs))
5401         return;
5402       context_switch (ecs);
5403       resume (GDB_SIGNAL_0);
5404       prepare_to_wait (ecs);
5405       return;
5406
5407     case TARGET_WAITKIND_THREAD_CREATED:
5408       if (handle_stop_requested (ecs))
5409         return;
5410       context_switch (ecs);
5411       if (!switch_back_to_stepped_thread (ecs))
5412         keep_going (ecs);
5413       return;
5414
5415     case TARGET_WAITKIND_EXITED:
5416     case TARGET_WAITKIND_SIGNALLED:
5417       {
5418         /* Depending on the system, ecs->ptid may point to a thread or
5419            to a process.  On some targets, target_mourn_inferior may
5420            need to have access to the just-exited thread.  That is the
5421            case of GNU/Linux's "checkpoint" support, for example.
5422            Call the switch_to_xxx routine as appropriate.  */
5423         thread_info *thr = find_thread_ptid (ecs->target, ecs->ptid);
5424         if (thr != nullptr)
5425           switch_to_thread (thr);
5426         else
5427           {
5428             inferior *inf = find_inferior_ptid (ecs->target, ecs->ptid);
5429             switch_to_inferior_no_thread (inf);
5430           }
5431       }
5432       handle_vfork_child_exec_or_exit (0);
5433       target_terminal::ours (); /* Must do this before mourn anyway.  */
5434
5435       /* Clearing any previous state of convenience variables.  */
5436       clear_exit_convenience_vars ();
5437
5438       if (ecs->ws.kind == TARGET_WAITKIND_EXITED)
5439         {
5440           /* Record the exit code in the convenience variable $_exitcode, so
5441              that the user can inspect this again later.  */
5442           set_internalvar_integer (lookup_internalvar ("_exitcode"),
5443                                    (LONGEST) ecs->ws.value.integer);
5444
5445           /* Also record this in the inferior itself.  */
5446           current_inferior ()->has_exit_code = 1;
5447           current_inferior ()->exit_code = (LONGEST) ecs->ws.value.integer;
5448
5449           /* Support the --return-child-result option.  */
5450           return_child_result_value = ecs->ws.value.integer;
5451
5452           gdb::observers::exited.notify (ecs->ws.value.integer);
5453         }
5454       else
5455         {
5456           struct gdbarch *gdbarch = current_inferior ()->gdbarch;
5457
5458           if (gdbarch_gdb_signal_to_target_p (gdbarch))
5459             {
5460               /* Set the value of the internal variable $_exitsignal,
5461                  which holds the signal uncaught by the inferior.  */
5462               set_internalvar_integer (lookup_internalvar ("_exitsignal"),
5463                                        gdbarch_gdb_signal_to_target (gdbarch,
5464                                                           ecs->ws.value.sig));
5465             }
5466           else
5467             {
5468               /* We don't have access to the target's method used for
5469                  converting between signal numbers (GDB's internal
5470                  representation <-> target's representation).
5471                  Therefore, we cannot do a good job at displaying this
5472                  information to the user.  It's better to just warn
5473                  her about it (if infrun debugging is enabled), and
5474                  give up.  */
5475               infrun_debug_printf ("Cannot fill $_exitsignal with the correct "
5476                                    "signal number.");
5477             }
5478
5479           gdb::observers::signal_exited.notify (ecs->ws.value.sig);
5480         }
5481
5482       gdb_flush (gdb_stdout);
5483       target_mourn_inferior (inferior_ptid);
5484       stop_print_frame = false;
5485       stop_waiting (ecs);
5486       return;
5487
5488     case TARGET_WAITKIND_FORKED:
5489     case TARGET_WAITKIND_VFORKED:
5490       /* Check whether the inferior is displaced stepping.  */
5491       {
5492         struct regcache *regcache = get_thread_regcache (ecs->event_thread);
5493         struct gdbarch *gdbarch = regcache->arch ();
5494         inferior *parent_inf = find_inferior_ptid (ecs->target, ecs->ptid);
5495
5496         /* If this is a fork (child gets its own address space copy) and some
5497            displaced step buffers were in use at the time of the fork, restore
5498            the displaced step buffer bytes in the child process.  */
5499         if (ecs->ws.kind == TARGET_WAITKIND_FORKED)
5500           gdbarch_displaced_step_restore_all_in_ptid
5501             (gdbarch, parent_inf, ecs->ws.value.related_pid);
5502
5503         /* If displaced stepping is supported, and thread ecs->ptid is
5504            displaced stepping.  */
5505         if (displaced_step_in_progress_thread (ecs->event_thread))
5506           {
5507             struct regcache *child_regcache;
5508             CORE_ADDR parent_pc;
5509
5510             /* GDB has got TARGET_WAITKIND_FORKED or TARGET_WAITKIND_VFORKED,
5511                indicating that the displaced stepping of syscall instruction
5512                has been done.  Perform cleanup for parent process here.  Note
5513                that this operation also cleans up the child process for vfork,
5514                because their pages are shared.  */
5515             displaced_step_finish (ecs->event_thread, GDB_SIGNAL_TRAP);
5516             /* Start a new step-over in another thread if there's one
5517                that needs it.  */
5518             start_step_over ();
5519
5520             /* Since the vfork/fork syscall instruction was executed in the scratchpad,
5521                the child's PC is also within the scratchpad.  Set the child's PC
5522                to the parent's PC value, which has already been fixed up.
5523                FIXME: we use the parent's aspace here, although we're touching
5524                the child, because the child hasn't been added to the inferior
5525                list yet at this point.  */
5526
5527             child_regcache
5528               = get_thread_arch_aspace_regcache (parent_inf->process_target (),
5529                                                  ecs->ws.value.related_pid,
5530                                                  gdbarch,
5531                                                  parent_inf->aspace);
5532             /* Read PC value of parent process.  */
5533             parent_pc = regcache_read_pc (regcache);
5534
5535             displaced_debug_printf ("write child pc from %s to %s",
5536                                     paddress (gdbarch,
5537                                               regcache_read_pc (child_regcache)),
5538                                     paddress (gdbarch, parent_pc));
5539
5540             regcache_write_pc (child_regcache, parent_pc);
5541           }
5542       }
5543
5544       context_switch (ecs);
5545
5546       /* Immediately detach breakpoints from the child before there's
5547          any chance of letting the user delete breakpoints from the
5548          breakpoint lists.  If we don't do this early, it's easy to
5549          leave left over traps in the child, vis: "break foo; catch
5550          fork; c; <fork>; del; c; <child calls foo>".  We only follow
5551          the fork on the last `continue', and by that time the
5552          breakpoint at "foo" is long gone from the breakpoint table.
5553          If we vforked, then we don't need to unpatch here, since both
5554          parent and child are sharing the same memory pages; we'll
5555          need to unpatch at follow/detach time instead to be certain
5556          that new breakpoints added between catchpoint hit time and
5557          vfork follow are detached.  */
5558       if (ecs->ws.kind != TARGET_WAITKIND_VFORKED)
5559         {
5560           /* This won't actually modify the breakpoint list, but will
5561              physically remove the breakpoints from the child.  */
5562           detach_breakpoints (ecs->ws.value.related_pid);
5563         }
5564
5565       delete_just_stopped_threads_single_step_breakpoints ();
5566
5567       /* In case the event is caught by a catchpoint, remember that
5568          the event is to be followed at the next resume of the thread,
5569          and not immediately.  */
5570       ecs->event_thread->pending_follow = ecs->ws;
5571
5572       ecs->event_thread->suspend.stop_pc
5573         = regcache_read_pc (get_thread_regcache (ecs->event_thread));
5574
5575       ecs->event_thread->control.stop_bpstat
5576         = bpstat_stop_status (get_current_regcache ()->aspace (),
5577                               ecs->event_thread->suspend.stop_pc,
5578                               ecs->event_thread, &ecs->ws);
5579
5580       if (handle_stop_requested (ecs))
5581         return;
5582
5583       /* If no catchpoint triggered for this, then keep going.  Note
5584          that we're interested in knowing the bpstat actually causes a
5585          stop, not just if it may explain the signal.  Software
5586          watchpoints, for example, always appear in the bpstat.  */
5587       if (!bpstat_causes_stop (ecs->event_thread->control.stop_bpstat))
5588         {
5589           bool follow_child
5590             = (follow_fork_mode_string == follow_fork_mode_child);
5591
5592           ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0;
5593
5594           process_stratum_target *targ
5595             = ecs->event_thread->inf->process_target ();
5596
5597           bool should_resume = follow_fork ();
5598
5599           /* Note that one of these may be an invalid pointer,
5600              depending on detach_fork.  */
5601           thread_info *parent = ecs->event_thread;
5602           thread_info *child
5603             = find_thread_ptid (targ, ecs->ws.value.related_pid);
5604
5605           /* At this point, the parent is marked running, and the
5606              child is marked stopped.  */
5607
5608           /* If not resuming the parent, mark it stopped.  */
5609           if (follow_child && !detach_fork && !non_stop && !sched_multi)
5610             parent->set_running (false);
5611
5612           /* If resuming the child, mark it running.  */
5613           if (follow_child || (!detach_fork && (non_stop || sched_multi)))
5614             child->set_running (true);
5615
5616           /* In non-stop mode, also resume the other branch.  */
5617           if (!detach_fork && (non_stop
5618                                || (sched_multi && target_is_non_stop_p ())))
5619             {
5620               if (follow_child)
5621                 switch_to_thread (parent);
5622               else
5623                 switch_to_thread (child);
5624
5625               ecs->event_thread = inferior_thread ();
5626               ecs->ptid = inferior_ptid;
5627               keep_going (ecs);
5628             }
5629
5630           if (follow_child)
5631             switch_to_thread (child);
5632           else
5633             switch_to_thread (parent);
5634
5635           ecs->event_thread = inferior_thread ();
5636           ecs->ptid = inferior_ptid;
5637
5638           if (should_resume)
5639             keep_going (ecs);
5640           else
5641             stop_waiting (ecs);
5642           return;
5643         }
5644       process_event_stop_test (ecs);
5645       return;
5646
5647     case TARGET_WAITKIND_VFORK_DONE:
5648       /* Done with the shared memory region.  Re-insert breakpoints in
5649          the parent, and keep going.  */
5650
5651       context_switch (ecs);
5652
5653       current_inferior ()->waiting_for_vfork_done = 0;
5654       current_inferior ()->pspace->breakpoints_not_allowed = 0;
5655
5656       if (handle_stop_requested (ecs))
5657         return;
5658
5659       /* This also takes care of reinserting breakpoints in the
5660          previously locked inferior.  */
5661       keep_going (ecs);
5662       return;
5663
5664     case TARGET_WAITKIND_EXECD:
5665
5666       /* Note we can't read registers yet (the stop_pc), because we
5667          don't yet know the inferior's post-exec architecture.
5668          'stop_pc' is explicitly read below instead.  */
5669       switch_to_thread_no_regs (ecs->event_thread);
5670
5671       /* Do whatever is necessary to the parent branch of the vfork.  */
5672       handle_vfork_child_exec_or_exit (1);
5673
5674       /* This causes the eventpoints and symbol table to be reset.
5675          Must do this now, before trying to determine whether to
5676          stop.  */
5677       follow_exec (inferior_ptid, ecs->ws.value.execd_pathname);
5678
5679       /* In follow_exec we may have deleted the original thread and
5680          created a new one.  Make sure that the event thread is the
5681          execd thread for that case (this is a nop otherwise).  */
5682       ecs->event_thread = inferior_thread ();
5683
5684       ecs->event_thread->suspend.stop_pc
5685         = regcache_read_pc (get_thread_regcache (ecs->event_thread));
5686
5687       ecs->event_thread->control.stop_bpstat
5688         = bpstat_stop_status (get_current_regcache ()->aspace (),
5689                               ecs->event_thread->suspend.stop_pc,
5690                               ecs->event_thread, &ecs->ws);
5691
5692       /* Note that this may be referenced from inside
5693          bpstat_stop_status above, through inferior_has_execd.  */
5694       xfree (ecs->ws.value.execd_pathname);
5695       ecs->ws.value.execd_pathname = NULL;
5696
5697       if (handle_stop_requested (ecs))
5698         return;
5699
5700       /* If no catchpoint triggered for this, then keep going.  */
5701       if (!bpstat_causes_stop (ecs->event_thread->control.stop_bpstat))
5702         {
5703           ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0;
5704           keep_going (ecs);
5705           return;
5706         }
5707       process_event_stop_test (ecs);
5708       return;
5709
5710       /* Be careful not to try to gather much state about a thread
5711          that's in a syscall.  It's frequently a losing proposition.  */
5712     case TARGET_WAITKIND_SYSCALL_ENTRY:
5713       /* Getting the current syscall number.  */
5714       if (handle_syscall_event (ecs) == 0)
5715         process_event_stop_test (ecs);
5716       return;
5717
5718       /* Before examining the threads further, step this thread to
5719          get it entirely out of the syscall.  (We get notice of the
5720          event when the thread is just on the verge of exiting a
5721          syscall.  Stepping one instruction seems to get it back
5722          into user code.)  */
5723     case TARGET_WAITKIND_SYSCALL_RETURN:
5724       if (handle_syscall_event (ecs) == 0)
5725         process_event_stop_test (ecs);
5726       return;
5727
5728     case TARGET_WAITKIND_STOPPED:
5729       handle_signal_stop (ecs);
5730       return;
5731
5732     case TARGET_WAITKIND_NO_HISTORY:
5733       /* Reverse execution: target ran out of history info.  */
5734
5735       /* Switch to the stopped thread.  */
5736       context_switch (ecs);
5737       infrun_debug_printf ("stopped");
5738
5739       delete_just_stopped_threads_single_step_breakpoints ();
5740       ecs->event_thread->suspend.stop_pc
5741         = regcache_read_pc (get_thread_regcache (inferior_thread ()));
5742
5743       if (handle_stop_requested (ecs))
5744         return;
5745
5746       gdb::observers::no_history.notify ();
5747       stop_waiting (ecs);
5748       return;
5749     }
5750 }
5751
5752 /* Restart threads back to what they were trying to do back when we
5753    paused them for an in-line step-over.  The EVENT_THREAD thread is
5754    ignored.  */
5755
5756 static void
5757 restart_threads (struct thread_info *event_thread)
5758 {
5759   /* In case the instruction just stepped spawned a new thread.  */
5760   update_thread_list ();
5761
5762   for (thread_info *tp : all_non_exited_threads ())
5763     {
5764       if (tp->inf->detaching)
5765         {
5766           infrun_debug_printf ("restart threads: [%s] inferior detaching",
5767                                target_pid_to_str (tp->ptid).c_str ());
5768           continue;
5769         }
5770
5771       switch_to_thread_no_regs (tp);
5772
5773       if (tp == event_thread)
5774         {
5775           infrun_debug_printf ("restart threads: [%s] is event thread",
5776                                target_pid_to_str (tp->ptid).c_str ());
5777           continue;
5778         }
5779
5780       if (!(tp->state == THREAD_RUNNING || tp->control.in_infcall))
5781         {
5782           infrun_debug_printf ("restart threads: [%s] not meant to be running",
5783                                target_pid_to_str (tp->ptid).c_str ());
5784           continue;
5785         }
5786
5787       if (tp->resumed)
5788         {
5789           infrun_debug_printf ("restart threads: [%s] resumed",
5790                               target_pid_to_str (tp->ptid).c_str ());
5791           gdb_assert (tp->executing || tp->suspend.waitstatus_pending_p);
5792           continue;
5793         }
5794
5795       if (thread_is_in_step_over_chain (tp))
5796         {
5797           infrun_debug_printf ("restart threads: [%s] needs step-over",
5798                                target_pid_to_str (tp->ptid).c_str ());
5799           gdb_assert (!tp->resumed);
5800           continue;
5801         }
5802
5803
5804       if (tp->suspend.waitstatus_pending_p)
5805         {
5806           infrun_debug_printf ("restart threads: [%s] has pending status",
5807                                target_pid_to_str (tp->ptid).c_str ());
5808           tp->resumed = true;
5809           continue;
5810         }
5811
5812       gdb_assert (!tp->stop_requested);
5813
5814       /* If some thread needs to start a step-over at this point, it
5815          should still be in the step-over queue, and thus skipped
5816          above.  */
5817       if (thread_still_needs_step_over (tp))
5818         {
5819           internal_error (__FILE__, __LINE__,
5820                           "thread [%s] needs a step-over, but not in "
5821                           "step-over queue\n",
5822                           target_pid_to_str (tp->ptid).c_str ());
5823         }
5824
5825       if (currently_stepping (tp))
5826         {
5827           infrun_debug_printf ("restart threads: [%s] was stepping",
5828                                target_pid_to_str (tp->ptid).c_str ());
5829           keep_going_stepped_thread (tp);
5830         }
5831       else
5832         {
5833           struct execution_control_state ecss;
5834           struct execution_control_state *ecs = &ecss;
5835
5836           infrun_debug_printf ("restart threads: [%s] continuing",
5837                                target_pid_to_str (tp->ptid).c_str ());
5838           reset_ecs (ecs, tp);
5839           switch_to_thread (tp);
5840           keep_going_pass_signal (ecs);
5841         }
5842     }
5843 }
5844
5845 /* Callback for iterate_over_threads.  Find a resumed thread that has
5846    a pending waitstatus.  */
5847
5848 static int
5849 resumed_thread_with_pending_status (struct thread_info *tp,
5850                                     void *arg)
5851 {
5852   return (tp->resumed
5853           && tp->suspend.waitstatus_pending_p);
5854 }
5855
5856 /* Called when we get an event that may finish an in-line or
5857    out-of-line (displaced stepping) step-over started previously.
5858    Return true if the event is processed and we should go back to the
5859    event loop; false if the caller should continue processing the
5860    event.  */
5861
5862 static int
5863 finish_step_over (struct execution_control_state *ecs)
5864 {
5865   displaced_step_finish (ecs->event_thread,
5866                          ecs->event_thread->suspend.stop_signal);
5867
5868   bool had_step_over_info = step_over_info_valid_p ();
5869
5870   if (had_step_over_info)
5871     {
5872       /* If we're stepping over a breakpoint with all threads locked,
5873          then only the thread that was stepped should be reporting
5874          back an event.  */
5875       gdb_assert (ecs->event_thread->control.trap_expected);
5876
5877       clear_step_over_info ();
5878     }
5879
5880   if (!target_is_non_stop_p ())
5881     return 0;
5882
5883   /* Start a new step-over in another thread if there's one that
5884      needs it.  */
5885   start_step_over ();
5886
5887   /* If we were stepping over a breakpoint before, and haven't started
5888      a new in-line step-over sequence, then restart all other threads
5889      (except the event thread).  We can't do this in all-stop, as then
5890      e.g., we wouldn't be able to issue any other remote packet until
5891      these other threads stop.  */
5892   if (had_step_over_info && !step_over_info_valid_p ())
5893     {
5894       struct thread_info *pending;
5895
5896       /* If we only have threads with pending statuses, the restart
5897          below won't restart any thread and so nothing re-inserts the
5898          breakpoint we just stepped over.  But we need it inserted
5899          when we later process the pending events, otherwise if
5900          another thread has a pending event for this breakpoint too,
5901          we'd discard its event (because the breakpoint that
5902          originally caused the event was no longer inserted).  */
5903       context_switch (ecs);
5904       insert_breakpoints ();
5905
5906       restart_threads (ecs->event_thread);
5907
5908       /* If we have events pending, go through handle_inferior_event
5909          again, picking up a pending event at random.  This avoids
5910          thread starvation.  */
5911
5912       /* But not if we just stepped over a watchpoint in order to let
5913          the instruction execute so we can evaluate its expression.
5914          The set of watchpoints that triggered is recorded in the
5915          breakpoint objects themselves (see bp->watchpoint_triggered).
5916          If we processed another event first, that other event could
5917          clobber this info.  */
5918       if (ecs->event_thread->stepping_over_watchpoint)
5919         return 0;
5920
5921       pending = iterate_over_threads (resumed_thread_with_pending_status,
5922                                       NULL);
5923       if (pending != NULL)
5924         {
5925           struct thread_info *tp = ecs->event_thread;
5926           struct regcache *regcache;
5927
5928           infrun_debug_printf ("found resumed threads with "
5929                                "pending events, saving status");
5930
5931           gdb_assert (pending != tp);
5932
5933           /* Record the event thread's event for later.  */
5934           save_waitstatus (tp, &ecs->ws);
5935           /* This was cleared early, by handle_inferior_event.  Set it
5936              so this pending event is considered by
5937              do_target_wait.  */
5938           tp->resumed = true;
5939
5940           gdb_assert (!tp->executing);
5941
5942           regcache = get_thread_regcache (tp);
5943           tp->suspend.stop_pc = regcache_read_pc (regcache);
5944
5945           infrun_debug_printf ("saved stop_pc=%s for %s "
5946                                "(currently_stepping=%d)",
5947                                paddress (target_gdbarch (),
5948                                          tp->suspend.stop_pc),
5949                                target_pid_to_str (tp->ptid).c_str (),
5950                                currently_stepping (tp));
5951
5952           /* This in-line step-over finished; clear this so we won't
5953              start a new one.  This is what handle_signal_stop would
5954              do, if we returned false.  */
5955           tp->stepping_over_breakpoint = 0;
5956
5957           /* Wake up the event loop again.  */
5958           mark_async_event_handler (infrun_async_inferior_event_token);
5959
5960           prepare_to_wait (ecs);
5961           return 1;
5962         }
5963     }
5964
5965   return 0;
5966 }
5967
5968 /* Come here when the program has stopped with a signal.  */
5969
5970 static void
5971 handle_signal_stop (struct execution_control_state *ecs)
5972 {
5973   struct frame_info *frame;
5974   struct gdbarch *gdbarch;
5975   int stopped_by_watchpoint;
5976   enum stop_kind stop_soon;
5977   int random_signal;
5978
5979   gdb_assert (ecs->ws.kind == TARGET_WAITKIND_STOPPED);
5980
5981   ecs->event_thread->suspend.stop_signal = ecs->ws.value.sig;
5982
5983   /* Do we need to clean up the state of a thread that has
5984      completed a displaced single-step?  (Doing so usually affects
5985      the PC, so do it here, before we set stop_pc.)  */
5986   if (finish_step_over (ecs))
5987     return;
5988
5989   /* If we either finished a single-step or hit a breakpoint, but
5990      the user wanted this thread to be stopped, pretend we got a
5991      SIG0 (generic unsignaled stop).  */
5992   if (ecs->event_thread->stop_requested
5993       && ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP)
5994     ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0;
5995
5996   ecs->event_thread->suspend.stop_pc
5997     = regcache_read_pc (get_thread_regcache (ecs->event_thread));
5998
5999   context_switch (ecs);
6000
6001   if (deprecated_context_hook)
6002     deprecated_context_hook (ecs->event_thread->global_num);
6003
6004   if (debug_infrun)
6005     {
6006       struct regcache *regcache = get_thread_regcache (ecs->event_thread);
6007       struct gdbarch *reg_gdbarch = regcache->arch ();
6008
6009       infrun_debug_printf ("stop_pc=%s",
6010                            paddress (reg_gdbarch,
6011                                      ecs->event_thread->suspend.stop_pc));
6012       if (target_stopped_by_watchpoint ())
6013         {
6014           CORE_ADDR addr;
6015
6016           infrun_debug_printf ("stopped by watchpoint");
6017
6018           if (target_stopped_data_address (current_inferior ()->top_target (),
6019                                            &addr))
6020             infrun_debug_printf ("stopped data address=%s",
6021                                  paddress (reg_gdbarch, addr));
6022           else
6023             infrun_debug_printf ("(no data address available)");
6024         }
6025     }
6026
6027   /* This is originated from start_remote(), start_inferior() and
6028      shared libraries hook functions.  */
6029   stop_soon = get_inferior_stop_soon (ecs);
6030   if (stop_soon == STOP_QUIETLY || stop_soon == STOP_QUIETLY_REMOTE)
6031     {
6032       infrun_debug_printf ("quietly stopped");
6033       stop_print_frame = true;
6034       stop_waiting (ecs);
6035       return;
6036     }
6037
6038   /* This originates from attach_command().  We need to overwrite
6039      the stop_signal here, because some kernels don't ignore a
6040      SIGSTOP in a subsequent ptrace(PTRACE_CONT,SIGSTOP) call.
6041      See more comments in inferior.h.  On the other hand, if we
6042      get a non-SIGSTOP, report it to the user - assume the backend
6043      will handle the SIGSTOP if it should show up later.
6044
6045      Also consider that the attach is complete when we see a
6046      SIGTRAP.  Some systems (e.g. Windows), and stubs supporting
6047      target extended-remote report it instead of a SIGSTOP
6048      (e.g. gdbserver).  We already rely on SIGTRAP being our
6049      signal, so this is no exception.
6050
6051      Also consider that the attach is complete when we see a
6052      GDB_SIGNAL_0.  In non-stop mode, GDB will explicitly tell
6053      the target to stop all threads of the inferior, in case the
6054      low level attach operation doesn't stop them implicitly.  If
6055      they weren't stopped implicitly, then the stub will report a
6056      GDB_SIGNAL_0, meaning: stopped for no particular reason
6057      other than GDB's request.  */
6058   if (stop_soon == STOP_QUIETLY_NO_SIGSTOP
6059       && (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_STOP
6060           || ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP
6061           || ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_0))
6062     {
6063       stop_print_frame = true;
6064       stop_waiting (ecs);
6065       ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0;
6066       return;
6067     }
6068
6069   /* At this point, get hold of the now-current thread's frame.  */
6070   frame = get_current_frame ();
6071   gdbarch = get_frame_arch (frame);
6072
6073   /* Pull the single step breakpoints out of the target.  */
6074   if (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP)
6075     {
6076       struct regcache *regcache;
6077       CORE_ADDR pc;
6078
6079       regcache = get_thread_regcache (ecs->event_thread);
6080       const address_space *aspace = regcache->aspace ();
6081
6082       pc = regcache_read_pc (regcache);
6083
6084       /* However, before doing so, if this single-step breakpoint was
6085          actually for another thread, set this thread up for moving
6086          past it.  */
6087       if (!thread_has_single_step_breakpoint_here (ecs->event_thread,
6088                                                    aspace, pc))
6089         {
6090           if (single_step_breakpoint_inserted_here_p (aspace, pc))
6091             {
6092               infrun_debug_printf ("[%s] hit another thread's single-step "
6093                                    "breakpoint",
6094                                    target_pid_to_str (ecs->ptid).c_str ());
6095               ecs->hit_singlestep_breakpoint = 1;
6096             }
6097         }
6098       else
6099         {
6100           infrun_debug_printf ("[%s] hit its single-step breakpoint",
6101                                target_pid_to_str (ecs->ptid).c_str ());
6102         }
6103     }
6104   delete_just_stopped_threads_single_step_breakpoints ();
6105
6106   if (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP
6107       && ecs->event_thread->control.trap_expected
6108       && ecs->event_thread->stepping_over_watchpoint)
6109     stopped_by_watchpoint = 0;
6110   else
6111     stopped_by_watchpoint = watchpoints_triggered (&ecs->ws);
6112
6113   /* If necessary, step over this watchpoint.  We'll be back to display
6114      it in a moment.  */
6115   if (stopped_by_watchpoint
6116       && (target_have_steppable_watchpoint ()
6117           || gdbarch_have_nonsteppable_watchpoint (gdbarch)))
6118     {
6119       /* At this point, we are stopped at an instruction which has
6120          attempted to write to a piece of memory under control of
6121          a watchpoint.  The instruction hasn't actually executed
6122          yet.  If we were to evaluate the watchpoint expression
6123          now, we would get the old value, and therefore no change
6124          would seem to have occurred.
6125
6126          In order to make watchpoints work `right', we really need
6127          to complete the memory write, and then evaluate the
6128          watchpoint expression.  We do this by single-stepping the
6129          target.
6130
6131          It may not be necessary to disable the watchpoint to step over
6132          it.  For example, the PA can (with some kernel cooperation)
6133          single step over a watchpoint without disabling the watchpoint.
6134
6135          It is far more common to need to disable a watchpoint to step
6136          the inferior over it.  If we have non-steppable watchpoints,
6137          we must disable the current watchpoint; it's simplest to
6138          disable all watchpoints.
6139
6140          Any breakpoint at PC must also be stepped over -- if there's
6141          one, it will have already triggered before the watchpoint
6142          triggered, and we either already reported it to the user, or
6143          it didn't cause a stop and we called keep_going.  In either
6144          case, if there was a breakpoint at PC, we must be trying to
6145          step past it.  */
6146       ecs->event_thread->stepping_over_watchpoint = 1;
6147       keep_going (ecs);
6148       return;
6149     }
6150
6151   ecs->event_thread->stepping_over_breakpoint = 0;
6152   ecs->event_thread->stepping_over_watchpoint = 0;
6153   bpstat_clear (&ecs->event_thread->control.stop_bpstat);
6154   ecs->event_thread->control.stop_step = 0;
6155   stop_print_frame = true;
6156   stopped_by_random_signal = 0;
6157   bpstat stop_chain = NULL;
6158
6159   /* Hide inlined functions starting here, unless we just performed stepi or
6160      nexti.  After stepi and nexti, always show the innermost frame (not any
6161      inline function call sites).  */
6162   if (ecs->event_thread->control.step_range_end != 1)
6163     {
6164       const address_space *aspace
6165         = get_thread_regcache (ecs->event_thread)->aspace ();
6166
6167       /* skip_inline_frames is expensive, so we avoid it if we can
6168          determine that the address is one where functions cannot have
6169          been inlined.  This improves performance with inferiors that
6170          load a lot of shared libraries, because the solib event
6171          breakpoint is defined as the address of a function (i.e. not
6172          inline).  Note that we have to check the previous PC as well
6173          as the current one to catch cases when we have just
6174          single-stepped off a breakpoint prior to reinstating it.
6175          Note that we're assuming that the code we single-step to is
6176          not inline, but that's not definitive: there's nothing
6177          preventing the event breakpoint function from containing
6178          inlined code, and the single-step ending up there.  If the
6179          user had set a breakpoint on that inlined code, the missing
6180          skip_inline_frames call would break things.  Fortunately
6181          that's an extremely unlikely scenario.  */
6182       if (!pc_at_non_inline_function (aspace,
6183                                       ecs->event_thread->suspend.stop_pc,
6184                                       &ecs->ws)
6185           && !(ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP
6186                && ecs->event_thread->control.trap_expected
6187                && pc_at_non_inline_function (aspace,
6188                                              ecs->event_thread->prev_pc,
6189                                              &ecs->ws)))
6190         {
6191           stop_chain = build_bpstat_chain (aspace,
6192                                            ecs->event_thread->suspend.stop_pc,
6193                                            &ecs->ws);
6194           skip_inline_frames (ecs->event_thread, stop_chain);
6195
6196           /* Re-fetch current thread's frame in case that invalidated
6197              the frame cache.  */
6198           frame = get_current_frame ();
6199           gdbarch = get_frame_arch (frame);
6200         }
6201     }
6202
6203   if (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP
6204       && ecs->event_thread->control.trap_expected
6205       && gdbarch_single_step_through_delay_p (gdbarch)
6206       && currently_stepping (ecs->event_thread))
6207     {
6208       /* We're trying to step off a breakpoint.  Turns out that we're
6209          also on an instruction that needs to be stepped multiple
6210          times before it's been fully executing.  E.g., architectures
6211          with a delay slot.  It needs to be stepped twice, once for
6212          the instruction and once for the delay slot.  */
6213       int step_through_delay
6214         = gdbarch_single_step_through_delay (gdbarch, frame);
6215
6216       if (step_through_delay)
6217         infrun_debug_printf ("step through delay");
6218
6219       if (ecs->event_thread->control.step_range_end == 0
6220           && step_through_delay)
6221         {
6222           /* The user issued a continue when stopped at a breakpoint.
6223              Set up for another trap and get out of here.  */
6224          ecs->event_thread->stepping_over_breakpoint = 1;
6225          keep_going (ecs);
6226          return;
6227         }
6228       else if (step_through_delay)
6229         {
6230           /* The user issued a step when stopped at a breakpoint.
6231              Maybe we should stop, maybe we should not - the delay
6232              slot *might* correspond to a line of source.  In any
6233              case, don't decide that here, just set 
6234              ecs->stepping_over_breakpoint, making sure we 
6235              single-step again before breakpoints are re-inserted.  */
6236           ecs->event_thread->stepping_over_breakpoint = 1;
6237         }
6238     }
6239
6240   /* See if there is a breakpoint/watchpoint/catchpoint/etc. that
6241      handles this event.  */
6242   ecs->event_thread->control.stop_bpstat
6243     = bpstat_stop_status (get_current_regcache ()->aspace (),
6244                           ecs->event_thread->suspend.stop_pc,
6245                           ecs->event_thread, &ecs->ws, stop_chain);
6246
6247   /* Following in case break condition called a
6248      function.  */
6249   stop_print_frame = true;
6250
6251   /* This is where we handle "moribund" watchpoints.  Unlike
6252      software breakpoints traps, hardware watchpoint traps are
6253      always distinguishable from random traps.  If no high-level
6254      watchpoint is associated with the reported stop data address
6255      anymore, then the bpstat does not explain the signal ---
6256      simply make sure to ignore it if `stopped_by_watchpoint' is
6257      set.  */
6258
6259   if (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP
6260       && !bpstat_explains_signal (ecs->event_thread->control.stop_bpstat,
6261                                   GDB_SIGNAL_TRAP)
6262       && stopped_by_watchpoint)
6263     {
6264       infrun_debug_printf ("no user watchpoint explains watchpoint SIGTRAP, "
6265                            "ignoring");
6266     }
6267
6268   /* NOTE: cagney/2003-03-29: These checks for a random signal
6269      at one stage in the past included checks for an inferior
6270      function call's call dummy's return breakpoint.  The original
6271      comment, that went with the test, read:
6272
6273      ``End of a stack dummy.  Some systems (e.g. Sony news) give
6274      another signal besides SIGTRAP, so check here as well as
6275      above.''
6276
6277      If someone ever tries to get call dummys on a
6278      non-executable stack to work (where the target would stop
6279      with something like a SIGSEGV), then those tests might need
6280      to be re-instated.  Given, however, that the tests were only
6281      enabled when momentary breakpoints were not being used, I
6282      suspect that it won't be the case.
6283
6284      NOTE: kettenis/2004-02-05: Indeed such checks don't seem to
6285      be necessary for call dummies on a non-executable stack on
6286      SPARC.  */
6287
6288   /* See if the breakpoints module can explain the signal.  */
6289   random_signal
6290     = !bpstat_explains_signal (ecs->event_thread->control.stop_bpstat,
6291                                ecs->event_thread->suspend.stop_signal);
6292
6293   /* Maybe this was a trap for a software breakpoint that has since
6294      been removed.  */
6295   if (random_signal && target_stopped_by_sw_breakpoint ())
6296     {
6297       if (gdbarch_program_breakpoint_here_p (gdbarch,
6298                                              ecs->event_thread->suspend.stop_pc))
6299         {
6300           struct regcache *regcache;
6301           int decr_pc;
6302
6303           /* Re-adjust PC to what the program would see if GDB was not
6304              debugging it.  */
6305           regcache = get_thread_regcache (ecs->event_thread);
6306           decr_pc = gdbarch_decr_pc_after_break (gdbarch);
6307           if (decr_pc != 0)
6308             {
6309               gdb::optional<scoped_restore_tmpl<int>>
6310                 restore_operation_disable;
6311
6312               if (record_full_is_used ())
6313                 restore_operation_disable.emplace
6314                   (record_full_gdb_operation_disable_set ());
6315
6316               regcache_write_pc (regcache,
6317                                  ecs->event_thread->suspend.stop_pc + decr_pc);
6318             }
6319         }
6320       else
6321         {
6322           /* A delayed software breakpoint event.  Ignore the trap.  */
6323           infrun_debug_printf ("delayed software breakpoint trap, ignoring");
6324           random_signal = 0;
6325         }
6326     }
6327
6328   /* Maybe this was a trap for a hardware breakpoint/watchpoint that
6329      has since been removed.  */
6330   if (random_signal && target_stopped_by_hw_breakpoint ())
6331     {
6332       /* A delayed hardware breakpoint event.  Ignore the trap.  */
6333       infrun_debug_printf ("delayed hardware breakpoint/watchpoint "
6334                            "trap, ignoring");
6335       random_signal = 0;
6336     }
6337
6338   /* If not, perhaps stepping/nexting can.  */
6339   if (random_signal)
6340     random_signal = !(ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP
6341                       && currently_stepping (ecs->event_thread));
6342
6343   /* Perhaps the thread hit a single-step breakpoint of _another_
6344      thread.  Single-step breakpoints are transparent to the
6345      breakpoints module.  */
6346   if (random_signal)
6347     random_signal = !ecs->hit_singlestep_breakpoint;
6348
6349   /* No?  Perhaps we got a moribund watchpoint.  */
6350   if (random_signal)
6351     random_signal = !stopped_by_watchpoint;
6352
6353   /* Always stop if the user explicitly requested this thread to
6354      remain stopped.  */
6355   if (ecs->event_thread->stop_requested)
6356     {
6357       random_signal = 1;
6358       infrun_debug_printf ("user-requested stop");
6359     }
6360
6361   /* For the program's own signals, act according to
6362      the signal handling tables.  */
6363
6364   if (random_signal)
6365     {
6366       /* Signal not for debugging purposes.  */
6367       enum gdb_signal stop_signal = ecs->event_thread->suspend.stop_signal;
6368
6369       infrun_debug_printf ("random signal (%s)",
6370                            gdb_signal_to_symbol_string (stop_signal));
6371
6372       stopped_by_random_signal = 1;
6373
6374       /* Always stop on signals if we're either just gaining control
6375          of the program, or the user explicitly requested this thread
6376          to remain stopped.  */
6377       if (stop_soon != NO_STOP_QUIETLY
6378           || ecs->event_thread->stop_requested
6379           || signal_stop_state (ecs->event_thread->suspend.stop_signal))
6380         {
6381           stop_waiting (ecs);
6382           return;
6383         }
6384
6385       /* Notify observers the signal has "handle print" set.  Note we
6386          returned early above if stopping; normal_stop handles the
6387          printing in that case.  */
6388       if (signal_print[ecs->event_thread->suspend.stop_signal])
6389         {
6390           /* The signal table tells us to print about this signal.  */
6391           target_terminal::ours_for_output ();
6392           gdb::observers::signal_received.notify (ecs->event_thread->suspend.stop_signal);
6393           target_terminal::inferior ();
6394         }
6395
6396       /* Clear the signal if it should not be passed.  */
6397       if (signal_program[ecs->event_thread->suspend.stop_signal] == 0)
6398         ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0;
6399
6400       if (ecs->event_thread->prev_pc == ecs->event_thread->suspend.stop_pc
6401           && ecs->event_thread->control.trap_expected
6402           && ecs->event_thread->control.step_resume_breakpoint == NULL)
6403         {
6404           /* We were just starting a new sequence, attempting to
6405              single-step off of a breakpoint and expecting a SIGTRAP.
6406              Instead this signal arrives.  This signal will take us out
6407              of the stepping range so GDB needs to remember to, when
6408              the signal handler returns, resume stepping off that
6409              breakpoint.  */
6410           /* To simplify things, "continue" is forced to use the same
6411              code paths as single-step - set a breakpoint at the
6412              signal return address and then, once hit, step off that
6413              breakpoint.  */
6414           infrun_debug_printf ("signal arrived while stepping over breakpoint");
6415
6416           insert_hp_step_resume_breakpoint_at_frame (frame);
6417           ecs->event_thread->step_after_step_resume_breakpoint = 1;
6418           /* Reset trap_expected to ensure breakpoints are re-inserted.  */
6419           ecs->event_thread->control.trap_expected = 0;
6420
6421           /* If we were nexting/stepping some other thread, switch to
6422              it, so that we don't continue it, losing control.  */
6423           if (!switch_back_to_stepped_thread (ecs))
6424             keep_going (ecs);
6425           return;
6426         }
6427
6428       if (ecs->event_thread->suspend.stop_signal != GDB_SIGNAL_0
6429           && (pc_in_thread_step_range (ecs->event_thread->suspend.stop_pc,
6430                                        ecs->event_thread)
6431               || ecs->event_thread->control.step_range_end == 1)
6432           && frame_id_eq (get_stack_frame_id (frame),
6433                           ecs->event_thread->control.step_stack_frame_id)
6434           && ecs->event_thread->control.step_resume_breakpoint == NULL)
6435         {
6436           /* The inferior is about to take a signal that will take it
6437              out of the single step range.  Set a breakpoint at the
6438              current PC (which is presumably where the signal handler
6439              will eventually return) and then allow the inferior to
6440              run free.
6441
6442              Note that this is only needed for a signal delivered
6443              while in the single-step range.  Nested signals aren't a
6444              problem as they eventually all return.  */
6445           infrun_debug_printf ("signal may take us out of single-step range");
6446
6447           clear_step_over_info ();
6448           insert_hp_step_resume_breakpoint_at_frame (frame);
6449           ecs->event_thread->step_after_step_resume_breakpoint = 1;
6450           /* Reset trap_expected to ensure breakpoints are re-inserted.  */
6451           ecs->event_thread->control.trap_expected = 0;
6452           keep_going (ecs);
6453           return;
6454         }
6455
6456       /* Note: step_resume_breakpoint may be non-NULL.  This occurs
6457          when either there's a nested signal, or when there's a
6458          pending signal enabled just as the signal handler returns
6459          (leaving the inferior at the step-resume-breakpoint without
6460          actually executing it).  Either way continue until the
6461          breakpoint is really hit.  */
6462
6463       if (!switch_back_to_stepped_thread (ecs))
6464         {
6465           infrun_debug_printf ("random signal, keep going");
6466
6467           keep_going (ecs);
6468         }
6469       return;
6470     }
6471
6472   process_event_stop_test (ecs);
6473 }
6474
6475 /* Come here when we've got some debug event / signal we can explain
6476    (IOW, not a random signal), and test whether it should cause a
6477    stop, or whether we should resume the inferior (transparently).
6478    E.g., could be a breakpoint whose condition evaluates false; we
6479    could be still stepping within the line; etc.  */
6480
6481 static void
6482 process_event_stop_test (struct execution_control_state *ecs)
6483 {
6484   struct symtab_and_line stop_pc_sal;
6485   struct frame_info *frame;
6486   struct gdbarch *gdbarch;
6487   CORE_ADDR jmp_buf_pc;
6488   struct bpstat_what what;
6489
6490   /* Handle cases caused by hitting a breakpoint.  */
6491
6492   frame = get_current_frame ();
6493   gdbarch = get_frame_arch (frame);
6494
6495   what = bpstat_what (ecs->event_thread->control.stop_bpstat);
6496
6497   if (what.call_dummy)
6498     {
6499       stop_stack_dummy = what.call_dummy;
6500     }
6501
6502   /* A few breakpoint types have callbacks associated (e.g.,
6503      bp_jit_event).  Run them now.  */
6504   bpstat_run_callbacks (ecs->event_thread->control.stop_bpstat);
6505
6506   /* If we hit an internal event that triggers symbol changes, the
6507      current frame will be invalidated within bpstat_what (e.g., if we
6508      hit an internal solib event).  Re-fetch it.  */
6509   frame = get_current_frame ();
6510   gdbarch = get_frame_arch (frame);
6511
6512   switch (what.main_action)
6513     {
6514     case BPSTAT_WHAT_SET_LONGJMP_RESUME:
6515       /* If we hit the breakpoint at longjmp while stepping, we
6516          install a momentary breakpoint at the target of the
6517          jmp_buf.  */
6518
6519       infrun_debug_printf ("BPSTAT_WHAT_SET_LONGJMP_RESUME");
6520
6521       ecs->event_thread->stepping_over_breakpoint = 1;
6522
6523       if (what.is_longjmp)
6524         {
6525           struct value *arg_value;
6526
6527           /* If we set the longjmp breakpoint via a SystemTap probe,
6528              then use it to extract the arguments.  The destination PC
6529              is the third argument to the probe.  */
6530           arg_value = probe_safe_evaluate_at_pc (frame, 2);
6531           if (arg_value)
6532             {
6533               jmp_buf_pc = value_as_address (arg_value);
6534               jmp_buf_pc = gdbarch_addr_bits_remove (gdbarch, jmp_buf_pc);
6535             }
6536           else if (!gdbarch_get_longjmp_target_p (gdbarch)
6537                    || !gdbarch_get_longjmp_target (gdbarch,
6538                                                    frame, &jmp_buf_pc))
6539             {
6540               infrun_debug_printf ("BPSTAT_WHAT_SET_LONGJMP_RESUME "
6541                                    "(!gdbarch_get_longjmp_target)");
6542               keep_going (ecs);
6543               return;
6544             }
6545
6546           /* Insert a breakpoint at resume address.  */
6547           insert_longjmp_resume_breakpoint (gdbarch, jmp_buf_pc);
6548         }
6549       else
6550         check_exception_resume (ecs, frame);
6551       keep_going (ecs);
6552       return;
6553
6554     case BPSTAT_WHAT_CLEAR_LONGJMP_RESUME:
6555       {
6556         struct frame_info *init_frame;
6557
6558         /* There are several cases to consider.
6559
6560            1. The initiating frame no longer exists.  In this case we
6561            must stop, because the exception or longjmp has gone too
6562            far.
6563
6564            2. The initiating frame exists, and is the same as the
6565            current frame.  We stop, because the exception or longjmp
6566            has been caught.
6567
6568            3. The initiating frame exists and is different from the
6569            current frame.  This means the exception or longjmp has
6570            been caught beneath the initiating frame, so keep going.
6571
6572            4. longjmp breakpoint has been placed just to protect
6573            against stale dummy frames and user is not interested in
6574            stopping around longjmps.  */
6575
6576         infrun_debug_printf ("BPSTAT_WHAT_CLEAR_LONGJMP_RESUME");
6577
6578         gdb_assert (ecs->event_thread->control.exception_resume_breakpoint
6579                     != NULL);
6580         delete_exception_resume_breakpoint (ecs->event_thread);
6581
6582         if (what.is_longjmp)
6583           {
6584             check_longjmp_breakpoint_for_call_dummy (ecs->event_thread);
6585
6586             if (!frame_id_p (ecs->event_thread->initiating_frame))
6587               {
6588                 /* Case 4.  */
6589                 keep_going (ecs);
6590                 return;
6591               }
6592           }
6593
6594         init_frame = frame_find_by_id (ecs->event_thread->initiating_frame);
6595
6596         if (init_frame)
6597           {
6598             struct frame_id current_id
6599               = get_frame_id (get_current_frame ());
6600             if (frame_id_eq (current_id,
6601                              ecs->event_thread->initiating_frame))
6602               {
6603                 /* Case 2.  Fall through.  */
6604               }
6605             else
6606               {
6607                 /* Case 3.  */
6608                 keep_going (ecs);
6609                 return;
6610               }
6611           }
6612
6613         /* For Cases 1 and 2, remove the step-resume breakpoint, if it
6614            exists.  */
6615         delete_step_resume_breakpoint (ecs->event_thread);
6616
6617         end_stepping_range (ecs);
6618       }
6619       return;
6620
6621     case BPSTAT_WHAT_SINGLE:
6622       infrun_debug_printf ("BPSTAT_WHAT_SINGLE");
6623       ecs->event_thread->stepping_over_breakpoint = 1;
6624       /* Still need to check other stuff, at least the case where we
6625          are stepping and step out of the right range.  */
6626       break;
6627
6628     case BPSTAT_WHAT_STEP_RESUME:
6629       infrun_debug_printf ("BPSTAT_WHAT_STEP_RESUME");
6630
6631       delete_step_resume_breakpoint (ecs->event_thread);
6632       if (ecs->event_thread->control.proceed_to_finish
6633           && execution_direction == EXEC_REVERSE)
6634         {
6635           struct thread_info *tp = ecs->event_thread;
6636
6637           /* We are finishing a function in reverse, and just hit the
6638              step-resume breakpoint at the start address of the
6639              function, and we're almost there -- just need to back up
6640              by one more single-step, which should take us back to the
6641              function call.  */
6642           tp->control.step_range_start = tp->control.step_range_end = 1;
6643           keep_going (ecs);
6644           return;
6645         }
6646       fill_in_stop_func (gdbarch, ecs);
6647       if (ecs->event_thread->suspend.stop_pc == ecs->stop_func_start
6648           && execution_direction == EXEC_REVERSE)
6649         {
6650           /* We are stepping over a function call in reverse, and just
6651              hit the step-resume breakpoint at the start address of
6652              the function.  Go back to single-stepping, which should
6653              take us back to the function call.  */
6654           ecs->event_thread->stepping_over_breakpoint = 1;
6655           keep_going (ecs);
6656           return;
6657         }
6658       break;
6659
6660     case BPSTAT_WHAT_STOP_NOISY:
6661       infrun_debug_printf ("BPSTAT_WHAT_STOP_NOISY");
6662       stop_print_frame = true;
6663
6664       /* Assume the thread stopped for a breakpoint.  We'll still check
6665          whether a/the breakpoint is there when the thread is next
6666          resumed.  */
6667       ecs->event_thread->stepping_over_breakpoint = 1;
6668
6669       stop_waiting (ecs);
6670       return;
6671
6672     case BPSTAT_WHAT_STOP_SILENT:
6673       infrun_debug_printf ("BPSTAT_WHAT_STOP_SILENT");
6674       stop_print_frame = false;
6675
6676       /* Assume the thread stopped for a breakpoint.  We'll still check
6677          whether a/the breakpoint is there when the thread is next
6678          resumed.  */
6679       ecs->event_thread->stepping_over_breakpoint = 1;
6680       stop_waiting (ecs);
6681       return;
6682
6683     case BPSTAT_WHAT_HP_STEP_RESUME:
6684       infrun_debug_printf ("BPSTAT_WHAT_HP_STEP_RESUME");
6685
6686       delete_step_resume_breakpoint (ecs->event_thread);
6687       if (ecs->event_thread->step_after_step_resume_breakpoint)
6688         {
6689           /* Back when the step-resume breakpoint was inserted, we
6690              were trying to single-step off a breakpoint.  Go back to
6691              doing that.  */
6692           ecs->event_thread->step_after_step_resume_breakpoint = 0;
6693           ecs->event_thread->stepping_over_breakpoint = 1;
6694           keep_going (ecs);
6695           return;
6696         }
6697       break;
6698
6699     case BPSTAT_WHAT_KEEP_CHECKING:
6700       break;
6701     }
6702
6703   /* If we stepped a permanent breakpoint and we had a high priority
6704      step-resume breakpoint for the address we stepped, but we didn't
6705      hit it, then we must have stepped into the signal handler.  The
6706      step-resume was only necessary to catch the case of _not_
6707      stepping into the handler, so delete it, and fall through to
6708      checking whether the step finished.  */
6709   if (ecs->event_thread->stepped_breakpoint)
6710     {
6711       struct breakpoint *sr_bp
6712         = ecs->event_thread->control.step_resume_breakpoint;
6713
6714       if (sr_bp != NULL
6715           && sr_bp->loc->permanent
6716           && sr_bp->type == bp_hp_step_resume
6717           && sr_bp->loc->address == ecs->event_thread->prev_pc)
6718         {
6719           infrun_debug_printf ("stepped permanent breakpoint, stopped in handler");
6720           delete_step_resume_breakpoint (ecs->event_thread);
6721           ecs->event_thread->step_after_step_resume_breakpoint = 0;
6722         }
6723     }
6724
6725   /* We come here if we hit a breakpoint but should not stop for it.
6726      Possibly we also were stepping and should stop for that.  So fall
6727      through and test for stepping.  But, if not stepping, do not
6728      stop.  */
6729
6730   /* In all-stop mode, if we're currently stepping but have stopped in
6731      some other thread, we need to switch back to the stepped thread.  */
6732   if (switch_back_to_stepped_thread (ecs))
6733     return;
6734
6735   if (ecs->event_thread->control.step_resume_breakpoint)
6736     {
6737       infrun_debug_printf ("step-resume breakpoint is inserted");
6738
6739       /* Having a step-resume breakpoint overrides anything
6740          else having to do with stepping commands until
6741          that breakpoint is reached.  */
6742       keep_going (ecs);
6743       return;
6744     }
6745
6746   if (ecs->event_thread->control.step_range_end == 0)
6747     {
6748       infrun_debug_printf ("no stepping, continue");
6749       /* Likewise if we aren't even stepping.  */
6750       keep_going (ecs);
6751       return;
6752     }
6753
6754   /* Re-fetch current thread's frame in case the code above caused
6755      the frame cache to be re-initialized, making our FRAME variable
6756      a dangling pointer.  */
6757   frame = get_current_frame ();
6758   gdbarch = get_frame_arch (frame);
6759   fill_in_stop_func (gdbarch, ecs);
6760
6761   /* If stepping through a line, keep going if still within it.
6762
6763      Note that step_range_end is the address of the first instruction
6764      beyond the step range, and NOT the address of the last instruction
6765      within it!
6766
6767      Note also that during reverse execution, we may be stepping
6768      through a function epilogue and therefore must detect when
6769      the current-frame changes in the middle of a line.  */
6770
6771   if (pc_in_thread_step_range (ecs->event_thread->suspend.stop_pc,
6772                                ecs->event_thread)
6773       && (execution_direction != EXEC_REVERSE
6774           || frame_id_eq (get_frame_id (frame),
6775                           ecs->event_thread->control.step_frame_id)))
6776     {
6777       infrun_debug_printf
6778         ("stepping inside range [%s-%s]",
6779          paddress (gdbarch, ecs->event_thread->control.step_range_start),
6780          paddress (gdbarch, ecs->event_thread->control.step_range_end));
6781
6782       /* Tentatively re-enable range stepping; `resume' disables it if
6783          necessary (e.g., if we're stepping over a breakpoint or we
6784          have software watchpoints).  */
6785       ecs->event_thread->control.may_range_step = 1;
6786
6787       /* When stepping backward, stop at beginning of line range
6788          (unless it's the function entry point, in which case
6789          keep going back to the call point).  */
6790       CORE_ADDR stop_pc = ecs->event_thread->suspend.stop_pc;
6791       if (stop_pc == ecs->event_thread->control.step_range_start
6792           && stop_pc != ecs->stop_func_start
6793           && execution_direction == EXEC_REVERSE)
6794         end_stepping_range (ecs);
6795       else
6796         keep_going (ecs);
6797
6798       return;
6799     }
6800
6801   /* We stepped out of the stepping range.  */
6802
6803   /* If we are stepping at the source level and entered the runtime
6804      loader dynamic symbol resolution code...
6805
6806      EXEC_FORWARD: we keep on single stepping until we exit the run
6807      time loader code and reach the callee's address.
6808
6809      EXEC_REVERSE: we've already executed the callee (backward), and
6810      the runtime loader code is handled just like any other
6811      undebuggable function call.  Now we need only keep stepping
6812      backward through the trampoline code, and that's handled further
6813      down, so there is nothing for us to do here.  */
6814
6815   if (execution_direction != EXEC_REVERSE
6816       && ecs->event_thread->control.step_over_calls == STEP_OVER_UNDEBUGGABLE
6817       && in_solib_dynsym_resolve_code (ecs->event_thread->suspend.stop_pc))
6818     {
6819       CORE_ADDR pc_after_resolver =
6820         gdbarch_skip_solib_resolver (gdbarch,
6821                                      ecs->event_thread->suspend.stop_pc);
6822
6823       infrun_debug_printf ("stepped into dynsym resolve code");
6824
6825       if (pc_after_resolver)
6826         {
6827           /* Set up a step-resume breakpoint at the address
6828              indicated by SKIP_SOLIB_RESOLVER.  */
6829           symtab_and_line sr_sal;
6830           sr_sal.pc = pc_after_resolver;
6831           sr_sal.pspace = get_frame_program_space (frame);
6832
6833           insert_step_resume_breakpoint_at_sal (gdbarch,
6834                                                 sr_sal, null_frame_id);
6835         }
6836
6837       keep_going (ecs);
6838       return;
6839     }
6840
6841   /* Step through an indirect branch thunk.  */
6842   if (ecs->event_thread->control.step_over_calls != STEP_OVER_NONE
6843       && gdbarch_in_indirect_branch_thunk (gdbarch,
6844                                            ecs->event_thread->suspend.stop_pc))
6845     {
6846       infrun_debug_printf ("stepped into indirect branch thunk");
6847       keep_going (ecs);
6848       return;
6849     }
6850
6851   if (ecs->event_thread->control.step_range_end != 1
6852       && (ecs->event_thread->control.step_over_calls == STEP_OVER_UNDEBUGGABLE
6853           || ecs->event_thread->control.step_over_calls == STEP_OVER_ALL)
6854       && get_frame_type (frame) == SIGTRAMP_FRAME)
6855     {
6856       infrun_debug_printf ("stepped into signal trampoline");
6857       /* The inferior, while doing a "step" or "next", has ended up in
6858          a signal trampoline (either by a signal being delivered or by
6859          the signal handler returning).  Just single-step until the
6860          inferior leaves the trampoline (either by calling the handler
6861          or returning).  */
6862       keep_going (ecs);
6863       return;
6864     }
6865
6866   /* If we're in the return path from a shared library trampoline,
6867      we want to proceed through the trampoline when stepping.  */
6868   /* macro/2012-04-25: This needs to come before the subroutine
6869      call check below as on some targets return trampolines look
6870      like subroutine calls (MIPS16 return thunks).  */
6871   if (gdbarch_in_solib_return_trampoline (gdbarch,
6872                                           ecs->event_thread->suspend.stop_pc,
6873                                           ecs->stop_func_name)
6874       && ecs->event_thread->control.step_over_calls != STEP_OVER_NONE)
6875     {
6876       /* Determine where this trampoline returns.  */
6877       CORE_ADDR stop_pc = ecs->event_thread->suspend.stop_pc;
6878       CORE_ADDR real_stop_pc
6879         = gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc);
6880
6881       infrun_debug_printf ("stepped into solib return tramp");
6882
6883       /* Only proceed through if we know where it's going.  */
6884       if (real_stop_pc)
6885         {
6886           /* And put the step-breakpoint there and go until there.  */
6887           symtab_and_line sr_sal;
6888           sr_sal.pc = real_stop_pc;
6889           sr_sal.section = find_pc_overlay (sr_sal.pc);
6890           sr_sal.pspace = get_frame_program_space (frame);
6891
6892           /* Do not specify what the fp should be when we stop since
6893              on some machines the prologue is where the new fp value
6894              is established.  */
6895           insert_step_resume_breakpoint_at_sal (gdbarch,
6896                                                 sr_sal, null_frame_id);
6897
6898           /* Restart without fiddling with the step ranges or
6899              other state.  */
6900           keep_going (ecs);
6901           return;
6902         }
6903     }
6904
6905   /* Check for subroutine calls.  The check for the current frame
6906      equalling the step ID is not necessary - the check of the
6907      previous frame's ID is sufficient - but it is a common case and
6908      cheaper than checking the previous frame's ID.
6909
6910      NOTE: frame_id_eq will never report two invalid frame IDs as
6911      being equal, so to get into this block, both the current and
6912      previous frame must have valid frame IDs.  */
6913   /* The outer_frame_id check is a heuristic to detect stepping
6914      through startup code.  If we step over an instruction which
6915      sets the stack pointer from an invalid value to a valid value,
6916      we may detect that as a subroutine call from the mythical
6917      "outermost" function.  This could be fixed by marking
6918      outermost frames as !stack_p,code_p,special_p.  Then the
6919      initial outermost frame, before sp was valid, would
6920      have code_addr == &_start.  See the comment in frame_id_eq
6921      for more.  */
6922   if (!frame_id_eq (get_stack_frame_id (frame),
6923                     ecs->event_thread->control.step_stack_frame_id)
6924       && (frame_id_eq (frame_unwind_caller_id (get_current_frame ()),
6925                        ecs->event_thread->control.step_stack_frame_id)
6926           && (!frame_id_eq (ecs->event_thread->control.step_stack_frame_id,
6927                             outer_frame_id)
6928               || (ecs->event_thread->control.step_start_function
6929                   != find_pc_function (ecs->event_thread->suspend.stop_pc)))))
6930     {
6931       CORE_ADDR stop_pc = ecs->event_thread->suspend.stop_pc;
6932       CORE_ADDR real_stop_pc;
6933
6934       infrun_debug_printf ("stepped into subroutine");
6935
6936       if (ecs->event_thread->control.step_over_calls == STEP_OVER_NONE)
6937         {
6938           /* I presume that step_over_calls is only 0 when we're
6939              supposed to be stepping at the assembly language level
6940              ("stepi").  Just stop.  */
6941           /* And this works the same backward as frontward.  MVS */
6942           end_stepping_range (ecs);
6943           return;
6944         }
6945
6946       /* Reverse stepping through solib trampolines.  */
6947
6948       if (execution_direction == EXEC_REVERSE
6949           && ecs->event_thread->control.step_over_calls != STEP_OVER_NONE
6950           && (gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc)
6951               || (ecs->stop_func_start == 0
6952                   && in_solib_dynsym_resolve_code (stop_pc))))
6953         {
6954           /* Any solib trampoline code can be handled in reverse
6955              by simply continuing to single-step.  We have already
6956              executed the solib function (backwards), and a few 
6957              steps will take us back through the trampoline to the
6958              caller.  */
6959           keep_going (ecs);
6960           return;
6961         }
6962
6963       if (ecs->event_thread->control.step_over_calls == STEP_OVER_ALL)
6964         {
6965           /* We're doing a "next".
6966
6967              Normal (forward) execution: set a breakpoint at the
6968              callee's return address (the address at which the caller
6969              will resume).
6970
6971              Reverse (backward) execution.  set the step-resume
6972              breakpoint at the start of the function that we just
6973              stepped into (backwards), and continue to there.  When we
6974              get there, we'll need to single-step back to the caller.  */
6975
6976           if (execution_direction == EXEC_REVERSE)
6977             {
6978               /* If we're already at the start of the function, we've either
6979                  just stepped backward into a single instruction function,
6980                  or stepped back out of a signal handler to the first instruction
6981                  of the function.  Just keep going, which will single-step back
6982                  to the caller.  */
6983               if (ecs->stop_func_start != stop_pc && ecs->stop_func_start != 0)
6984                 {
6985                   /* Normal function call return (static or dynamic).  */
6986                   symtab_and_line sr_sal;
6987                   sr_sal.pc = ecs->stop_func_start;
6988                   sr_sal.pspace = get_frame_program_space (frame);
6989                   insert_step_resume_breakpoint_at_sal (gdbarch,
6990                                                         sr_sal, null_frame_id);
6991                 }
6992             }
6993           else
6994             insert_step_resume_breakpoint_at_caller (frame);
6995
6996           keep_going (ecs);
6997           return;
6998         }
6999
7000       /* If we are in a function call trampoline (a stub between the
7001          calling routine and the real function), locate the real
7002          function.  That's what tells us (a) whether we want to step
7003          into it at all, and (b) what prologue we want to run to the
7004          end of, if we do step into it.  */
7005       real_stop_pc = skip_language_trampoline (frame, stop_pc);
7006       if (real_stop_pc == 0)
7007         real_stop_pc = gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc);
7008       if (real_stop_pc != 0)
7009         ecs->stop_func_start = real_stop_pc;
7010
7011       if (real_stop_pc != 0 && in_solib_dynsym_resolve_code (real_stop_pc))
7012         {
7013           symtab_and_line sr_sal;
7014           sr_sal.pc = ecs->stop_func_start;
7015           sr_sal.pspace = get_frame_program_space (frame);
7016
7017           insert_step_resume_breakpoint_at_sal (gdbarch,
7018                                                 sr_sal, null_frame_id);
7019           keep_going (ecs);
7020           return;
7021         }
7022
7023       /* If we have line number information for the function we are
7024          thinking of stepping into and the function isn't on the skip
7025          list, step into it.
7026
7027          If there are several symtabs at that PC (e.g. with include
7028          files), just want to know whether *any* of them have line
7029          numbers.  find_pc_line handles this.  */
7030       {
7031         struct symtab_and_line tmp_sal;
7032
7033         tmp_sal = find_pc_line (ecs->stop_func_start, 0);
7034         if (tmp_sal.line != 0
7035             && !function_name_is_marked_for_skip (ecs->stop_func_name,
7036                                                   tmp_sal)
7037             && !inline_frame_is_marked_for_skip (true, ecs->event_thread))
7038           {
7039             if (execution_direction == EXEC_REVERSE)
7040               handle_step_into_function_backward (gdbarch, ecs);
7041             else
7042               handle_step_into_function (gdbarch, ecs);
7043             return;
7044           }
7045       }
7046
7047       /* If we have no line number and the step-stop-if-no-debug is
7048          set, we stop the step so that the user has a chance to switch
7049          in assembly mode.  */
7050       if (ecs->event_thread->control.step_over_calls == STEP_OVER_UNDEBUGGABLE
7051           && step_stop_if_no_debug)
7052         {
7053           end_stepping_range (ecs);
7054           return;
7055         }
7056
7057       if (execution_direction == EXEC_REVERSE)
7058         {
7059           /* If we're already at the start of the function, we've either just
7060              stepped backward into a single instruction function without line
7061              number info, or stepped back out of a signal handler to the first
7062              instruction of the function without line number info.  Just keep
7063              going, which will single-step back to the caller.  */
7064           if (ecs->stop_func_start != stop_pc)
7065             {
7066               /* Set a breakpoint at callee's start address.
7067                  From there we can step once and be back in the caller.  */
7068               symtab_and_line sr_sal;
7069               sr_sal.pc = ecs->stop_func_start;
7070               sr_sal.pspace = get_frame_program_space (frame);
7071               insert_step_resume_breakpoint_at_sal (gdbarch,
7072                                                     sr_sal, null_frame_id);
7073             }
7074         }
7075       else
7076         /* Set a breakpoint at callee's return address (the address
7077            at which the caller will resume).  */
7078         insert_step_resume_breakpoint_at_caller (frame);
7079
7080       keep_going (ecs);
7081       return;
7082     }
7083
7084   /* Reverse stepping through solib trampolines.  */
7085
7086   if (execution_direction == EXEC_REVERSE
7087       && ecs->event_thread->control.step_over_calls != STEP_OVER_NONE)
7088     {
7089       CORE_ADDR stop_pc = ecs->event_thread->suspend.stop_pc;
7090
7091       if (gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc)
7092           || (ecs->stop_func_start == 0
7093               && in_solib_dynsym_resolve_code (stop_pc)))
7094         {
7095           /* Any solib trampoline code can be handled in reverse
7096              by simply continuing to single-step.  We have already
7097              executed the solib function (backwards), and a few 
7098              steps will take us back through the trampoline to the
7099              caller.  */
7100           keep_going (ecs);
7101           return;
7102         }
7103       else if (in_solib_dynsym_resolve_code (stop_pc))
7104         {
7105           /* Stepped backward into the solib dynsym resolver.
7106              Set a breakpoint at its start and continue, then
7107              one more step will take us out.  */
7108           symtab_and_line sr_sal;
7109           sr_sal.pc = ecs->stop_func_start;
7110           sr_sal.pspace = get_frame_program_space (frame);
7111           insert_step_resume_breakpoint_at_sal (gdbarch, 
7112                                                 sr_sal, null_frame_id);
7113           keep_going (ecs);
7114           return;
7115         }
7116     }
7117
7118   /* This always returns the sal for the inner-most frame when we are in a
7119      stack of inlined frames, even if GDB actually believes that it is in a
7120      more outer frame.  This is checked for below by calls to
7121      inline_skipped_frames.  */
7122   stop_pc_sal = find_pc_line (ecs->event_thread->suspend.stop_pc, 0);
7123
7124   /* NOTE: tausq/2004-05-24: This if block used to be done before all
7125      the trampoline processing logic, however, there are some trampolines 
7126      that have no names, so we should do trampoline handling first.  */
7127   if (ecs->event_thread->control.step_over_calls == STEP_OVER_UNDEBUGGABLE
7128       && ecs->stop_func_name == NULL
7129       && stop_pc_sal.line == 0)
7130     {
7131       infrun_debug_printf ("stepped into undebuggable function");
7132
7133       /* The inferior just stepped into, or returned to, an
7134          undebuggable function (where there is no debugging information
7135          and no line number corresponding to the address where the
7136          inferior stopped).  Since we want to skip this kind of code,
7137          we keep going until the inferior returns from this
7138          function - unless the user has asked us not to (via
7139          set step-mode) or we no longer know how to get back
7140          to the call site.  */
7141       if (step_stop_if_no_debug
7142           || !frame_id_p (frame_unwind_caller_id (frame)))
7143         {
7144           /* If we have no line number and the step-stop-if-no-debug
7145              is set, we stop the step so that the user has a chance to
7146              switch in assembly mode.  */
7147           end_stepping_range (ecs);
7148           return;
7149         }
7150       else
7151         {
7152           /* Set a breakpoint at callee's return address (the address
7153              at which the caller will resume).  */
7154           insert_step_resume_breakpoint_at_caller (frame);
7155           keep_going (ecs);
7156           return;
7157         }
7158     }
7159
7160   if (ecs->event_thread->control.step_range_end == 1)
7161     {
7162       /* It is stepi or nexti.  We always want to stop stepping after
7163          one instruction.  */
7164       infrun_debug_printf ("stepi/nexti");
7165       end_stepping_range (ecs);
7166       return;
7167     }
7168
7169   if (stop_pc_sal.line == 0)
7170     {
7171       /* We have no line number information.  That means to stop
7172          stepping (does this always happen right after one instruction,
7173          when we do "s" in a function with no line numbers,
7174          or can this happen as a result of a return or longjmp?).  */
7175       infrun_debug_printf ("line number info");
7176       end_stepping_range (ecs);
7177       return;
7178     }
7179
7180   /* Look for "calls" to inlined functions, part one.  If the inline
7181      frame machinery detected some skipped call sites, we have entered
7182      a new inline function.  */
7183
7184   if (frame_id_eq (get_frame_id (get_current_frame ()),
7185                    ecs->event_thread->control.step_frame_id)
7186       && inline_skipped_frames (ecs->event_thread))
7187     {
7188       infrun_debug_printf ("stepped into inlined function");
7189
7190       symtab_and_line call_sal = find_frame_sal (get_current_frame ());
7191
7192       if (ecs->event_thread->control.step_over_calls != STEP_OVER_ALL)
7193         {
7194           /* For "step", we're going to stop.  But if the call site
7195              for this inlined function is on the same source line as
7196              we were previously stepping, go down into the function
7197              first.  Otherwise stop at the call site.  */
7198
7199           if (call_sal.line == ecs->event_thread->current_line
7200               && call_sal.symtab == ecs->event_thread->current_symtab)
7201             {
7202               step_into_inline_frame (ecs->event_thread);
7203               if (inline_frame_is_marked_for_skip (false, ecs->event_thread))
7204                 {
7205                   keep_going (ecs);
7206                   return;
7207                 }
7208             }
7209
7210           end_stepping_range (ecs);
7211           return;
7212         }
7213       else
7214         {
7215           /* For "next", we should stop at the call site if it is on a
7216              different source line.  Otherwise continue through the
7217              inlined function.  */
7218           if (call_sal.line == ecs->event_thread->current_line
7219               && call_sal.symtab == ecs->event_thread->current_symtab)
7220             keep_going (ecs);
7221           else
7222             end_stepping_range (ecs);
7223           return;
7224         }
7225     }
7226
7227   /* Look for "calls" to inlined functions, part two.  If we are still
7228      in the same real function we were stepping through, but we have
7229      to go further up to find the exact frame ID, we are stepping
7230      through a more inlined call beyond its call site.  */
7231
7232   if (get_frame_type (get_current_frame ()) == INLINE_FRAME
7233       && !frame_id_eq (get_frame_id (get_current_frame ()),
7234                        ecs->event_thread->control.step_frame_id)
7235       && stepped_in_from (get_current_frame (),
7236                           ecs->event_thread->control.step_frame_id))
7237     {
7238       infrun_debug_printf ("stepping through inlined function");
7239
7240       if (ecs->event_thread->control.step_over_calls == STEP_OVER_ALL
7241           || inline_frame_is_marked_for_skip (false, ecs->event_thread))
7242         keep_going (ecs);
7243       else
7244         end_stepping_range (ecs);
7245       return;
7246     }
7247
7248   bool refresh_step_info = true;
7249   if ((ecs->event_thread->suspend.stop_pc == stop_pc_sal.pc)
7250       && (ecs->event_thread->current_line != stop_pc_sal.line
7251           || ecs->event_thread->current_symtab != stop_pc_sal.symtab))
7252     {
7253       /* We are at a different line.  */
7254
7255       if (stop_pc_sal.is_stmt)
7256         {
7257           /* We are at the start of a statement.
7258
7259              So stop.  Note that we don't stop if we step into the middle of a
7260              statement.  That is said to make things like for (;;) statements
7261              work better.  */
7262           infrun_debug_printf ("stepped to a different line");
7263           end_stepping_range (ecs);
7264           return;
7265         }
7266       else if (frame_id_eq (get_frame_id (get_current_frame ()),
7267                            ecs->event_thread->control.step_frame_id))
7268         {
7269           /* We are not at the start of a statement, and we have not changed
7270              frame.
7271
7272              We ignore this line table entry, and continue stepping forward,
7273              looking for a better place to stop.  */
7274           refresh_step_info = false;
7275           infrun_debug_printf ("stepped to a different line, but "
7276                                "it's not the start of a statement");
7277         }
7278       else
7279         {
7280           /* We are not the start of a statement, and we have changed frame.
7281
7282              We ignore this line table entry, and continue stepping forward,
7283              looking for a better place to stop.  Keep refresh_step_info at
7284              true to note that the frame has changed, but ignore the line
7285              number to make sure we don't ignore a subsequent entry with the
7286              same line number.  */
7287           stop_pc_sal.line = 0;
7288           infrun_debug_printf ("stepped to a different frame, but "
7289                                "it's not the start of a statement");
7290         }
7291     }
7292
7293   /* We aren't done stepping.
7294
7295      Optimize by setting the stepping range to the line.
7296      (We might not be in the original line, but if we entered a
7297      new line in mid-statement, we continue stepping.  This makes
7298      things like for(;;) statements work better.)
7299
7300      If we entered a SAL that indicates a non-statement line table entry,
7301      then we update the stepping range, but we don't update the step info,
7302      which includes things like the line number we are stepping away from.
7303      This means we will stop when we find a line table entry that is marked
7304      as is-statement, even if it matches the non-statement one we just
7305      stepped into.   */
7306
7307   ecs->event_thread->control.step_range_start = stop_pc_sal.pc;
7308   ecs->event_thread->control.step_range_end = stop_pc_sal.end;
7309   ecs->event_thread->control.may_range_step = 1;
7310   if (refresh_step_info)
7311     set_step_info (ecs->event_thread, frame, stop_pc_sal);
7312
7313   infrun_debug_printf ("keep going");
7314   keep_going (ecs);
7315 }
7316
7317 static bool restart_stepped_thread (process_stratum_target *resume_target,
7318                                     ptid_t resume_ptid);
7319
7320 /* In all-stop mode, if we're currently stepping but have stopped in
7321    some other thread, we may need to switch back to the stepped
7322    thread.  Returns true we set the inferior running, false if we left
7323    it stopped (and the event needs further processing).  */
7324
7325 static bool
7326 switch_back_to_stepped_thread (struct execution_control_state *ecs)
7327 {
7328   if (!target_is_non_stop_p ())
7329     {
7330       /* If any thread is blocked on some internal breakpoint, and we
7331          simply need to step over that breakpoint to get it going
7332          again, do that first.  */
7333
7334       /* However, if we see an event for the stepping thread, then we
7335          know all other threads have been moved past their breakpoints
7336          already.  Let the caller check whether the step is finished,
7337          etc., before deciding to move it past a breakpoint.  */
7338       if (ecs->event_thread->control.step_range_end != 0)
7339         return false;
7340
7341       /* Check if the current thread is blocked on an incomplete
7342          step-over, interrupted by a random signal.  */
7343       if (ecs->event_thread->control.trap_expected
7344           && ecs->event_thread->suspend.stop_signal != GDB_SIGNAL_TRAP)
7345         {
7346           infrun_debug_printf
7347             ("need to finish step-over of [%s]",
7348              target_pid_to_str (ecs->event_thread->ptid).c_str ());
7349           keep_going (ecs);
7350           return true;
7351         }
7352
7353       /* Check if the current thread is blocked by a single-step
7354          breakpoint of another thread.  */
7355       if (ecs->hit_singlestep_breakpoint)
7356        {
7357          infrun_debug_printf ("need to step [%s] over single-step breakpoint",
7358                               target_pid_to_str (ecs->ptid).c_str ());
7359          keep_going (ecs);
7360          return true;
7361        }
7362
7363       /* If this thread needs yet another step-over (e.g., stepping
7364          through a delay slot), do it first before moving on to
7365          another thread.  */
7366       if (thread_still_needs_step_over (ecs->event_thread))
7367         {
7368           infrun_debug_printf
7369             ("thread [%s] still needs step-over",
7370              target_pid_to_str (ecs->event_thread->ptid).c_str ());
7371           keep_going (ecs);
7372           return true;
7373         }
7374
7375       /* If scheduler locking applies even if not stepping, there's no
7376          need to walk over threads.  Above we've checked whether the
7377          current thread is stepping.  If some other thread not the
7378          event thread is stepping, then it must be that scheduler
7379          locking is not in effect.  */
7380       if (schedlock_applies (ecs->event_thread))
7381         return false;
7382
7383       /* Otherwise, we no longer expect a trap in the current thread.
7384          Clear the trap_expected flag before switching back -- this is
7385          what keep_going does as well, if we call it.  */
7386       ecs->event_thread->control.trap_expected = 0;
7387
7388       /* Likewise, clear the signal if it should not be passed.  */
7389       if (!signal_program[ecs->event_thread->suspend.stop_signal])
7390         ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0;
7391
7392       if (restart_stepped_thread (ecs->target, ecs->ptid))
7393         {
7394           prepare_to_wait (ecs);
7395           return true;
7396         }
7397
7398       switch_to_thread (ecs->event_thread);
7399     }
7400
7401   return false;
7402 }
7403
7404 /* Look for the thread that was stepping, and resume it.
7405    RESUME_TARGET / RESUME_PTID indicate the set of threads the caller
7406    is resuming.  Return true if a thread was started, false
7407    otherwise.  */
7408
7409 static bool
7410 restart_stepped_thread (process_stratum_target *resume_target,
7411                         ptid_t resume_ptid)
7412 {
7413   /* Do all pending step-overs before actually proceeding with
7414      step/next/etc.  */
7415   if (start_step_over ())
7416     return true;
7417
7418   for (thread_info *tp : all_threads_safe ())
7419     {
7420       if (tp->state == THREAD_EXITED)
7421         continue;
7422
7423       if (tp->suspend.waitstatus_pending_p)
7424         continue;
7425
7426       /* Ignore threads of processes the caller is not
7427          resuming.  */
7428       if (!sched_multi
7429           && (tp->inf->process_target () != resume_target
7430               || tp->inf->pid != resume_ptid.pid ()))
7431         continue;
7432
7433       if (tp->control.trap_expected)
7434         {
7435           infrun_debug_printf ("switching back to stepped thread (step-over)");
7436
7437           if (keep_going_stepped_thread (tp))
7438             return true;
7439         }
7440     }
7441
7442   for (thread_info *tp : all_threads_safe ())
7443     {
7444       if (tp->state == THREAD_EXITED)
7445         continue;
7446
7447       if (tp->suspend.waitstatus_pending_p)
7448         continue;
7449
7450       /* Ignore threads of processes the caller is not
7451          resuming.  */
7452       if (!sched_multi
7453           && (tp->inf->process_target () != resume_target
7454               || tp->inf->pid != resume_ptid.pid ()))
7455         continue;
7456
7457       /* Did we find the stepping thread?  */
7458       if (tp->control.step_range_end)
7459         {
7460           infrun_debug_printf ("switching back to stepped thread (stepping)");
7461
7462           if (keep_going_stepped_thread (tp))
7463             return true;
7464         }
7465     }
7466
7467   return false;
7468 }
7469
7470 /* See infrun.h.  */
7471
7472 void
7473 restart_after_all_stop_detach (process_stratum_target *proc_target)
7474 {
7475   /* Note we don't check target_is_non_stop_p() here, because the
7476      current inferior may no longer have a process_stratum target
7477      pushed, as we just detached.  */
7478
7479   /* See if we have a THREAD_RUNNING thread that need to be
7480      re-resumed.  If we have any thread that is already executing,
7481      then we don't need to resume the target -- it is already been
7482      resumed.  With the remote target (in all-stop), it's even
7483      impossible to issue another resumption if the target is already
7484      resumed, until the target reports a stop.  */
7485   for (thread_info *thr : all_threads (proc_target))
7486     {
7487       if (thr->state != THREAD_RUNNING)
7488         continue;
7489
7490       /* If we have any thread that is already executing, then we
7491          don't need to resume the target -- it is already been
7492          resumed.  */
7493       if (thr->executing)
7494         return;
7495
7496       /* If we have a pending event to process, skip resuming the
7497          target and go straight to processing it.  */
7498       if (thr->resumed && thr->suspend.waitstatus_pending_p)
7499         return;
7500     }
7501
7502   /* Alright, we need to re-resume the target.  If a thread was
7503      stepping, we need to restart it stepping.  */
7504   if (restart_stepped_thread (proc_target, minus_one_ptid))
7505     return;
7506
7507   /* Otherwise, find the first THREAD_RUNNING thread and resume
7508      it.  */
7509   for (thread_info *thr : all_threads (proc_target))
7510     {
7511       if (thr->state != THREAD_RUNNING)
7512         continue;
7513
7514       execution_control_state ecs;
7515       reset_ecs (&ecs, thr);
7516       switch_to_thread (thr);
7517       keep_going (&ecs);
7518       return;
7519     }
7520 }
7521
7522 /* Set a previously stepped thread back to stepping.  Returns true on
7523    success, false if the resume is not possible (e.g., the thread
7524    vanished).  */
7525
7526 static bool
7527 keep_going_stepped_thread (struct thread_info *tp)
7528 {
7529   struct frame_info *frame;
7530   struct execution_control_state ecss;
7531   struct execution_control_state *ecs = &ecss;
7532
7533   /* If the stepping thread exited, then don't try to switch back and
7534      resume it, which could fail in several different ways depending
7535      on the target.  Instead, just keep going.
7536
7537      We can find a stepping dead thread in the thread list in two
7538      cases:
7539
7540      - The target supports thread exit events, and when the target
7541        tries to delete the thread from the thread list, inferior_ptid
7542        pointed at the exiting thread.  In such case, calling
7543        delete_thread does not really remove the thread from the list;
7544        instead, the thread is left listed, with 'exited' state.
7545
7546      - The target's debug interface does not support thread exit
7547        events, and so we have no idea whatsoever if the previously
7548        stepping thread is still alive.  For that reason, we need to
7549        synchronously query the target now.  */
7550
7551   if (tp->state == THREAD_EXITED || !target_thread_alive (tp->ptid))
7552     {
7553       infrun_debug_printf ("not resuming previously stepped thread, it has "
7554                            "vanished");
7555
7556       delete_thread (tp);
7557       return false;
7558     }
7559
7560   infrun_debug_printf ("resuming previously stepped thread");
7561
7562   reset_ecs (ecs, tp);
7563   switch_to_thread (tp);
7564
7565   tp->suspend.stop_pc = regcache_read_pc (get_thread_regcache (tp));
7566   frame = get_current_frame ();
7567
7568   /* If the PC of the thread we were trying to single-step has
7569      changed, then that thread has trapped or been signaled, but the
7570      event has not been reported to GDB yet.  Re-poll the target
7571      looking for this particular thread's event (i.e. temporarily
7572      enable schedlock) by:
7573
7574      - setting a break at the current PC
7575      - resuming that particular thread, only (by setting trap
7576      expected)
7577
7578      This prevents us continuously moving the single-step breakpoint
7579      forward, one instruction at a time, overstepping.  */
7580
7581   if (tp->suspend.stop_pc != tp->prev_pc)
7582     {
7583       ptid_t resume_ptid;
7584
7585       infrun_debug_printf ("expected thread advanced also (%s -> %s)",
7586                            paddress (target_gdbarch (), tp->prev_pc),
7587                            paddress (target_gdbarch (), tp->suspend.stop_pc));
7588
7589       /* Clear the info of the previous step-over, as it's no longer
7590          valid (if the thread was trying to step over a breakpoint, it
7591          has already succeeded).  It's what keep_going would do too,
7592          if we called it.  Do this before trying to insert the sss
7593          breakpoint, otherwise if we were previously trying to step
7594          over this exact address in another thread, the breakpoint is
7595          skipped.  */
7596       clear_step_over_info ();
7597       tp->control.trap_expected = 0;
7598
7599       insert_single_step_breakpoint (get_frame_arch (frame),
7600                                      get_frame_address_space (frame),
7601                                      tp->suspend.stop_pc);
7602
7603       tp->resumed = true;
7604       resume_ptid = internal_resume_ptid (tp->control.stepping_command);
7605       do_target_resume (resume_ptid, false, GDB_SIGNAL_0);
7606     }
7607   else
7608     {
7609       infrun_debug_printf ("expected thread still hasn't advanced");
7610
7611       keep_going_pass_signal (ecs);
7612     }
7613
7614   return true;
7615 }
7616
7617 /* Is thread TP in the middle of (software or hardware)
7618    single-stepping?  (Note the result of this function must never be
7619    passed directly as target_resume's STEP parameter.)  */
7620
7621 static bool
7622 currently_stepping (struct thread_info *tp)
7623 {
7624   return ((tp->control.step_range_end
7625            && tp->control.step_resume_breakpoint == NULL)
7626           || tp->control.trap_expected
7627           || tp->stepped_breakpoint
7628           || bpstat_should_step ());
7629 }
7630
7631 /* Inferior has stepped into a subroutine call with source code that
7632    we should not step over.  Do step to the first line of code in
7633    it.  */
7634
7635 static void
7636 handle_step_into_function (struct gdbarch *gdbarch,
7637                            struct execution_control_state *ecs)
7638 {
7639   fill_in_stop_func (gdbarch, ecs);
7640
7641   compunit_symtab *cust
7642     = find_pc_compunit_symtab (ecs->event_thread->suspend.stop_pc);
7643   if (cust != NULL && compunit_language (cust) != language_asm)
7644     ecs->stop_func_start
7645       = gdbarch_skip_prologue_noexcept (gdbarch, ecs->stop_func_start);
7646
7647   symtab_and_line stop_func_sal = find_pc_line (ecs->stop_func_start, 0);
7648   /* Use the step_resume_break to step until the end of the prologue,
7649      even if that involves jumps (as it seems to on the vax under
7650      4.2).  */
7651   /* If the prologue ends in the middle of a source line, continue to
7652      the end of that source line (if it is still within the function).
7653      Otherwise, just go to end of prologue.  */
7654   if (stop_func_sal.end
7655       && stop_func_sal.pc != ecs->stop_func_start
7656       && stop_func_sal.end < ecs->stop_func_end)
7657     ecs->stop_func_start = stop_func_sal.end;
7658
7659   /* Architectures which require breakpoint adjustment might not be able
7660      to place a breakpoint at the computed address.  If so, the test
7661      ``ecs->stop_func_start == stop_pc'' will never succeed.  Adjust
7662      ecs->stop_func_start to an address at which a breakpoint may be
7663      legitimately placed.
7664
7665      Note:  kevinb/2004-01-19:  On FR-V, if this adjustment is not
7666      made, GDB will enter an infinite loop when stepping through
7667      optimized code consisting of VLIW instructions which contain
7668      subinstructions corresponding to different source lines.  On
7669      FR-V, it's not permitted to place a breakpoint on any but the
7670      first subinstruction of a VLIW instruction.  When a breakpoint is
7671      set, GDB will adjust the breakpoint address to the beginning of
7672      the VLIW instruction.  Thus, we need to make the corresponding
7673      adjustment here when computing the stop address.  */
7674
7675   if (gdbarch_adjust_breakpoint_address_p (gdbarch))
7676     {
7677       ecs->stop_func_start
7678         = gdbarch_adjust_breakpoint_address (gdbarch,
7679                                              ecs->stop_func_start);
7680     }
7681
7682   if (ecs->stop_func_start == ecs->event_thread->suspend.stop_pc)
7683     {
7684       /* We are already there: stop now.  */
7685       end_stepping_range (ecs);
7686       return;
7687     }
7688   else
7689     {
7690       /* Put the step-breakpoint there and go until there.  */
7691       symtab_and_line sr_sal;
7692       sr_sal.pc = ecs->stop_func_start;
7693       sr_sal.section = find_pc_overlay (ecs->stop_func_start);
7694       sr_sal.pspace = get_frame_program_space (get_current_frame ());
7695
7696       /* Do not specify what the fp should be when we stop since on
7697          some machines the prologue is where the new fp value is
7698          established.  */
7699       insert_step_resume_breakpoint_at_sal (gdbarch, sr_sal, null_frame_id);
7700
7701       /* And make sure stepping stops right away then.  */
7702       ecs->event_thread->control.step_range_end
7703         = ecs->event_thread->control.step_range_start;
7704     }
7705   keep_going (ecs);
7706 }
7707
7708 /* Inferior has stepped backward into a subroutine call with source
7709    code that we should not step over.  Do step to the beginning of the
7710    last line of code in it.  */
7711
7712 static void
7713 handle_step_into_function_backward (struct gdbarch *gdbarch,
7714                                     struct execution_control_state *ecs)
7715 {
7716   struct compunit_symtab *cust;
7717   struct symtab_and_line stop_func_sal;
7718
7719   fill_in_stop_func (gdbarch, ecs);
7720
7721   cust = find_pc_compunit_symtab (ecs->event_thread->suspend.stop_pc);
7722   if (cust != NULL && compunit_language (cust) != language_asm)
7723     ecs->stop_func_start
7724       = gdbarch_skip_prologue_noexcept (gdbarch, ecs->stop_func_start);
7725
7726   stop_func_sal = find_pc_line (ecs->event_thread->suspend.stop_pc, 0);
7727
7728   /* OK, we're just going to keep stepping here.  */
7729   if (stop_func_sal.pc == ecs->event_thread->suspend.stop_pc)
7730     {
7731       /* We're there already.  Just stop stepping now.  */
7732       end_stepping_range (ecs);
7733     }
7734   else
7735     {
7736       /* Else just reset the step range and keep going.
7737          No step-resume breakpoint, they don't work for
7738          epilogues, which can have multiple entry paths.  */
7739       ecs->event_thread->control.step_range_start = stop_func_sal.pc;
7740       ecs->event_thread->control.step_range_end = stop_func_sal.end;
7741       keep_going (ecs);
7742     }
7743   return;
7744 }
7745
7746 /* Insert a "step-resume breakpoint" at SR_SAL with frame ID SR_ID.
7747    This is used to both functions and to skip over code.  */
7748
7749 static void
7750 insert_step_resume_breakpoint_at_sal_1 (struct gdbarch *gdbarch,
7751                                         struct symtab_and_line sr_sal,
7752                                         struct frame_id sr_id,
7753                                         enum bptype sr_type)
7754 {
7755   /* There should never be more than one step-resume or longjmp-resume
7756      breakpoint per thread, so we should never be setting a new
7757      step_resume_breakpoint when one is already active.  */
7758   gdb_assert (inferior_thread ()->control.step_resume_breakpoint == NULL);
7759   gdb_assert (sr_type == bp_step_resume || sr_type == bp_hp_step_resume);
7760
7761   infrun_debug_printf ("inserting step-resume breakpoint at %s",
7762                        paddress (gdbarch, sr_sal.pc));
7763
7764   inferior_thread ()->control.step_resume_breakpoint
7765     = set_momentary_breakpoint (gdbarch, sr_sal, sr_id, sr_type).release ();
7766 }
7767
7768 void
7769 insert_step_resume_breakpoint_at_sal (struct gdbarch *gdbarch,
7770                                       struct symtab_and_line sr_sal,
7771                                       struct frame_id sr_id)
7772 {
7773   insert_step_resume_breakpoint_at_sal_1 (gdbarch,
7774                                           sr_sal, sr_id,
7775                                           bp_step_resume);
7776 }
7777
7778 /* Insert a "high-priority step-resume breakpoint" at RETURN_FRAME.pc.
7779    This is used to skip a potential signal handler.
7780
7781    This is called with the interrupted function's frame.  The signal
7782    handler, when it returns, will resume the interrupted function at
7783    RETURN_FRAME.pc.  */
7784
7785 static void
7786 insert_hp_step_resume_breakpoint_at_frame (struct frame_info *return_frame)
7787 {
7788   gdb_assert (return_frame != NULL);
7789
7790   struct gdbarch *gdbarch = get_frame_arch (return_frame);
7791
7792   symtab_and_line sr_sal;
7793   sr_sal.pc = gdbarch_addr_bits_remove (gdbarch, get_frame_pc (return_frame));
7794   sr_sal.section = find_pc_overlay (sr_sal.pc);
7795   sr_sal.pspace = get_frame_program_space (return_frame);
7796
7797   insert_step_resume_breakpoint_at_sal_1 (gdbarch, sr_sal,
7798                                           get_stack_frame_id (return_frame),
7799                                           bp_hp_step_resume);
7800 }
7801
7802 /* Insert a "step-resume breakpoint" at the previous frame's PC.  This
7803    is used to skip a function after stepping into it (for "next" or if
7804    the called function has no debugging information).
7805
7806    The current function has almost always been reached by single
7807    stepping a call or return instruction.  NEXT_FRAME belongs to the
7808    current function, and the breakpoint will be set at the caller's
7809    resume address.
7810
7811    This is a separate function rather than reusing
7812    insert_hp_step_resume_breakpoint_at_frame in order to avoid
7813    get_prev_frame, which may stop prematurely (see the implementation
7814    of frame_unwind_caller_id for an example).  */
7815
7816 static void
7817 insert_step_resume_breakpoint_at_caller (struct frame_info *next_frame)
7818 {
7819   /* We shouldn't have gotten here if we don't know where the call site
7820      is.  */
7821   gdb_assert (frame_id_p (frame_unwind_caller_id (next_frame)));
7822
7823   struct gdbarch *gdbarch = frame_unwind_caller_arch (next_frame);
7824
7825   symtab_and_line sr_sal;
7826   sr_sal.pc = gdbarch_addr_bits_remove (gdbarch,
7827                                         frame_unwind_caller_pc (next_frame));
7828   sr_sal.section = find_pc_overlay (sr_sal.pc);
7829   sr_sal.pspace = frame_unwind_program_space (next_frame);
7830
7831   insert_step_resume_breakpoint_at_sal (gdbarch, sr_sal,
7832                                         frame_unwind_caller_id (next_frame));
7833 }
7834
7835 /* Insert a "longjmp-resume" breakpoint at PC.  This is used to set a
7836    new breakpoint at the target of a jmp_buf.  The handling of
7837    longjmp-resume uses the same mechanisms used for handling
7838    "step-resume" breakpoints.  */
7839
7840 static void
7841 insert_longjmp_resume_breakpoint (struct gdbarch *gdbarch, CORE_ADDR pc)
7842 {
7843   /* There should never be more than one longjmp-resume breakpoint per
7844      thread, so we should never be setting a new
7845      longjmp_resume_breakpoint when one is already active.  */
7846   gdb_assert (inferior_thread ()->control.exception_resume_breakpoint == NULL);
7847
7848   infrun_debug_printf ("inserting longjmp-resume breakpoint at %s",
7849                        paddress (gdbarch, pc));
7850
7851   inferior_thread ()->control.exception_resume_breakpoint =
7852     set_momentary_breakpoint_at_pc (gdbarch, pc, bp_longjmp_resume).release ();
7853 }
7854
7855 /* Insert an exception resume breakpoint.  TP is the thread throwing
7856    the exception.  The block B is the block of the unwinder debug hook
7857    function.  FRAME is the frame corresponding to the call to this
7858    function.  SYM is the symbol of the function argument holding the
7859    target PC of the exception.  */
7860
7861 static void
7862 insert_exception_resume_breakpoint (struct thread_info *tp,
7863                                     const struct block *b,
7864                                     struct frame_info *frame,
7865                                     struct symbol *sym)
7866 {
7867   try
7868     {
7869       struct block_symbol vsym;
7870       struct value *value;
7871       CORE_ADDR handler;
7872       struct breakpoint *bp;
7873
7874       vsym = lookup_symbol_search_name (sym->search_name (),
7875                                         b, VAR_DOMAIN);
7876       value = read_var_value (vsym.symbol, vsym.block, frame);
7877       /* If the value was optimized out, revert to the old behavior.  */
7878       if (! value_optimized_out (value))
7879         {
7880           handler = value_as_address (value);
7881
7882           infrun_debug_printf ("exception resume at %lx",
7883                                (unsigned long) handler);
7884
7885           bp = set_momentary_breakpoint_at_pc (get_frame_arch (frame),
7886                                                handler,
7887                                                bp_exception_resume).release ();
7888
7889           /* set_momentary_breakpoint_at_pc invalidates FRAME.  */
7890           frame = NULL;
7891
7892           bp->thread = tp->global_num;
7893           inferior_thread ()->control.exception_resume_breakpoint = bp;
7894         }
7895     }
7896   catch (const gdb_exception_error &e)
7897     {
7898       /* We want to ignore errors here.  */
7899     }
7900 }
7901
7902 /* A helper for check_exception_resume that sets an
7903    exception-breakpoint based on a SystemTap probe.  */
7904
7905 static void
7906 insert_exception_resume_from_probe (struct thread_info *tp,
7907                                     const struct bound_probe *probe,
7908                                     struct frame_info *frame)
7909 {
7910   struct value *arg_value;
7911   CORE_ADDR handler;
7912   struct breakpoint *bp;
7913
7914   arg_value = probe_safe_evaluate_at_pc (frame, 1);
7915   if (!arg_value)
7916     return;
7917
7918   handler = value_as_address (arg_value);
7919
7920   infrun_debug_printf ("exception resume at %s",
7921                        paddress (probe->objfile->arch (), handler));
7922
7923   bp = set_momentary_breakpoint_at_pc (get_frame_arch (frame),
7924                                        handler, bp_exception_resume).release ();
7925   bp->thread = tp->global_num;
7926   inferior_thread ()->control.exception_resume_breakpoint = bp;
7927 }
7928
7929 /* This is called when an exception has been intercepted.  Check to
7930    see whether the exception's destination is of interest, and if so,
7931    set an exception resume breakpoint there.  */
7932
7933 static void
7934 check_exception_resume (struct execution_control_state *ecs,
7935                         struct frame_info *frame)
7936 {
7937   struct bound_probe probe;
7938   struct symbol *func;
7939
7940   /* First see if this exception unwinding breakpoint was set via a
7941      SystemTap probe point.  If so, the probe has two arguments: the
7942      CFA and the HANDLER.  We ignore the CFA, extract the handler, and
7943      set a breakpoint there.  */
7944   probe = find_probe_by_pc (get_frame_pc (frame));
7945   if (probe.prob)
7946     {
7947       insert_exception_resume_from_probe (ecs->event_thread, &probe, frame);
7948       return;
7949     }
7950
7951   func = get_frame_function (frame);
7952   if (!func)
7953     return;
7954
7955   try
7956     {
7957       const struct block *b;
7958       struct block_iterator iter;
7959       struct symbol *sym;
7960       int argno = 0;
7961
7962       /* The exception breakpoint is a thread-specific breakpoint on
7963          the unwinder's debug hook, declared as:
7964          
7965          void _Unwind_DebugHook (void *cfa, void *handler);
7966          
7967          The CFA argument indicates the frame to which control is
7968          about to be transferred.  HANDLER is the destination PC.
7969          
7970          We ignore the CFA and set a temporary breakpoint at HANDLER.
7971          This is not extremely efficient but it avoids issues in gdb
7972          with computing the DWARF CFA, and it also works even in weird
7973          cases such as throwing an exception from inside a signal
7974          handler.  */
7975
7976       b = SYMBOL_BLOCK_VALUE (func);
7977       ALL_BLOCK_SYMBOLS (b, iter, sym)
7978         {
7979           if (!SYMBOL_IS_ARGUMENT (sym))
7980             continue;
7981
7982           if (argno == 0)
7983             ++argno;
7984           else
7985             {
7986               insert_exception_resume_breakpoint (ecs->event_thread,
7987                                                   b, frame, sym);
7988               break;
7989             }
7990         }
7991     }
7992   catch (const gdb_exception_error &e)
7993     {
7994     }
7995 }
7996
7997 static void
7998 stop_waiting (struct execution_control_state *ecs)
7999 {
8000   infrun_debug_printf ("stop_waiting");
8001
8002   /* Let callers know we don't want to wait for the inferior anymore.  */
8003   ecs->wait_some_more = 0;
8004
8005   /* If all-stop, but there exists a non-stop target, stop all
8006      threads now that we're presenting the stop to the user.  */
8007   if (!non_stop && exists_non_stop_target ())
8008     stop_all_threads ();
8009 }
8010
8011 /* Like keep_going, but passes the signal to the inferior, even if the
8012    signal is set to nopass.  */
8013
8014 static void
8015 keep_going_pass_signal (struct execution_control_state *ecs)
8016 {
8017   gdb_assert (ecs->event_thread->ptid == inferior_ptid);
8018   gdb_assert (!ecs->event_thread->resumed);
8019
8020   /* Save the pc before execution, to compare with pc after stop.  */
8021   ecs->event_thread->prev_pc
8022     = regcache_read_pc_protected (get_thread_regcache (ecs->event_thread));
8023
8024   if (ecs->event_thread->control.trap_expected)
8025     {
8026       struct thread_info *tp = ecs->event_thread;
8027
8028       infrun_debug_printf ("%s has trap_expected set, "
8029                            "resuming to collect trap",
8030                            target_pid_to_str (tp->ptid).c_str ());
8031
8032       /* We haven't yet gotten our trap, and either: intercepted a
8033          non-signal event (e.g., a fork); or took a signal which we
8034          are supposed to pass through to the inferior.  Simply
8035          continue.  */
8036       resume (ecs->event_thread->suspend.stop_signal);
8037     }
8038   else if (step_over_info_valid_p ())
8039     {
8040       /* Another thread is stepping over a breakpoint in-line.  If
8041          this thread needs a step-over too, queue the request.  In
8042          either case, this resume must be deferred for later.  */
8043       struct thread_info *tp = ecs->event_thread;
8044
8045       if (ecs->hit_singlestep_breakpoint
8046           || thread_still_needs_step_over (tp))
8047         {
8048           infrun_debug_printf ("step-over already in progress: "
8049                                "step-over for %s deferred",
8050                                target_pid_to_str (tp->ptid).c_str ());
8051           global_thread_step_over_chain_enqueue (tp);
8052         }
8053       else
8054         {
8055           infrun_debug_printf ("step-over in progress: resume of %s deferred",
8056                                target_pid_to_str (tp->ptid).c_str ());
8057         }
8058     }
8059   else
8060     {
8061       struct regcache *regcache = get_current_regcache ();
8062       int remove_bp;
8063       int remove_wps;
8064       step_over_what step_what;
8065
8066       /* Either the trap was not expected, but we are continuing
8067          anyway (if we got a signal, the user asked it be passed to
8068          the child)
8069          -- or --
8070          We got our expected trap, but decided we should resume from
8071          it.
8072
8073          We're going to run this baby now!
8074
8075          Note that insert_breakpoints won't try to re-insert
8076          already inserted breakpoints.  Therefore, we don't
8077          care if breakpoints were already inserted, or not.  */
8078
8079       /* If we need to step over a breakpoint, and we're not using
8080          displaced stepping to do so, insert all breakpoints
8081          (watchpoints, etc.) but the one we're stepping over, step one
8082          instruction, and then re-insert the breakpoint when that step
8083          is finished.  */
8084
8085       step_what = thread_still_needs_step_over (ecs->event_thread);
8086
8087       remove_bp = (ecs->hit_singlestep_breakpoint
8088                    || (step_what & STEP_OVER_BREAKPOINT));
8089       remove_wps = (step_what & STEP_OVER_WATCHPOINT);
8090
8091       /* We can't use displaced stepping if we need to step past a
8092          watchpoint.  The instruction copied to the scratch pad would
8093          still trigger the watchpoint.  */
8094       if (remove_bp
8095           && (remove_wps || !use_displaced_stepping (ecs->event_thread)))
8096         {
8097           set_step_over_info (regcache->aspace (),
8098                               regcache_read_pc (regcache), remove_wps,
8099                               ecs->event_thread->global_num);
8100         }
8101       else if (remove_wps)
8102         set_step_over_info (NULL, 0, remove_wps, -1);
8103
8104       /* If we now need to do an in-line step-over, we need to stop
8105          all other threads.  Note this must be done before
8106          insert_breakpoints below, because that removes the breakpoint
8107          we're about to step over, otherwise other threads could miss
8108          it.  */
8109       if (step_over_info_valid_p () && target_is_non_stop_p ())
8110         stop_all_threads ();
8111
8112       /* Stop stepping if inserting breakpoints fails.  */
8113       try
8114         {
8115           insert_breakpoints ();
8116         }
8117       catch (const gdb_exception_error &e)
8118         {
8119           exception_print (gdb_stderr, e);
8120           stop_waiting (ecs);
8121           clear_step_over_info ();
8122           return;
8123         }
8124
8125       ecs->event_thread->control.trap_expected = (remove_bp || remove_wps);
8126
8127       resume (ecs->event_thread->suspend.stop_signal);
8128     }
8129
8130   prepare_to_wait (ecs);
8131 }
8132
8133 /* Called when we should continue running the inferior, because the
8134    current event doesn't cause a user visible stop.  This does the
8135    resuming part; waiting for the next event is done elsewhere.  */
8136
8137 static void
8138 keep_going (struct execution_control_state *ecs)
8139 {
8140   if (ecs->event_thread->control.trap_expected
8141       && ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP)
8142     ecs->event_thread->control.trap_expected = 0;
8143
8144   if (!signal_program[ecs->event_thread->suspend.stop_signal])
8145     ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0;
8146   keep_going_pass_signal (ecs);
8147 }
8148
8149 /* This function normally comes after a resume, before
8150    handle_inferior_event exits.  It takes care of any last bits of
8151    housekeeping, and sets the all-important wait_some_more flag.  */
8152
8153 static void
8154 prepare_to_wait (struct execution_control_state *ecs)
8155 {
8156   infrun_debug_printf ("prepare_to_wait");
8157
8158   ecs->wait_some_more = 1;
8159
8160   /* If the target can't async, emulate it by marking the infrun event
8161      handler such that as soon as we get back to the event-loop, we
8162      immediately end up in fetch_inferior_event again calling
8163      target_wait.  */
8164   if (!target_can_async_p ())
8165     mark_infrun_async_event_handler ();
8166 }
8167
8168 /* We are done with the step range of a step/next/si/ni command.
8169    Called once for each n of a "step n" operation.  */
8170
8171 static void
8172 end_stepping_range (struct execution_control_state *ecs)
8173 {
8174   ecs->event_thread->control.stop_step = 1;
8175   stop_waiting (ecs);
8176 }
8177
8178 /* Several print_*_reason functions to print why the inferior has stopped.
8179    We always print something when the inferior exits, or receives a signal.
8180    The rest of the cases are dealt with later on in normal_stop and
8181    print_it_typical.  Ideally there should be a call to one of these
8182    print_*_reason functions functions from handle_inferior_event each time
8183    stop_waiting is called.
8184
8185    Note that we don't call these directly, instead we delegate that to
8186    the interpreters, through observers.  Interpreters then call these
8187    with whatever uiout is right.  */
8188
8189 void
8190 print_end_stepping_range_reason (struct ui_out *uiout)
8191 {
8192   /* For CLI-like interpreters, print nothing.  */
8193
8194   if (uiout->is_mi_like_p ())
8195     {
8196       uiout->field_string ("reason",
8197                            async_reason_lookup (EXEC_ASYNC_END_STEPPING_RANGE));
8198     }
8199 }
8200
8201 void
8202 print_signal_exited_reason (struct ui_out *uiout, enum gdb_signal siggnal)
8203 {
8204   annotate_signalled ();
8205   if (uiout->is_mi_like_p ())
8206     uiout->field_string
8207       ("reason", async_reason_lookup (EXEC_ASYNC_EXITED_SIGNALLED));
8208   uiout->text ("\nProgram terminated with signal ");
8209   annotate_signal_name ();
8210   uiout->field_string ("signal-name",
8211                        gdb_signal_to_name (siggnal));
8212   annotate_signal_name_end ();
8213   uiout->text (", ");
8214   annotate_signal_string ();
8215   uiout->field_string ("signal-meaning",
8216                        gdb_signal_to_string (siggnal));
8217   annotate_signal_string_end ();
8218   uiout->text (".\n");
8219   uiout->text ("The program no longer exists.\n");
8220 }
8221
8222 void
8223 print_exited_reason (struct ui_out *uiout, int exitstatus)
8224 {
8225   struct inferior *inf = current_inferior ();
8226   std::string pidstr = target_pid_to_str (ptid_t (inf->pid));
8227
8228   annotate_exited (exitstatus);
8229   if (exitstatus)
8230     {
8231       if (uiout->is_mi_like_p ())
8232         uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXITED));
8233       std::string exit_code_str
8234         = string_printf ("0%o", (unsigned int) exitstatus);
8235       uiout->message ("[Inferior %s (%s) exited with code %pF]\n",
8236                       plongest (inf->num), pidstr.c_str (),
8237                       string_field ("exit-code", exit_code_str.c_str ()));
8238     }
8239   else
8240     {
8241       if (uiout->is_mi_like_p ())
8242         uiout->field_string
8243           ("reason", async_reason_lookup (EXEC_ASYNC_EXITED_NORMALLY));
8244       uiout->message ("[Inferior %s (%s) exited normally]\n",
8245                       plongest (inf->num), pidstr.c_str ());
8246     }
8247 }
8248
8249 void
8250 print_signal_received_reason (struct ui_out *uiout, enum gdb_signal siggnal)
8251 {
8252   struct thread_info *thr = inferior_thread ();
8253
8254   annotate_signal ();
8255
8256   if (uiout->is_mi_like_p ())
8257     ;
8258   else if (show_thread_that_caused_stop ())
8259     {
8260       const char *name;
8261
8262       uiout->text ("\nThread ");
8263       uiout->field_string ("thread-id", print_thread_id (thr));
8264
8265       name = thr->name != NULL ? thr->name : target_thread_name (thr);
8266       if (name != NULL)
8267         {
8268           uiout->text (" \"");
8269           uiout->field_string ("name", name);
8270           uiout->text ("\"");
8271         }
8272     }
8273   else
8274     uiout->text ("\nProgram");
8275
8276   if (siggnal == GDB_SIGNAL_0 && !uiout->is_mi_like_p ())
8277     uiout->text (" stopped");
8278   else
8279     {
8280       uiout->text (" received signal ");
8281       annotate_signal_name ();
8282       if (uiout->is_mi_like_p ())
8283         uiout->field_string
8284           ("reason", async_reason_lookup (EXEC_ASYNC_SIGNAL_RECEIVED));
8285       uiout->field_string ("signal-name", gdb_signal_to_name (siggnal));
8286       annotate_signal_name_end ();
8287       uiout->text (", ");
8288       annotate_signal_string ();
8289       uiout->field_string ("signal-meaning", gdb_signal_to_string (siggnal));
8290
8291       struct regcache *regcache = get_current_regcache ();
8292       struct gdbarch *gdbarch = regcache->arch ();
8293       if (gdbarch_report_signal_info_p (gdbarch))
8294         gdbarch_report_signal_info (gdbarch, uiout, siggnal);
8295
8296       annotate_signal_string_end ();
8297     }
8298   uiout->text (".\n");
8299 }
8300
8301 void
8302 print_no_history_reason (struct ui_out *uiout)
8303 {
8304   uiout->text ("\nNo more reverse-execution history.\n");
8305 }
8306
8307 /* Print current location without a level number, if we have changed
8308    functions or hit a breakpoint.  Print source line if we have one.
8309    bpstat_print contains the logic deciding in detail what to print,
8310    based on the event(s) that just occurred.  */
8311
8312 static void
8313 print_stop_location (struct target_waitstatus *ws)
8314 {
8315   int bpstat_ret;
8316   enum print_what source_flag;
8317   int do_frame_printing = 1;
8318   struct thread_info *tp = inferior_thread ();
8319
8320   bpstat_ret = bpstat_print (tp->control.stop_bpstat, ws->kind);
8321   switch (bpstat_ret)
8322     {
8323     case PRINT_UNKNOWN:
8324       /* FIXME: cagney/2002-12-01: Given that a frame ID does (or
8325          should) carry around the function and does (or should) use
8326          that when doing a frame comparison.  */
8327       if (tp->control.stop_step
8328           && frame_id_eq (tp->control.step_frame_id,
8329                           get_frame_id (get_current_frame ()))
8330           && (tp->control.step_start_function
8331               == find_pc_function (tp->suspend.stop_pc)))
8332         {
8333           /* Finished step, just print source line.  */
8334           source_flag = SRC_LINE;
8335         }
8336       else
8337         {
8338           /* Print location and source line.  */
8339           source_flag = SRC_AND_LOC;
8340         }
8341       break;
8342     case PRINT_SRC_AND_LOC:
8343       /* Print location and source line.  */
8344       source_flag = SRC_AND_LOC;
8345       break;
8346     case PRINT_SRC_ONLY:
8347       source_flag = SRC_LINE;
8348       break;
8349     case PRINT_NOTHING:
8350       /* Something bogus.  */
8351       source_flag = SRC_LINE;
8352       do_frame_printing = 0;
8353       break;
8354     default:
8355       internal_error (__FILE__, __LINE__, _("Unknown value."));
8356     }
8357
8358   /* The behavior of this routine with respect to the source
8359      flag is:
8360      SRC_LINE: Print only source line
8361      LOCATION: Print only location
8362      SRC_AND_LOC: Print location and source line.  */
8363   if (do_frame_printing)
8364     print_stack_frame (get_selected_frame (NULL), 0, source_flag, 1);
8365 }
8366
8367 /* See infrun.h.  */
8368
8369 void
8370 print_stop_event (struct ui_out *uiout, bool displays)
8371 {
8372   struct target_waitstatus last;
8373   struct thread_info *tp;
8374
8375   get_last_target_status (nullptr, nullptr, &last);
8376
8377   {
8378     scoped_restore save_uiout = make_scoped_restore (&current_uiout, uiout);
8379
8380     print_stop_location (&last);
8381
8382     /* Display the auto-display expressions.  */
8383     if (displays)
8384       do_displays ();
8385   }
8386
8387   tp = inferior_thread ();
8388   if (tp->thread_fsm != NULL
8389       && tp->thread_fsm->finished_p ())
8390     {
8391       struct return_value_info *rv;
8392
8393       rv = tp->thread_fsm->return_value ();
8394       if (rv != NULL)
8395         print_return_value (uiout, rv);
8396     }
8397 }
8398
8399 /* See infrun.h.  */
8400
8401 void
8402 maybe_remove_breakpoints (void)
8403 {
8404   if (!breakpoints_should_be_inserted_now () && target_has_execution ())
8405     {
8406       if (remove_breakpoints ())
8407         {
8408           target_terminal::ours_for_output ();
8409           printf_filtered (_("Cannot remove breakpoints because "
8410                              "program is no longer writable.\nFurther "
8411                              "execution is probably impossible.\n"));
8412         }
8413     }
8414 }
8415
8416 /* The execution context that just caused a normal stop.  */
8417
8418 struct stop_context
8419 {
8420   stop_context ();
8421
8422   DISABLE_COPY_AND_ASSIGN (stop_context);
8423
8424   bool changed () const;
8425
8426   /* The stop ID.  */
8427   ULONGEST stop_id;
8428
8429   /* The event PTID.  */
8430
8431   ptid_t ptid;
8432
8433   /* If stopp for a thread event, this is the thread that caused the
8434      stop.  */
8435   thread_info_ref thread;
8436
8437   /* The inferior that caused the stop.  */
8438   int inf_num;
8439 };
8440
8441 /* Initializes a new stop context.  If stopped for a thread event, this
8442    takes a strong reference to the thread.  */
8443
8444 stop_context::stop_context ()
8445 {
8446   stop_id = get_stop_id ();
8447   ptid = inferior_ptid;
8448   inf_num = current_inferior ()->num;
8449
8450   if (inferior_ptid != null_ptid)
8451     {
8452       /* Take a strong reference so that the thread can't be deleted
8453          yet.  */
8454       thread = thread_info_ref::new_reference (inferior_thread ());
8455     }
8456 }
8457
8458 /* Return true if the current context no longer matches the saved stop
8459    context.  */
8460
8461 bool
8462 stop_context::changed () const
8463 {
8464   if (ptid != inferior_ptid)
8465     return true;
8466   if (inf_num != current_inferior ()->num)
8467     return true;
8468   if (thread != NULL && thread->state != THREAD_STOPPED)
8469     return true;
8470   if (get_stop_id () != stop_id)
8471     return true;
8472   return false;
8473 }
8474
8475 /* See infrun.h.  */
8476
8477 int
8478 normal_stop (void)
8479 {
8480   struct target_waitstatus last;
8481
8482   get_last_target_status (nullptr, nullptr, &last);
8483
8484   new_stop_id ();
8485
8486   /* If an exception is thrown from this point on, make sure to
8487      propagate GDB's knowledge of the executing state to the
8488      frontend/user running state.  A QUIT is an easy exception to see
8489      here, so do this before any filtered output.  */
8490
8491   ptid_t finish_ptid = null_ptid;
8492
8493   if (!non_stop)
8494     finish_ptid = minus_one_ptid;
8495   else if (last.kind == TARGET_WAITKIND_SIGNALLED
8496            || last.kind == TARGET_WAITKIND_EXITED)
8497     {
8498       /* On some targets, we may still have live threads in the
8499          inferior when we get a process exit event.  E.g., for
8500          "checkpoint", when the current checkpoint/fork exits,
8501          linux-fork.c automatically switches to another fork from
8502          within target_mourn_inferior.  */
8503       if (inferior_ptid != null_ptid)
8504         finish_ptid = ptid_t (inferior_ptid.pid ());
8505     }
8506   else if (last.kind != TARGET_WAITKIND_NO_RESUMED)
8507     finish_ptid = inferior_ptid;
8508
8509   gdb::optional<scoped_finish_thread_state> maybe_finish_thread_state;
8510   if (finish_ptid != null_ptid)
8511     {
8512       maybe_finish_thread_state.emplace
8513         (user_visible_resume_target (finish_ptid), finish_ptid);
8514     }
8515
8516   /* As we're presenting a stop, and potentially removing breakpoints,
8517      update the thread list so we can tell whether there are threads
8518      running on the target.  With target remote, for example, we can
8519      only learn about new threads when we explicitly update the thread
8520      list.  Do this before notifying the interpreters about signal
8521      stops, end of stepping ranges, etc., so that the "new thread"
8522      output is emitted before e.g., "Program received signal FOO",
8523      instead of after.  */
8524   update_thread_list ();
8525
8526   if (last.kind == TARGET_WAITKIND_STOPPED && stopped_by_random_signal)
8527     gdb::observers::signal_received.notify (inferior_thread ()->suspend.stop_signal);
8528
8529   /* As with the notification of thread events, we want to delay
8530      notifying the user that we've switched thread context until
8531      the inferior actually stops.
8532
8533      There's no point in saying anything if the inferior has exited.
8534      Note that SIGNALLED here means "exited with a signal", not
8535      "received a signal".
8536
8537      Also skip saying anything in non-stop mode.  In that mode, as we
8538      don't want GDB to switch threads behind the user's back, to avoid
8539      races where the user is typing a command to apply to thread x,
8540      but GDB switches to thread y before the user finishes entering
8541      the command, fetch_inferior_event installs a cleanup to restore
8542      the current thread back to the thread the user had selected right
8543      after this event is handled, so we're not really switching, only
8544      informing of a stop.  */
8545   if (!non_stop
8546       && previous_inferior_ptid != inferior_ptid
8547       && target_has_execution ()
8548       && last.kind != TARGET_WAITKIND_SIGNALLED
8549       && last.kind != TARGET_WAITKIND_EXITED
8550       && last.kind != TARGET_WAITKIND_NO_RESUMED)
8551     {
8552       SWITCH_THRU_ALL_UIS ()
8553         {
8554           target_terminal::ours_for_output ();
8555           printf_filtered (_("[Switching to %s]\n"),
8556                            target_pid_to_str (inferior_ptid).c_str ());
8557           annotate_thread_changed ();
8558         }
8559       previous_inferior_ptid = inferior_ptid;
8560     }
8561
8562   if (last.kind == TARGET_WAITKIND_NO_RESUMED)
8563     {
8564       SWITCH_THRU_ALL_UIS ()
8565         if (current_ui->prompt_state == PROMPT_BLOCKED)
8566           {
8567             target_terminal::ours_for_output ();
8568             printf_filtered (_("No unwaited-for children left.\n"));
8569           }
8570     }
8571
8572   /* Note: this depends on the update_thread_list call above.  */
8573   maybe_remove_breakpoints ();
8574
8575   /* If an auto-display called a function and that got a signal,
8576      delete that auto-display to avoid an infinite recursion.  */
8577
8578   if (stopped_by_random_signal)
8579     disable_current_display ();
8580
8581   SWITCH_THRU_ALL_UIS ()
8582     {
8583       async_enable_stdin ();
8584     }
8585
8586   /* Let the user/frontend see the threads as stopped.  */
8587   maybe_finish_thread_state.reset ();
8588
8589   /* Select innermost stack frame - i.e., current frame is frame 0,
8590      and current location is based on that.  Handle the case where the
8591      dummy call is returning after being stopped.  E.g. the dummy call
8592      previously hit a breakpoint.  (If the dummy call returns
8593      normally, we won't reach here.)  Do this before the stop hook is
8594      run, so that it doesn't get to see the temporary dummy frame,
8595      which is not where we'll present the stop.  */
8596   if (has_stack_frames ())
8597     {
8598       if (stop_stack_dummy == STOP_STACK_DUMMY)
8599         {
8600           /* Pop the empty frame that contains the stack dummy.  This
8601              also restores inferior state prior to the call (struct
8602              infcall_suspend_state).  */
8603           struct frame_info *frame = get_current_frame ();
8604
8605           gdb_assert (get_frame_type (frame) == DUMMY_FRAME);
8606           frame_pop (frame);
8607           /* frame_pop calls reinit_frame_cache as the last thing it
8608              does which means there's now no selected frame.  */
8609         }
8610
8611       select_frame (get_current_frame ());
8612
8613       /* Set the current source location.  */
8614       set_current_sal_from_frame (get_current_frame ());
8615     }
8616
8617   /* Look up the hook_stop and run it (CLI internally handles problem
8618      of stop_command's pre-hook not existing).  */
8619   if (stop_command != NULL)
8620     {
8621       stop_context saved_context;
8622
8623       try
8624         {
8625           execute_cmd_pre_hook (stop_command);
8626         }
8627       catch (const gdb_exception &ex)
8628         {
8629           exception_fprintf (gdb_stderr, ex,
8630                              "Error while running hook_stop:\n");
8631         }
8632
8633       /* If the stop hook resumes the target, then there's no point in
8634          trying to notify about the previous stop; its context is
8635          gone.  Likewise if the command switches thread or inferior --
8636          the observers would print a stop for the wrong
8637          thread/inferior.  */
8638       if (saved_context.changed ())
8639         return 1;
8640     }
8641
8642   /* Notify observers about the stop.  This is where the interpreters
8643      print the stop event.  */
8644   if (inferior_ptid != null_ptid)
8645     gdb::observers::normal_stop.notify (inferior_thread ()->control.stop_bpstat,
8646                                         stop_print_frame);
8647   else
8648     gdb::observers::normal_stop.notify (NULL, stop_print_frame);
8649
8650   annotate_stopped ();
8651
8652   if (target_has_execution ())
8653     {
8654       if (last.kind != TARGET_WAITKIND_SIGNALLED
8655           && last.kind != TARGET_WAITKIND_EXITED
8656           && last.kind != TARGET_WAITKIND_NO_RESUMED)
8657         /* Delete the breakpoint we stopped at, if it wants to be deleted.
8658            Delete any breakpoint that is to be deleted at the next stop.  */
8659         breakpoint_auto_delete (inferior_thread ()->control.stop_bpstat);
8660     }
8661
8662   /* Try to get rid of automatically added inferiors that are no
8663      longer needed.  Keeping those around slows down things linearly.
8664      Note that this never removes the current inferior.  */
8665   prune_inferiors ();
8666
8667   return 0;
8668 }
8669 \f
8670 int
8671 signal_stop_state (int signo)
8672 {
8673   return signal_stop[signo];
8674 }
8675
8676 int
8677 signal_print_state (int signo)
8678 {
8679   return signal_print[signo];
8680 }
8681
8682 int
8683 signal_pass_state (int signo)
8684 {
8685   return signal_program[signo];
8686 }
8687
8688 static void
8689 signal_cache_update (int signo)
8690 {
8691   if (signo == -1)
8692     {
8693       for (signo = 0; signo < (int) GDB_SIGNAL_LAST; signo++)
8694         signal_cache_update (signo);
8695
8696       return;
8697     }
8698
8699   signal_pass[signo] = (signal_stop[signo] == 0
8700                         && signal_print[signo] == 0
8701                         && signal_program[signo] == 1
8702                         && signal_catch[signo] == 0);
8703 }
8704
8705 int
8706 signal_stop_update (int signo, int state)
8707 {
8708   int ret = signal_stop[signo];
8709
8710   signal_stop[signo] = state;
8711   signal_cache_update (signo);
8712   return ret;
8713 }
8714
8715 int
8716 signal_print_update (int signo, int state)
8717 {
8718   int ret = signal_print[signo];
8719
8720   signal_print[signo] = state;
8721   signal_cache_update (signo);
8722   return ret;
8723 }
8724
8725 int
8726 signal_pass_update (int signo, int state)
8727 {
8728   int ret = signal_program[signo];
8729
8730   signal_program[signo] = state;
8731   signal_cache_update (signo);
8732   return ret;
8733 }
8734
8735 /* Update the global 'signal_catch' from INFO and notify the
8736    target.  */
8737
8738 void
8739 signal_catch_update (const unsigned int *info)
8740 {
8741   int i;
8742
8743   for (i = 0; i < GDB_SIGNAL_LAST; ++i)
8744     signal_catch[i] = info[i] > 0;
8745   signal_cache_update (-1);
8746   target_pass_signals (signal_pass);
8747 }
8748
8749 static void
8750 sig_print_header (void)
8751 {
8752   printf_filtered (_("Signal        Stop\tPrint\tPass "
8753                      "to program\tDescription\n"));
8754 }
8755
8756 static void
8757 sig_print_info (enum gdb_signal oursig)
8758 {
8759   const char *name = gdb_signal_to_name (oursig);
8760   int name_padding = 13 - strlen (name);
8761
8762   if (name_padding <= 0)
8763     name_padding = 0;
8764
8765   printf_filtered ("%s", name);
8766   printf_filtered ("%*.*s ", name_padding, name_padding, "                 ");
8767   printf_filtered ("%s\t", signal_stop[oursig] ? "Yes" : "No");
8768   printf_filtered ("%s\t", signal_print[oursig] ? "Yes" : "No");
8769   printf_filtered ("%s\t\t", signal_program[oursig] ? "Yes" : "No");
8770   printf_filtered ("%s\n", gdb_signal_to_string (oursig));
8771 }
8772
8773 /* Specify how various signals in the inferior should be handled.  */
8774
8775 static void
8776 handle_command (const char *args, int from_tty)
8777 {
8778   int digits, wordlen;
8779   int sigfirst, siglast;
8780   enum gdb_signal oursig;
8781   int allsigs;
8782
8783   if (args == NULL)
8784     {
8785       error_no_arg (_("signal to handle"));
8786     }
8787
8788   /* Allocate and zero an array of flags for which signals to handle.  */
8789
8790   const size_t nsigs = GDB_SIGNAL_LAST;
8791   unsigned char sigs[nsigs] {};
8792
8793   /* Break the command line up into args.  */
8794
8795   gdb_argv built_argv (args);
8796
8797   /* Walk through the args, looking for signal oursigs, signal names, and
8798      actions.  Signal numbers and signal names may be interspersed with
8799      actions, with the actions being performed for all signals cumulatively
8800      specified.  Signal ranges can be specified as <LOW>-<HIGH>.  */
8801
8802   for (char *arg : built_argv)
8803     {
8804       wordlen = strlen (arg);
8805       for (digits = 0; isdigit (arg[digits]); digits++)
8806         {;
8807         }
8808       allsigs = 0;
8809       sigfirst = siglast = -1;
8810
8811       if (wordlen >= 1 && !strncmp (arg, "all", wordlen))
8812         {
8813           /* Apply action to all signals except those used by the
8814              debugger.  Silently skip those.  */
8815           allsigs = 1;
8816           sigfirst = 0;
8817           siglast = nsigs - 1;
8818         }
8819       else if (wordlen >= 1 && !strncmp (arg, "stop", wordlen))
8820         {
8821           SET_SIGS (nsigs, sigs, signal_stop);
8822           SET_SIGS (nsigs, sigs, signal_print);
8823         }
8824       else if (wordlen >= 1 && !strncmp (arg, "ignore", wordlen))
8825         {
8826           UNSET_SIGS (nsigs, sigs, signal_program);
8827         }
8828       else if (wordlen >= 2 && !strncmp (arg, "print", wordlen))
8829         {
8830           SET_SIGS (nsigs, sigs, signal_print);
8831         }
8832       else if (wordlen >= 2 && !strncmp (arg, "pass", wordlen))
8833         {
8834           SET_SIGS (nsigs, sigs, signal_program);
8835         }
8836       else if (wordlen >= 3 && !strncmp (arg, "nostop", wordlen))
8837         {
8838           UNSET_SIGS (nsigs, sigs, signal_stop);
8839         }
8840       else if (wordlen >= 3 && !strncmp (arg, "noignore", wordlen))
8841         {
8842           SET_SIGS (nsigs, sigs, signal_program);
8843         }
8844       else if (wordlen >= 4 && !strncmp (arg, "noprint", wordlen))
8845         {
8846           UNSET_SIGS (nsigs, sigs, signal_print);
8847           UNSET_SIGS (nsigs, sigs, signal_stop);
8848         }
8849       else if (wordlen >= 4 && !strncmp (arg, "nopass", wordlen))
8850         {
8851           UNSET_SIGS (nsigs, sigs, signal_program);
8852         }
8853       else if (digits > 0)
8854         {
8855           /* It is numeric.  The numeric signal refers to our own
8856              internal signal numbering from target.h, not to host/target
8857              signal  number.  This is a feature; users really should be
8858              using symbolic names anyway, and the common ones like
8859              SIGHUP, SIGINT, SIGALRM, etc. will work right anyway.  */
8860
8861           sigfirst = siglast = (int)
8862             gdb_signal_from_command (atoi (arg));
8863           if (arg[digits] == '-')
8864             {
8865               siglast = (int)
8866                 gdb_signal_from_command (atoi (arg + digits + 1));
8867             }
8868           if (sigfirst > siglast)
8869             {
8870               /* Bet he didn't figure we'd think of this case...  */
8871               std::swap (sigfirst, siglast);
8872             }
8873         }
8874       else
8875         {
8876           oursig = gdb_signal_from_name (arg);
8877           if (oursig != GDB_SIGNAL_UNKNOWN)
8878             {
8879               sigfirst = siglast = (int) oursig;
8880             }
8881           else
8882             {
8883               /* Not a number and not a recognized flag word => complain.  */
8884               error (_("Unrecognized or ambiguous flag word: \"%s\"."), arg);
8885             }
8886         }
8887
8888       /* If any signal numbers or symbol names were found, set flags for
8889          which signals to apply actions to.  */
8890
8891       for (int signum = sigfirst; signum >= 0 && signum <= siglast; signum++)
8892         {
8893           switch ((enum gdb_signal) signum)
8894             {
8895             case GDB_SIGNAL_TRAP:
8896             case GDB_SIGNAL_INT:
8897               if (!allsigs && !sigs[signum])
8898                 {
8899                   if (query (_("%s is used by the debugger.\n\
8900 Are you sure you want to change it? "),
8901                              gdb_signal_to_name ((enum gdb_signal) signum)))
8902                     {
8903                       sigs[signum] = 1;
8904                     }
8905                   else
8906                     printf_unfiltered (_("Not confirmed, unchanged.\n"));
8907                 }
8908               break;
8909             case GDB_SIGNAL_0:
8910             case GDB_SIGNAL_DEFAULT:
8911             case GDB_SIGNAL_UNKNOWN:
8912               /* Make sure that "all" doesn't print these.  */
8913               break;
8914             default:
8915               sigs[signum] = 1;
8916               break;
8917             }
8918         }
8919     }
8920
8921   for (int signum = 0; signum < nsigs; signum++)
8922     if (sigs[signum])
8923       {
8924         signal_cache_update (-1);
8925         target_pass_signals (signal_pass);
8926         target_program_signals (signal_program);
8927
8928         if (from_tty)
8929           {
8930             /* Show the results.  */
8931             sig_print_header ();
8932             for (; signum < nsigs; signum++)
8933               if (sigs[signum])
8934                 sig_print_info ((enum gdb_signal) signum);
8935           }
8936
8937         break;
8938       }
8939 }
8940
8941 /* Complete the "handle" command.  */
8942
8943 static void
8944 handle_completer (struct cmd_list_element *ignore,
8945                   completion_tracker &tracker,
8946                   const char *text, const char *word)
8947 {
8948   static const char * const keywords[] =
8949     {
8950       "all",
8951       "stop",
8952       "ignore",
8953       "print",
8954       "pass",
8955       "nostop",
8956       "noignore",
8957       "noprint",
8958       "nopass",
8959       NULL,
8960     };
8961
8962   signal_completer (ignore, tracker, text, word);
8963   complete_on_enum (tracker, keywords, word, word);
8964 }
8965
8966 enum gdb_signal
8967 gdb_signal_from_command (int num)
8968 {
8969   if (num >= 1 && num <= 15)
8970     return (enum gdb_signal) num;
8971   error (_("Only signals 1-15 are valid as numeric signals.\n\
8972 Use \"info signals\" for a list of symbolic signals."));
8973 }
8974
8975 /* Print current contents of the tables set by the handle command.
8976    It is possible we should just be printing signals actually used
8977    by the current target (but for things to work right when switching
8978    targets, all signals should be in the signal tables).  */
8979
8980 static void
8981 info_signals_command (const char *signum_exp, int from_tty)
8982 {
8983   enum gdb_signal oursig;
8984
8985   sig_print_header ();
8986
8987   if (signum_exp)
8988     {
8989       /* First see if this is a symbol name.  */
8990       oursig = gdb_signal_from_name (signum_exp);
8991       if (oursig == GDB_SIGNAL_UNKNOWN)
8992         {
8993           /* No, try numeric.  */
8994           oursig =
8995             gdb_signal_from_command (parse_and_eval_long (signum_exp));
8996         }
8997       sig_print_info (oursig);
8998       return;
8999     }
9000
9001   printf_filtered ("\n");
9002   /* These ugly casts brought to you by the native VAX compiler.  */
9003   for (oursig = GDB_SIGNAL_FIRST;
9004        (int) oursig < (int) GDB_SIGNAL_LAST;
9005        oursig = (enum gdb_signal) ((int) oursig + 1))
9006     {
9007       QUIT;
9008
9009       if (oursig != GDB_SIGNAL_UNKNOWN
9010           && oursig != GDB_SIGNAL_DEFAULT && oursig != GDB_SIGNAL_0)
9011         sig_print_info (oursig);
9012     }
9013
9014   printf_filtered (_("\nUse the \"handle\" command "
9015                      "to change these tables.\n"));
9016 }
9017
9018 /* The $_siginfo convenience variable is a bit special.  We don't know
9019    for sure the type of the value until we actually have a chance to
9020    fetch the data.  The type can change depending on gdbarch, so it is
9021    also dependent on which thread you have selected.
9022
9023      1. making $_siginfo be an internalvar that creates a new value on
9024      access.
9025
9026      2. making the value of $_siginfo be an lval_computed value.  */
9027
9028 /* This function implements the lval_computed support for reading a
9029    $_siginfo value.  */
9030
9031 static void
9032 siginfo_value_read (struct value *v)
9033 {
9034   LONGEST transferred;
9035
9036   /* If we can access registers, so can we access $_siginfo.  Likewise
9037      vice versa.  */
9038   validate_registers_access ();
9039
9040   transferred =
9041     target_read (current_inferior ()->top_target (),
9042                  TARGET_OBJECT_SIGNAL_INFO,
9043                  NULL,
9044                  value_contents_all_raw (v),
9045                  value_offset (v),
9046                  TYPE_LENGTH (value_type (v)));
9047
9048   if (transferred != TYPE_LENGTH (value_type (v)))
9049     error (_("Unable to read siginfo"));
9050 }
9051
9052 /* This function implements the lval_computed support for writing a
9053    $_siginfo value.  */
9054
9055 static void
9056 siginfo_value_write (struct value *v, struct value *fromval)
9057 {
9058   LONGEST transferred;
9059
9060   /* If we can access registers, so can we access $_siginfo.  Likewise
9061      vice versa.  */
9062   validate_registers_access ();
9063
9064   transferred = target_write (current_inferior ()->top_target (),
9065                               TARGET_OBJECT_SIGNAL_INFO,
9066                               NULL,
9067                               value_contents_all_raw (fromval),
9068                               value_offset (v),
9069                               TYPE_LENGTH (value_type (fromval)));
9070
9071   if (transferred != TYPE_LENGTH (value_type (fromval)))
9072     error (_("Unable to write siginfo"));
9073 }
9074
9075 static const struct lval_funcs siginfo_value_funcs =
9076   {
9077     siginfo_value_read,
9078     siginfo_value_write
9079   };
9080
9081 /* Return a new value with the correct type for the siginfo object of
9082    the current thread using architecture GDBARCH.  Return a void value
9083    if there's no object available.  */
9084
9085 static struct value *
9086 siginfo_make_value (struct gdbarch *gdbarch, struct internalvar *var,
9087                     void *ignore)
9088 {
9089   if (target_has_stack ()
9090       && inferior_ptid != null_ptid
9091       && gdbarch_get_siginfo_type_p (gdbarch))
9092     {
9093       struct type *type = gdbarch_get_siginfo_type (gdbarch);
9094
9095       return allocate_computed_value (type, &siginfo_value_funcs, NULL);
9096     }
9097
9098   return allocate_value (builtin_type (gdbarch)->builtin_void);
9099 }
9100
9101 \f
9102 /* infcall_suspend_state contains state about the program itself like its
9103    registers and any signal it received when it last stopped.
9104    This state must be restored regardless of how the inferior function call
9105    ends (either successfully, or after it hits a breakpoint or signal)
9106    if the program is to properly continue where it left off.  */
9107
9108 class infcall_suspend_state
9109 {
9110 public:
9111   /* Capture state from GDBARCH, TP, and REGCACHE that must be restored
9112      once the inferior function call has finished.  */
9113   infcall_suspend_state (struct gdbarch *gdbarch,
9114                          const struct thread_info *tp,
9115                          struct regcache *regcache)
9116     : m_thread_suspend (tp->suspend),
9117       m_registers (new readonly_detached_regcache (*regcache))
9118   {
9119     gdb::unique_xmalloc_ptr<gdb_byte> siginfo_data;
9120
9121     if (gdbarch_get_siginfo_type_p (gdbarch))
9122       {
9123         struct type *type = gdbarch_get_siginfo_type (gdbarch);
9124         size_t len = TYPE_LENGTH (type);
9125
9126         siginfo_data.reset ((gdb_byte *) xmalloc (len));
9127
9128         if (target_read (current_inferior ()->top_target (),
9129                          TARGET_OBJECT_SIGNAL_INFO, NULL,
9130                          siginfo_data.get (), 0, len) != len)
9131           {
9132             /* Errors ignored.  */
9133             siginfo_data.reset (nullptr);
9134           }
9135       }
9136
9137     if (siginfo_data)
9138       {
9139         m_siginfo_gdbarch = gdbarch;
9140         m_siginfo_data = std::move (siginfo_data);
9141       }
9142   }
9143
9144   /* Return a pointer to the stored register state.  */
9145
9146   readonly_detached_regcache *registers () const
9147   {
9148     return m_registers.get ();
9149   }
9150
9151   /* Restores the stored state into GDBARCH, TP, and REGCACHE.  */
9152
9153   void restore (struct gdbarch *gdbarch,
9154                 struct thread_info *tp,
9155                 struct regcache *regcache) const
9156   {
9157     tp->suspend = m_thread_suspend;
9158
9159     if (m_siginfo_gdbarch == gdbarch)
9160       {
9161         struct type *type = gdbarch_get_siginfo_type (gdbarch);
9162
9163         /* Errors ignored.  */
9164         target_write (current_inferior ()->top_target (),
9165                       TARGET_OBJECT_SIGNAL_INFO, NULL,
9166                       m_siginfo_data.get (), 0, TYPE_LENGTH (type));
9167       }
9168
9169     /* The inferior can be gone if the user types "print exit(0)"
9170        (and perhaps other times).  */
9171     if (target_has_execution ())
9172       /* NB: The register write goes through to the target.  */
9173       regcache->restore (registers ());
9174   }
9175
9176 private:
9177   /* How the current thread stopped before the inferior function call was
9178      executed.  */
9179   struct thread_suspend_state m_thread_suspend;
9180
9181   /* The registers before the inferior function call was executed.  */
9182   std::unique_ptr<readonly_detached_regcache> m_registers;
9183
9184   /* Format of SIGINFO_DATA or NULL if it is not present.  */
9185   struct gdbarch *m_siginfo_gdbarch = nullptr;
9186
9187   /* The inferior format depends on SIGINFO_GDBARCH and it has a length of
9188      TYPE_LENGTH (gdbarch_get_siginfo_type ()).  For different gdbarch the
9189      content would be invalid.  */
9190   gdb::unique_xmalloc_ptr<gdb_byte> m_siginfo_data;
9191 };
9192
9193 infcall_suspend_state_up
9194 save_infcall_suspend_state ()
9195 {
9196   struct thread_info *tp = inferior_thread ();
9197   struct regcache *regcache = get_current_regcache ();
9198   struct gdbarch *gdbarch = regcache->arch ();
9199
9200   infcall_suspend_state_up inf_state
9201     (new struct infcall_suspend_state (gdbarch, tp, regcache));
9202
9203   /* Having saved the current state, adjust the thread state, discarding
9204      any stop signal information.  The stop signal is not useful when
9205      starting an inferior function call, and run_inferior_call will not use
9206      the signal due to its `proceed' call with GDB_SIGNAL_0.  */
9207   tp->suspend.stop_signal = GDB_SIGNAL_0;
9208
9209   return inf_state;
9210 }
9211
9212 /* Restore inferior session state to INF_STATE.  */
9213
9214 void
9215 restore_infcall_suspend_state (struct infcall_suspend_state *inf_state)
9216 {
9217   struct thread_info *tp = inferior_thread ();
9218   struct regcache *regcache = get_current_regcache ();
9219   struct gdbarch *gdbarch = regcache->arch ();
9220
9221   inf_state->restore (gdbarch, tp, regcache);
9222   discard_infcall_suspend_state (inf_state);
9223 }
9224
9225 void
9226 discard_infcall_suspend_state (struct infcall_suspend_state *inf_state)
9227 {
9228   delete inf_state;
9229 }
9230
9231 readonly_detached_regcache *
9232 get_infcall_suspend_state_regcache (struct infcall_suspend_state *inf_state)
9233 {
9234   return inf_state->registers ();
9235 }
9236
9237 /* infcall_control_state contains state regarding gdb's control of the
9238    inferior itself like stepping control.  It also contains session state like
9239    the user's currently selected frame.  */
9240
9241 struct infcall_control_state
9242 {
9243   struct thread_control_state thread_control;
9244   struct inferior_control_state inferior_control;
9245
9246   /* Other fields:  */
9247   enum stop_stack_kind stop_stack_dummy = STOP_NONE;
9248   int stopped_by_random_signal = 0;
9249
9250   /* ID and level of the selected frame when the inferior function
9251      call was made.  */
9252   struct frame_id selected_frame_id {};
9253   int selected_frame_level = -1;
9254 };
9255
9256 /* Save all of the information associated with the inferior<==>gdb
9257    connection.  */
9258
9259 infcall_control_state_up
9260 save_infcall_control_state ()
9261 {
9262   infcall_control_state_up inf_status (new struct infcall_control_state);
9263   struct thread_info *tp = inferior_thread ();
9264   struct inferior *inf = current_inferior ();
9265
9266   inf_status->thread_control = tp->control;
9267   inf_status->inferior_control = inf->control;
9268
9269   tp->control.step_resume_breakpoint = NULL;
9270   tp->control.exception_resume_breakpoint = NULL;
9271
9272   /* Save original bpstat chain to INF_STATUS; replace it in TP with copy of
9273      chain.  If caller's caller is walking the chain, they'll be happier if we
9274      hand them back the original chain when restore_infcall_control_state is
9275      called.  */
9276   tp->control.stop_bpstat = bpstat_copy (tp->control.stop_bpstat);
9277
9278   /* Other fields:  */
9279   inf_status->stop_stack_dummy = stop_stack_dummy;
9280   inf_status->stopped_by_random_signal = stopped_by_random_signal;
9281
9282   save_selected_frame (&inf_status->selected_frame_id,
9283                        &inf_status->selected_frame_level);
9284
9285   return inf_status;
9286 }
9287
9288 /* Restore inferior session state to INF_STATUS.  */
9289
9290 void
9291 restore_infcall_control_state (struct infcall_control_state *inf_status)
9292 {
9293   struct thread_info *tp = inferior_thread ();
9294   struct inferior *inf = current_inferior ();
9295
9296   if (tp->control.step_resume_breakpoint)
9297     tp->control.step_resume_breakpoint->disposition = disp_del_at_next_stop;
9298
9299   if (tp->control.exception_resume_breakpoint)
9300     tp->control.exception_resume_breakpoint->disposition
9301       = disp_del_at_next_stop;
9302
9303   /* Handle the bpstat_copy of the chain.  */
9304   bpstat_clear (&tp->control.stop_bpstat);
9305
9306   tp->control = inf_status->thread_control;
9307   inf->control = inf_status->inferior_control;
9308
9309   /* Other fields:  */
9310   stop_stack_dummy = inf_status->stop_stack_dummy;
9311   stopped_by_random_signal = inf_status->stopped_by_random_signal;
9312
9313   if (target_has_stack ())
9314     {
9315       restore_selected_frame (inf_status->selected_frame_id,
9316                               inf_status->selected_frame_level);
9317     }
9318
9319   delete inf_status;
9320 }
9321
9322 void
9323 discard_infcall_control_state (struct infcall_control_state *inf_status)
9324 {
9325   if (inf_status->thread_control.step_resume_breakpoint)
9326     inf_status->thread_control.step_resume_breakpoint->disposition
9327       = disp_del_at_next_stop;
9328
9329   if (inf_status->thread_control.exception_resume_breakpoint)
9330     inf_status->thread_control.exception_resume_breakpoint->disposition
9331       = disp_del_at_next_stop;
9332
9333   /* See save_infcall_control_state for info on stop_bpstat.  */
9334   bpstat_clear (&inf_status->thread_control.stop_bpstat);
9335
9336   delete inf_status;
9337 }
9338 \f
9339 /* See infrun.h.  */
9340
9341 void
9342 clear_exit_convenience_vars (void)
9343 {
9344   clear_internalvar (lookup_internalvar ("_exitsignal"));
9345   clear_internalvar (lookup_internalvar ("_exitcode"));
9346 }
9347 \f
9348
9349 /* User interface for reverse debugging:
9350    Set exec-direction / show exec-direction commands
9351    (returns error unless target implements to_set_exec_direction method).  */
9352
9353 enum exec_direction_kind execution_direction = EXEC_FORWARD;
9354 static const char exec_forward[] = "forward";
9355 static const char exec_reverse[] = "reverse";
9356 static const char *exec_direction = exec_forward;
9357 static const char *const exec_direction_names[] = {
9358   exec_forward,
9359   exec_reverse,
9360   NULL
9361 };
9362
9363 static void
9364 set_exec_direction_func (const char *args, int from_tty,
9365                          struct cmd_list_element *cmd)
9366 {
9367   if (target_can_execute_reverse ())
9368     {
9369       if (!strcmp (exec_direction, exec_forward))
9370         execution_direction = EXEC_FORWARD;
9371       else if (!strcmp (exec_direction, exec_reverse))
9372         execution_direction = EXEC_REVERSE;
9373     }
9374   else
9375     {
9376       exec_direction = exec_forward;
9377       error (_("Target does not support this operation."));
9378     }
9379 }
9380
9381 static void
9382 show_exec_direction_func (struct ui_file *out, int from_tty,
9383                           struct cmd_list_element *cmd, const char *value)
9384 {
9385   switch (execution_direction) {
9386   case EXEC_FORWARD:
9387     fprintf_filtered (out, _("Forward.\n"));
9388     break;
9389   case EXEC_REVERSE:
9390     fprintf_filtered (out, _("Reverse.\n"));
9391     break;
9392   default:
9393     internal_error (__FILE__, __LINE__,
9394                     _("bogus execution_direction value: %d"),
9395                     (int) execution_direction);
9396   }
9397 }
9398
9399 static void
9400 show_schedule_multiple (struct ui_file *file, int from_tty,
9401                         struct cmd_list_element *c, const char *value)
9402 {
9403   fprintf_filtered (file, _("Resuming the execution of threads "
9404                             "of all processes is %s.\n"), value);
9405 }
9406
9407 /* Implementation of `siginfo' variable.  */
9408
9409 static const struct internalvar_funcs siginfo_funcs =
9410 {
9411   siginfo_make_value,
9412   NULL,
9413   NULL
9414 };
9415
9416 /* Callback for infrun's target events source.  This is marked when a
9417    thread has a pending status to process.  */
9418
9419 static void
9420 infrun_async_inferior_event_handler (gdb_client_data data)
9421 {
9422   clear_async_event_handler (infrun_async_inferior_event_token);
9423   inferior_event_handler (INF_REG_EVENT);
9424 }
9425
9426 #if GDB_SELF_TEST
9427 namespace selftests
9428 {
9429
9430 /* Verify that when two threads with the same ptid exist (from two different
9431    targets) and one of them changes ptid, we only update inferior_ptid if
9432    it is appropriate.  */
9433
9434 static void
9435 infrun_thread_ptid_changed ()
9436 {
9437   gdbarch *arch = current_inferior ()->gdbarch;
9438
9439   /* The thread which inferior_ptid represents changes ptid.  */
9440   {
9441     scoped_restore_current_pspace_and_thread restore;
9442
9443     scoped_mock_context<test_target_ops> target1 (arch);
9444     scoped_mock_context<test_target_ops> target2 (arch);
9445     target2.mock_inferior.next = &target1.mock_inferior;
9446
9447     ptid_t old_ptid (111, 222);
9448     ptid_t new_ptid (111, 333);
9449
9450     target1.mock_inferior.pid = old_ptid.pid ();
9451     target1.mock_thread.ptid = old_ptid;
9452     target2.mock_inferior.pid = old_ptid.pid ();
9453     target2.mock_thread.ptid = old_ptid;
9454
9455     auto restore_inferior_ptid = make_scoped_restore (&inferior_ptid, old_ptid);
9456     set_current_inferior (&target1.mock_inferior);
9457
9458     thread_change_ptid (&target1.mock_target, old_ptid, new_ptid);
9459
9460     gdb_assert (inferior_ptid == new_ptid);
9461   }
9462
9463   /* A thread with the same ptid as inferior_ptid, but from another target,
9464      changes ptid.  */
9465   {
9466     scoped_restore_current_pspace_and_thread restore;
9467
9468     scoped_mock_context<test_target_ops> target1 (arch);
9469     scoped_mock_context<test_target_ops> target2 (arch);
9470     target2.mock_inferior.next = &target1.mock_inferior;
9471
9472     ptid_t old_ptid (111, 222);
9473     ptid_t new_ptid (111, 333);
9474
9475     target1.mock_inferior.pid = old_ptid.pid ();
9476     target1.mock_thread.ptid = old_ptid;
9477     target2.mock_inferior.pid = old_ptid.pid ();
9478     target2.mock_thread.ptid = old_ptid;
9479
9480     auto restore_inferior_ptid = make_scoped_restore (&inferior_ptid, old_ptid);
9481     set_current_inferior (&target2.mock_inferior);
9482
9483     thread_change_ptid (&target1.mock_target, old_ptid, new_ptid);
9484
9485     gdb_assert (inferior_ptid == old_ptid);
9486   }
9487 }
9488
9489 } /* namespace selftests */
9490
9491 #endif /* GDB_SELF_TEST */
9492
9493 void _initialize_infrun ();
9494 void
9495 _initialize_infrun ()
9496 {
9497   struct cmd_list_element *c;
9498
9499   /* Register extra event sources in the event loop.  */
9500   infrun_async_inferior_event_token
9501     = create_async_event_handler (infrun_async_inferior_event_handler, NULL,
9502                                   "infrun");
9503
9504   add_info ("signals", info_signals_command, _("\
9505 What debugger does when program gets various signals.\n\
9506 Specify a signal as argument to print info on that signal only."));
9507   add_info_alias ("handle", "signals", 0);
9508
9509   c = add_com ("handle", class_run, handle_command, _("\
9510 Specify how to handle signals.\n\
9511 Usage: handle SIGNAL [ACTIONS]\n\
9512 Args are signals and actions to apply to those signals.\n\
9513 If no actions are specified, the current settings for the specified signals\n\
9514 will be displayed instead.\n\
9515 \n\
9516 Symbolic signals (e.g. SIGSEGV) are recommended but numeric signals\n\
9517 from 1-15 are allowed for compatibility with old versions of GDB.\n\
9518 Numeric ranges may be specified with the form LOW-HIGH (e.g. 1-5).\n\
9519 The special arg \"all\" is recognized to mean all signals except those\n\
9520 used by the debugger, typically SIGTRAP and SIGINT.\n\
9521 \n\
9522 Recognized actions include \"stop\", \"nostop\", \"print\", \"noprint\",\n\
9523 \"pass\", \"nopass\", \"ignore\", or \"noignore\".\n\
9524 Stop means reenter debugger if this signal happens (implies print).\n\
9525 Print means print a message if this signal happens.\n\
9526 Pass means let program see this signal; otherwise program doesn't know.\n\
9527 Ignore is a synonym for nopass and noignore is a synonym for pass.\n\
9528 Pass and Stop may be combined.\n\
9529 \n\
9530 Multiple signals may be specified.  Signal numbers and signal names\n\
9531 may be interspersed with actions, with the actions being performed for\n\
9532 all signals cumulatively specified."));
9533   set_cmd_completer (c, handle_completer);
9534
9535   if (!dbx_commands)
9536     stop_command = add_cmd ("stop", class_obscure,
9537                             not_just_help_class_command, _("\
9538 There is no `stop' command, but you can set a hook on `stop'.\n\
9539 This allows you to set a list of commands to be run each time execution\n\
9540 of the program stops."), &cmdlist);
9541
9542   add_setshow_boolean_cmd
9543     ("infrun", class_maintenance, &debug_infrun,
9544      _("Set inferior debugging."),
9545      _("Show inferior debugging."),
9546      _("When non-zero, inferior specific debugging is enabled."),
9547      NULL, show_debug_infrun, &setdebuglist, &showdebuglist);
9548
9549   add_setshow_boolean_cmd ("non-stop", no_class,
9550                            &non_stop_1, _("\
9551 Set whether gdb controls the inferior in non-stop mode."), _("\
9552 Show whether gdb controls the inferior in non-stop mode."), _("\
9553 When debugging a multi-threaded program and this setting is\n\
9554 off (the default, also called all-stop mode), when one thread stops\n\
9555 (for a breakpoint, watchpoint, exception, or similar events), GDB stops\n\
9556 all other threads in the program while you interact with the thread of\n\
9557 interest.  When you continue or step a thread, you can allow the other\n\
9558 threads to run, or have them remain stopped, but while you inspect any\n\
9559 thread's state, all threads stop.\n\
9560 \n\
9561 In non-stop mode, when one thread stops, other threads can continue\n\
9562 to run freely.  You'll be able to step each thread independently,\n\
9563 leave it stopped or free to run as needed."),
9564                            set_non_stop,
9565                            show_non_stop,
9566                            &setlist,
9567                            &showlist);
9568
9569   for (size_t i = 0; i < GDB_SIGNAL_LAST; i++)
9570     {
9571       signal_stop[i] = 1;
9572       signal_print[i] = 1;
9573       signal_program[i] = 1;
9574       signal_catch[i] = 0;
9575     }
9576
9577   /* Signals caused by debugger's own actions should not be given to
9578      the program afterwards.
9579
9580      Do not deliver GDB_SIGNAL_TRAP by default, except when the user
9581      explicitly specifies that it should be delivered to the target
9582      program.  Typically, that would occur when a user is debugging a
9583      target monitor on a simulator: the target monitor sets a
9584      breakpoint; the simulator encounters this breakpoint and halts
9585      the simulation handing control to GDB; GDB, noting that the stop
9586      address doesn't map to any known breakpoint, returns control back
9587      to the simulator; the simulator then delivers the hardware
9588      equivalent of a GDB_SIGNAL_TRAP to the program being
9589      debugged.  */
9590   signal_program[GDB_SIGNAL_TRAP] = 0;
9591   signal_program[GDB_SIGNAL_INT] = 0;
9592
9593   /* Signals that are not errors should not normally enter the debugger.  */
9594   signal_stop[GDB_SIGNAL_ALRM] = 0;
9595   signal_print[GDB_SIGNAL_ALRM] = 0;
9596   signal_stop[GDB_SIGNAL_VTALRM] = 0;
9597   signal_print[GDB_SIGNAL_VTALRM] = 0;
9598   signal_stop[GDB_SIGNAL_PROF] = 0;
9599   signal_print[GDB_SIGNAL_PROF] = 0;
9600   signal_stop[GDB_SIGNAL_CHLD] = 0;
9601   signal_print[GDB_SIGNAL_CHLD] = 0;
9602   signal_stop[GDB_SIGNAL_IO] = 0;
9603   signal_print[GDB_SIGNAL_IO] = 0;
9604   signal_stop[GDB_SIGNAL_POLL] = 0;
9605   signal_print[GDB_SIGNAL_POLL] = 0;
9606   signal_stop[GDB_SIGNAL_URG] = 0;
9607   signal_print[GDB_SIGNAL_URG] = 0;
9608   signal_stop[GDB_SIGNAL_WINCH] = 0;
9609   signal_print[GDB_SIGNAL_WINCH] = 0;
9610   signal_stop[GDB_SIGNAL_PRIO] = 0;
9611   signal_print[GDB_SIGNAL_PRIO] = 0;
9612
9613   /* These signals are used internally by user-level thread
9614      implementations.  (See signal(5) on Solaris.)  Like the above
9615      signals, a healthy program receives and handles them as part of
9616      its normal operation.  */
9617   signal_stop[GDB_SIGNAL_LWP] = 0;
9618   signal_print[GDB_SIGNAL_LWP] = 0;
9619   signal_stop[GDB_SIGNAL_WAITING] = 0;
9620   signal_print[GDB_SIGNAL_WAITING] = 0;
9621   signal_stop[GDB_SIGNAL_CANCEL] = 0;
9622   signal_print[GDB_SIGNAL_CANCEL] = 0;
9623   signal_stop[GDB_SIGNAL_LIBRT] = 0;
9624   signal_print[GDB_SIGNAL_LIBRT] = 0;
9625
9626   /* Update cached state.  */
9627   signal_cache_update (-1);
9628
9629   add_setshow_zinteger_cmd ("stop-on-solib-events", class_support,
9630                             &stop_on_solib_events, _("\
9631 Set stopping for shared library events."), _("\
9632 Show stopping for shared library events."), _("\
9633 If nonzero, gdb will give control to the user when the dynamic linker\n\
9634 notifies gdb of shared library events.  The most common event of interest\n\
9635 to the user would be loading/unloading of a new library."),
9636                             set_stop_on_solib_events,
9637                             show_stop_on_solib_events,
9638                             &setlist, &showlist);
9639
9640   add_setshow_enum_cmd ("follow-fork-mode", class_run,
9641                         follow_fork_mode_kind_names,
9642                         &follow_fork_mode_string, _("\
9643 Set debugger response to a program call of fork or vfork."), _("\
9644 Show debugger response to a program call of fork or vfork."), _("\
9645 A fork or vfork creates a new process.  follow-fork-mode can be:\n\
9646   parent  - the original process is debugged after a fork\n\
9647   child   - the new process is debugged after a fork\n\
9648 The unfollowed process will continue to run.\n\
9649 By default, the debugger will follow the parent process."),
9650                         NULL,
9651                         show_follow_fork_mode_string,
9652                         &setlist, &showlist);
9653
9654   add_setshow_enum_cmd ("follow-exec-mode", class_run,
9655                         follow_exec_mode_names,
9656                         &follow_exec_mode_string, _("\
9657 Set debugger response to a program call of exec."), _("\
9658 Show debugger response to a program call of exec."), _("\
9659 An exec call replaces the program image of a process.\n\
9660 \n\
9661 follow-exec-mode can be:\n\
9662 \n\
9663   new - the debugger creates a new inferior and rebinds the process\n\
9664 to this new inferior.  The program the process was running before\n\
9665 the exec call can be restarted afterwards by restarting the original\n\
9666 inferior.\n\
9667 \n\
9668   same - the debugger keeps the process bound to the same inferior.\n\
9669 The new executable image replaces the previous executable loaded in\n\
9670 the inferior.  Restarting the inferior after the exec call restarts\n\
9671 the executable the process was running after the exec call.\n\
9672 \n\
9673 By default, the debugger will use the same inferior."),
9674                         NULL,
9675                         show_follow_exec_mode_string,
9676                         &setlist, &showlist);
9677
9678   add_setshow_enum_cmd ("scheduler-locking", class_run, 
9679                         scheduler_enums, &scheduler_mode, _("\
9680 Set mode for locking scheduler during execution."), _("\
9681 Show mode for locking scheduler during execution."), _("\
9682 off    == no locking (threads may preempt at any time)\n\
9683 on     == full locking (no thread except the current thread may run)\n\
9684           This applies to both normal execution and replay mode.\n\
9685 step   == scheduler locked during stepping commands (step, next, stepi, nexti).\n\
9686           In this mode, other threads may run during other commands.\n\
9687           This applies to both normal execution and replay mode.\n\
9688 replay == scheduler locked in replay mode and unlocked during normal execution."),
9689                         set_schedlock_func,     /* traps on target vector */
9690                         show_scheduler_mode,
9691                         &setlist, &showlist);
9692
9693   add_setshow_boolean_cmd ("schedule-multiple", class_run, &sched_multi, _("\
9694 Set mode for resuming threads of all processes."), _("\
9695 Show mode for resuming threads of all processes."), _("\
9696 When on, execution commands (such as 'continue' or 'next') resume all\n\
9697 threads of all processes.  When off (which is the default), execution\n\
9698 commands only resume the threads of the current process.  The set of\n\
9699 threads that are resumed is further refined by the scheduler-locking\n\
9700 mode (see help set scheduler-locking)."),
9701                            NULL,
9702                            show_schedule_multiple,
9703                            &setlist, &showlist);
9704
9705   add_setshow_boolean_cmd ("step-mode", class_run, &step_stop_if_no_debug, _("\
9706 Set mode of the step operation."), _("\
9707 Show mode of the step operation."), _("\
9708 When set, doing a step over a function without debug line information\n\
9709 will stop at the first instruction of that function. Otherwise, the\n\
9710 function is skipped and the step command stops at a different source line."),
9711                            NULL,
9712                            show_step_stop_if_no_debug,
9713                            &setlist, &showlist);
9714
9715   add_setshow_auto_boolean_cmd ("displaced-stepping", class_run,
9716                                 &can_use_displaced_stepping, _("\
9717 Set debugger's willingness to use displaced stepping."), _("\
9718 Show debugger's willingness to use displaced stepping."), _("\
9719 If on, gdb will use displaced stepping to step over breakpoints if it is\n\
9720 supported by the target architecture.  If off, gdb will not use displaced\n\
9721 stepping to step over breakpoints, even if such is supported by the target\n\
9722 architecture.  If auto (which is the default), gdb will use displaced stepping\n\
9723 if the target architecture supports it and non-stop mode is active, but will not\n\
9724 use it in all-stop mode (see help set non-stop)."),
9725                                 NULL,
9726                                 show_can_use_displaced_stepping,
9727                                 &setlist, &showlist);
9728
9729   add_setshow_enum_cmd ("exec-direction", class_run, exec_direction_names,
9730                         &exec_direction, _("Set direction of execution.\n\
9731 Options are 'forward' or 'reverse'."),
9732                         _("Show direction of execution (forward/reverse)."),
9733                         _("Tells gdb whether to execute forward or backward."),
9734                         set_exec_direction_func, show_exec_direction_func,
9735                         &setlist, &showlist);
9736
9737   /* Set/show detach-on-fork: user-settable mode.  */
9738
9739   add_setshow_boolean_cmd ("detach-on-fork", class_run, &detach_fork, _("\
9740 Set whether gdb will detach the child of a fork."), _("\
9741 Show whether gdb will detach the child of a fork."), _("\
9742 Tells gdb whether to detach the child of a fork."),
9743                            NULL, NULL, &setlist, &showlist);
9744
9745   /* Set/show disable address space randomization mode.  */
9746
9747   add_setshow_boolean_cmd ("disable-randomization", class_support,
9748                            &disable_randomization, _("\
9749 Set disabling of debuggee's virtual address space randomization."), _("\
9750 Show disabling of debuggee's virtual address space randomization."), _("\
9751 When this mode is on (which is the default), randomization of the virtual\n\
9752 address space is disabled.  Standalone programs run with the randomization\n\
9753 enabled by default on some platforms."),
9754                            &set_disable_randomization,
9755                            &show_disable_randomization,
9756                            &setlist, &showlist);
9757
9758   /* ptid initializations */
9759   inferior_ptid = null_ptid;
9760   target_last_wait_ptid = minus_one_ptid;
9761
9762   gdb::observers::thread_ptid_changed.attach (infrun_thread_ptid_changed);
9763   gdb::observers::thread_stop_requested.attach (infrun_thread_stop_requested);
9764   gdb::observers::thread_exit.attach (infrun_thread_thread_exit);
9765   gdb::observers::inferior_exit.attach (infrun_inferior_exit);
9766   gdb::observers::inferior_execd.attach (infrun_inferior_execd);
9767
9768   /* Explicitly create without lookup, since that tries to create a
9769      value with a void typed value, and when we get here, gdbarch
9770      isn't initialized yet.  At this point, we're quite sure there
9771      isn't another convenience variable of the same name.  */
9772   create_internalvar_type_lazy ("_siginfo", &siginfo_funcs, NULL);
9773
9774   add_setshow_boolean_cmd ("observer", no_class,
9775                            &observer_mode_1, _("\
9776 Set whether gdb controls the inferior in observer mode."), _("\
9777 Show whether gdb controls the inferior in observer mode."), _("\
9778 In observer mode, GDB can get data from the inferior, but not\n\
9779 affect its execution.  Registers and memory may not be changed,\n\
9780 breakpoints may not be set, and the program cannot be interrupted\n\
9781 or signalled."),
9782                            set_observer_mode,
9783                            show_observer_mode,
9784                            &setlist,
9785                            &showlist);
9786
9787 #if GDB_SELF_TEST
9788   selftests::register_test ("infrun_thread_ptid_changed",
9789                             selftests::infrun_thread_ptid_changed);
9790 #endif
9791 }
This page took 0.594239 seconds and 4 git commands to generate.