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