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