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