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