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