8616f99bd46619dd4f9f811eedd1ce6dd794dc32
[platform/upstream/binutils.git] / gdb / infrun.c
1 /* Target-struct-independent code to start (run) and stop an inferior
2    process.
3
4    Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
5    1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
6    2008, 2009, 2010, 2011 Free Software Foundation, Inc.
7
8    This file is part of GDB.
9
10    This program is free software; you can redistribute it and/or modify
11    it under the terms of the GNU General Public License as published by
12    the Free Software Foundation; either version 3 of the License, or
13    (at your option) any later version.
14
15    This program is distributed in the hope that it will be useful,
16    but WITHOUT ANY WARRANTY; without even the implied warranty of
17    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18    GNU General Public License for more details.
19
20    You should have received a copy of the GNU General Public License
21    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
22
23 #include "defs.h"
24 #include "gdb_string.h"
25 #include <ctype.h>
26 #include "symtab.h"
27 #include "frame.h"
28 #include "inferior.h"
29 #include "exceptions.h"
30 #include "breakpoint.h"
31 #include "gdb_wait.h"
32 #include "gdbcore.h"
33 #include "gdbcmd.h"
34 #include "cli/cli-script.h"
35 #include "target.h"
36 #include "gdbthread.h"
37 #include "annotate.h"
38 #include "symfile.h"
39 #include "top.h"
40 #include <signal.h>
41 #include "inf-loop.h"
42 #include "regcache.h"
43 #include "value.h"
44 #include "observer.h"
45 #include "language.h"
46 #include "solib.h"
47 #include "main.h"
48 #include "dictionary.h"
49 #include "block.h"
50 #include "gdb_assert.h"
51 #include "mi/mi-common.h"
52 #include "event-top.h"
53 #include "record.h"
54 #include "inline-frame.h"
55 #include "jit.h"
56 #include "tracepoint.h"
57 #include "continuations.h"
58
59 /* Prototypes for local functions */
60
61 static void signals_info (char *, int);
62
63 static void handle_command (char *, int);
64
65 static void sig_print_info (enum target_signal);
66
67 static void sig_print_header (void);
68
69 static void resume_cleanups (void *);
70
71 static int hook_stop_stub (void *);
72
73 static int restore_selected_frame (void *);
74
75 static int follow_fork (void);
76
77 static void set_schedlock_func (char *args, int from_tty,
78                                 struct cmd_list_element *c);
79
80 static int currently_stepping (struct thread_info *tp);
81
82 static int currently_stepping_or_nexting_callback (struct thread_info *tp,
83                                                    void *data);
84
85 static void xdb_handle_command (char *args, int from_tty);
86
87 static int prepare_to_proceed (int);
88
89 static void print_exited_reason (int exitstatus);
90
91 static void print_signal_exited_reason (enum target_signal siggnal);
92
93 static void print_no_history_reason (void);
94
95 static void print_signal_received_reason (enum target_signal siggnal);
96
97 static void print_end_stepping_range_reason (void);
98
99 void _initialize_infrun (void);
100
101 void nullify_last_target_wait_ptid (void);
102
103 static void insert_hp_step_resume_breakpoint_at_frame (struct frame_info *);
104
105 static void insert_step_resume_breakpoint_at_caller (struct frame_info *);
106
107 static void insert_longjmp_resume_breakpoint (struct gdbarch *, CORE_ADDR);
108
109 /* When set, stop the 'step' command if we enter a function which has
110    no line number information.  The normal behavior is that we step
111    over such function.  */
112 int step_stop_if_no_debug = 0;
113 static void
114 show_step_stop_if_no_debug (struct ui_file *file, int from_tty,
115                             struct cmd_list_element *c, const char *value)
116 {
117   fprintf_filtered (file, _("Mode of the step operation is %s.\n"), value);
118 }
119
120 /* In asynchronous mode, but simulating synchronous execution.  */
121
122 int sync_execution = 0;
123
124 /* wait_for_inferior and normal_stop use this to notify the user
125    when the inferior stopped in a different thread than it had been
126    running in.  */
127
128 static ptid_t previous_inferior_ptid;
129
130 /* Default behavior is to detach newly forked processes (legacy).  */
131 int detach_fork = 1;
132
133 int debug_displaced = 0;
134 static void
135 show_debug_displaced (struct ui_file *file, int from_tty,
136                       struct cmd_list_element *c, const char *value)
137 {
138   fprintf_filtered (file, _("Displace stepping debugging is %s.\n"), value);
139 }
140
141 int debug_infrun = 0;
142 static void
143 show_debug_infrun (struct ui_file *file, int from_tty,
144                    struct cmd_list_element *c, const char *value)
145 {
146   fprintf_filtered (file, _("Inferior debugging is %s.\n"), value);
147 }
148
149 /* If the program uses ELF-style shared libraries, then calls to
150    functions in shared libraries go through stubs, which live in a
151    table called the PLT (Procedure Linkage Table).  The first time the
152    function is called, the stub sends control to the dynamic linker,
153    which looks up the function's real address, patches the stub so
154    that future calls will go directly to the function, and then passes
155    control to the function.
156
157    If we are stepping at the source level, we don't want to see any of
158    this --- we just want to skip over the stub and the dynamic linker.
159    The simple approach is to single-step until control leaves the
160    dynamic linker.
161
162    However, on some systems (e.g., Red Hat's 5.2 distribution) the
163    dynamic linker calls functions in the shared C library, so you
164    can't tell from the PC alone whether the dynamic linker is still
165    running.  In this case, we use a step-resume breakpoint to get us
166    past the dynamic linker, as if we were using "next" to step over a
167    function call.
168
169    in_solib_dynsym_resolve_code() says whether we're in the dynamic
170    linker code or not.  Normally, this means we single-step.  However,
171    if SKIP_SOLIB_RESOLVER then returns non-zero, then its value is an
172    address where we can place a step-resume breakpoint to get past the
173    linker's symbol resolution function.
174
175    in_solib_dynsym_resolve_code() can generally be implemented in a
176    pretty portable way, by comparing the PC against the address ranges
177    of the dynamic linker's sections.
178
179    SKIP_SOLIB_RESOLVER is generally going to be system-specific, since
180    it depends on internal details of the dynamic linker.  It's usually
181    not too hard to figure out where to put a breakpoint, but it
182    certainly isn't portable.  SKIP_SOLIB_RESOLVER should do plenty of
183    sanity checking.  If it can't figure things out, returning zero and
184    getting the (possibly confusing) stepping behavior is better than
185    signalling an error, which will obscure the change in the
186    inferior's state.  */
187
188 /* This function returns TRUE if pc is the address of an instruction
189    that lies within the dynamic linker (such as the event hook, or the
190    dld itself).
191
192    This function must be used only when a dynamic linker event has
193    been caught, and the inferior is being stepped out of the hook, or
194    undefined results are guaranteed.  */
195
196 #ifndef SOLIB_IN_DYNAMIC_LINKER
197 #define SOLIB_IN_DYNAMIC_LINKER(pid,pc) 0
198 #endif
199
200 /* "Observer mode" is somewhat like a more extreme version of
201    non-stop, in which all GDB operations that might affect the
202    target's execution have been disabled.  */
203
204 static int non_stop_1 = 0;
205
206 int observer_mode = 0;
207 static int observer_mode_1 = 0;
208
209 static void
210 set_observer_mode (char *args, int from_tty,
211                    struct cmd_list_element *c)
212 {
213   extern int pagination_enabled;
214
215   if (target_has_execution)
216     {
217       observer_mode_1 = observer_mode;
218       error (_("Cannot change this setting while the inferior is running."));
219     }
220
221   observer_mode = observer_mode_1;
222
223   may_write_registers = !observer_mode;
224   may_write_memory = !observer_mode;
225   may_insert_breakpoints = !observer_mode;
226   may_insert_tracepoints = !observer_mode;
227   /* We can insert fast tracepoints in or out of observer mode,
228      but enable them if we're going into this mode.  */
229   if (observer_mode)
230     may_insert_fast_tracepoints = 1;
231   may_stop = !observer_mode;
232   update_target_permissions ();
233
234   /* Going *into* observer mode we must force non-stop, then
235      going out we leave it that way.  */
236   if (observer_mode)
237     {
238       target_async_permitted = 1;
239       pagination_enabled = 0;
240       non_stop = non_stop_1 = 1;
241     }
242
243   if (from_tty)
244     printf_filtered (_("Observer mode is now %s.\n"),
245                      (observer_mode ? "on" : "off"));
246 }
247
248 static void
249 show_observer_mode (struct ui_file *file, int from_tty,
250                     struct cmd_list_element *c, const char *value)
251 {
252   fprintf_filtered (file, _("Observer mode is %s.\n"), value);
253 }
254
255 /* This updates the value of observer mode based on changes in
256    permissions.  Note that we are deliberately ignoring the values of
257    may-write-registers and may-write-memory, since the user may have
258    reason to enable these during a session, for instance to turn on a
259    debugging-related global.  */
260
261 void
262 update_observer_mode (void)
263 {
264   int newval;
265
266   newval = (!may_insert_breakpoints
267             && !may_insert_tracepoints
268             && may_insert_fast_tracepoints
269             && !may_stop
270             && non_stop);
271
272   /* Let the user know if things change.  */
273   if (newval != observer_mode)
274     printf_filtered (_("Observer mode is now %s.\n"),
275                      (newval ? "on" : "off"));
276
277   observer_mode = observer_mode_1 = newval;
278 }
279
280 /* Tables of how to react to signals; the user sets them.  */
281
282 static unsigned char *signal_stop;
283 static unsigned char *signal_print;
284 static unsigned char *signal_program;
285
286 /* Table of signals that the target may silently handle.
287    This is automatically determined from the flags above,
288    and simply cached here.  */
289 static unsigned char *signal_pass;
290
291 #define SET_SIGS(nsigs,sigs,flags) \
292   do { \
293     int signum = (nsigs); \
294     while (signum-- > 0) \
295       if ((sigs)[signum]) \
296         (flags)[signum] = 1; \
297   } while (0)
298
299 #define UNSET_SIGS(nsigs,sigs,flags) \
300   do { \
301     int signum = (nsigs); \
302     while (signum-- > 0) \
303       if ((sigs)[signum]) \
304         (flags)[signum] = 0; \
305   } while (0)
306
307 /* Value to pass to target_resume() to cause all threads to resume.  */
308
309 #define RESUME_ALL minus_one_ptid
310
311 /* Command list pointer for the "stop" placeholder.  */
312
313 static struct cmd_list_element *stop_command;
314
315 /* Function inferior was in as of last step command.  */
316
317 static struct symbol *step_start_function;
318
319 /* Nonzero if we want to give control to the user when we're notified
320    of shared library events by the dynamic linker.  */
321 int stop_on_solib_events;
322 static void
323 show_stop_on_solib_events (struct ui_file *file, int from_tty,
324                            struct cmd_list_element *c, const char *value)
325 {
326   fprintf_filtered (file, _("Stopping for shared library events is %s.\n"),
327                     value);
328 }
329
330 /* Nonzero means expecting a trace trap
331    and should stop the inferior and return silently when it happens.  */
332
333 int stop_after_trap;
334
335 /* Save register contents here when executing a "finish" command or are
336    about to pop a stack dummy frame, if-and-only-if proceed_to_finish is set.
337    Thus this contains the return value from the called function (assuming
338    values are returned in a register).  */
339
340 struct regcache *stop_registers;
341
342 /* Nonzero after stop if current stack frame should be printed.  */
343
344 static int stop_print_frame;
345
346 /* This is a cached copy of the pid/waitstatus of the last event
347    returned by target_wait()/deprecated_target_wait_hook().  This
348    information is returned by get_last_target_status().  */
349 static ptid_t target_last_wait_ptid;
350 static struct target_waitstatus target_last_waitstatus;
351
352 static void context_switch (ptid_t ptid);
353
354 void init_thread_stepping_state (struct thread_info *tss);
355
356 void init_infwait_state (void);
357
358 static const char follow_fork_mode_child[] = "child";
359 static const char follow_fork_mode_parent[] = "parent";
360
361 static const char *follow_fork_mode_kind_names[] = {
362   follow_fork_mode_child,
363   follow_fork_mode_parent,
364   NULL
365 };
366
367 static const char *follow_fork_mode_string = follow_fork_mode_parent;
368 static void
369 show_follow_fork_mode_string (struct ui_file *file, int from_tty,
370                               struct cmd_list_element *c, const char *value)
371 {
372   fprintf_filtered (file,
373                     _("Debugger response to a program "
374                       "call of fork or vfork is \"%s\".\n"),
375                     value);
376 }
377 \f
378
379 /* Tell the target to follow the fork we're stopped at.  Returns true
380    if the inferior should be resumed; false, if the target for some
381    reason decided it's best not to resume.  */
382
383 static int
384 follow_fork (void)
385 {
386   int follow_child = (follow_fork_mode_string == follow_fork_mode_child);
387   int should_resume = 1;
388   struct thread_info *tp;
389
390   /* Copy user stepping state to the new inferior thread.  FIXME: the
391      followed fork child thread should have a copy of most of the
392      parent thread structure's run control related fields, not just these.
393      Initialized to avoid "may be used uninitialized" warnings from gcc.  */
394   struct breakpoint *step_resume_breakpoint = NULL;
395   struct breakpoint *exception_resume_breakpoint = NULL;
396   CORE_ADDR step_range_start = 0;
397   CORE_ADDR step_range_end = 0;
398   struct frame_id step_frame_id = { 0 };
399
400   if (!non_stop)
401     {
402       ptid_t wait_ptid;
403       struct target_waitstatus wait_status;
404
405       /* Get the last target status returned by target_wait().  */
406       get_last_target_status (&wait_ptid, &wait_status);
407
408       /* If not stopped at a fork event, then there's nothing else to
409          do.  */
410       if (wait_status.kind != TARGET_WAITKIND_FORKED
411           && wait_status.kind != TARGET_WAITKIND_VFORKED)
412         return 1;
413
414       /* Check if we switched over from WAIT_PTID, since the event was
415          reported.  */
416       if (!ptid_equal (wait_ptid, minus_one_ptid)
417           && !ptid_equal (inferior_ptid, wait_ptid))
418         {
419           /* We did.  Switch back to WAIT_PTID thread, to tell the
420              target to follow it (in either direction).  We'll
421              afterwards refuse to resume, and inform the user what
422              happened.  */
423           switch_to_thread (wait_ptid);
424           should_resume = 0;
425         }
426     }
427
428   tp = inferior_thread ();
429
430   /* If there were any forks/vforks that were caught and are now to be
431      followed, then do so now.  */
432   switch (tp->pending_follow.kind)
433     {
434     case TARGET_WAITKIND_FORKED:
435     case TARGET_WAITKIND_VFORKED:
436       {
437         ptid_t parent, child;
438
439         /* If the user did a next/step, etc, over a fork call,
440            preserve the stepping state in the fork child.  */
441         if (follow_child && should_resume)
442           {
443             step_resume_breakpoint = clone_momentary_breakpoint
444                                          (tp->control.step_resume_breakpoint);
445             step_range_start = tp->control.step_range_start;
446             step_range_end = tp->control.step_range_end;
447             step_frame_id = tp->control.step_frame_id;
448             exception_resume_breakpoint
449               = clone_momentary_breakpoint (tp->control.exception_resume_breakpoint);
450
451             /* For now, delete the parent's sr breakpoint, otherwise,
452                parent/child sr breakpoints are considered duplicates,
453                and the child version will not be installed.  Remove
454                this when the breakpoints module becomes aware of
455                inferiors and address spaces.  */
456             delete_step_resume_breakpoint (tp);
457             tp->control.step_range_start = 0;
458             tp->control.step_range_end = 0;
459             tp->control.step_frame_id = null_frame_id;
460             delete_exception_resume_breakpoint (tp);
461           }
462
463         parent = inferior_ptid;
464         child = tp->pending_follow.value.related_pid;
465
466         /* Tell the target to do whatever is necessary to follow
467            either parent or child.  */
468         if (target_follow_fork (follow_child))
469           {
470             /* Target refused to follow, or there's some other reason
471                we shouldn't resume.  */
472             should_resume = 0;
473           }
474         else
475           {
476             /* This pending follow fork event is now handled, one way
477                or another.  The previous selected thread may be gone
478                from the lists by now, but if it is still around, need
479                to clear the pending follow request.  */
480             tp = find_thread_ptid (parent);
481             if (tp)
482               tp->pending_follow.kind = TARGET_WAITKIND_SPURIOUS;
483
484             /* This makes sure we don't try to apply the "Switched
485                over from WAIT_PID" logic above.  */
486             nullify_last_target_wait_ptid ();
487
488             /* If we followed the child, switch to it...  */
489             if (follow_child)
490               {
491                 switch_to_thread (child);
492
493                 /* ... and preserve the stepping state, in case the
494                    user was stepping over the fork call.  */
495                 if (should_resume)
496                   {
497                     tp = inferior_thread ();
498                     tp->control.step_resume_breakpoint
499                       = step_resume_breakpoint;
500                     tp->control.step_range_start = step_range_start;
501                     tp->control.step_range_end = step_range_end;
502                     tp->control.step_frame_id = step_frame_id;
503                     tp->control.exception_resume_breakpoint
504                       = exception_resume_breakpoint;
505                   }
506                 else
507                   {
508                     /* If we get here, it was because we're trying to
509                        resume from a fork catchpoint, but, the user
510                        has switched threads away from the thread that
511                        forked.  In that case, the resume command
512                        issued is most likely not applicable to the
513                        child, so just warn, and refuse to resume.  */
514                     warning (_("Not resuming: switched threads "
515                                "before following fork child.\n"));
516                   }
517
518                 /* Reset breakpoints in the child as appropriate.  */
519                 follow_inferior_reset_breakpoints ();
520               }
521             else
522               switch_to_thread (parent);
523           }
524       }
525       break;
526     case TARGET_WAITKIND_SPURIOUS:
527       /* Nothing to follow.  */
528       break;
529     default:
530       internal_error (__FILE__, __LINE__,
531                       "Unexpected pending_follow.kind %d\n",
532                       tp->pending_follow.kind);
533       break;
534     }
535
536   return should_resume;
537 }
538
539 void
540 follow_inferior_reset_breakpoints (void)
541 {
542   struct thread_info *tp = inferior_thread ();
543
544   /* Was there a step_resume breakpoint?  (There was if the user
545      did a "next" at the fork() call.)  If so, explicitly reset its
546      thread number.
547
548      step_resumes are a form of bp that are made to be per-thread.
549      Since we created the step_resume bp when the parent process
550      was being debugged, and now are switching to the child process,
551      from the breakpoint package's viewpoint, that's a switch of
552      "threads".  We must update the bp's notion of which thread
553      it is for, or it'll be ignored when it triggers.  */
554
555   if (tp->control.step_resume_breakpoint)
556     breakpoint_re_set_thread (tp->control.step_resume_breakpoint);
557
558   if (tp->control.exception_resume_breakpoint)
559     breakpoint_re_set_thread (tp->control.exception_resume_breakpoint);
560
561   /* Reinsert all breakpoints in the child.  The user may have set
562      breakpoints after catching the fork, in which case those
563      were never set in the child, but only in the parent.  This makes
564      sure the inserted breakpoints match the breakpoint list.  */
565
566   breakpoint_re_set ();
567   insert_breakpoints ();
568 }
569
570 /* The child has exited or execed: resume threads of the parent the
571    user wanted to be executing.  */
572
573 static int
574 proceed_after_vfork_done (struct thread_info *thread,
575                           void *arg)
576 {
577   int pid = * (int *) arg;
578
579   if (ptid_get_pid (thread->ptid) == pid
580       && is_running (thread->ptid)
581       && !is_executing (thread->ptid)
582       && !thread->stop_requested
583       && thread->suspend.stop_signal == TARGET_SIGNAL_0)
584     {
585       if (debug_infrun)
586         fprintf_unfiltered (gdb_stdlog,
587                             "infrun: resuming vfork parent thread %s\n",
588                             target_pid_to_str (thread->ptid));
589
590       switch_to_thread (thread->ptid);
591       clear_proceed_status ();
592       proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0);
593     }
594
595   return 0;
596 }
597
598 /* Called whenever we notice an exec or exit event, to handle
599    detaching or resuming a vfork parent.  */
600
601 static void
602 handle_vfork_child_exec_or_exit (int exec)
603 {
604   struct inferior *inf = current_inferior ();
605
606   if (inf->vfork_parent)
607     {
608       int resume_parent = -1;
609
610       /* This exec or exit marks the end of the shared memory region
611          between the parent and the child.  If the user wanted to
612          detach from the parent, now is the time.  */
613
614       if (inf->vfork_parent->pending_detach)
615         {
616           struct thread_info *tp;
617           struct cleanup *old_chain;
618           struct program_space *pspace;
619           struct address_space *aspace;
620
621           /* follow-fork child, detach-on-fork on.  */
622
623           old_chain = make_cleanup_restore_current_thread ();
624
625           /* We're letting loose of the parent.  */
626           tp = any_live_thread_of_process (inf->vfork_parent->pid);
627           switch_to_thread (tp->ptid);
628
629           /* We're about to detach from the parent, which implicitly
630              removes breakpoints from its address space.  There's a
631              catch here: we want to reuse the spaces for the child,
632              but, parent/child are still sharing the pspace at this
633              point, although the exec in reality makes the kernel give
634              the child a fresh set of new pages.  The problem here is
635              that the breakpoints module being unaware of this, would
636              likely chose the child process to write to the parent
637              address space.  Swapping the child temporarily away from
638              the spaces has the desired effect.  Yes, this is "sort
639              of" a hack.  */
640
641           pspace = inf->pspace;
642           aspace = inf->aspace;
643           inf->aspace = NULL;
644           inf->pspace = NULL;
645
646           if (debug_infrun || info_verbose)
647             {
648               target_terminal_ours ();
649
650               if (exec)
651                 fprintf_filtered (gdb_stdlog,
652                                   "Detaching vfork parent process "
653                                   "%d after child exec.\n",
654                                   inf->vfork_parent->pid);
655               else
656                 fprintf_filtered (gdb_stdlog,
657                                   "Detaching vfork parent process "
658                                   "%d after child exit.\n",
659                                   inf->vfork_parent->pid);
660             }
661
662           target_detach (NULL, 0);
663
664           /* Put it back.  */
665           inf->pspace = pspace;
666           inf->aspace = aspace;
667
668           do_cleanups (old_chain);
669         }
670       else if (exec)
671         {
672           /* We're staying attached to the parent, so, really give the
673              child a new address space.  */
674           inf->pspace = add_program_space (maybe_new_address_space ());
675           inf->aspace = inf->pspace->aspace;
676           inf->removable = 1;
677           set_current_program_space (inf->pspace);
678
679           resume_parent = inf->vfork_parent->pid;
680
681           /* Break the bonds.  */
682           inf->vfork_parent->vfork_child = NULL;
683         }
684       else
685         {
686           struct cleanup *old_chain;
687           struct program_space *pspace;
688
689           /* If this is a vfork child exiting, then the pspace and
690              aspaces were shared with the parent.  Since we're
691              reporting the process exit, we'll be mourning all that is
692              found in the address space, and switching to null_ptid,
693              preparing to start a new inferior.  But, since we don't
694              want to clobber the parent's address/program spaces, we
695              go ahead and create a new one for this exiting
696              inferior.  */
697
698           /* Switch to null_ptid, so that clone_program_space doesn't want
699              to read the selected frame of a dead process.  */
700           old_chain = save_inferior_ptid ();
701           inferior_ptid = null_ptid;
702
703           /* This inferior is dead, so avoid giving the breakpoints
704              module the option to write through to it (cloning a
705              program space resets breakpoints).  */
706           inf->aspace = NULL;
707           inf->pspace = NULL;
708           pspace = add_program_space (maybe_new_address_space ());
709           set_current_program_space (pspace);
710           inf->removable = 1;
711           clone_program_space (pspace, inf->vfork_parent->pspace);
712           inf->pspace = pspace;
713           inf->aspace = pspace->aspace;
714
715           /* Put back inferior_ptid.  We'll continue mourning this
716              inferior.  */
717           do_cleanups (old_chain);
718
719           resume_parent = inf->vfork_parent->pid;
720           /* Break the bonds.  */
721           inf->vfork_parent->vfork_child = NULL;
722         }
723
724       inf->vfork_parent = NULL;
725
726       gdb_assert (current_program_space == inf->pspace);
727
728       if (non_stop && resume_parent != -1)
729         {
730           /* If the user wanted the parent to be running, let it go
731              free now.  */
732           struct cleanup *old_chain = make_cleanup_restore_current_thread ();
733
734           if (debug_infrun)
735             fprintf_unfiltered (gdb_stdlog,
736                                 "infrun: resuming vfork parent process %d\n",
737                                 resume_parent);
738
739           iterate_over_threads (proceed_after_vfork_done, &resume_parent);
740
741           do_cleanups (old_chain);
742         }
743     }
744 }
745
746 /* Enum strings for "set|show displaced-stepping".  */
747
748 static const char follow_exec_mode_new[] = "new";
749 static const char follow_exec_mode_same[] = "same";
750 static const char *follow_exec_mode_names[] =
751 {
752   follow_exec_mode_new,
753   follow_exec_mode_same,
754   NULL,
755 };
756
757 static const char *follow_exec_mode_string = follow_exec_mode_same;
758 static void
759 show_follow_exec_mode_string (struct ui_file *file, int from_tty,
760                               struct cmd_list_element *c, const char *value)
761 {
762   fprintf_filtered (file, _("Follow exec mode is \"%s\".\n"),  value);
763 }
764
765 /* EXECD_PATHNAME is assumed to be non-NULL.  */
766
767 static void
768 follow_exec (ptid_t pid, char *execd_pathname)
769 {
770   struct thread_info *th = inferior_thread ();
771   struct inferior *inf = current_inferior ();
772
773   /* This is an exec event that we actually wish to pay attention to.
774      Refresh our symbol table to the newly exec'd program, remove any
775      momentary bp's, etc.
776
777      If there are breakpoints, they aren't really inserted now,
778      since the exec() transformed our inferior into a fresh set
779      of instructions.
780
781      We want to preserve symbolic breakpoints on the list, since
782      we have hopes that they can be reset after the new a.out's
783      symbol table is read.
784
785      However, any "raw" breakpoints must be removed from the list
786      (e.g., the solib bp's), since their address is probably invalid
787      now.
788
789      And, we DON'T want to call delete_breakpoints() here, since
790      that may write the bp's "shadow contents" (the instruction
791      value that was overwritten witha TRAP instruction).  Since
792      we now have a new a.out, those shadow contents aren't valid.  */
793
794   mark_breakpoints_out ();
795
796   update_breakpoints_after_exec ();
797
798   /* If there was one, it's gone now.  We cannot truly step-to-next
799      statement through an exec().  */
800   th->control.step_resume_breakpoint = NULL;
801   th->control.exception_resume_breakpoint = NULL;
802   th->control.step_range_start = 0;
803   th->control.step_range_end = 0;
804
805   /* The target reports the exec event to the main thread, even if
806      some other thread does the exec, and even if the main thread was
807      already stopped --- if debugging in non-stop mode, it's possible
808      the user had the main thread held stopped in the previous image
809      --- release it now.  This is the same behavior as step-over-exec
810      with scheduler-locking on in all-stop mode.  */
811   th->stop_requested = 0;
812
813   /* What is this a.out's name?  */
814   printf_unfiltered (_("%s is executing new program: %s\n"),
815                      target_pid_to_str (inferior_ptid),
816                      execd_pathname);
817
818   /* We've followed the inferior through an exec.  Therefore, the
819      inferior has essentially been killed & reborn.  */
820
821   gdb_flush (gdb_stdout);
822
823   breakpoint_init_inferior (inf_execd);
824
825   if (gdb_sysroot && *gdb_sysroot)
826     {
827       char *name = alloca (strlen (gdb_sysroot)
828                             + strlen (execd_pathname)
829                             + 1);
830
831       strcpy (name, gdb_sysroot);
832       strcat (name, execd_pathname);
833       execd_pathname = name;
834     }
835
836   /* Reset the shared library package.  This ensures that we get a
837      shlib event when the child reaches "_start", at which point the
838      dld will have had a chance to initialize the child.  */
839   /* Also, loading a symbol file below may trigger symbol lookups, and
840      we don't want those to be satisfied by the libraries of the
841      previous incarnation of this process.  */
842   no_shared_libraries (NULL, 0);
843
844   if (follow_exec_mode_string == follow_exec_mode_new)
845     {
846       struct program_space *pspace;
847
848       /* The user wants to keep the old inferior and program spaces
849          around.  Create a new fresh one, and switch to it.  */
850
851       inf = add_inferior (current_inferior ()->pid);
852       pspace = add_program_space (maybe_new_address_space ());
853       inf->pspace = pspace;
854       inf->aspace = pspace->aspace;
855
856       exit_inferior_num_silent (current_inferior ()->num);
857
858       set_current_inferior (inf);
859       set_current_program_space (pspace);
860     }
861
862   gdb_assert (current_program_space == inf->pspace);
863
864   /* That a.out is now the one to use.  */
865   exec_file_attach (execd_pathname, 0);
866
867   /* SYMFILE_DEFER_BP_RESET is used as the proper displacement for PIE
868      (Position Independent Executable) main symbol file will get applied by
869      solib_create_inferior_hook below.  breakpoint_re_set would fail to insert
870      the breakpoints with the zero displacement.  */
871
872   symbol_file_add (execd_pathname, SYMFILE_MAINLINE | SYMFILE_DEFER_BP_RESET,
873                    NULL, 0);
874
875   set_initial_language ();
876
877 #ifdef SOLIB_CREATE_INFERIOR_HOOK
878   SOLIB_CREATE_INFERIOR_HOOK (PIDGET (inferior_ptid));
879 #else
880   solib_create_inferior_hook (0);
881 #endif
882
883   jit_inferior_created_hook ();
884
885   breakpoint_re_set ();
886
887   /* Reinsert all breakpoints.  (Those which were symbolic have
888      been reset to the proper address in the new a.out, thanks
889      to symbol_file_command...).  */
890   insert_breakpoints ();
891
892   /* The next resume of this inferior should bring it to the shlib
893      startup breakpoints.  (If the user had also set bp's on
894      "main" from the old (parent) process, then they'll auto-
895      matically get reset there in the new process.).  */
896 }
897
898 /* Non-zero if we just simulating a single-step.  This is needed
899    because we cannot remove the breakpoints in the inferior process
900    until after the `wait' in `wait_for_inferior'.  */
901 static int singlestep_breakpoints_inserted_p = 0;
902
903 /* The thread we inserted single-step breakpoints for.  */
904 static ptid_t singlestep_ptid;
905
906 /* PC when we started this single-step.  */
907 static CORE_ADDR singlestep_pc;
908
909 /* If another thread hit the singlestep breakpoint, we save the original
910    thread here so that we can resume single-stepping it later.  */
911 static ptid_t saved_singlestep_ptid;
912 static int stepping_past_singlestep_breakpoint;
913
914 /* If not equal to null_ptid, this means that after stepping over breakpoint
915    is finished, we need to switch to deferred_step_ptid, and step it.
916
917    The use case is when one thread has hit a breakpoint, and then the user 
918    has switched to another thread and issued 'step'.  We need to step over
919    breakpoint in the thread which hit the breakpoint, but then continue
920    stepping the thread user has selected.  */
921 static ptid_t deferred_step_ptid;
922 \f
923 /* Displaced stepping.  */
924
925 /* In non-stop debugging mode, we must take special care to manage
926    breakpoints properly; in particular, the traditional strategy for
927    stepping a thread past a breakpoint it has hit is unsuitable.
928    'Displaced stepping' is a tactic for stepping one thread past a
929    breakpoint it has hit while ensuring that other threads running
930    concurrently will hit the breakpoint as they should.
931
932    The traditional way to step a thread T off a breakpoint in a
933    multi-threaded program in all-stop mode is as follows:
934
935    a0) Initially, all threads are stopped, and breakpoints are not
936        inserted.
937    a1) We single-step T, leaving breakpoints uninserted.
938    a2) We insert breakpoints, and resume all threads.
939
940    In non-stop debugging, however, this strategy is unsuitable: we
941    don't want to have to stop all threads in the system in order to
942    continue or step T past a breakpoint.  Instead, we use displaced
943    stepping:
944
945    n0) Initially, T is stopped, other threads are running, and
946        breakpoints are inserted.
947    n1) We copy the instruction "under" the breakpoint to a separate
948        location, outside the main code stream, making any adjustments
949        to the instruction, register, and memory state as directed by
950        T's architecture.
951    n2) We single-step T over the instruction at its new location.
952    n3) We adjust the resulting register and memory state as directed
953        by T's architecture.  This includes resetting T's PC to point
954        back into the main instruction stream.
955    n4) We resume T.
956
957    This approach depends on the following gdbarch methods:
958
959    - gdbarch_max_insn_length and gdbarch_displaced_step_location
960      indicate where to copy the instruction, and how much space must
961      be reserved there.  We use these in step n1.
962
963    - gdbarch_displaced_step_copy_insn copies a instruction to a new
964      address, and makes any necessary adjustments to the instruction,
965      register contents, and memory.  We use this in step n1.
966
967    - gdbarch_displaced_step_fixup adjusts registers and memory after
968      we have successfuly single-stepped the instruction, to yield the
969      same effect the instruction would have had if we had executed it
970      at its original address.  We use this in step n3.
971
972    - gdbarch_displaced_step_free_closure provides cleanup.
973
974    The gdbarch_displaced_step_copy_insn and
975    gdbarch_displaced_step_fixup functions must be written so that
976    copying an instruction with gdbarch_displaced_step_copy_insn,
977    single-stepping across the copied instruction, and then applying
978    gdbarch_displaced_insn_fixup should have the same effects on the
979    thread's memory and registers as stepping the instruction in place
980    would have.  Exactly which responsibilities fall to the copy and
981    which fall to the fixup is up to the author of those functions.
982
983    See the comments in gdbarch.sh for details.
984
985    Note that displaced stepping and software single-step cannot
986    currently be used in combination, although with some care I think
987    they could be made to.  Software single-step works by placing
988    breakpoints on all possible subsequent instructions; if the
989    displaced instruction is a PC-relative jump, those breakpoints
990    could fall in very strange places --- on pages that aren't
991    executable, or at addresses that are not proper instruction
992    boundaries.  (We do generally let other threads run while we wait
993    to hit the software single-step breakpoint, and they might
994    encounter such a corrupted instruction.)  One way to work around
995    this would be to have gdbarch_displaced_step_copy_insn fully
996    simulate the effect of PC-relative instructions (and return NULL)
997    on architectures that use software single-stepping.
998
999    In non-stop mode, we can have independent and simultaneous step
1000    requests, so more than one thread may need to simultaneously step
1001    over a breakpoint.  The current implementation assumes there is
1002    only one scratch space per process.  In this case, we have to
1003    serialize access to the scratch space.  If thread A wants to step
1004    over a breakpoint, but we are currently waiting for some other
1005    thread to complete a displaced step, we leave thread A stopped and
1006    place it in the displaced_step_request_queue.  Whenever a displaced
1007    step finishes, we pick the next thread in the queue and start a new
1008    displaced step operation on it.  See displaced_step_prepare and
1009    displaced_step_fixup for details.  */
1010
1011 struct displaced_step_request
1012 {
1013   ptid_t ptid;
1014   struct displaced_step_request *next;
1015 };
1016
1017 /* Per-inferior displaced stepping state.  */
1018 struct displaced_step_inferior_state
1019 {
1020   /* Pointer to next in linked list.  */
1021   struct displaced_step_inferior_state *next;
1022
1023   /* The process this displaced step state refers to.  */
1024   int pid;
1025
1026   /* A queue of pending displaced stepping requests.  One entry per
1027      thread that needs to do a displaced step.  */
1028   struct displaced_step_request *step_request_queue;
1029
1030   /* If this is not null_ptid, this is the thread carrying out a
1031      displaced single-step in process PID.  This thread's state will
1032      require fixing up once it has completed its step.  */
1033   ptid_t step_ptid;
1034
1035   /* The architecture the thread had when we stepped it.  */
1036   struct gdbarch *step_gdbarch;
1037
1038   /* The closure provided gdbarch_displaced_step_copy_insn, to be used
1039      for post-step cleanup.  */
1040   struct displaced_step_closure *step_closure;
1041
1042   /* The address of the original instruction, and the copy we
1043      made.  */
1044   CORE_ADDR step_original, step_copy;
1045
1046   /* Saved contents of copy area.  */
1047   gdb_byte *step_saved_copy;
1048 };
1049
1050 /* The list of states of processes involved in displaced stepping
1051    presently.  */
1052 static struct displaced_step_inferior_state *displaced_step_inferior_states;
1053
1054 /* Get the displaced stepping state of process PID.  */
1055
1056 static struct displaced_step_inferior_state *
1057 get_displaced_stepping_state (int pid)
1058 {
1059   struct displaced_step_inferior_state *state;
1060
1061   for (state = displaced_step_inferior_states;
1062        state != NULL;
1063        state = state->next)
1064     if (state->pid == pid)
1065       return state;
1066
1067   return NULL;
1068 }
1069
1070 /* Add a new displaced stepping state for process PID to the displaced
1071    stepping state list, or return a pointer to an already existing
1072    entry, if it already exists.  Never returns NULL.  */
1073
1074 static struct displaced_step_inferior_state *
1075 add_displaced_stepping_state (int pid)
1076 {
1077   struct displaced_step_inferior_state *state;
1078
1079   for (state = displaced_step_inferior_states;
1080        state != NULL;
1081        state = state->next)
1082     if (state->pid == pid)
1083       return state;
1084
1085   state = xcalloc (1, sizeof (*state));
1086   state->pid = pid;
1087   state->next = displaced_step_inferior_states;
1088   displaced_step_inferior_states = state;
1089
1090   return state;
1091 }
1092
1093 /* If inferior is in displaced stepping, and ADDR equals to starting address
1094    of copy area, return corresponding displaced_step_closure.  Otherwise,
1095    return NULL.  */
1096
1097 struct displaced_step_closure*
1098 get_displaced_step_closure_by_addr (CORE_ADDR addr)
1099 {
1100   struct displaced_step_inferior_state *displaced
1101     = get_displaced_stepping_state (ptid_get_pid (inferior_ptid));
1102
1103   /* If checking the mode of displaced instruction in copy area.  */
1104   if (displaced && !ptid_equal (displaced->step_ptid, null_ptid)
1105      && (displaced->step_copy == addr))
1106     return displaced->step_closure;
1107
1108   return NULL;
1109 }
1110
1111 /* Remove the displaced stepping state of process PID.  */
1112
1113 static void
1114 remove_displaced_stepping_state (int pid)
1115 {
1116   struct displaced_step_inferior_state *it, **prev_next_p;
1117
1118   gdb_assert (pid != 0);
1119
1120   it = displaced_step_inferior_states;
1121   prev_next_p = &displaced_step_inferior_states;
1122   while (it)
1123     {
1124       if (it->pid == pid)
1125         {
1126           *prev_next_p = it->next;
1127           xfree (it);
1128           return;
1129         }
1130
1131       prev_next_p = &it->next;
1132       it = *prev_next_p;
1133     }
1134 }
1135
1136 static void
1137 infrun_inferior_exit (struct inferior *inf)
1138 {
1139   remove_displaced_stepping_state (inf->pid);
1140 }
1141
1142 /* Enum strings for "set|show displaced-stepping".  */
1143
1144 static const char can_use_displaced_stepping_auto[] = "auto";
1145 static const char can_use_displaced_stepping_on[] = "on";
1146 static const char can_use_displaced_stepping_off[] = "off";
1147 static const char *can_use_displaced_stepping_enum[] =
1148 {
1149   can_use_displaced_stepping_auto,
1150   can_use_displaced_stepping_on,
1151   can_use_displaced_stepping_off,
1152   NULL,
1153 };
1154
1155 /* If ON, and the architecture supports it, GDB will use displaced
1156    stepping to step over breakpoints.  If OFF, or if the architecture
1157    doesn't support it, GDB will instead use the traditional
1158    hold-and-step approach.  If AUTO (which is the default), GDB will
1159    decide which technique to use to step over breakpoints depending on
1160    which of all-stop or non-stop mode is active --- displaced stepping
1161    in non-stop mode; hold-and-step in all-stop mode.  */
1162
1163 static const char *can_use_displaced_stepping =
1164   can_use_displaced_stepping_auto;
1165
1166 static void
1167 show_can_use_displaced_stepping (struct ui_file *file, int from_tty,
1168                                  struct cmd_list_element *c,
1169                                  const char *value)
1170 {
1171   if (can_use_displaced_stepping == can_use_displaced_stepping_auto)
1172     fprintf_filtered (file,
1173                       _("Debugger's willingness to use displaced stepping "
1174                         "to step over breakpoints is %s (currently %s).\n"),
1175                       value, non_stop ? "on" : "off");
1176   else
1177     fprintf_filtered (file,
1178                       _("Debugger's willingness to use displaced stepping "
1179                         "to step over breakpoints is %s.\n"), value);
1180 }
1181
1182 /* Return non-zero if displaced stepping can/should be used to step
1183    over breakpoints.  */
1184
1185 static int
1186 use_displaced_stepping (struct gdbarch *gdbarch)
1187 {
1188   return (((can_use_displaced_stepping == can_use_displaced_stepping_auto
1189             && non_stop)
1190            || can_use_displaced_stepping == can_use_displaced_stepping_on)
1191           && gdbarch_displaced_step_copy_insn_p (gdbarch)
1192           && !RECORD_IS_USED);
1193 }
1194
1195 /* Clean out any stray displaced stepping state.  */
1196 static void
1197 displaced_step_clear (struct displaced_step_inferior_state *displaced)
1198 {
1199   /* Indicate that there is no cleanup pending.  */
1200   displaced->step_ptid = null_ptid;
1201
1202   if (displaced->step_closure)
1203     {
1204       gdbarch_displaced_step_free_closure (displaced->step_gdbarch,
1205                                            displaced->step_closure);
1206       displaced->step_closure = NULL;
1207     }
1208 }
1209
1210 static void
1211 displaced_step_clear_cleanup (void *arg)
1212 {
1213   struct displaced_step_inferior_state *state = arg;
1214
1215   displaced_step_clear (state);
1216 }
1217
1218 /* Dump LEN bytes at BUF in hex to FILE, followed by a newline.  */
1219 void
1220 displaced_step_dump_bytes (struct ui_file *file,
1221                            const gdb_byte *buf,
1222                            size_t len)
1223 {
1224   int i;
1225
1226   for (i = 0; i < len; i++)
1227     fprintf_unfiltered (file, "%02x ", buf[i]);
1228   fputs_unfiltered ("\n", file);
1229 }
1230
1231 /* Prepare to single-step, using displaced stepping.
1232
1233    Note that we cannot use displaced stepping when we have a signal to
1234    deliver.  If we have a signal to deliver and an instruction to step
1235    over, then after the step, there will be no indication from the
1236    target whether the thread entered a signal handler or ignored the
1237    signal and stepped over the instruction successfully --- both cases
1238    result in a simple SIGTRAP.  In the first case we mustn't do a
1239    fixup, and in the second case we must --- but we can't tell which.
1240    Comments in the code for 'random signals' in handle_inferior_event
1241    explain how we handle this case instead.
1242
1243    Returns 1 if preparing was successful -- this thread is going to be
1244    stepped now; or 0 if displaced stepping this thread got queued.  */
1245 static int
1246 displaced_step_prepare (ptid_t ptid)
1247 {
1248   struct cleanup *old_cleanups, *ignore_cleanups;
1249   struct regcache *regcache = get_thread_regcache (ptid);
1250   struct gdbarch *gdbarch = get_regcache_arch (regcache);
1251   CORE_ADDR original, copy;
1252   ULONGEST len;
1253   struct displaced_step_closure *closure;
1254   struct displaced_step_inferior_state *displaced;
1255
1256   /* We should never reach this function if the architecture does not
1257      support displaced stepping.  */
1258   gdb_assert (gdbarch_displaced_step_copy_insn_p (gdbarch));
1259
1260   /* We have to displaced step one thread at a time, as we only have
1261      access to a single scratch space per inferior.  */
1262
1263   displaced = add_displaced_stepping_state (ptid_get_pid (ptid));
1264
1265   if (!ptid_equal (displaced->step_ptid, null_ptid))
1266     {
1267       /* Already waiting for a displaced step to finish.  Defer this
1268          request and place in queue.  */
1269       struct displaced_step_request *req, *new_req;
1270
1271       if (debug_displaced)
1272         fprintf_unfiltered (gdb_stdlog,
1273                             "displaced: defering step of %s\n",
1274                             target_pid_to_str (ptid));
1275
1276       new_req = xmalloc (sizeof (*new_req));
1277       new_req->ptid = ptid;
1278       new_req->next = NULL;
1279
1280       if (displaced->step_request_queue)
1281         {
1282           for (req = displaced->step_request_queue;
1283                req && req->next;
1284                req = req->next)
1285             ;
1286           req->next = new_req;
1287         }
1288       else
1289         displaced->step_request_queue = new_req;
1290
1291       return 0;
1292     }
1293   else
1294     {
1295       if (debug_displaced)
1296         fprintf_unfiltered (gdb_stdlog,
1297                             "displaced: stepping %s now\n",
1298                             target_pid_to_str (ptid));
1299     }
1300
1301   displaced_step_clear (displaced);
1302
1303   old_cleanups = save_inferior_ptid ();
1304   inferior_ptid = ptid;
1305
1306   original = regcache_read_pc (regcache);
1307
1308   copy = gdbarch_displaced_step_location (gdbarch);
1309   len = gdbarch_max_insn_length (gdbarch);
1310
1311   /* Save the original contents of the copy area.  */
1312   displaced->step_saved_copy = xmalloc (len);
1313   ignore_cleanups = make_cleanup (free_current_contents,
1314                                   &displaced->step_saved_copy);
1315   read_memory (copy, displaced->step_saved_copy, len);
1316   if (debug_displaced)
1317     {
1318       fprintf_unfiltered (gdb_stdlog, "displaced: saved %s: ",
1319                           paddress (gdbarch, copy));
1320       displaced_step_dump_bytes (gdb_stdlog,
1321                                  displaced->step_saved_copy,
1322                                  len);
1323     };
1324
1325   closure = gdbarch_displaced_step_copy_insn (gdbarch,
1326                                               original, copy, regcache);
1327
1328   /* We don't support the fully-simulated case at present.  */
1329   gdb_assert (closure);
1330
1331   /* Save the information we need to fix things up if the step
1332      succeeds.  */
1333   displaced->step_ptid = ptid;
1334   displaced->step_gdbarch = gdbarch;
1335   displaced->step_closure = closure;
1336   displaced->step_original = original;
1337   displaced->step_copy = copy;
1338
1339   make_cleanup (displaced_step_clear_cleanup, displaced);
1340
1341   /* Resume execution at the copy.  */
1342   regcache_write_pc (regcache, copy);
1343
1344   discard_cleanups (ignore_cleanups);
1345
1346   do_cleanups (old_cleanups);
1347
1348   if (debug_displaced)
1349     fprintf_unfiltered (gdb_stdlog, "displaced: displaced pc to %s\n",
1350                         paddress (gdbarch, copy));
1351
1352   return 1;
1353 }
1354
1355 static void
1356 write_memory_ptid (ptid_t ptid, CORE_ADDR memaddr,
1357                    const gdb_byte *myaddr, int len)
1358 {
1359   struct cleanup *ptid_cleanup = save_inferior_ptid ();
1360
1361   inferior_ptid = ptid;
1362   write_memory (memaddr, myaddr, len);
1363   do_cleanups (ptid_cleanup);
1364 }
1365
1366 static void
1367 displaced_step_fixup (ptid_t event_ptid, enum target_signal signal)
1368 {
1369   struct cleanup *old_cleanups;
1370   struct displaced_step_inferior_state *displaced
1371     = get_displaced_stepping_state (ptid_get_pid (event_ptid));
1372
1373   /* Was any thread of this process doing a displaced step?  */
1374   if (displaced == NULL)
1375     return;
1376
1377   /* Was this event for the pid we displaced?  */
1378   if (ptid_equal (displaced->step_ptid, null_ptid)
1379       || ! ptid_equal (displaced->step_ptid, event_ptid))
1380     return;
1381
1382   old_cleanups = make_cleanup (displaced_step_clear_cleanup, displaced);
1383
1384   /* Restore the contents of the copy area.  */
1385   {
1386     ULONGEST len = gdbarch_max_insn_length (displaced->step_gdbarch);
1387
1388     write_memory_ptid (displaced->step_ptid, displaced->step_copy,
1389                        displaced->step_saved_copy, len);
1390     if (debug_displaced)
1391       fprintf_unfiltered (gdb_stdlog, "displaced: restored %s\n",
1392                           paddress (displaced->step_gdbarch,
1393                                     displaced->step_copy));
1394   }
1395
1396   /* Did the instruction complete successfully?  */
1397   if (signal == TARGET_SIGNAL_TRAP)
1398     {
1399       /* Fix up the resulting state.  */
1400       gdbarch_displaced_step_fixup (displaced->step_gdbarch,
1401                                     displaced->step_closure,
1402                                     displaced->step_original,
1403                                     displaced->step_copy,
1404                                     get_thread_regcache (displaced->step_ptid));
1405     }
1406   else
1407     {
1408       /* Since the instruction didn't complete, all we can do is
1409          relocate the PC.  */
1410       struct regcache *regcache = get_thread_regcache (event_ptid);
1411       CORE_ADDR pc = regcache_read_pc (regcache);
1412
1413       pc = displaced->step_original + (pc - displaced->step_copy);
1414       regcache_write_pc (regcache, pc);
1415     }
1416
1417   do_cleanups (old_cleanups);
1418
1419   displaced->step_ptid = null_ptid;
1420
1421   /* Are there any pending displaced stepping requests?  If so, run
1422      one now.  Leave the state object around, since we're likely to
1423      need it again soon.  */
1424   while (displaced->step_request_queue)
1425     {
1426       struct displaced_step_request *head;
1427       ptid_t ptid;
1428       struct regcache *regcache;
1429       struct gdbarch *gdbarch;
1430       CORE_ADDR actual_pc;
1431       struct address_space *aspace;
1432
1433       head = displaced->step_request_queue;
1434       ptid = head->ptid;
1435       displaced->step_request_queue = head->next;
1436       xfree (head);
1437
1438       context_switch (ptid);
1439
1440       regcache = get_thread_regcache (ptid);
1441       actual_pc = regcache_read_pc (regcache);
1442       aspace = get_regcache_aspace (regcache);
1443
1444       if (breakpoint_here_p (aspace, actual_pc))
1445         {
1446           if (debug_displaced)
1447             fprintf_unfiltered (gdb_stdlog,
1448                                 "displaced: stepping queued %s now\n",
1449                                 target_pid_to_str (ptid));
1450
1451           displaced_step_prepare (ptid);
1452
1453           gdbarch = get_regcache_arch (regcache);
1454
1455           if (debug_displaced)
1456             {
1457               CORE_ADDR actual_pc = regcache_read_pc (regcache);
1458               gdb_byte buf[4];
1459
1460               fprintf_unfiltered (gdb_stdlog, "displaced: run %s: ",
1461                                   paddress (gdbarch, actual_pc));
1462               read_memory (actual_pc, buf, sizeof (buf));
1463               displaced_step_dump_bytes (gdb_stdlog, buf, sizeof (buf));
1464             }
1465
1466           if (gdbarch_displaced_step_hw_singlestep (gdbarch,
1467                                                     displaced->step_closure))
1468             target_resume (ptid, 1, TARGET_SIGNAL_0);
1469           else
1470             target_resume (ptid, 0, TARGET_SIGNAL_0);
1471
1472           /* Done, we're stepping a thread.  */
1473           break;
1474         }
1475       else
1476         {
1477           int step;
1478           struct thread_info *tp = inferior_thread ();
1479
1480           /* The breakpoint we were sitting under has since been
1481              removed.  */
1482           tp->control.trap_expected = 0;
1483
1484           /* Go back to what we were trying to do.  */
1485           step = currently_stepping (tp);
1486
1487           if (debug_displaced)
1488             fprintf_unfiltered (gdb_stdlog,
1489                                 "breakpoint is gone %s: step(%d)\n",
1490                                 target_pid_to_str (tp->ptid), step);
1491
1492           target_resume (ptid, step, TARGET_SIGNAL_0);
1493           tp->suspend.stop_signal = TARGET_SIGNAL_0;
1494
1495           /* This request was discarded.  See if there's any other
1496              thread waiting for its turn.  */
1497         }
1498     }
1499 }
1500
1501 /* Update global variables holding ptids to hold NEW_PTID if they were
1502    holding OLD_PTID.  */
1503 static void
1504 infrun_thread_ptid_changed (ptid_t old_ptid, ptid_t new_ptid)
1505 {
1506   struct displaced_step_request *it;
1507   struct displaced_step_inferior_state *displaced;
1508
1509   if (ptid_equal (inferior_ptid, old_ptid))
1510     inferior_ptid = new_ptid;
1511
1512   if (ptid_equal (singlestep_ptid, old_ptid))
1513     singlestep_ptid = new_ptid;
1514
1515   if (ptid_equal (deferred_step_ptid, old_ptid))
1516     deferred_step_ptid = new_ptid;
1517
1518   for (displaced = displaced_step_inferior_states;
1519        displaced;
1520        displaced = displaced->next)
1521     {
1522       if (ptid_equal (displaced->step_ptid, old_ptid))
1523         displaced->step_ptid = new_ptid;
1524
1525       for (it = displaced->step_request_queue; it; it = it->next)
1526         if (ptid_equal (it->ptid, old_ptid))
1527           it->ptid = new_ptid;
1528     }
1529 }
1530
1531 \f
1532 /* Resuming.  */
1533
1534 /* Things to clean up if we QUIT out of resume ().  */
1535 static void
1536 resume_cleanups (void *ignore)
1537 {
1538   normal_stop ();
1539 }
1540
1541 static const char schedlock_off[] = "off";
1542 static const char schedlock_on[] = "on";
1543 static const char schedlock_step[] = "step";
1544 static const char *scheduler_enums[] = {
1545   schedlock_off,
1546   schedlock_on,
1547   schedlock_step,
1548   NULL
1549 };
1550 static const char *scheduler_mode = schedlock_off;
1551 static void
1552 show_scheduler_mode (struct ui_file *file, int from_tty,
1553                      struct cmd_list_element *c, const char *value)
1554 {
1555   fprintf_filtered (file,
1556                     _("Mode for locking scheduler "
1557                       "during execution is \"%s\".\n"),
1558                     value);
1559 }
1560
1561 static void
1562 set_schedlock_func (char *args, int from_tty, struct cmd_list_element *c)
1563 {
1564   if (!target_can_lock_scheduler)
1565     {
1566       scheduler_mode = schedlock_off;
1567       error (_("Target '%s' cannot support this command."), target_shortname);
1568     }
1569 }
1570
1571 /* True if execution commands resume all threads of all processes by
1572    default; otherwise, resume only threads of the current inferior
1573    process.  */
1574 int sched_multi = 0;
1575
1576 /* Try to setup for software single stepping over the specified location.
1577    Return 1 if target_resume() should use hardware single step.
1578
1579    GDBARCH the current gdbarch.
1580    PC the location to step over.  */
1581
1582 static int
1583 maybe_software_singlestep (struct gdbarch *gdbarch, CORE_ADDR pc)
1584 {
1585   int hw_step = 1;
1586
1587   if (execution_direction == EXEC_FORWARD
1588       && gdbarch_software_single_step_p (gdbarch)
1589       && gdbarch_software_single_step (gdbarch, get_current_frame ()))
1590     {
1591       hw_step = 0;
1592       /* Do not pull these breakpoints until after a `wait' in
1593          `wait_for_inferior'.  */
1594       singlestep_breakpoints_inserted_p = 1;
1595       singlestep_ptid = inferior_ptid;
1596       singlestep_pc = pc;
1597     }
1598   return hw_step;
1599 }
1600
1601 /* Return a ptid representing the set of threads that we will proceed,
1602    in the perspective of the user/frontend.  We may actually resume
1603    fewer threads at first, e.g., if a thread is stopped at a
1604    breakpoint that needs stepping-off, but that should not be visible
1605    to the user/frontend, and neither should the frontend/user be
1606    allowed to proceed any of the threads that happen to be stopped for
1607    internal run control handling, if a previous command wanted them
1608    resumed.  */
1609
1610 ptid_t
1611 user_visible_resume_ptid (int step)
1612 {
1613   /* By default, resume all threads of all processes.  */
1614   ptid_t resume_ptid = RESUME_ALL;
1615
1616   /* Maybe resume only all threads of the current process.  */
1617   if (!sched_multi && target_supports_multi_process ())
1618     {
1619       resume_ptid = pid_to_ptid (ptid_get_pid (inferior_ptid));
1620     }
1621
1622   /* Maybe resume a single thread after all.  */
1623   if (non_stop)
1624     {
1625       /* With non-stop mode on, threads are always handled
1626          individually.  */
1627       resume_ptid = inferior_ptid;
1628     }
1629   else if ((scheduler_mode == schedlock_on)
1630            || (scheduler_mode == schedlock_step
1631                && (step || singlestep_breakpoints_inserted_p)))
1632     {
1633       /* User-settable 'scheduler' mode requires solo thread resume.  */
1634       resume_ptid = inferior_ptid;
1635     }
1636
1637   return resume_ptid;
1638 }
1639
1640 /* Resume the inferior, but allow a QUIT.  This is useful if the user
1641    wants to interrupt some lengthy single-stepping operation
1642    (for child processes, the SIGINT goes to the inferior, and so
1643    we get a SIGINT random_signal, but for remote debugging and perhaps
1644    other targets, that's not true).
1645
1646    STEP nonzero if we should step (zero to continue instead).
1647    SIG is the signal to give the inferior (zero for none).  */
1648 void
1649 resume (int step, enum target_signal sig)
1650 {
1651   int should_resume = 1;
1652   struct cleanup *old_cleanups = make_cleanup (resume_cleanups, 0);
1653   struct regcache *regcache = get_current_regcache ();
1654   struct gdbarch *gdbarch = get_regcache_arch (regcache);
1655   struct thread_info *tp = inferior_thread ();
1656   CORE_ADDR pc = regcache_read_pc (regcache);
1657   struct address_space *aspace = get_regcache_aspace (regcache);
1658
1659   QUIT;
1660
1661   if (current_inferior ()->waiting_for_vfork_done)
1662     {
1663       /* Don't try to single-step a vfork parent that is waiting for
1664          the child to get out of the shared memory region (by exec'ing
1665          or exiting).  This is particularly important on software
1666          single-step archs, as the child process would trip on the
1667          software single step breakpoint inserted for the parent
1668          process.  Since the parent will not actually execute any
1669          instruction until the child is out of the shared region (such
1670          are vfork's semantics), it is safe to simply continue it.
1671          Eventually, we'll see a TARGET_WAITKIND_VFORK_DONE event for
1672          the parent, and tell it to `keep_going', which automatically
1673          re-sets it stepping.  */
1674       if (debug_infrun)
1675         fprintf_unfiltered (gdb_stdlog,
1676                             "infrun: resume : clear step\n");
1677       step = 0;
1678     }
1679
1680   if (debug_infrun)
1681     fprintf_unfiltered (gdb_stdlog,
1682                         "infrun: resume (step=%d, signal=%d), "
1683                         "trap_expected=%d, current thread [%s] at %s\n",
1684                         step, sig, tp->control.trap_expected,
1685                         target_pid_to_str (inferior_ptid),
1686                         paddress (gdbarch, pc));
1687
1688   /* Normally, by the time we reach `resume', the breakpoints are either
1689      removed or inserted, as appropriate.  The exception is if we're sitting
1690      at a permanent breakpoint; we need to step over it, but permanent
1691      breakpoints can't be removed.  So we have to test for it here.  */
1692   if (breakpoint_here_p (aspace, pc) == permanent_breakpoint_here)
1693     {
1694       if (gdbarch_skip_permanent_breakpoint_p (gdbarch))
1695         gdbarch_skip_permanent_breakpoint (gdbarch, regcache);
1696       else
1697         error (_("\
1698 The program is stopped at a permanent breakpoint, but GDB does not know\n\
1699 how to step past a permanent breakpoint on this architecture.  Try using\n\
1700 a command like `return' or `jump' to continue execution."));
1701     }
1702
1703   /* If enabled, step over breakpoints by executing a copy of the
1704      instruction at a different address.
1705
1706      We can't use displaced stepping when we have a signal to deliver;
1707      the comments for displaced_step_prepare explain why.  The
1708      comments in the handle_inferior event for dealing with 'random
1709      signals' explain what we do instead.
1710
1711      We can't use displaced stepping when we are waiting for vfork_done
1712      event, displaced stepping breaks the vfork child similarly as single
1713      step software breakpoint.  */
1714   if (use_displaced_stepping (gdbarch)
1715       && (tp->control.trap_expected
1716           || (step && gdbarch_software_single_step_p (gdbarch)))
1717       && sig == TARGET_SIGNAL_0
1718       && !current_inferior ()->waiting_for_vfork_done)
1719     {
1720       struct displaced_step_inferior_state *displaced;
1721
1722       if (!displaced_step_prepare (inferior_ptid))
1723         {
1724           /* Got placed in displaced stepping queue.  Will be resumed
1725              later when all the currently queued displaced stepping
1726              requests finish.  The thread is not executing at this point,
1727              and the call to set_executing will be made later.  But we
1728              need to call set_running here, since from frontend point of view,
1729              the thread is running.  */
1730           set_running (inferior_ptid, 1);
1731           discard_cleanups (old_cleanups);
1732           return;
1733         }
1734
1735       displaced = get_displaced_stepping_state (ptid_get_pid (inferior_ptid));
1736       step = gdbarch_displaced_step_hw_singlestep (gdbarch,
1737                                                    displaced->step_closure);
1738     }
1739
1740   /* Do we need to do it the hard way, w/temp breakpoints?  */
1741   else if (step)
1742     step = maybe_software_singlestep (gdbarch, pc);
1743
1744   /* Currently, our software single-step implementation leads to different
1745      results than hardware single-stepping in one situation: when stepping
1746      into delivering a signal which has an associated signal handler,
1747      hardware single-step will stop at the first instruction of the handler,
1748      while software single-step will simply skip execution of the handler.
1749
1750      For now, this difference in behavior is accepted since there is no
1751      easy way to actually implement single-stepping into a signal handler
1752      without kernel support.
1753
1754      However, there is one scenario where this difference leads to follow-on
1755      problems: if we're stepping off a breakpoint by removing all breakpoints
1756      and then single-stepping.  In this case, the software single-step
1757      behavior means that even if there is a *breakpoint* in the signal
1758      handler, GDB still would not stop.
1759
1760      Fortunately, we can at least fix this particular issue.  We detect
1761      here the case where we are about to deliver a signal while software
1762      single-stepping with breakpoints removed.  In this situation, we
1763      revert the decisions to remove all breakpoints and insert single-
1764      step breakpoints, and instead we install a step-resume breakpoint
1765      at the current address, deliver the signal without stepping, and
1766      once we arrive back at the step-resume breakpoint, actually step
1767      over the breakpoint we originally wanted to step over.  */
1768   if (singlestep_breakpoints_inserted_p
1769       && tp->control.trap_expected && sig != TARGET_SIGNAL_0)
1770     {
1771       /* If we have nested signals or a pending signal is delivered
1772          immediately after a handler returns, might might already have
1773          a step-resume breakpoint set on the earlier handler.  We cannot
1774          set another step-resume breakpoint; just continue on until the
1775          original breakpoint is hit.  */
1776       if (tp->control.step_resume_breakpoint == NULL)
1777         {
1778           insert_hp_step_resume_breakpoint_at_frame (get_current_frame ());
1779           tp->step_after_step_resume_breakpoint = 1;
1780         }
1781
1782       remove_single_step_breakpoints ();
1783       singlestep_breakpoints_inserted_p = 0;
1784
1785       insert_breakpoints ();
1786       tp->control.trap_expected = 0;
1787     }
1788
1789   if (should_resume)
1790     {
1791       ptid_t resume_ptid;
1792
1793       /* If STEP is set, it's a request to use hardware stepping
1794          facilities.  But in that case, we should never
1795          use singlestep breakpoint.  */
1796       gdb_assert (!(singlestep_breakpoints_inserted_p && step));
1797
1798       /* Decide the set of threads to ask the target to resume.  Start
1799          by assuming everything will be resumed, than narrow the set
1800          by applying increasingly restricting conditions.  */
1801       resume_ptid = user_visible_resume_ptid (step);
1802
1803       /* Maybe resume a single thread after all.  */
1804       if (singlestep_breakpoints_inserted_p
1805           && stepping_past_singlestep_breakpoint)
1806         {
1807           /* The situation here is as follows.  In thread T1 we wanted to
1808              single-step.  Lacking hardware single-stepping we've
1809              set breakpoint at the PC of the next instruction -- call it
1810              P.  After resuming, we've hit that breakpoint in thread T2.
1811              Now we've removed original breakpoint, inserted breakpoint
1812              at P+1, and try to step to advance T2 past breakpoint.
1813              We need to step only T2, as if T1 is allowed to freely run,
1814              it can run past P, and if other threads are allowed to run,
1815              they can hit breakpoint at P+1, and nested hits of single-step
1816              breakpoints is not something we'd want -- that's complicated
1817              to support, and has no value.  */
1818           resume_ptid = inferior_ptid;
1819         }
1820       else if ((step || singlestep_breakpoints_inserted_p)
1821                && tp->control.trap_expected)
1822         {
1823           /* We're allowing a thread to run past a breakpoint it has
1824              hit, by single-stepping the thread with the breakpoint
1825              removed.  In which case, we need to single-step only this
1826              thread, and keep others stopped, as they can miss this
1827              breakpoint if allowed to run.
1828
1829              The current code actually removes all breakpoints when
1830              doing this, not just the one being stepped over, so if we
1831              let other threads run, we can actually miss any
1832              breakpoint, not just the one at PC.  */
1833           resume_ptid = inferior_ptid;
1834         }
1835
1836       if (gdbarch_cannot_step_breakpoint (gdbarch))
1837         {
1838           /* Most targets can step a breakpoint instruction, thus
1839              executing it normally.  But if this one cannot, just
1840              continue and we will hit it anyway.  */
1841           if (step && breakpoint_inserted_here_p (aspace, pc))
1842             step = 0;
1843         }
1844
1845       if (debug_displaced
1846           && use_displaced_stepping (gdbarch)
1847           && tp->control.trap_expected)
1848         {
1849           struct regcache *resume_regcache = get_thread_regcache (resume_ptid);
1850           struct gdbarch *resume_gdbarch = get_regcache_arch (resume_regcache);
1851           CORE_ADDR actual_pc = regcache_read_pc (resume_regcache);
1852           gdb_byte buf[4];
1853
1854           fprintf_unfiltered (gdb_stdlog, "displaced: run %s: ",
1855                               paddress (resume_gdbarch, actual_pc));
1856           read_memory (actual_pc, buf, sizeof (buf));
1857           displaced_step_dump_bytes (gdb_stdlog, buf, sizeof (buf));
1858         }
1859
1860       /* Install inferior's terminal modes.  */
1861       target_terminal_inferior ();
1862
1863       /* Avoid confusing the next resume, if the next stop/resume
1864          happens to apply to another thread.  */
1865       tp->suspend.stop_signal = TARGET_SIGNAL_0;
1866
1867       /* Advise target which signals may be handled silently.  If we have
1868          removed breakpoints because we are stepping over one (which can
1869          happen only if we are not using displaced stepping), we need to
1870          receive all signals to avoid accidentally skipping a breakpoint
1871          during execution of a signal handler.  */
1872       if ((step || singlestep_breakpoints_inserted_p)
1873           && tp->control.trap_expected
1874           && !use_displaced_stepping (gdbarch))
1875         target_pass_signals (0, NULL);
1876       else
1877         target_pass_signals ((int) TARGET_SIGNAL_LAST, signal_pass);
1878
1879       target_resume (resume_ptid, step, sig);
1880     }
1881
1882   discard_cleanups (old_cleanups);
1883 }
1884 \f
1885 /* Proceeding.  */
1886
1887 /* Clear out all variables saying what to do when inferior is continued.
1888    First do this, then set the ones you want, then call `proceed'.  */
1889
1890 static void
1891 clear_proceed_status_thread (struct thread_info *tp)
1892 {
1893   if (debug_infrun)
1894     fprintf_unfiltered (gdb_stdlog,
1895                         "infrun: clear_proceed_status_thread (%s)\n",
1896                         target_pid_to_str (tp->ptid));
1897
1898   tp->control.trap_expected = 0;
1899   tp->control.step_range_start = 0;
1900   tp->control.step_range_end = 0;
1901   tp->control.step_frame_id = null_frame_id;
1902   tp->control.step_stack_frame_id = null_frame_id;
1903   tp->control.step_over_calls = STEP_OVER_UNDEBUGGABLE;
1904   tp->stop_requested = 0;
1905
1906   tp->control.stop_step = 0;
1907
1908   tp->control.proceed_to_finish = 0;
1909
1910   /* Discard any remaining commands or status from previous stop.  */
1911   bpstat_clear (&tp->control.stop_bpstat);
1912 }
1913
1914 static int
1915 clear_proceed_status_callback (struct thread_info *tp, void *data)
1916 {
1917   if (is_exited (tp->ptid))
1918     return 0;
1919
1920   clear_proceed_status_thread (tp);
1921   return 0;
1922 }
1923
1924 void
1925 clear_proceed_status (void)
1926 {
1927   if (!non_stop)
1928     {
1929       /* In all-stop mode, delete the per-thread status of all
1930          threads, even if inferior_ptid is null_ptid, there may be
1931          threads on the list.  E.g., we may be launching a new
1932          process, while selecting the executable.  */
1933       iterate_over_threads (clear_proceed_status_callback, NULL);
1934     }
1935
1936   if (!ptid_equal (inferior_ptid, null_ptid))
1937     {
1938       struct inferior *inferior;
1939
1940       if (non_stop)
1941         {
1942           /* If in non-stop mode, only delete the per-thread status of
1943              the current thread.  */
1944           clear_proceed_status_thread (inferior_thread ());
1945         }
1946
1947       inferior = current_inferior ();
1948       inferior->control.stop_soon = NO_STOP_QUIETLY;
1949     }
1950
1951   stop_after_trap = 0;
1952
1953   observer_notify_about_to_proceed ();
1954
1955   if (stop_registers)
1956     {
1957       regcache_xfree (stop_registers);
1958       stop_registers = NULL;
1959     }
1960 }
1961
1962 /* Check the current thread against the thread that reported the most recent
1963    event.  If a step-over is required return TRUE and set the current thread
1964    to the old thread.  Otherwise return FALSE.
1965
1966    This should be suitable for any targets that support threads.  */
1967
1968 static int
1969 prepare_to_proceed (int step)
1970 {
1971   ptid_t wait_ptid;
1972   struct target_waitstatus wait_status;
1973   int schedlock_enabled;
1974
1975   /* With non-stop mode on, threads are always handled individually.  */
1976   gdb_assert (! non_stop);
1977
1978   /* Get the last target status returned by target_wait().  */
1979   get_last_target_status (&wait_ptid, &wait_status);
1980
1981   /* Make sure we were stopped at a breakpoint.  */
1982   if (wait_status.kind != TARGET_WAITKIND_STOPPED
1983       || (wait_status.value.sig != TARGET_SIGNAL_TRAP
1984           && wait_status.value.sig != TARGET_SIGNAL_ILL
1985           && wait_status.value.sig != TARGET_SIGNAL_SEGV
1986           && wait_status.value.sig != TARGET_SIGNAL_EMT))
1987     {
1988       return 0;
1989     }
1990
1991   schedlock_enabled = (scheduler_mode == schedlock_on
1992                        || (scheduler_mode == schedlock_step
1993                            && step));
1994
1995   /* Don't switch over to WAIT_PTID if scheduler locking is on.  */
1996   if (schedlock_enabled)
1997     return 0;
1998
1999   /* Don't switch over if we're about to resume some other process
2000      other than WAIT_PTID's, and schedule-multiple is off.  */
2001   if (!sched_multi
2002       && ptid_get_pid (wait_ptid) != ptid_get_pid (inferior_ptid))
2003     return 0;
2004
2005   /* Switched over from WAIT_PID.  */
2006   if (!ptid_equal (wait_ptid, minus_one_ptid)
2007       && !ptid_equal (inferior_ptid, wait_ptid))
2008     {
2009       struct regcache *regcache = get_thread_regcache (wait_ptid);
2010
2011       if (breakpoint_here_p (get_regcache_aspace (regcache),
2012                              regcache_read_pc (regcache)))
2013         {
2014           /* If stepping, remember current thread to switch back to.  */
2015           if (step)
2016             deferred_step_ptid = inferior_ptid;
2017
2018           /* Switch back to WAIT_PID thread.  */
2019           switch_to_thread (wait_ptid);
2020
2021           if (debug_infrun)
2022             fprintf_unfiltered (gdb_stdlog,
2023                                 "infrun: prepare_to_proceed (step=%d), "
2024                                 "switched to [%s]\n",
2025                                 step, target_pid_to_str (inferior_ptid));
2026
2027           /* We return 1 to indicate that there is a breakpoint here,
2028              so we need to step over it before continuing to avoid
2029              hitting it straight away.  */
2030           return 1;
2031         }
2032     }
2033
2034   return 0;
2035 }
2036
2037 /* Basic routine for continuing the program in various fashions.
2038
2039    ADDR is the address to resume at, or -1 for resume where stopped.
2040    SIGGNAL is the signal to give it, or 0 for none,
2041    or -1 for act according to how it stopped.
2042    STEP is nonzero if should trap after one instruction.
2043    -1 means return after that and print nothing.
2044    You should probably set various step_... variables
2045    before calling here, if you are stepping.
2046
2047    You should call clear_proceed_status before calling proceed.  */
2048
2049 void
2050 proceed (CORE_ADDR addr, enum target_signal siggnal, int step)
2051 {
2052   struct regcache *regcache;
2053   struct gdbarch *gdbarch;
2054   struct thread_info *tp;
2055   CORE_ADDR pc;
2056   struct address_space *aspace;
2057   int oneproc = 0;
2058
2059   /* If we're stopped at a fork/vfork, follow the branch set by the
2060      "set follow-fork-mode" command; otherwise, we'll just proceed
2061      resuming the current thread.  */
2062   if (!follow_fork ())
2063     {
2064       /* The target for some reason decided not to resume.  */
2065       normal_stop ();
2066       if (target_can_async_p ())
2067         inferior_event_handler (INF_EXEC_COMPLETE, NULL);
2068       return;
2069     }
2070
2071   /* We'll update this if & when we switch to a new thread.  */
2072   previous_inferior_ptid = inferior_ptid;
2073
2074   regcache = get_current_regcache ();
2075   gdbarch = get_regcache_arch (regcache);
2076   aspace = get_regcache_aspace (regcache);
2077   pc = regcache_read_pc (regcache);
2078
2079   if (step > 0)
2080     step_start_function = find_pc_function (pc);
2081   if (step < 0)
2082     stop_after_trap = 1;
2083
2084   if (addr == (CORE_ADDR) -1)
2085     {
2086       if (pc == stop_pc && breakpoint_here_p (aspace, pc)
2087           && execution_direction != EXEC_REVERSE)
2088         /* There is a breakpoint at the address we will resume at,
2089            step one instruction before inserting breakpoints so that
2090            we do not stop right away (and report a second hit at this
2091            breakpoint).
2092
2093            Note, we don't do this in reverse, because we won't
2094            actually be executing the breakpoint insn anyway.
2095            We'll be (un-)executing the previous instruction.  */
2096
2097         oneproc = 1;
2098       else if (gdbarch_single_step_through_delay_p (gdbarch)
2099                && gdbarch_single_step_through_delay (gdbarch,
2100                                                      get_current_frame ()))
2101         /* We stepped onto an instruction that needs to be stepped
2102            again before re-inserting the breakpoint, do so.  */
2103         oneproc = 1;
2104     }
2105   else
2106     {
2107       regcache_write_pc (regcache, addr);
2108     }
2109
2110   if (debug_infrun)
2111     fprintf_unfiltered (gdb_stdlog,
2112                         "infrun: proceed (addr=%s, signal=%d, step=%d)\n",
2113                         paddress (gdbarch, addr), siggnal, step);
2114
2115   if (non_stop)
2116     /* In non-stop, each thread is handled individually.  The context
2117        must already be set to the right thread here.  */
2118     ;
2119   else
2120     {
2121       /* In a multi-threaded task we may select another thread and
2122          then continue or step.
2123
2124          But if the old thread was stopped at a breakpoint, it will
2125          immediately cause another breakpoint stop without any
2126          execution (i.e. it will report a breakpoint hit incorrectly).
2127          So we must step over it first.
2128
2129          prepare_to_proceed checks the current thread against the
2130          thread that reported the most recent event.  If a step-over
2131          is required it returns TRUE and sets the current thread to
2132          the old thread.  */
2133       if (prepare_to_proceed (step))
2134         oneproc = 1;
2135     }
2136
2137   /* prepare_to_proceed may change the current thread.  */
2138   tp = inferior_thread ();
2139
2140   if (oneproc)
2141     {
2142       tp->control.trap_expected = 1;
2143       /* If displaced stepping is enabled, we can step over the
2144          breakpoint without hitting it, so leave all breakpoints
2145          inserted.  Otherwise we need to disable all breakpoints, step
2146          one instruction, and then re-add them when that step is
2147          finished.  */
2148       if (!use_displaced_stepping (gdbarch))
2149         remove_breakpoints ();
2150     }
2151
2152   /* We can insert breakpoints if we're not trying to step over one,
2153      or if we are stepping over one but we're using displaced stepping
2154      to do so.  */
2155   if (! tp->control.trap_expected || use_displaced_stepping (gdbarch))
2156     insert_breakpoints ();
2157
2158   if (!non_stop)
2159     {
2160       /* Pass the last stop signal to the thread we're resuming,
2161          irrespective of whether the current thread is the thread that
2162          got the last event or not.  This was historically GDB's
2163          behaviour before keeping a stop_signal per thread.  */
2164
2165       struct thread_info *last_thread;
2166       ptid_t last_ptid;
2167       struct target_waitstatus last_status;
2168
2169       get_last_target_status (&last_ptid, &last_status);
2170       if (!ptid_equal (inferior_ptid, last_ptid)
2171           && !ptid_equal (last_ptid, null_ptid)
2172           && !ptid_equal (last_ptid, minus_one_ptid))
2173         {
2174           last_thread = find_thread_ptid (last_ptid);
2175           if (last_thread)
2176             {
2177               tp->suspend.stop_signal = last_thread->suspend.stop_signal;
2178               last_thread->suspend.stop_signal = TARGET_SIGNAL_0;
2179             }
2180         }
2181     }
2182
2183   if (siggnal != TARGET_SIGNAL_DEFAULT)
2184     tp->suspend.stop_signal = siggnal;
2185   /* If this signal should not be seen by program,
2186      give it zero.  Used for debugging signals.  */
2187   else if (!signal_program[tp->suspend.stop_signal])
2188     tp->suspend.stop_signal = TARGET_SIGNAL_0;
2189
2190   annotate_starting ();
2191
2192   /* Make sure that output from GDB appears before output from the
2193      inferior.  */
2194   gdb_flush (gdb_stdout);
2195
2196   /* Refresh prev_pc value just prior to resuming.  This used to be
2197      done in stop_stepping, however, setting prev_pc there did not handle
2198      scenarios such as inferior function calls or returning from
2199      a function via the return command.  In those cases, the prev_pc
2200      value was not set properly for subsequent commands.  The prev_pc value 
2201      is used to initialize the starting line number in the ecs.  With an 
2202      invalid value, the gdb next command ends up stopping at the position
2203      represented by the next line table entry past our start position.
2204      On platforms that generate one line table entry per line, this
2205      is not a problem.  However, on the ia64, the compiler generates
2206      extraneous line table entries that do not increase the line number.
2207      When we issue the gdb next command on the ia64 after an inferior call
2208      or a return command, we often end up a few instructions forward, still 
2209      within the original line we started.
2210
2211      An attempt was made to refresh the prev_pc at the same time the
2212      execution_control_state is initialized (for instance, just before
2213      waiting for an inferior event).  But this approach did not work
2214      because of platforms that use ptrace, where the pc register cannot
2215      be read unless the inferior is stopped.  At that point, we are not
2216      guaranteed the inferior is stopped and so the regcache_read_pc() call
2217      can fail.  Setting the prev_pc value here ensures the value is updated
2218      correctly when the inferior is stopped.  */
2219   tp->prev_pc = regcache_read_pc (get_current_regcache ());
2220
2221   /* Fill in with reasonable starting values.  */
2222   init_thread_stepping_state (tp);
2223
2224   /* Reset to normal state.  */
2225   init_infwait_state ();
2226
2227   /* Resume inferior.  */
2228   resume (oneproc || step || bpstat_should_step (), tp->suspend.stop_signal);
2229
2230   /* Wait for it to stop (if not standalone)
2231      and in any case decode why it stopped, and act accordingly.  */
2232   /* Do this only if we are not using the event loop, or if the target
2233      does not support asynchronous execution.  */
2234   if (!target_can_async_p ())
2235     {
2236       wait_for_inferior ();
2237       normal_stop ();
2238     }
2239 }
2240 \f
2241
2242 /* Start remote-debugging of a machine over a serial link.  */
2243
2244 void
2245 start_remote (int from_tty)
2246 {
2247   struct inferior *inferior;
2248
2249   init_wait_for_inferior ();
2250   inferior = current_inferior ();
2251   inferior->control.stop_soon = STOP_QUIETLY_REMOTE;
2252
2253   /* Always go on waiting for the target, regardless of the mode.  */
2254   /* FIXME: cagney/1999-09-23: At present it isn't possible to
2255      indicate to wait_for_inferior that a target should timeout if
2256      nothing is returned (instead of just blocking).  Because of this,
2257      targets expecting an immediate response need to, internally, set
2258      things up so that the target_wait() is forced to eventually
2259      timeout.  */
2260   /* FIXME: cagney/1999-09-24: It isn't possible for target_open() to
2261      differentiate to its caller what the state of the target is after
2262      the initial open has been performed.  Here we're assuming that
2263      the target has stopped.  It should be possible to eventually have
2264      target_open() return to the caller an indication that the target
2265      is currently running and GDB state should be set to the same as
2266      for an async run.  */
2267   wait_for_inferior ();
2268
2269   /* Now that the inferior has stopped, do any bookkeeping like
2270      loading shared libraries.  We want to do this before normal_stop,
2271      so that the displayed frame is up to date.  */
2272   post_create_inferior (&current_target, from_tty);
2273
2274   normal_stop ();
2275 }
2276
2277 /* Initialize static vars when a new inferior begins.  */
2278
2279 void
2280 init_wait_for_inferior (void)
2281 {
2282   /* These are meaningless until the first time through wait_for_inferior.  */
2283
2284   breakpoint_init_inferior (inf_starting);
2285
2286   clear_proceed_status ();
2287
2288   stepping_past_singlestep_breakpoint = 0;
2289   deferred_step_ptid = null_ptid;
2290
2291   target_last_wait_ptid = minus_one_ptid;
2292
2293   previous_inferior_ptid = inferior_ptid;
2294   init_infwait_state ();
2295
2296   /* Discard any skipped inlined frames.  */
2297   clear_inline_frame_state (minus_one_ptid);
2298 }
2299
2300 \f
2301 /* This enum encodes possible reasons for doing a target_wait, so that
2302    wfi can call target_wait in one place.  (Ultimately the call will be
2303    moved out of the infinite loop entirely.) */
2304
2305 enum infwait_states
2306 {
2307   infwait_normal_state,
2308   infwait_thread_hop_state,
2309   infwait_step_watch_state,
2310   infwait_nonstep_watch_state
2311 };
2312
2313 /* The PTID we'll do a target_wait on.*/
2314 ptid_t waiton_ptid;
2315
2316 /* Current inferior wait state.  */
2317 enum infwait_states infwait_state;
2318
2319 /* Data to be passed around while handling an event.  This data is
2320    discarded between events.  */
2321 struct execution_control_state
2322 {
2323   ptid_t ptid;
2324   /* The thread that got the event, if this was a thread event; NULL
2325      otherwise.  */
2326   struct thread_info *event_thread;
2327
2328   struct target_waitstatus ws;
2329   int random_signal;
2330   CORE_ADDR stop_func_start;
2331   CORE_ADDR stop_func_end;
2332   char *stop_func_name;
2333   int new_thread_event;
2334   int wait_some_more;
2335 };
2336
2337 static void handle_inferior_event (struct execution_control_state *ecs);
2338
2339 static void handle_step_into_function (struct gdbarch *gdbarch,
2340                                        struct execution_control_state *ecs);
2341 static void handle_step_into_function_backward (struct gdbarch *gdbarch,
2342                                                 struct execution_control_state *ecs);
2343 static void check_exception_resume (struct execution_control_state *,
2344                                     struct frame_info *, struct symbol *);
2345
2346 static void stop_stepping (struct execution_control_state *ecs);
2347 static void prepare_to_wait (struct execution_control_state *ecs);
2348 static void keep_going (struct execution_control_state *ecs);
2349
2350 /* Callback for iterate over threads.  If the thread is stopped, but
2351    the user/frontend doesn't know about that yet, go through
2352    normal_stop, as if the thread had just stopped now.  ARG points at
2353    a ptid.  If PTID is MINUS_ONE_PTID, applies to all threads.  If
2354    ptid_is_pid(PTID) is true, applies to all threads of the process
2355    pointed at by PTID.  Otherwise, apply only to the thread pointed by
2356    PTID.  */
2357
2358 static int
2359 infrun_thread_stop_requested_callback (struct thread_info *info, void *arg)
2360 {
2361   ptid_t ptid = * (ptid_t *) arg;
2362
2363   if ((ptid_equal (info->ptid, ptid)
2364        || ptid_equal (minus_one_ptid, ptid)
2365        || (ptid_is_pid (ptid)
2366            && ptid_get_pid (ptid) == ptid_get_pid (info->ptid)))
2367       && is_running (info->ptid)
2368       && !is_executing (info->ptid))
2369     {
2370       struct cleanup *old_chain;
2371       struct execution_control_state ecss;
2372       struct execution_control_state *ecs = &ecss;
2373
2374       memset (ecs, 0, sizeof (*ecs));
2375
2376       old_chain = make_cleanup_restore_current_thread ();
2377
2378       switch_to_thread (info->ptid);
2379
2380       /* Go through handle_inferior_event/normal_stop, so we always
2381          have consistent output as if the stop event had been
2382          reported.  */
2383       ecs->ptid = info->ptid;
2384       ecs->event_thread = find_thread_ptid (info->ptid);
2385       ecs->ws.kind = TARGET_WAITKIND_STOPPED;
2386       ecs->ws.value.sig = TARGET_SIGNAL_0;
2387
2388       handle_inferior_event (ecs);
2389
2390       if (!ecs->wait_some_more)
2391         {
2392           struct thread_info *tp;
2393
2394           normal_stop ();
2395
2396           /* Finish off the continuations.  */
2397           tp = inferior_thread ();
2398           do_all_intermediate_continuations_thread (tp, 1);
2399           do_all_continuations_thread (tp, 1);
2400         }
2401
2402       do_cleanups (old_chain);
2403     }
2404
2405   return 0;
2406 }
2407
2408 /* This function is attached as a "thread_stop_requested" observer.
2409    Cleanup local state that assumed the PTID was to be resumed, and
2410    report the stop to the frontend.  */
2411
2412 static void
2413 infrun_thread_stop_requested (ptid_t ptid)
2414 {
2415   struct displaced_step_inferior_state *displaced;
2416
2417   /* PTID was requested to stop.  Remove it from the displaced
2418      stepping queue, so we don't try to resume it automatically.  */
2419
2420   for (displaced = displaced_step_inferior_states;
2421        displaced;
2422        displaced = displaced->next)
2423     {
2424       struct displaced_step_request *it, **prev_next_p;
2425
2426       it = displaced->step_request_queue;
2427       prev_next_p = &displaced->step_request_queue;
2428       while (it)
2429         {
2430           if (ptid_match (it->ptid, ptid))
2431             {
2432               *prev_next_p = it->next;
2433               it->next = NULL;
2434               xfree (it);
2435             }
2436           else
2437             {
2438               prev_next_p = &it->next;
2439             }
2440
2441           it = *prev_next_p;
2442         }
2443     }
2444
2445   iterate_over_threads (infrun_thread_stop_requested_callback, &ptid);
2446 }
2447
2448 static void
2449 infrun_thread_thread_exit (struct thread_info *tp, int silent)
2450 {
2451   if (ptid_equal (target_last_wait_ptid, tp->ptid))
2452     nullify_last_target_wait_ptid ();
2453 }
2454
2455 /* Callback for iterate_over_threads.  */
2456
2457 static int
2458 delete_step_resume_breakpoint_callback (struct thread_info *info, void *data)
2459 {
2460   if (is_exited (info->ptid))
2461     return 0;
2462
2463   delete_step_resume_breakpoint (info);
2464   delete_exception_resume_breakpoint (info);
2465   return 0;
2466 }
2467
2468 /* In all-stop, delete the step resume breakpoint of any thread that
2469    had one.  In non-stop, delete the step resume breakpoint of the
2470    thread that just stopped.  */
2471
2472 static void
2473 delete_step_thread_step_resume_breakpoint (void)
2474 {
2475   if (!target_has_execution
2476       || ptid_equal (inferior_ptid, null_ptid))
2477     /* If the inferior has exited, we have already deleted the step
2478        resume breakpoints out of GDB's lists.  */
2479     return;
2480
2481   if (non_stop)
2482     {
2483       /* If in non-stop mode, only delete the step-resume or
2484          longjmp-resume breakpoint of the thread that just stopped
2485          stepping.  */
2486       struct thread_info *tp = inferior_thread ();
2487
2488       delete_step_resume_breakpoint (tp);
2489       delete_exception_resume_breakpoint (tp);
2490     }
2491   else
2492     /* In all-stop mode, delete all step-resume and longjmp-resume
2493        breakpoints of any thread that had them.  */
2494     iterate_over_threads (delete_step_resume_breakpoint_callback, NULL);
2495 }
2496
2497 /* A cleanup wrapper.  */
2498
2499 static void
2500 delete_step_thread_step_resume_breakpoint_cleanup (void *arg)
2501 {
2502   delete_step_thread_step_resume_breakpoint ();
2503 }
2504
2505 /* Pretty print the results of target_wait, for debugging purposes.  */
2506
2507 static void
2508 print_target_wait_results (ptid_t waiton_ptid, ptid_t result_ptid,
2509                            const struct target_waitstatus *ws)
2510 {
2511   char *status_string = target_waitstatus_to_string (ws);
2512   struct ui_file *tmp_stream = mem_fileopen ();
2513   char *text;
2514
2515   /* The text is split over several lines because it was getting too long.
2516      Call fprintf_unfiltered (gdb_stdlog) once so that the text is still
2517      output as a unit; we want only one timestamp printed if debug_timestamp
2518      is set.  */
2519
2520   fprintf_unfiltered (tmp_stream,
2521                       "infrun: target_wait (%d", PIDGET (waiton_ptid));
2522   if (PIDGET (waiton_ptid) != -1)
2523     fprintf_unfiltered (tmp_stream,
2524                         " [%s]", target_pid_to_str (waiton_ptid));
2525   fprintf_unfiltered (tmp_stream, ", status) =\n");
2526   fprintf_unfiltered (tmp_stream,
2527                       "infrun:   %d [%s],\n",
2528                       PIDGET (result_ptid), target_pid_to_str (result_ptid));
2529   fprintf_unfiltered (tmp_stream,
2530                       "infrun:   %s\n",
2531                       status_string);
2532
2533   text = ui_file_xstrdup (tmp_stream, NULL);
2534
2535   /* This uses %s in part to handle %'s in the text, but also to avoid
2536      a gcc error: the format attribute requires a string literal.  */
2537   fprintf_unfiltered (gdb_stdlog, "%s", text);
2538
2539   xfree (status_string);
2540   xfree (text);
2541   ui_file_delete (tmp_stream);
2542 }
2543
2544 /* Prepare and stabilize the inferior for detaching it.  E.g.,
2545    detaching while a thread is displaced stepping is a recipe for
2546    crashing it, as nothing would readjust the PC out of the scratch
2547    pad.  */
2548
2549 void
2550 prepare_for_detach (void)
2551 {
2552   struct inferior *inf = current_inferior ();
2553   ptid_t pid_ptid = pid_to_ptid (inf->pid);
2554   struct cleanup *old_chain_1;
2555   struct displaced_step_inferior_state *displaced;
2556
2557   displaced = get_displaced_stepping_state (inf->pid);
2558
2559   /* Is any thread of this process displaced stepping?  If not,
2560      there's nothing else to do.  */
2561   if (displaced == NULL || ptid_equal (displaced->step_ptid, null_ptid))
2562     return;
2563
2564   if (debug_infrun)
2565     fprintf_unfiltered (gdb_stdlog,
2566                         "displaced-stepping in-process while detaching");
2567
2568   old_chain_1 = make_cleanup_restore_integer (&inf->detaching);
2569   inf->detaching = 1;
2570
2571   while (!ptid_equal (displaced->step_ptid, null_ptid))
2572     {
2573       struct cleanup *old_chain_2;
2574       struct execution_control_state ecss;
2575       struct execution_control_state *ecs;
2576
2577       ecs = &ecss;
2578       memset (ecs, 0, sizeof (*ecs));
2579
2580       overlay_cache_invalid = 1;
2581
2582       /* We have to invalidate the registers BEFORE calling
2583          target_wait because they can be loaded from the target while
2584          in target_wait.  This makes remote debugging a bit more
2585          efficient for those targets that provide critical registers
2586          as part of their normal status mechanism.  */
2587
2588       registers_changed ();
2589
2590       if (deprecated_target_wait_hook)
2591         ecs->ptid = deprecated_target_wait_hook (pid_ptid, &ecs->ws, 0);
2592       else
2593         ecs->ptid = target_wait (pid_ptid, &ecs->ws, 0);
2594
2595       if (debug_infrun)
2596         print_target_wait_results (pid_ptid, ecs->ptid, &ecs->ws);
2597
2598       /* If an error happens while handling the event, propagate GDB's
2599          knowledge of the executing state to the frontend/user running
2600          state.  */
2601       old_chain_2 = make_cleanup (finish_thread_state_cleanup,
2602                                   &minus_one_ptid);
2603
2604       /* In non-stop mode, each thread is handled individually.
2605          Switch early, so the global state is set correctly for this
2606          thread.  */
2607       if (non_stop
2608           && ecs->ws.kind != TARGET_WAITKIND_EXITED
2609           && ecs->ws.kind != TARGET_WAITKIND_SIGNALLED)
2610         context_switch (ecs->ptid);
2611
2612       /* Now figure out what to do with the result of the result.  */
2613       handle_inferior_event (ecs);
2614
2615       /* No error, don't finish the state yet.  */
2616       discard_cleanups (old_chain_2);
2617
2618       /* Breakpoints and watchpoints are not installed on the target
2619          at this point, and signals are passed directly to the
2620          inferior, so this must mean the process is gone.  */
2621       if (!ecs->wait_some_more)
2622         {
2623           discard_cleanups (old_chain_1);
2624           error (_("Program exited while detaching"));
2625         }
2626     }
2627
2628   discard_cleanups (old_chain_1);
2629 }
2630
2631 /* Wait for control to return from inferior to debugger.
2632
2633    If inferior gets a signal, we may decide to start it up again
2634    instead of returning.  That is why there is a loop in this function.
2635    When this function actually returns it means the inferior
2636    should be left stopped and GDB should read more commands.  */
2637
2638 void
2639 wait_for_inferior (void)
2640 {
2641   struct cleanup *old_cleanups;
2642   struct execution_control_state ecss;
2643   struct execution_control_state *ecs;
2644
2645   if (debug_infrun)
2646     fprintf_unfiltered
2647       (gdb_stdlog, "infrun: wait_for_inferior ()\n");
2648
2649   old_cleanups =
2650     make_cleanup (delete_step_thread_step_resume_breakpoint_cleanup, NULL);
2651
2652   ecs = &ecss;
2653   memset (ecs, 0, sizeof (*ecs));
2654
2655   while (1)
2656     {
2657       struct cleanup *old_chain;
2658
2659       /* We have to invalidate the registers BEFORE calling target_wait
2660          because they can be loaded from the target while in target_wait.
2661          This makes remote debugging a bit more efficient for those
2662          targets that provide critical registers as part of their normal
2663          status mechanism.  */
2664
2665       overlay_cache_invalid = 1;
2666       registers_changed ();
2667
2668       if (deprecated_target_wait_hook)
2669         ecs->ptid = deprecated_target_wait_hook (waiton_ptid, &ecs->ws, 0);
2670       else
2671         ecs->ptid = target_wait (waiton_ptid, &ecs->ws, 0);
2672
2673       if (debug_infrun)
2674         print_target_wait_results (waiton_ptid, ecs->ptid, &ecs->ws);
2675
2676       /* If an error happens while handling the event, propagate GDB's
2677          knowledge of the executing state to the frontend/user running
2678          state.  */
2679       old_chain = make_cleanup (finish_thread_state_cleanup, &minus_one_ptid);
2680
2681       if (ecs->ws.kind == TARGET_WAITKIND_SYSCALL_ENTRY
2682           || ecs->ws.kind == TARGET_WAITKIND_SYSCALL_RETURN)
2683         ecs->ws.value.syscall_number = UNKNOWN_SYSCALL;
2684
2685       /* Now figure out what to do with the result of the result.  */
2686       handle_inferior_event (ecs);
2687
2688       /* No error, don't finish the state yet.  */
2689       discard_cleanups (old_chain);
2690
2691       if (!ecs->wait_some_more)
2692         break;
2693     }
2694
2695   do_cleanups (old_cleanups);
2696 }
2697
2698 /* Asynchronous version of wait_for_inferior.  It is called by the
2699    event loop whenever a change of state is detected on the file
2700    descriptor corresponding to the target.  It can be called more than
2701    once to complete a single execution command.  In such cases we need
2702    to keep the state in a global variable ECSS.  If it is the last time
2703    that this function is called for a single execution command, then
2704    report to the user that the inferior has stopped, and do the
2705    necessary cleanups.  */
2706
2707 void
2708 fetch_inferior_event (void *client_data)
2709 {
2710   struct execution_control_state ecss;
2711   struct execution_control_state *ecs = &ecss;
2712   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
2713   struct cleanup *ts_old_chain;
2714   int was_sync = sync_execution;
2715
2716   memset (ecs, 0, sizeof (*ecs));
2717
2718   /* We're handling a live event, so make sure we're doing live
2719      debugging.  If we're looking at traceframes while the target is
2720      running, we're going to need to get back to that mode after
2721      handling the event.  */
2722   if (non_stop)
2723     {
2724       make_cleanup_restore_current_traceframe ();
2725       set_current_traceframe (-1);
2726     }
2727
2728   if (non_stop)
2729     /* In non-stop mode, the user/frontend should not notice a thread
2730        switch due to internal events.  Make sure we reverse to the
2731        user selected thread and frame after handling the event and
2732        running any breakpoint commands.  */
2733     make_cleanup_restore_current_thread ();
2734
2735   /* We have to invalidate the registers BEFORE calling target_wait
2736      because they can be loaded from the target while in target_wait.
2737      This makes remote debugging a bit more efficient for those
2738      targets that provide critical registers as part of their normal
2739      status mechanism.  */
2740
2741   overlay_cache_invalid = 1;
2742
2743   /* But don't do it if the current thread is already stopped (hence
2744      this is either a delayed event that will result in
2745      TARGET_WAITKIND_IGNORE, or it's an event for another thread (and
2746      we always clear the register and frame caches when the user
2747      switches threads anyway).  If we didn't do this, a spurious
2748      delayed event in all-stop mode would make the user lose the
2749      selected frame.  */
2750   if (non_stop || is_executing (inferior_ptid))
2751     registers_changed ();
2752
2753   make_cleanup_restore_integer (&execution_direction);
2754   execution_direction = target_execution_direction ();
2755
2756   if (deprecated_target_wait_hook)
2757     ecs->ptid =
2758       deprecated_target_wait_hook (waiton_ptid, &ecs->ws, TARGET_WNOHANG);
2759   else
2760     ecs->ptid = target_wait (waiton_ptid, &ecs->ws, TARGET_WNOHANG);
2761
2762   if (debug_infrun)
2763     print_target_wait_results (waiton_ptid, ecs->ptid, &ecs->ws);
2764
2765   if (non_stop
2766       && ecs->ws.kind != TARGET_WAITKIND_IGNORE
2767       && ecs->ws.kind != TARGET_WAITKIND_EXITED
2768       && ecs->ws.kind != TARGET_WAITKIND_SIGNALLED)
2769     /* In non-stop mode, each thread is handled individually.  Switch
2770        early, so the global state is set correctly for this
2771        thread.  */
2772     context_switch (ecs->ptid);
2773
2774   /* If an error happens while handling the event, propagate GDB's
2775      knowledge of the executing state to the frontend/user running
2776      state.  */
2777   if (!non_stop)
2778     ts_old_chain = make_cleanup (finish_thread_state_cleanup, &minus_one_ptid);
2779   else
2780     ts_old_chain = make_cleanup (finish_thread_state_cleanup, &ecs->ptid);
2781
2782   /* Now figure out what to do with the result of the result.  */
2783   handle_inferior_event (ecs);
2784
2785   if (!ecs->wait_some_more)
2786     {
2787       struct inferior *inf = find_inferior_pid (ptid_get_pid (ecs->ptid));
2788
2789       delete_step_thread_step_resume_breakpoint ();
2790
2791       /* We may not find an inferior if this was a process exit.  */
2792       if (inf == NULL || inf->control.stop_soon == NO_STOP_QUIETLY)
2793         normal_stop ();
2794
2795       if (target_has_execution
2796           && ecs->ws.kind != TARGET_WAITKIND_EXITED
2797           && ecs->ws.kind != TARGET_WAITKIND_SIGNALLED
2798           && ecs->event_thread->step_multi
2799           && ecs->event_thread->control.stop_step)
2800         inferior_event_handler (INF_EXEC_CONTINUE, NULL);
2801       else
2802         inferior_event_handler (INF_EXEC_COMPLETE, NULL);
2803     }
2804
2805   /* No error, don't finish the thread states yet.  */
2806   discard_cleanups (ts_old_chain);
2807
2808   /* Revert thread and frame.  */
2809   do_cleanups (old_chain);
2810
2811   /* If the inferior was in sync execution mode, and now isn't,
2812      restore the prompt.  */
2813   if (was_sync && !sync_execution)
2814     display_gdb_prompt (0);
2815 }
2816
2817 /* Record the frame and location we're currently stepping through.  */
2818 void
2819 set_step_info (struct frame_info *frame, struct symtab_and_line sal)
2820 {
2821   struct thread_info *tp = inferior_thread ();
2822
2823   tp->control.step_frame_id = get_frame_id (frame);
2824   tp->control.step_stack_frame_id = get_stack_frame_id (frame);
2825
2826   tp->current_symtab = sal.symtab;
2827   tp->current_line = sal.line;
2828 }
2829
2830 /* Clear context switchable stepping state.  */
2831
2832 void
2833 init_thread_stepping_state (struct thread_info *tss)
2834 {
2835   tss->stepping_over_breakpoint = 0;
2836   tss->step_after_step_resume_breakpoint = 0;
2837   tss->stepping_through_solib_after_catch = 0;
2838   tss->stepping_through_solib_catchpoints = NULL;
2839 }
2840
2841 /* Return the cached copy of the last pid/waitstatus returned by
2842    target_wait()/deprecated_target_wait_hook().  The data is actually
2843    cached by handle_inferior_event(), which gets called immediately
2844    after target_wait()/deprecated_target_wait_hook().  */
2845
2846 void
2847 get_last_target_status (ptid_t *ptidp, struct target_waitstatus *status)
2848 {
2849   *ptidp = target_last_wait_ptid;
2850   *status = target_last_waitstatus;
2851 }
2852
2853 void
2854 nullify_last_target_wait_ptid (void)
2855 {
2856   target_last_wait_ptid = minus_one_ptid;
2857 }
2858
2859 /* Switch thread contexts.  */
2860
2861 static void
2862 context_switch (ptid_t ptid)
2863 {
2864   if (debug_infrun)
2865     {
2866       fprintf_unfiltered (gdb_stdlog, "infrun: Switching context from %s ",
2867                           target_pid_to_str (inferior_ptid));
2868       fprintf_unfiltered (gdb_stdlog, "to %s\n",
2869                           target_pid_to_str (ptid));
2870     }
2871
2872   switch_to_thread (ptid);
2873 }
2874
2875 static void
2876 adjust_pc_after_break (struct execution_control_state *ecs)
2877 {
2878   struct regcache *regcache;
2879   struct gdbarch *gdbarch;
2880   struct address_space *aspace;
2881   CORE_ADDR breakpoint_pc;
2882
2883   /* If we've hit a breakpoint, we'll normally be stopped with SIGTRAP.  If
2884      we aren't, just return.
2885
2886      We assume that waitkinds other than TARGET_WAITKIND_STOPPED are not
2887      affected by gdbarch_decr_pc_after_break.  Other waitkinds which are
2888      implemented by software breakpoints should be handled through the normal
2889      breakpoint layer.
2890
2891      NOTE drow/2004-01-31: On some targets, breakpoints may generate
2892      different signals (SIGILL or SIGEMT for instance), but it is less
2893      clear where the PC is pointing afterwards.  It may not match
2894      gdbarch_decr_pc_after_break.  I don't know any specific target that
2895      generates these signals at breakpoints (the code has been in GDB since at
2896      least 1992) so I can not guess how to handle them here.
2897
2898      In earlier versions of GDB, a target with 
2899      gdbarch_have_nonsteppable_watchpoint would have the PC after hitting a
2900      watchpoint affected by gdbarch_decr_pc_after_break.  I haven't found any
2901      target with both of these set in GDB history, and it seems unlikely to be
2902      correct, so gdbarch_have_nonsteppable_watchpoint is not checked here.  */
2903
2904   if (ecs->ws.kind != TARGET_WAITKIND_STOPPED)
2905     return;
2906
2907   if (ecs->ws.value.sig != TARGET_SIGNAL_TRAP)
2908     return;
2909
2910   /* In reverse execution, when a breakpoint is hit, the instruction
2911      under it has already been de-executed.  The reported PC always
2912      points at the breakpoint address, so adjusting it further would
2913      be wrong.  E.g., consider this case on a decr_pc_after_break == 1
2914      architecture:
2915
2916        B1         0x08000000 :   INSN1
2917        B2         0x08000001 :   INSN2
2918                   0x08000002 :   INSN3
2919             PC -> 0x08000003 :   INSN4
2920
2921      Say you're stopped at 0x08000003 as above.  Reverse continuing
2922      from that point should hit B2 as below.  Reading the PC when the
2923      SIGTRAP is reported should read 0x08000001 and INSN2 should have
2924      been de-executed already.
2925
2926        B1         0x08000000 :   INSN1
2927        B2   PC -> 0x08000001 :   INSN2
2928                   0x08000002 :   INSN3
2929                   0x08000003 :   INSN4
2930
2931      We can't apply the same logic as for forward execution, because
2932      we would wrongly adjust the PC to 0x08000000, since there's a
2933      breakpoint at PC - 1.  We'd then report a hit on B1, although
2934      INSN1 hadn't been de-executed yet.  Doing nothing is the correct
2935      behaviour.  */
2936   if (execution_direction == EXEC_REVERSE)
2937     return;
2938
2939   /* If this target does not decrement the PC after breakpoints, then
2940      we have nothing to do.  */
2941   regcache = get_thread_regcache (ecs->ptid);
2942   gdbarch = get_regcache_arch (regcache);
2943   if (gdbarch_decr_pc_after_break (gdbarch) == 0)
2944     return;
2945
2946   aspace = get_regcache_aspace (regcache);
2947
2948   /* Find the location where (if we've hit a breakpoint) the
2949      breakpoint would be.  */
2950   breakpoint_pc = regcache_read_pc (regcache)
2951                   - gdbarch_decr_pc_after_break (gdbarch);
2952
2953   /* Check whether there actually is a software breakpoint inserted at
2954      that location.
2955
2956      If in non-stop mode, a race condition is possible where we've
2957      removed a breakpoint, but stop events for that breakpoint were
2958      already queued and arrive later.  To suppress those spurious
2959      SIGTRAPs, we keep a list of such breakpoint locations for a bit,
2960      and retire them after a number of stop events are reported.  */
2961   if (software_breakpoint_inserted_here_p (aspace, breakpoint_pc)
2962       || (non_stop && moribund_breakpoint_here_p (aspace, breakpoint_pc)))
2963     {
2964       struct cleanup *old_cleanups = NULL;
2965
2966       if (RECORD_IS_USED)
2967         old_cleanups = record_gdb_operation_disable_set ();
2968
2969       /* When using hardware single-step, a SIGTRAP is reported for both
2970          a completed single-step and a software breakpoint.  Need to
2971          differentiate between the two, as the latter needs adjusting
2972          but the former does not.
2973
2974          The SIGTRAP can be due to a completed hardware single-step only if 
2975           - we didn't insert software single-step breakpoints
2976           - the thread to be examined is still the current thread
2977           - this thread is currently being stepped
2978
2979          If any of these events did not occur, we must have stopped due
2980          to hitting a software breakpoint, and have to back up to the
2981          breakpoint address.
2982
2983          As a special case, we could have hardware single-stepped a
2984          software breakpoint.  In this case (prev_pc == breakpoint_pc),
2985          we also need to back up to the breakpoint address.  */
2986
2987       if (singlestep_breakpoints_inserted_p
2988           || !ptid_equal (ecs->ptid, inferior_ptid)
2989           || !currently_stepping (ecs->event_thread)
2990           || ecs->event_thread->prev_pc == breakpoint_pc)
2991         regcache_write_pc (regcache, breakpoint_pc);
2992
2993       if (RECORD_IS_USED)
2994         do_cleanups (old_cleanups);
2995     }
2996 }
2997
2998 void
2999 init_infwait_state (void)
3000 {
3001   waiton_ptid = pid_to_ptid (-1);
3002   infwait_state = infwait_normal_state;
3003 }
3004
3005 void
3006 error_is_running (void)
3007 {
3008   error (_("Cannot execute this command while "
3009            "the selected thread is running."));
3010 }
3011
3012 void
3013 ensure_not_running (void)
3014 {
3015   if (is_running (inferior_ptid))
3016     error_is_running ();
3017 }
3018
3019 static int
3020 stepped_in_from (struct frame_info *frame, struct frame_id step_frame_id)
3021 {
3022   for (frame = get_prev_frame (frame);
3023        frame != NULL;
3024        frame = get_prev_frame (frame))
3025     {
3026       if (frame_id_eq (get_frame_id (frame), step_frame_id))
3027         return 1;
3028       if (get_frame_type (frame) != INLINE_FRAME)
3029         break;
3030     }
3031
3032   return 0;
3033 }
3034
3035 /* Auxiliary function that handles syscall entry/return events.
3036    It returns 1 if the inferior should keep going (and GDB
3037    should ignore the event), or 0 if the event deserves to be
3038    processed.  */
3039
3040 static int
3041 handle_syscall_event (struct execution_control_state *ecs)
3042 {
3043   struct regcache *regcache;
3044   struct gdbarch *gdbarch;
3045   int syscall_number;
3046
3047   if (!ptid_equal (ecs->ptid, inferior_ptid))
3048     context_switch (ecs->ptid);
3049
3050   regcache = get_thread_regcache (ecs->ptid);
3051   gdbarch = get_regcache_arch (regcache);
3052   syscall_number = gdbarch_get_syscall_number (gdbarch, ecs->ptid);
3053   stop_pc = regcache_read_pc (regcache);
3054
3055   target_last_waitstatus.value.syscall_number = syscall_number;
3056
3057   if (catch_syscall_enabled () > 0
3058       && catching_syscall_number (syscall_number) > 0)
3059     {
3060       if (debug_infrun)
3061         fprintf_unfiltered (gdb_stdlog, "infrun: syscall number = '%d'\n",
3062                             syscall_number);
3063
3064       ecs->event_thread->control.stop_bpstat
3065         = bpstat_stop_status (get_regcache_aspace (regcache),
3066                               stop_pc, ecs->ptid);
3067       ecs->random_signal
3068         = !bpstat_explains_signal (ecs->event_thread->control.stop_bpstat);
3069
3070       if (!ecs->random_signal)
3071         {
3072           /* Catchpoint hit.  */
3073           ecs->event_thread->suspend.stop_signal = TARGET_SIGNAL_TRAP;
3074           return 0;
3075         }
3076     }
3077
3078   /* If no catchpoint triggered for this, then keep going.  */
3079   ecs->event_thread->suspend.stop_signal = TARGET_SIGNAL_0;
3080   keep_going (ecs);
3081   return 1;
3082 }
3083
3084 /* Given an execution control state that has been freshly filled in
3085    by an event from the inferior, figure out what it means and take
3086    appropriate action.  */
3087
3088 static void
3089 handle_inferior_event (struct execution_control_state *ecs)
3090 {
3091   struct frame_info *frame;
3092   struct gdbarch *gdbarch;
3093   int stopped_by_watchpoint;
3094   int stepped_after_stopped_by_watchpoint = 0;
3095   struct symtab_and_line stop_pc_sal;
3096   enum stop_kind stop_soon;
3097
3098   if (ecs->ws.kind == TARGET_WAITKIND_IGNORE)
3099     {
3100       /* We had an event in the inferior, but we are not interested in
3101          handling it at this level.  The lower layers have already
3102          done what needs to be done, if anything.
3103
3104          One of the possible circumstances for this is when the
3105          inferior produces output for the console.  The inferior has
3106          not stopped, and we are ignoring the event.  Another possible
3107          circumstance is any event which the lower level knows will be
3108          reported multiple times without an intervening resume.  */
3109       if (debug_infrun)
3110         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_IGNORE\n");
3111       prepare_to_wait (ecs);
3112       return;
3113     }
3114
3115   if (ecs->ws.kind != TARGET_WAITKIND_EXITED
3116       && ecs->ws.kind != TARGET_WAITKIND_SIGNALLED)
3117     {
3118       struct inferior *inf = find_inferior_pid (ptid_get_pid (ecs->ptid));
3119
3120       gdb_assert (inf);
3121       stop_soon = inf->control.stop_soon;
3122     }
3123   else
3124     stop_soon = NO_STOP_QUIETLY;
3125
3126   /* Cache the last pid/waitstatus.  */
3127   target_last_wait_ptid = ecs->ptid;
3128   target_last_waitstatus = ecs->ws;
3129
3130   /* Always clear state belonging to the previous time we stopped.  */
3131   stop_stack_dummy = STOP_NONE;
3132
3133   /* If it's a new process, add it to the thread database.  */
3134
3135   ecs->new_thread_event = (!ptid_equal (ecs->ptid, inferior_ptid)
3136                            && !ptid_equal (ecs->ptid, minus_one_ptid)
3137                            && !in_thread_list (ecs->ptid));
3138
3139   if (ecs->ws.kind != TARGET_WAITKIND_EXITED
3140       && ecs->ws.kind != TARGET_WAITKIND_SIGNALLED && ecs->new_thread_event)
3141     add_thread (ecs->ptid);
3142
3143   ecs->event_thread = find_thread_ptid (ecs->ptid);
3144
3145   /* Dependent on valid ECS->EVENT_THREAD.  */
3146   adjust_pc_after_break (ecs);
3147
3148   /* Dependent on the current PC value modified by adjust_pc_after_break.  */
3149   reinit_frame_cache ();
3150
3151   breakpoint_retire_moribund ();
3152
3153   /* First, distinguish signals caused by the debugger from signals
3154      that have to do with the program's own actions.  Note that
3155      breakpoint insns may cause SIGTRAP or SIGILL or SIGEMT, depending
3156      on the operating system version.  Here we detect when a SIGILL or
3157      SIGEMT is really a breakpoint and change it to SIGTRAP.  We do
3158      something similar for SIGSEGV, since a SIGSEGV will be generated
3159      when we're trying to execute a breakpoint instruction on a
3160      non-executable stack.  This happens for call dummy breakpoints
3161      for architectures like SPARC that place call dummies on the
3162      stack.  */
3163   if (ecs->ws.kind == TARGET_WAITKIND_STOPPED
3164       && (ecs->ws.value.sig == TARGET_SIGNAL_ILL
3165           || ecs->ws.value.sig == TARGET_SIGNAL_SEGV
3166           || ecs->ws.value.sig == TARGET_SIGNAL_EMT))
3167     {
3168       struct regcache *regcache = get_thread_regcache (ecs->ptid);
3169
3170       if (breakpoint_inserted_here_p (get_regcache_aspace (regcache),
3171                                       regcache_read_pc (regcache)))
3172         {
3173           if (debug_infrun)
3174             fprintf_unfiltered (gdb_stdlog,
3175                                 "infrun: Treating signal as SIGTRAP\n");
3176           ecs->ws.value.sig = TARGET_SIGNAL_TRAP;
3177         }
3178     }
3179
3180   /* Mark the non-executing threads accordingly.  In all-stop, all
3181      threads of all processes are stopped when we get any event
3182      reported.  In non-stop mode, only the event thread stops.  If
3183      we're handling a process exit in non-stop mode, there's nothing
3184      to do, as threads of the dead process are gone, and threads of
3185      any other process were left running.  */
3186   if (!non_stop)
3187     set_executing (minus_one_ptid, 0);
3188   else if (ecs->ws.kind != TARGET_WAITKIND_SIGNALLED
3189            && ecs->ws.kind != TARGET_WAITKIND_EXITED)
3190     set_executing (inferior_ptid, 0);
3191
3192   switch (infwait_state)
3193     {
3194     case infwait_thread_hop_state:
3195       if (debug_infrun)
3196         fprintf_unfiltered (gdb_stdlog, "infrun: infwait_thread_hop_state\n");
3197       break;
3198
3199     case infwait_normal_state:
3200       if (debug_infrun)
3201         fprintf_unfiltered (gdb_stdlog, "infrun: infwait_normal_state\n");
3202       break;
3203
3204     case infwait_step_watch_state:
3205       if (debug_infrun)
3206         fprintf_unfiltered (gdb_stdlog,
3207                             "infrun: infwait_step_watch_state\n");
3208
3209       stepped_after_stopped_by_watchpoint = 1;
3210       break;
3211
3212     case infwait_nonstep_watch_state:
3213       if (debug_infrun)
3214         fprintf_unfiltered (gdb_stdlog,
3215                             "infrun: infwait_nonstep_watch_state\n");
3216       insert_breakpoints ();
3217
3218       /* FIXME-maybe: is this cleaner than setting a flag?  Does it
3219          handle things like signals arriving and other things happening
3220          in combination correctly?  */
3221       stepped_after_stopped_by_watchpoint = 1;
3222       break;
3223
3224     default:
3225       internal_error (__FILE__, __LINE__, _("bad switch"));
3226     }
3227
3228   infwait_state = infwait_normal_state;
3229   waiton_ptid = pid_to_ptid (-1);
3230
3231   switch (ecs->ws.kind)
3232     {
3233     case TARGET_WAITKIND_LOADED:
3234       if (debug_infrun)
3235         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_LOADED\n");
3236       /* Ignore gracefully during startup of the inferior, as it might
3237          be the shell which has just loaded some objects, otherwise
3238          add the symbols for the newly loaded objects.  Also ignore at
3239          the beginning of an attach or remote session; we will query
3240          the full list of libraries once the connection is
3241          established.  */
3242       if (stop_soon == NO_STOP_QUIETLY)
3243         {
3244           /* Check for any newly added shared libraries if we're
3245              supposed to be adding them automatically.  Switch
3246              terminal for any messages produced by
3247              breakpoint_re_set.  */
3248           target_terminal_ours_for_output ();
3249           /* NOTE: cagney/2003-11-25: Make certain that the target
3250              stack's section table is kept up-to-date.  Architectures,
3251              (e.g., PPC64), use the section table to perform
3252              operations such as address => section name and hence
3253              require the table to contain all sections (including
3254              those found in shared libraries).  */
3255 #ifdef SOLIB_ADD
3256           SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
3257 #else
3258           solib_add (NULL, 0, &current_target, auto_solib_add);
3259 #endif
3260           target_terminal_inferior ();
3261
3262           /* If requested, stop when the dynamic linker notifies
3263              gdb of events.  This allows the user to get control
3264              and place breakpoints in initializer routines for
3265              dynamically loaded objects (among other things).  */
3266           if (stop_on_solib_events)
3267             {
3268               /* Make sure we print "Stopped due to solib-event" in
3269                  normal_stop.  */
3270               stop_print_frame = 1;
3271
3272               stop_stepping (ecs);
3273               return;
3274             }
3275
3276           /* NOTE drow/2007-05-11: This might be a good place to check
3277              for "catch load".  */
3278         }
3279
3280       /* If we are skipping through a shell, or through shared library
3281          loading that we aren't interested in, resume the program.  If
3282          we're running the program normally, also resume.  But stop if
3283          we're attaching or setting up a remote connection.  */
3284       if (stop_soon == STOP_QUIETLY || stop_soon == NO_STOP_QUIETLY)
3285         {
3286           /* Loading of shared libraries might have changed breakpoint
3287              addresses.  Make sure new breakpoints are inserted.  */
3288           if (stop_soon == NO_STOP_QUIETLY
3289               && !breakpoints_always_inserted_mode ())
3290             insert_breakpoints ();
3291           resume (0, TARGET_SIGNAL_0);
3292           prepare_to_wait (ecs);
3293           return;
3294         }
3295
3296       break;
3297
3298     case TARGET_WAITKIND_SPURIOUS:
3299       if (debug_infrun)
3300         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_SPURIOUS\n");
3301       resume (0, TARGET_SIGNAL_0);
3302       prepare_to_wait (ecs);
3303       return;
3304
3305     case TARGET_WAITKIND_EXITED:
3306       if (debug_infrun)
3307         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_EXITED\n");
3308       inferior_ptid = ecs->ptid;
3309       set_current_inferior (find_inferior_pid (ptid_get_pid (ecs->ptid)));
3310       set_current_program_space (current_inferior ()->pspace);
3311       handle_vfork_child_exec_or_exit (0);
3312       target_terminal_ours ();  /* Must do this before mourn anyway.  */
3313       print_exited_reason (ecs->ws.value.integer);
3314
3315       /* Record the exit code in the convenience variable $_exitcode, so
3316          that the user can inspect this again later.  */
3317       set_internalvar_integer (lookup_internalvar ("_exitcode"),
3318                                (LONGEST) ecs->ws.value.integer);
3319
3320       /* Also record this in the inferior itself.  */
3321       current_inferior ()->has_exit_code = 1;
3322       current_inferior ()->exit_code = (LONGEST) ecs->ws.value.integer;
3323
3324       gdb_flush (gdb_stdout);
3325       target_mourn_inferior ();
3326       singlestep_breakpoints_inserted_p = 0;
3327       cancel_single_step_breakpoints ();
3328       stop_print_frame = 0;
3329       stop_stepping (ecs);
3330       return;
3331
3332     case TARGET_WAITKIND_SIGNALLED:
3333       if (debug_infrun)
3334         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_SIGNALLED\n");
3335       inferior_ptid = ecs->ptid;
3336       set_current_inferior (find_inferior_pid (ptid_get_pid (ecs->ptid)));
3337       set_current_program_space (current_inferior ()->pspace);
3338       handle_vfork_child_exec_or_exit (0);
3339       stop_print_frame = 0;
3340       target_terminal_ours ();  /* Must do this before mourn anyway.  */
3341
3342       /* Note: By definition of TARGET_WAITKIND_SIGNALLED, we shouldn't
3343          reach here unless the inferior is dead.  However, for years
3344          target_kill() was called here, which hints that fatal signals aren't
3345          really fatal on some systems.  If that's true, then some changes
3346          may be needed.  */
3347       target_mourn_inferior ();
3348
3349       print_signal_exited_reason (ecs->ws.value.sig);
3350       singlestep_breakpoints_inserted_p = 0;
3351       cancel_single_step_breakpoints ();
3352       stop_stepping (ecs);
3353       return;
3354
3355       /* The following are the only cases in which we keep going;
3356          the above cases end in a continue or goto.  */
3357     case TARGET_WAITKIND_FORKED:
3358     case TARGET_WAITKIND_VFORKED:
3359       if (debug_infrun)
3360         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_FORKED\n");
3361
3362       if (!ptid_equal (ecs->ptid, inferior_ptid))
3363         {
3364           context_switch (ecs->ptid);
3365           reinit_frame_cache ();
3366         }
3367
3368       /* Immediately detach breakpoints from the child before there's
3369          any chance of letting the user delete breakpoints from the
3370          breakpoint lists.  If we don't do this early, it's easy to
3371          leave left over traps in the child, vis: "break foo; catch
3372          fork; c; <fork>; del; c; <child calls foo>".  We only follow
3373          the fork on the last `continue', and by that time the
3374          breakpoint at "foo" is long gone from the breakpoint table.
3375          If we vforked, then we don't need to unpatch here, since both
3376          parent and child are sharing the same memory pages; we'll
3377          need to unpatch at follow/detach time instead to be certain
3378          that new breakpoints added between catchpoint hit time and
3379          vfork follow are detached.  */
3380       if (ecs->ws.kind != TARGET_WAITKIND_VFORKED)
3381         {
3382           int child_pid = ptid_get_pid (ecs->ws.value.related_pid);
3383
3384           /* This won't actually modify the breakpoint list, but will
3385              physically remove the breakpoints from the child.  */
3386           detach_breakpoints (child_pid);
3387         }
3388
3389       if (singlestep_breakpoints_inserted_p)
3390         {
3391           /* Pull the single step breakpoints out of the target.  */
3392           remove_single_step_breakpoints ();
3393           singlestep_breakpoints_inserted_p = 0;
3394         }
3395
3396       /* In case the event is caught by a catchpoint, remember that
3397          the event is to be followed at the next resume of the thread,
3398          and not immediately.  */
3399       ecs->event_thread->pending_follow = ecs->ws;
3400
3401       stop_pc = regcache_read_pc (get_thread_regcache (ecs->ptid));
3402
3403       ecs->event_thread->control.stop_bpstat
3404         = bpstat_stop_status (get_regcache_aspace (get_current_regcache ()),
3405                               stop_pc, ecs->ptid);
3406
3407       /* Note that we're interested in knowing the bpstat actually
3408          causes a stop, not just if it may explain the signal.
3409          Software watchpoints, for example, always appear in the
3410          bpstat.  */
3411       ecs->random_signal
3412         = !bpstat_causes_stop (ecs->event_thread->control.stop_bpstat);
3413
3414       /* If no catchpoint triggered for this, then keep going.  */
3415       if (ecs->random_signal)
3416         {
3417           ptid_t parent;
3418           ptid_t child;
3419           int should_resume;
3420           int follow_child
3421             = (follow_fork_mode_string == follow_fork_mode_child);
3422
3423           ecs->event_thread->suspend.stop_signal = TARGET_SIGNAL_0;
3424
3425           should_resume = follow_fork ();
3426
3427           parent = ecs->ptid;
3428           child = ecs->ws.value.related_pid;
3429
3430           /* In non-stop mode, also resume the other branch.  */
3431           if (non_stop && !detach_fork)
3432             {
3433               if (follow_child)
3434                 switch_to_thread (parent);
3435               else
3436                 switch_to_thread (child);
3437
3438               ecs->event_thread = inferior_thread ();
3439               ecs->ptid = inferior_ptid;
3440               keep_going (ecs);
3441             }
3442
3443           if (follow_child)
3444             switch_to_thread (child);
3445           else
3446             switch_to_thread (parent);
3447
3448           ecs->event_thread = inferior_thread ();
3449           ecs->ptid = inferior_ptid;
3450
3451           if (should_resume)
3452             keep_going (ecs);
3453           else
3454             stop_stepping (ecs);
3455           return;
3456         }
3457       ecs->event_thread->suspend.stop_signal = TARGET_SIGNAL_TRAP;
3458       goto process_event_stop_test;
3459
3460     case TARGET_WAITKIND_VFORK_DONE:
3461       /* Done with the shared memory region.  Re-insert breakpoints in
3462          the parent, and keep going.  */
3463
3464       if (debug_infrun)
3465         fprintf_unfiltered (gdb_stdlog,
3466                             "infrun: TARGET_WAITKIND_VFORK_DONE\n");
3467
3468       if (!ptid_equal (ecs->ptid, inferior_ptid))
3469         context_switch (ecs->ptid);
3470
3471       current_inferior ()->waiting_for_vfork_done = 0;
3472       current_inferior ()->pspace->breakpoints_not_allowed = 0;
3473       /* This also takes care of reinserting breakpoints in the
3474          previously locked inferior.  */
3475       keep_going (ecs);
3476       return;
3477
3478     case TARGET_WAITKIND_EXECD:
3479       if (debug_infrun)
3480         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_EXECD\n");
3481
3482       if (!ptid_equal (ecs->ptid, inferior_ptid))
3483         {
3484           context_switch (ecs->ptid);
3485           reinit_frame_cache ();
3486         }
3487
3488       singlestep_breakpoints_inserted_p = 0;
3489       cancel_single_step_breakpoints ();
3490
3491       stop_pc = regcache_read_pc (get_thread_regcache (ecs->ptid));
3492
3493       /* Do whatever is necessary to the parent branch of the vfork.  */
3494       handle_vfork_child_exec_or_exit (1);
3495
3496       /* This causes the eventpoints and symbol table to be reset.
3497          Must do this now, before trying to determine whether to
3498          stop.  */
3499       follow_exec (inferior_ptid, ecs->ws.value.execd_pathname);
3500
3501       ecs->event_thread->control.stop_bpstat
3502         = bpstat_stop_status (get_regcache_aspace (get_current_regcache ()),
3503                               stop_pc, ecs->ptid);
3504       ecs->random_signal
3505         = !bpstat_explains_signal (ecs->event_thread->control.stop_bpstat);
3506
3507       /* Note that this may be referenced from inside
3508          bpstat_stop_status above, through inferior_has_execd.  */
3509       xfree (ecs->ws.value.execd_pathname);
3510       ecs->ws.value.execd_pathname = NULL;
3511
3512       /* If no catchpoint triggered for this, then keep going.  */
3513       if (ecs->random_signal)
3514         {
3515           ecs->event_thread->suspend.stop_signal = TARGET_SIGNAL_0;
3516           keep_going (ecs);
3517           return;
3518         }
3519       ecs->event_thread->suspend.stop_signal = TARGET_SIGNAL_TRAP;
3520       goto process_event_stop_test;
3521
3522       /* Be careful not to try to gather much state about a thread
3523          that's in a syscall.  It's frequently a losing proposition.  */
3524     case TARGET_WAITKIND_SYSCALL_ENTRY:
3525       if (debug_infrun)
3526         fprintf_unfiltered (gdb_stdlog,
3527                             "infrun: TARGET_WAITKIND_SYSCALL_ENTRY\n");
3528       /* Getting the current syscall number.  */
3529       if (handle_syscall_event (ecs) != 0)
3530         return;
3531       goto process_event_stop_test;
3532
3533       /* Before examining the threads further, step this thread to
3534          get it entirely out of the syscall.  (We get notice of the
3535          event when the thread is just on the verge of exiting a
3536          syscall.  Stepping one instruction seems to get it back
3537          into user code.)  */
3538     case TARGET_WAITKIND_SYSCALL_RETURN:
3539       if (debug_infrun)
3540         fprintf_unfiltered (gdb_stdlog,
3541                             "infrun: TARGET_WAITKIND_SYSCALL_RETURN\n");
3542       if (handle_syscall_event (ecs) != 0)
3543         return;
3544       goto process_event_stop_test;
3545
3546     case TARGET_WAITKIND_STOPPED:
3547       if (debug_infrun)
3548         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_STOPPED\n");
3549       ecs->event_thread->suspend.stop_signal = ecs->ws.value.sig;
3550       break;
3551
3552     case TARGET_WAITKIND_NO_HISTORY:
3553       /* Reverse execution: target ran out of history info.  */
3554       stop_pc = regcache_read_pc (get_thread_regcache (ecs->ptid));
3555       print_no_history_reason ();
3556       stop_stepping (ecs);
3557       return;
3558     }
3559
3560   if (ecs->new_thread_event)
3561     {
3562       if (non_stop)
3563         /* Non-stop assumes that the target handles adding new threads
3564            to the thread list.  */
3565         internal_error (__FILE__, __LINE__,
3566                         "targets should add new threads to the thread "
3567                         "list themselves in non-stop mode.");
3568
3569       /* We may want to consider not doing a resume here in order to
3570          give the user a chance to play with the new thread.  It might
3571          be good to make that a user-settable option.  */
3572
3573       /* At this point, all threads are stopped (happens automatically
3574          in either the OS or the native code).  Therefore we need to
3575          continue all threads in order to make progress.  */
3576
3577       if (!ptid_equal (ecs->ptid, inferior_ptid))
3578         context_switch (ecs->ptid);
3579       target_resume (RESUME_ALL, 0, TARGET_SIGNAL_0);
3580       prepare_to_wait (ecs);
3581       return;
3582     }
3583
3584   if (ecs->ws.kind == TARGET_WAITKIND_STOPPED)
3585     {
3586       /* Do we need to clean up the state of a thread that has
3587          completed a displaced single-step?  (Doing so usually affects
3588          the PC, so do it here, before we set stop_pc.)  */
3589       displaced_step_fixup (ecs->ptid,
3590                             ecs->event_thread->suspend.stop_signal);
3591
3592       /* If we either finished a single-step or hit a breakpoint, but
3593          the user wanted this thread to be stopped, pretend we got a
3594          SIG0 (generic unsignaled stop).  */
3595
3596       if (ecs->event_thread->stop_requested
3597           && ecs->event_thread->suspend.stop_signal == TARGET_SIGNAL_TRAP)
3598         ecs->event_thread->suspend.stop_signal = TARGET_SIGNAL_0;
3599     }
3600
3601   stop_pc = regcache_read_pc (get_thread_regcache (ecs->ptid));
3602
3603   if (debug_infrun)
3604     {
3605       struct regcache *regcache = get_thread_regcache (ecs->ptid);
3606       struct gdbarch *gdbarch = get_regcache_arch (regcache);
3607       struct cleanup *old_chain = save_inferior_ptid ();
3608
3609       inferior_ptid = ecs->ptid;
3610
3611       fprintf_unfiltered (gdb_stdlog, "infrun: stop_pc = %s\n",
3612                           paddress (gdbarch, stop_pc));
3613       if (target_stopped_by_watchpoint ())
3614         {
3615           CORE_ADDR addr;
3616
3617           fprintf_unfiltered (gdb_stdlog, "infrun: stopped by watchpoint\n");
3618
3619           if (target_stopped_data_address (&current_target, &addr))
3620             fprintf_unfiltered (gdb_stdlog,
3621                                 "infrun: stopped data address = %s\n",
3622                                 paddress (gdbarch, addr));
3623           else
3624             fprintf_unfiltered (gdb_stdlog,
3625                                 "infrun: (no data address available)\n");
3626         }
3627
3628       do_cleanups (old_chain);
3629     }
3630
3631   if (stepping_past_singlestep_breakpoint)
3632     {
3633       gdb_assert (singlestep_breakpoints_inserted_p);
3634       gdb_assert (ptid_equal (singlestep_ptid, ecs->ptid));
3635       gdb_assert (!ptid_equal (singlestep_ptid, saved_singlestep_ptid));
3636
3637       stepping_past_singlestep_breakpoint = 0;
3638
3639       /* We've either finished single-stepping past the single-step
3640          breakpoint, or stopped for some other reason.  It would be nice if
3641          we could tell, but we can't reliably.  */
3642       if (ecs->event_thread->suspend.stop_signal == TARGET_SIGNAL_TRAP)
3643         {
3644           if (debug_infrun)
3645             fprintf_unfiltered (gdb_stdlog,
3646                                 "infrun: stepping_past_"
3647                                 "singlestep_breakpoint\n");
3648           /* Pull the single step breakpoints out of the target.  */
3649           remove_single_step_breakpoints ();
3650           singlestep_breakpoints_inserted_p = 0;
3651
3652           ecs->random_signal = 0;
3653           ecs->event_thread->control.trap_expected = 0;
3654
3655           context_switch (saved_singlestep_ptid);
3656           if (deprecated_context_hook)
3657             deprecated_context_hook (pid_to_thread_id (ecs->ptid));
3658
3659           resume (1, TARGET_SIGNAL_0);
3660           prepare_to_wait (ecs);
3661           return;
3662         }
3663     }
3664
3665   if (!ptid_equal (deferred_step_ptid, null_ptid))
3666     {
3667       /* In non-stop mode, there's never a deferred_step_ptid set.  */
3668       gdb_assert (!non_stop);
3669
3670       /* If we stopped for some other reason than single-stepping, ignore
3671          the fact that we were supposed to switch back.  */
3672       if (ecs->event_thread->suspend.stop_signal == TARGET_SIGNAL_TRAP)
3673         {
3674           if (debug_infrun)
3675             fprintf_unfiltered (gdb_stdlog,
3676                                 "infrun: handling deferred step\n");
3677
3678           /* Pull the single step breakpoints out of the target.  */
3679           if (singlestep_breakpoints_inserted_p)
3680             {
3681               remove_single_step_breakpoints ();
3682               singlestep_breakpoints_inserted_p = 0;
3683             }
3684
3685           ecs->event_thread->control.trap_expected = 0;
3686
3687           /* Note: We do not call context_switch at this point, as the
3688              context is already set up for stepping the original thread.  */
3689           switch_to_thread (deferred_step_ptid);
3690           deferred_step_ptid = null_ptid;
3691           /* Suppress spurious "Switching to ..." message.  */
3692           previous_inferior_ptid = inferior_ptid;
3693
3694           resume (1, TARGET_SIGNAL_0);
3695           prepare_to_wait (ecs);
3696           return;
3697         }
3698
3699       deferred_step_ptid = null_ptid;
3700     }
3701
3702   /* See if a thread hit a thread-specific breakpoint that was meant for
3703      another thread.  If so, then step that thread past the breakpoint,
3704      and continue it.  */
3705
3706   if (ecs->event_thread->suspend.stop_signal == TARGET_SIGNAL_TRAP)
3707     {
3708       int thread_hop_needed = 0;
3709       struct address_space *aspace = 
3710         get_regcache_aspace (get_thread_regcache (ecs->ptid));
3711
3712       /* Check if a regular breakpoint has been hit before checking
3713          for a potential single step breakpoint.  Otherwise, GDB will
3714          not see this breakpoint hit when stepping onto breakpoints.  */
3715       if (regular_breakpoint_inserted_here_p (aspace, stop_pc))
3716         {
3717           ecs->random_signal = 0;
3718           if (!breakpoint_thread_match (aspace, stop_pc, ecs->ptid))
3719             thread_hop_needed = 1;
3720         }
3721       else if (singlestep_breakpoints_inserted_p)
3722         {
3723           /* We have not context switched yet, so this should be true
3724              no matter which thread hit the singlestep breakpoint.  */
3725           gdb_assert (ptid_equal (inferior_ptid, singlestep_ptid));
3726           if (debug_infrun)
3727             fprintf_unfiltered (gdb_stdlog, "infrun: software single step "
3728                                 "trap for %s\n",
3729                                 target_pid_to_str (ecs->ptid));
3730
3731           ecs->random_signal = 0;
3732           /* The call to in_thread_list is necessary because PTIDs sometimes
3733              change when we go from single-threaded to multi-threaded.  If
3734              the singlestep_ptid is still in the list, assume that it is
3735              really different from ecs->ptid.  */
3736           if (!ptid_equal (singlestep_ptid, ecs->ptid)
3737               && in_thread_list (singlestep_ptid))
3738             {
3739               /* If the PC of the thread we were trying to single-step
3740                  has changed, discard this event (which we were going
3741                  to ignore anyway), and pretend we saw that thread
3742                  trap.  This prevents us continuously moving the
3743                  single-step breakpoint forward, one instruction at a
3744                  time.  If the PC has changed, then the thread we were
3745                  trying to single-step has trapped or been signalled,
3746                  but the event has not been reported to GDB yet.
3747
3748                  There might be some cases where this loses signal
3749                  information, if a signal has arrived at exactly the
3750                  same time that the PC changed, but this is the best
3751                  we can do with the information available.  Perhaps we
3752                  should arrange to report all events for all threads
3753                  when they stop, or to re-poll the remote looking for
3754                  this particular thread (i.e. temporarily enable
3755                  schedlock).  */
3756
3757              CORE_ADDR new_singlestep_pc
3758                = regcache_read_pc (get_thread_regcache (singlestep_ptid));
3759
3760              if (new_singlestep_pc != singlestep_pc)
3761                {
3762                  enum target_signal stop_signal;
3763
3764                  if (debug_infrun)
3765                    fprintf_unfiltered (gdb_stdlog, "infrun: unexpected thread,"
3766                                        " but expected thread advanced also\n");
3767
3768                  /* The current context still belongs to
3769                     singlestep_ptid.  Don't swap here, since that's
3770                     the context we want to use.  Just fudge our
3771                     state and continue.  */
3772                  stop_signal = ecs->event_thread->suspend.stop_signal;
3773                  ecs->event_thread->suspend.stop_signal = TARGET_SIGNAL_0;
3774                  ecs->ptid = singlestep_ptid;
3775                  ecs->event_thread = find_thread_ptid (ecs->ptid);
3776                  ecs->event_thread->suspend.stop_signal = stop_signal;
3777                  stop_pc = new_singlestep_pc;
3778                }
3779              else
3780                {
3781                  if (debug_infrun)
3782                    fprintf_unfiltered (gdb_stdlog,
3783                                        "infrun: unexpected thread\n");
3784
3785                  thread_hop_needed = 1;
3786                  stepping_past_singlestep_breakpoint = 1;
3787                  saved_singlestep_ptid = singlestep_ptid;
3788                }
3789             }
3790         }
3791
3792       if (thread_hop_needed)
3793         {
3794           struct regcache *thread_regcache;
3795           int remove_status = 0;
3796
3797           if (debug_infrun)
3798             fprintf_unfiltered (gdb_stdlog, "infrun: thread_hop_needed\n");
3799
3800           /* Switch context before touching inferior memory, the
3801              previous thread may have exited.  */
3802           if (!ptid_equal (inferior_ptid, ecs->ptid))
3803             context_switch (ecs->ptid);
3804
3805           /* Saw a breakpoint, but it was hit by the wrong thread.
3806              Just continue.  */
3807
3808           if (singlestep_breakpoints_inserted_p)
3809             {
3810               /* Pull the single step breakpoints out of the target.  */
3811               remove_single_step_breakpoints ();
3812               singlestep_breakpoints_inserted_p = 0;
3813             }
3814
3815           /* If the arch can displace step, don't remove the
3816              breakpoints.  */
3817           thread_regcache = get_thread_regcache (ecs->ptid);
3818           if (!use_displaced_stepping (get_regcache_arch (thread_regcache)))
3819             remove_status = remove_breakpoints ();
3820
3821           /* Did we fail to remove breakpoints?  If so, try
3822              to set the PC past the bp.  (There's at least
3823              one situation in which we can fail to remove
3824              the bp's: On HP-UX's that use ttrace, we can't
3825              change the address space of a vforking child
3826              process until the child exits (well, okay, not
3827              then either :-) or execs.  */
3828           if (remove_status != 0)
3829             error (_("Cannot step over breakpoint hit in wrong thread"));
3830           else
3831             {                   /* Single step */
3832               if (!non_stop)
3833                 {
3834                   /* Only need to require the next event from this
3835                      thread in all-stop mode.  */
3836                   waiton_ptid = ecs->ptid;
3837                   infwait_state = infwait_thread_hop_state;
3838                 }
3839
3840               ecs->event_thread->stepping_over_breakpoint = 1;
3841               keep_going (ecs);
3842               return;
3843             }
3844         }
3845       else if (singlestep_breakpoints_inserted_p)
3846         {
3847           ecs->random_signal = 0;
3848         }
3849     }
3850   else
3851     ecs->random_signal = 1;
3852
3853   /* See if something interesting happened to the non-current thread.  If
3854      so, then switch to that thread.  */
3855   if (!ptid_equal (ecs->ptid, inferior_ptid))
3856     {
3857       if (debug_infrun)
3858         fprintf_unfiltered (gdb_stdlog, "infrun: context switch\n");
3859
3860       context_switch (ecs->ptid);
3861
3862       if (deprecated_context_hook)
3863         deprecated_context_hook (pid_to_thread_id (ecs->ptid));
3864     }
3865
3866   /* At this point, get hold of the now-current thread's frame.  */
3867   frame = get_current_frame ();
3868   gdbarch = get_frame_arch (frame);
3869
3870   if (singlestep_breakpoints_inserted_p)
3871     {
3872       /* Pull the single step breakpoints out of the target.  */
3873       remove_single_step_breakpoints ();
3874       singlestep_breakpoints_inserted_p = 0;
3875     }
3876
3877   if (stepped_after_stopped_by_watchpoint)
3878     stopped_by_watchpoint = 0;
3879   else
3880     stopped_by_watchpoint = watchpoints_triggered (&ecs->ws);
3881
3882   /* If necessary, step over this watchpoint.  We'll be back to display
3883      it in a moment.  */
3884   if (stopped_by_watchpoint
3885       && (target_have_steppable_watchpoint
3886           || gdbarch_have_nonsteppable_watchpoint (gdbarch)))
3887     {
3888       /* At this point, we are stopped at an instruction which has
3889          attempted to write to a piece of memory under control of
3890          a watchpoint.  The instruction hasn't actually executed
3891          yet.  If we were to evaluate the watchpoint expression
3892          now, we would get the old value, and therefore no change
3893          would seem to have occurred.
3894
3895          In order to make watchpoints work `right', we really need
3896          to complete the memory write, and then evaluate the
3897          watchpoint expression.  We do this by single-stepping the
3898          target.
3899
3900          It may not be necessary to disable the watchpoint to stop over
3901          it.  For example, the PA can (with some kernel cooperation)
3902          single step over a watchpoint without disabling the watchpoint.
3903
3904          It is far more common to need to disable a watchpoint to step
3905          the inferior over it.  If we have non-steppable watchpoints,
3906          we must disable the current watchpoint; it's simplest to
3907          disable all watchpoints and breakpoints.  */
3908       int hw_step = 1;
3909
3910       if (!target_have_steppable_watchpoint)
3911         {
3912           remove_breakpoints ();
3913           /* See comment in resume why we need to stop bypassing signals
3914              while breakpoints have been removed.  */
3915           target_pass_signals (0, NULL);
3916         }
3917         /* Single step */
3918       hw_step = maybe_software_singlestep (gdbarch, stop_pc);
3919       target_resume (ecs->ptid, hw_step, TARGET_SIGNAL_0);
3920       waiton_ptid = ecs->ptid;
3921       if (target_have_steppable_watchpoint)
3922         infwait_state = infwait_step_watch_state;
3923       else
3924         infwait_state = infwait_nonstep_watch_state;
3925       prepare_to_wait (ecs);
3926       return;
3927     }
3928
3929   ecs->stop_func_start = 0;
3930   ecs->stop_func_end = 0;
3931   ecs->stop_func_name = 0;
3932   /* Don't care about return value; stop_func_start and stop_func_name
3933      will both be 0 if it doesn't work.  */
3934   find_pc_partial_function (stop_pc, &ecs->stop_func_name,
3935                             &ecs->stop_func_start, &ecs->stop_func_end);
3936   ecs->stop_func_start
3937     += gdbarch_deprecated_function_start_offset (gdbarch);
3938   ecs->event_thread->stepping_over_breakpoint = 0;
3939   bpstat_clear (&ecs->event_thread->control.stop_bpstat);
3940   ecs->event_thread->control.stop_step = 0;
3941   stop_print_frame = 1;
3942   ecs->random_signal = 0;
3943   stopped_by_random_signal = 0;
3944
3945   /* Hide inlined functions starting here, unless we just performed stepi or
3946      nexti.  After stepi and nexti, always show the innermost frame (not any
3947      inline function call sites).  */
3948   if (ecs->event_thread->control.step_range_end != 1)
3949     skip_inline_frames (ecs->ptid);
3950
3951   if (ecs->event_thread->suspend.stop_signal == TARGET_SIGNAL_TRAP
3952       && ecs->event_thread->control.trap_expected
3953       && gdbarch_single_step_through_delay_p (gdbarch)
3954       && currently_stepping (ecs->event_thread))
3955     {
3956       /* We're trying to step off a breakpoint.  Turns out that we're
3957          also on an instruction that needs to be stepped multiple
3958          times before it's been fully executing.  E.g., architectures
3959          with a delay slot.  It needs to be stepped twice, once for
3960          the instruction and once for the delay slot.  */
3961       int step_through_delay
3962         = gdbarch_single_step_through_delay (gdbarch, frame);
3963
3964       if (debug_infrun && step_through_delay)
3965         fprintf_unfiltered (gdb_stdlog, "infrun: step through delay\n");
3966       if (ecs->event_thread->control.step_range_end == 0
3967           && step_through_delay)
3968         {
3969           /* The user issued a continue when stopped at a breakpoint.
3970              Set up for another trap and get out of here.  */
3971          ecs->event_thread->stepping_over_breakpoint = 1;
3972          keep_going (ecs);
3973          return;
3974         }
3975       else if (step_through_delay)
3976         {
3977           /* The user issued a step when stopped at a breakpoint.
3978              Maybe we should stop, maybe we should not - the delay
3979              slot *might* correspond to a line of source.  In any
3980              case, don't decide that here, just set 
3981              ecs->stepping_over_breakpoint, making sure we 
3982              single-step again before breakpoints are re-inserted.  */
3983           ecs->event_thread->stepping_over_breakpoint = 1;
3984         }
3985     }
3986
3987   /* Look at the cause of the stop, and decide what to do.
3988      The alternatives are:
3989      1) stop_stepping and return; to really stop and return to the debugger,
3990      2) keep_going and return to start up again
3991      (set ecs->event_thread->stepping_over_breakpoint to 1 to single step once)
3992      3) set ecs->random_signal to 1, and the decision between 1 and 2
3993      will be made according to the signal handling tables.  */
3994
3995   if (ecs->event_thread->suspend.stop_signal == TARGET_SIGNAL_TRAP
3996       || stop_soon == STOP_QUIETLY || stop_soon == STOP_QUIETLY_NO_SIGSTOP
3997       || stop_soon == STOP_QUIETLY_REMOTE)
3998     {
3999       if (ecs->event_thread->suspend.stop_signal == TARGET_SIGNAL_TRAP
4000           && stop_after_trap)
4001         {
4002           if (debug_infrun)
4003             fprintf_unfiltered (gdb_stdlog, "infrun: stopped\n");
4004           stop_print_frame = 0;
4005           stop_stepping (ecs);
4006           return;
4007         }
4008
4009       /* This is originated from start_remote(), start_inferior() and
4010          shared libraries hook functions.  */
4011       if (stop_soon == STOP_QUIETLY || stop_soon == STOP_QUIETLY_REMOTE)
4012         {
4013           if (debug_infrun)
4014             fprintf_unfiltered (gdb_stdlog, "infrun: quietly stopped\n");
4015           stop_stepping (ecs);
4016           return;
4017         }
4018
4019       /* This originates from attach_command().  We need to overwrite
4020          the stop_signal here, because some kernels don't ignore a
4021          SIGSTOP in a subsequent ptrace(PTRACE_CONT,SIGSTOP) call.
4022          See more comments in inferior.h.  On the other hand, if we
4023          get a non-SIGSTOP, report it to the user - assume the backend
4024          will handle the SIGSTOP if it should show up later.
4025
4026          Also consider that the attach is complete when we see a
4027          SIGTRAP.  Some systems (e.g. Windows), and stubs supporting
4028          target extended-remote report it instead of a SIGSTOP
4029          (e.g. gdbserver).  We already rely on SIGTRAP being our
4030          signal, so this is no exception.
4031
4032          Also consider that the attach is complete when we see a
4033          TARGET_SIGNAL_0.  In non-stop mode, GDB will explicitly tell
4034          the target to stop all threads of the inferior, in case the
4035          low level attach operation doesn't stop them implicitly.  If
4036          they weren't stopped implicitly, then the stub will report a
4037          TARGET_SIGNAL_0, meaning: stopped for no particular reason
4038          other than GDB's request.  */
4039       if (stop_soon == STOP_QUIETLY_NO_SIGSTOP
4040           && (ecs->event_thread->suspend.stop_signal == TARGET_SIGNAL_STOP
4041               || ecs->event_thread->suspend.stop_signal == TARGET_SIGNAL_TRAP
4042               || ecs->event_thread->suspend.stop_signal == TARGET_SIGNAL_0))
4043         {
4044           stop_stepping (ecs);
4045           ecs->event_thread->suspend.stop_signal = TARGET_SIGNAL_0;
4046           return;
4047         }
4048
4049       /* See if there is a breakpoint at the current PC.  */
4050       ecs->event_thread->control.stop_bpstat
4051         = bpstat_stop_status (get_regcache_aspace (get_current_regcache ()),
4052                               stop_pc, ecs->ptid);
4053
4054       /* Following in case break condition called a
4055          function.  */
4056       stop_print_frame = 1;
4057
4058       /* This is where we handle "moribund" watchpoints.  Unlike
4059          software breakpoints traps, hardware watchpoint traps are
4060          always distinguishable from random traps.  If no high-level
4061          watchpoint is associated with the reported stop data address
4062          anymore, then the bpstat does not explain the signal ---
4063          simply make sure to ignore it if `stopped_by_watchpoint' is
4064          set.  */
4065
4066       if (debug_infrun
4067           && ecs->event_thread->suspend.stop_signal == TARGET_SIGNAL_TRAP
4068           && !bpstat_explains_signal (ecs->event_thread->control.stop_bpstat)
4069           && stopped_by_watchpoint)
4070         fprintf_unfiltered (gdb_stdlog,
4071                             "infrun: no user watchpoint explains "
4072                             "watchpoint SIGTRAP, ignoring\n");
4073
4074       /* NOTE: cagney/2003-03-29: These two checks for a random signal
4075          at one stage in the past included checks for an inferior
4076          function call's call dummy's return breakpoint.  The original
4077          comment, that went with the test, read:
4078
4079          ``End of a stack dummy.  Some systems (e.g. Sony news) give
4080          another signal besides SIGTRAP, so check here as well as
4081          above.''
4082
4083          If someone ever tries to get call dummys on a
4084          non-executable stack to work (where the target would stop
4085          with something like a SIGSEGV), then those tests might need
4086          to be re-instated.  Given, however, that the tests were only
4087          enabled when momentary breakpoints were not being used, I
4088          suspect that it won't be the case.
4089
4090          NOTE: kettenis/2004-02-05: Indeed such checks don't seem to
4091          be necessary for call dummies on a non-executable stack on
4092          SPARC.  */
4093
4094       if (ecs->event_thread->suspend.stop_signal == TARGET_SIGNAL_TRAP)
4095         ecs->random_signal
4096           = !(bpstat_explains_signal (ecs->event_thread->control.stop_bpstat)
4097               || stopped_by_watchpoint
4098               || ecs->event_thread->control.trap_expected
4099               || (ecs->event_thread->control.step_range_end
4100                   && (ecs->event_thread->control.step_resume_breakpoint
4101                       == NULL)));
4102       else
4103         {
4104           ecs->random_signal = !bpstat_explains_signal
4105                                      (ecs->event_thread->control.stop_bpstat);
4106           if (!ecs->random_signal)
4107             ecs->event_thread->suspend.stop_signal = TARGET_SIGNAL_TRAP;
4108         }
4109     }
4110
4111   /* When we reach this point, we've pretty much decided
4112      that the reason for stopping must've been a random
4113      (unexpected) signal.  */
4114
4115   else
4116     ecs->random_signal = 1;
4117
4118 process_event_stop_test:
4119
4120   /* Re-fetch current thread's frame in case we did a
4121      "goto process_event_stop_test" above.  */
4122   frame = get_current_frame ();
4123   gdbarch = get_frame_arch (frame);
4124
4125   /* For the program's own signals, act according to
4126      the signal handling tables.  */
4127
4128   if (ecs->random_signal)
4129     {
4130       /* Signal not for debugging purposes.  */
4131       int printed = 0;
4132       struct inferior *inf = find_inferior_pid (ptid_get_pid (ecs->ptid));
4133
4134       if (debug_infrun)
4135          fprintf_unfiltered (gdb_stdlog, "infrun: random signal %d\n",
4136                              ecs->event_thread->suspend.stop_signal);
4137
4138       stopped_by_random_signal = 1;
4139
4140       if (signal_print[ecs->event_thread->suspend.stop_signal])
4141         {
4142           printed = 1;
4143           target_terminal_ours_for_output ();
4144           print_signal_received_reason
4145                                      (ecs->event_thread->suspend.stop_signal);
4146         }
4147       /* Always stop on signals if we're either just gaining control
4148          of the program, or the user explicitly requested this thread
4149          to remain stopped.  */
4150       if (stop_soon != NO_STOP_QUIETLY
4151           || ecs->event_thread->stop_requested
4152           || (!inf->detaching
4153               && signal_stop_state (ecs->event_thread->suspend.stop_signal)))
4154         {
4155           stop_stepping (ecs);
4156           return;
4157         }
4158       /* If not going to stop, give terminal back
4159          if we took it away.  */
4160       else if (printed)
4161         target_terminal_inferior ();
4162
4163       /* Clear the signal if it should not be passed.  */
4164       if (signal_program[ecs->event_thread->suspend.stop_signal] == 0)
4165         ecs->event_thread->suspend.stop_signal = TARGET_SIGNAL_0;
4166
4167       if (ecs->event_thread->prev_pc == stop_pc
4168           && ecs->event_thread->control.trap_expected
4169           && ecs->event_thread->control.step_resume_breakpoint == NULL)
4170         {
4171           /* We were just starting a new sequence, attempting to
4172              single-step off of a breakpoint and expecting a SIGTRAP.
4173              Instead this signal arrives.  This signal will take us out
4174              of the stepping range so GDB needs to remember to, when
4175              the signal handler returns, resume stepping off that
4176              breakpoint.  */
4177           /* To simplify things, "continue" is forced to use the same
4178              code paths as single-step - set a breakpoint at the
4179              signal return address and then, once hit, step off that
4180              breakpoint.  */
4181           if (debug_infrun)
4182             fprintf_unfiltered (gdb_stdlog,
4183                                 "infrun: signal arrived while stepping over "
4184                                 "breakpoint\n");
4185
4186           insert_hp_step_resume_breakpoint_at_frame (frame);
4187           ecs->event_thread->step_after_step_resume_breakpoint = 1;
4188           /* Reset trap_expected to ensure breakpoints are re-inserted.  */
4189           ecs->event_thread->control.trap_expected = 0;
4190           keep_going (ecs);
4191           return;
4192         }
4193
4194       if (ecs->event_thread->control.step_range_end != 0
4195           && ecs->event_thread->suspend.stop_signal != TARGET_SIGNAL_0
4196           && (ecs->event_thread->control.step_range_start <= stop_pc
4197               && stop_pc < ecs->event_thread->control.step_range_end)
4198           && frame_id_eq (get_stack_frame_id (frame),
4199                           ecs->event_thread->control.step_stack_frame_id)
4200           && ecs->event_thread->control.step_resume_breakpoint == NULL)
4201         {
4202           /* The inferior is about to take a signal that will take it
4203              out of the single step range.  Set a breakpoint at the
4204              current PC (which is presumably where the signal handler
4205              will eventually return) and then allow the inferior to
4206              run free.
4207
4208              Note that this is only needed for a signal delivered
4209              while in the single-step range.  Nested signals aren't a
4210              problem as they eventually all return.  */
4211           if (debug_infrun)
4212             fprintf_unfiltered (gdb_stdlog,
4213                                 "infrun: signal may take us out of "
4214                                 "single-step range\n");
4215
4216           insert_hp_step_resume_breakpoint_at_frame (frame);
4217           /* Reset trap_expected to ensure breakpoints are re-inserted.  */
4218           ecs->event_thread->control.trap_expected = 0;
4219           keep_going (ecs);
4220           return;
4221         }
4222
4223       /* Note: step_resume_breakpoint may be non-NULL.  This occures
4224          when either there's a nested signal, or when there's a
4225          pending signal enabled just as the signal handler returns
4226          (leaving the inferior at the step-resume-breakpoint without
4227          actually executing it).  Either way continue until the
4228          breakpoint is really hit.  */
4229       keep_going (ecs);
4230       return;
4231     }
4232
4233   /* Handle cases caused by hitting a breakpoint.  */
4234   {
4235     CORE_ADDR jmp_buf_pc;
4236     struct bpstat_what what;
4237
4238     what = bpstat_what (ecs->event_thread->control.stop_bpstat);
4239
4240     if (what.call_dummy)
4241       {
4242         stop_stack_dummy = what.call_dummy;
4243       }
4244
4245     /* If we hit an internal event that triggers symbol changes, the
4246        current frame will be invalidated within bpstat_what (e.g., if
4247        we hit an internal solib event).  Re-fetch it.  */
4248     frame = get_current_frame ();
4249     gdbarch = get_frame_arch (frame);
4250
4251     switch (what.main_action)
4252       {
4253       case BPSTAT_WHAT_SET_LONGJMP_RESUME:
4254         /* If we hit the breakpoint at longjmp while stepping, we
4255            install a momentary breakpoint at the target of the
4256            jmp_buf.  */
4257
4258         if (debug_infrun)
4259           fprintf_unfiltered (gdb_stdlog,
4260                               "infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME\n");
4261
4262         ecs->event_thread->stepping_over_breakpoint = 1;
4263
4264         if (what.is_longjmp)
4265           {
4266             if (!gdbarch_get_longjmp_target_p (gdbarch)
4267                 || !gdbarch_get_longjmp_target (gdbarch,
4268                                                 frame, &jmp_buf_pc))
4269               {
4270                 if (debug_infrun)
4271                   fprintf_unfiltered (gdb_stdlog,
4272                                       "infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME "
4273                                       "(!gdbarch_get_longjmp_target)\n");
4274                 keep_going (ecs);
4275                 return;
4276               }
4277
4278             /* We're going to replace the current step-resume breakpoint
4279                with a longjmp-resume breakpoint.  */
4280             delete_step_resume_breakpoint (ecs->event_thread);
4281
4282             /* Insert a breakpoint at resume address.  */
4283             insert_longjmp_resume_breakpoint (gdbarch, jmp_buf_pc);
4284           }
4285         else
4286           {
4287             struct symbol *func = get_frame_function (frame);
4288
4289             if (func)
4290               check_exception_resume (ecs, frame, func);
4291           }
4292         keep_going (ecs);
4293         return;
4294
4295       case BPSTAT_WHAT_CLEAR_LONGJMP_RESUME:
4296         if (debug_infrun)
4297           fprintf_unfiltered (gdb_stdlog,
4298                               "infrun: BPSTAT_WHAT_CLEAR_LONGJMP_RESUME\n");
4299
4300         if (what.is_longjmp)
4301           {
4302             gdb_assert (ecs->event_thread->control.step_resume_breakpoint
4303                         != NULL);
4304             delete_step_resume_breakpoint (ecs->event_thread);
4305           }
4306         else
4307           {
4308             /* There are several cases to consider.
4309
4310                1. The initiating frame no longer exists.  In this case
4311                we must stop, because the exception has gone too far.
4312
4313                2. The initiating frame exists, and is the same as the
4314                current frame.  We stop, because the exception has been
4315                caught.
4316
4317                3. The initiating frame exists and is different from
4318                the current frame.  This means the exception has been
4319                caught beneath the initiating frame, so keep going.  */
4320             struct frame_info *init_frame
4321               = frame_find_by_id (ecs->event_thread->initiating_frame);
4322
4323             gdb_assert (ecs->event_thread->control.exception_resume_breakpoint
4324                         != NULL);
4325             delete_exception_resume_breakpoint (ecs->event_thread);
4326
4327             if (init_frame)
4328               {
4329                 struct frame_id current_id
4330                   = get_frame_id (get_current_frame ());
4331                 if (frame_id_eq (current_id,
4332                                  ecs->event_thread->initiating_frame))
4333                   {
4334                     /* Case 2.  Fall through.  */
4335                   }
4336                 else
4337                   {
4338                     /* Case 3.  */
4339                     keep_going (ecs);
4340                     return;
4341                   }
4342               }
4343
4344             /* For Cases 1 and 2, remove the step-resume breakpoint,
4345                if it exists.  */
4346             delete_step_resume_breakpoint (ecs->event_thread);
4347           }
4348
4349         ecs->event_thread->control.stop_step = 1;
4350         print_end_stepping_range_reason ();
4351         stop_stepping (ecs);
4352         return;
4353
4354       case BPSTAT_WHAT_SINGLE:
4355         if (debug_infrun)
4356           fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_SINGLE\n");
4357         ecs->event_thread->stepping_over_breakpoint = 1;
4358         /* Still need to check other stuff, at least the case
4359            where we are stepping and step out of the right range.  */
4360         break;
4361
4362       case BPSTAT_WHAT_STEP_RESUME:
4363         if (debug_infrun)
4364           fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_STEP_RESUME\n");
4365
4366         delete_step_resume_breakpoint (ecs->event_thread);
4367         if (ecs->event_thread->control.proceed_to_finish
4368             && execution_direction == EXEC_REVERSE)
4369           {
4370             struct thread_info *tp = ecs->event_thread;
4371
4372             /* We are finishing a function in reverse, and just hit
4373                the step-resume breakpoint at the start address of the
4374                function, and we're almost there -- just need to back
4375                up by one more single-step, which should take us back
4376                to the function call.  */
4377             tp->control.step_range_start = tp->control.step_range_end = 1;
4378             keep_going (ecs);
4379             return;
4380           }
4381         if (stop_pc == ecs->stop_func_start
4382             && execution_direction == EXEC_REVERSE)
4383           {
4384             /* We are stepping over a function call in reverse, and
4385                just hit the step-resume breakpoint at the start
4386                address of the function.  Go back to single-stepping,
4387                which should take us back to the function call.  */
4388             ecs->event_thread->stepping_over_breakpoint = 1;
4389             keep_going (ecs);
4390             return;
4391           }
4392         break;
4393
4394       case BPSTAT_WHAT_STOP_NOISY:
4395         if (debug_infrun)
4396           fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_STOP_NOISY\n");
4397         stop_print_frame = 1;
4398
4399         /* We are about to nuke the step_resume_breakpointt via the
4400            cleanup chain, so no need to worry about it here.  */
4401
4402         stop_stepping (ecs);
4403         return;
4404
4405       case BPSTAT_WHAT_STOP_SILENT:
4406         if (debug_infrun)
4407           fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_STOP_SILENT\n");
4408         stop_print_frame = 0;
4409
4410         /* We are about to nuke the step_resume_breakpoin via the
4411            cleanup chain, so no need to worry about it here.  */
4412
4413         stop_stepping (ecs);
4414         return;
4415
4416       case BPSTAT_WHAT_HP_STEP_RESUME:
4417         if (debug_infrun)
4418           fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_HP_STEP_RESUME\n");
4419
4420         delete_step_resume_breakpoint (ecs->event_thread);
4421         if (ecs->event_thread->step_after_step_resume_breakpoint)
4422           {
4423             /* Back when the step-resume breakpoint was inserted, we
4424                were trying to single-step off a breakpoint.  Go back
4425                to doing that.  */
4426             ecs->event_thread->step_after_step_resume_breakpoint = 0;
4427             ecs->event_thread->stepping_over_breakpoint = 1;
4428             keep_going (ecs);
4429             return;
4430           }
4431         break;
4432
4433       case BPSTAT_WHAT_KEEP_CHECKING:
4434         break;
4435       }
4436   }
4437
4438   /* We come here if we hit a breakpoint but should not
4439      stop for it.  Possibly we also were stepping
4440      and should stop for that.  So fall through and
4441      test for stepping.  But, if not stepping,
4442      do not stop.  */
4443
4444   /* In all-stop mode, if we're currently stepping but have stopped in
4445      some other thread, we need to switch back to the stepped thread.  */
4446   if (!non_stop)
4447     {
4448       struct thread_info *tp;
4449
4450       tp = iterate_over_threads (currently_stepping_or_nexting_callback,
4451                                  ecs->event_thread);
4452       if (tp)
4453         {
4454           /* However, if the current thread is blocked on some internal
4455              breakpoint, and we simply need to step over that breakpoint
4456              to get it going again, do that first.  */
4457           if ((ecs->event_thread->control.trap_expected
4458                && ecs->event_thread->suspend.stop_signal != TARGET_SIGNAL_TRAP)
4459               || ecs->event_thread->stepping_over_breakpoint)
4460             {
4461               keep_going (ecs);
4462               return;
4463             }
4464
4465           /* If the stepping thread exited, then don't try to switch
4466              back and resume it, which could fail in several different
4467              ways depending on the target.  Instead, just keep going.
4468
4469              We can find a stepping dead thread in the thread list in
4470              two cases:
4471
4472              - The target supports thread exit events, and when the
4473              target tries to delete the thread from the thread list,
4474              inferior_ptid pointed at the exiting thread.  In such
4475              case, calling delete_thread does not really remove the
4476              thread from the list; instead, the thread is left listed,
4477              with 'exited' state.
4478
4479              - The target's debug interface does not support thread
4480              exit events, and so we have no idea whatsoever if the
4481              previously stepping thread is still alive.  For that
4482              reason, we need to synchronously query the target
4483              now.  */
4484           if (is_exited (tp->ptid)
4485               || !target_thread_alive (tp->ptid))
4486             {
4487               if (debug_infrun)
4488                 fprintf_unfiltered (gdb_stdlog,
4489                                     "infrun: not switching back to "
4490                                     "stepped thread, it has vanished\n");
4491
4492               delete_thread (tp->ptid);
4493               keep_going (ecs);
4494               return;
4495             }
4496
4497           /* Otherwise, we no longer expect a trap in the current thread.
4498              Clear the trap_expected flag before switching back -- this is
4499              what keep_going would do as well, if we called it.  */
4500           ecs->event_thread->control.trap_expected = 0;
4501
4502           if (debug_infrun)
4503             fprintf_unfiltered (gdb_stdlog,
4504                                 "infrun: switching back to stepped thread\n");
4505
4506           ecs->event_thread = tp;
4507           ecs->ptid = tp->ptid;
4508           context_switch (ecs->ptid);
4509           keep_going (ecs);
4510           return;
4511         }
4512     }
4513
4514   /* Are we stepping to get the inferior out of the dynamic linker's
4515      hook (and possibly the dld itself) after catching a shlib
4516      event?  */
4517   if (ecs->event_thread->stepping_through_solib_after_catch)
4518     {
4519 #if defined(SOLIB_ADD)
4520       /* Have we reached our destination?  If not, keep going.  */
4521       if (SOLIB_IN_DYNAMIC_LINKER (PIDGET (ecs->ptid), stop_pc))
4522         {
4523           if (debug_infrun)
4524             fprintf_unfiltered (gdb_stdlog,
4525                                 "infrun: stepping in dynamic linker\n");
4526           ecs->event_thread->stepping_over_breakpoint = 1;
4527           keep_going (ecs);
4528           return;
4529         }
4530 #endif
4531       if (debug_infrun)
4532          fprintf_unfiltered (gdb_stdlog, "infrun: step past dynamic linker\n");
4533       /* Else, stop and report the catchpoint(s) whose triggering
4534          caused us to begin stepping.  */
4535       ecs->event_thread->stepping_through_solib_after_catch = 0;
4536       bpstat_clear (&ecs->event_thread->control.stop_bpstat);
4537       ecs->event_thread->control.stop_bpstat
4538         = bpstat_copy (ecs->event_thread->stepping_through_solib_catchpoints);
4539       bpstat_clear (&ecs->event_thread->stepping_through_solib_catchpoints);
4540       stop_print_frame = 1;
4541       stop_stepping (ecs);
4542       return;
4543     }
4544
4545   if (ecs->event_thread->control.step_resume_breakpoint)
4546     {
4547       if (debug_infrun)
4548          fprintf_unfiltered (gdb_stdlog,
4549                              "infrun: step-resume breakpoint is inserted\n");
4550
4551       /* Having a step-resume breakpoint overrides anything
4552          else having to do with stepping commands until
4553          that breakpoint is reached.  */
4554       keep_going (ecs);
4555       return;
4556     }
4557
4558   if (ecs->event_thread->control.step_range_end == 0)
4559     {
4560       if (debug_infrun)
4561          fprintf_unfiltered (gdb_stdlog, "infrun: no stepping, continue\n");
4562       /* Likewise if we aren't even stepping.  */
4563       keep_going (ecs);
4564       return;
4565     }
4566
4567   /* Re-fetch current thread's frame in case the code above caused
4568      the frame cache to be re-initialized, making our FRAME variable
4569      a dangling pointer.  */
4570   frame = get_current_frame ();
4571   gdbarch = get_frame_arch (frame);
4572
4573   /* If stepping through a line, keep going if still within it.
4574
4575      Note that step_range_end is the address of the first instruction
4576      beyond the step range, and NOT the address of the last instruction
4577      within it!
4578
4579      Note also that during reverse execution, we may be stepping
4580      through a function epilogue and therefore must detect when
4581      the current-frame changes in the middle of a line.  */
4582
4583   if (stop_pc >= ecs->event_thread->control.step_range_start
4584       && stop_pc < ecs->event_thread->control.step_range_end
4585       && (execution_direction != EXEC_REVERSE
4586           || frame_id_eq (get_frame_id (frame),
4587                           ecs->event_thread->control.step_frame_id)))
4588     {
4589       if (debug_infrun)
4590         fprintf_unfiltered
4591           (gdb_stdlog, "infrun: stepping inside range [%s-%s]\n",
4592            paddress (gdbarch, ecs->event_thread->control.step_range_start),
4593            paddress (gdbarch, ecs->event_thread->control.step_range_end));
4594
4595       /* When stepping backward, stop at beginning of line range
4596          (unless it's the function entry point, in which case
4597          keep going back to the call point).  */
4598       if (stop_pc == ecs->event_thread->control.step_range_start
4599           && stop_pc != ecs->stop_func_start
4600           && execution_direction == EXEC_REVERSE)
4601         {
4602           ecs->event_thread->control.stop_step = 1;
4603           print_end_stepping_range_reason ();
4604           stop_stepping (ecs);
4605         }
4606       else
4607         keep_going (ecs);
4608
4609       return;
4610     }
4611
4612   /* We stepped out of the stepping range.  */
4613
4614   /* If we are stepping at the source level and entered the runtime
4615      loader dynamic symbol resolution code...
4616
4617      EXEC_FORWARD: we keep on single stepping until we exit the run
4618      time loader code and reach the callee's address.
4619
4620      EXEC_REVERSE: we've already executed the callee (backward), and
4621      the runtime loader code is handled just like any other
4622      undebuggable function call.  Now we need only keep stepping
4623      backward through the trampoline code, and that's handled further
4624      down, so there is nothing for us to do here.  */
4625
4626   if (execution_direction != EXEC_REVERSE
4627       && ecs->event_thread->control.step_over_calls == STEP_OVER_UNDEBUGGABLE
4628       && in_solib_dynsym_resolve_code (stop_pc))
4629     {
4630       CORE_ADDR pc_after_resolver =
4631         gdbarch_skip_solib_resolver (gdbarch, stop_pc);
4632
4633       if (debug_infrun)
4634          fprintf_unfiltered (gdb_stdlog,
4635                              "infrun: stepped into dynsym resolve code\n");
4636
4637       if (pc_after_resolver)
4638         {
4639           /* Set up a step-resume breakpoint at the address
4640              indicated by SKIP_SOLIB_RESOLVER.  */
4641           struct symtab_and_line sr_sal;
4642
4643           init_sal (&sr_sal);
4644           sr_sal.pc = pc_after_resolver;
4645           sr_sal.pspace = get_frame_program_space (frame);
4646
4647           insert_step_resume_breakpoint_at_sal (gdbarch,
4648                                                 sr_sal, null_frame_id);
4649         }
4650
4651       keep_going (ecs);
4652       return;
4653     }
4654
4655   if (ecs->event_thread->control.step_range_end != 1
4656       && (ecs->event_thread->control.step_over_calls == STEP_OVER_UNDEBUGGABLE
4657           || ecs->event_thread->control.step_over_calls == STEP_OVER_ALL)
4658       && get_frame_type (frame) == SIGTRAMP_FRAME)
4659     {
4660       if (debug_infrun)
4661          fprintf_unfiltered (gdb_stdlog,
4662                              "infrun: stepped into signal trampoline\n");
4663       /* The inferior, while doing a "step" or "next", has ended up in
4664          a signal trampoline (either by a signal being delivered or by
4665          the signal handler returning).  Just single-step until the
4666          inferior leaves the trampoline (either by calling the handler
4667          or returning).  */
4668       keep_going (ecs);
4669       return;
4670     }
4671
4672   /* Check for subroutine calls.  The check for the current frame
4673      equalling the step ID is not necessary - the check of the
4674      previous frame's ID is sufficient - but it is a common case and
4675      cheaper than checking the previous frame's ID.
4676
4677      NOTE: frame_id_eq will never report two invalid frame IDs as
4678      being equal, so to get into this block, both the current and
4679      previous frame must have valid frame IDs.  */
4680   /* The outer_frame_id check is a heuristic to detect stepping
4681      through startup code.  If we step over an instruction which
4682      sets the stack pointer from an invalid value to a valid value,
4683      we may detect that as a subroutine call from the mythical
4684      "outermost" function.  This could be fixed by marking
4685      outermost frames as !stack_p,code_p,special_p.  Then the
4686      initial outermost frame, before sp was valid, would
4687      have code_addr == &_start.  See the comment in frame_id_eq
4688      for more.  */
4689   if (!frame_id_eq (get_stack_frame_id (frame),
4690                     ecs->event_thread->control.step_stack_frame_id)
4691       && (frame_id_eq (frame_unwind_caller_id (get_current_frame ()),
4692                        ecs->event_thread->control.step_stack_frame_id)
4693           && (!frame_id_eq (ecs->event_thread->control.step_stack_frame_id,
4694                             outer_frame_id)
4695               || step_start_function != find_pc_function (stop_pc))))
4696     {
4697       CORE_ADDR real_stop_pc;
4698
4699       if (debug_infrun)
4700          fprintf_unfiltered (gdb_stdlog, "infrun: stepped into subroutine\n");
4701
4702       if ((ecs->event_thread->control.step_over_calls == STEP_OVER_NONE)
4703           || ((ecs->event_thread->control.step_range_end == 1)
4704               && in_prologue (gdbarch, ecs->event_thread->prev_pc,
4705                               ecs->stop_func_start)))
4706         {
4707           /* I presume that step_over_calls is only 0 when we're
4708              supposed to be stepping at the assembly language level
4709              ("stepi").  Just stop.  */
4710           /* Also, maybe we just did a "nexti" inside a prolog, so we
4711              thought it was a subroutine call but it was not.  Stop as
4712              well.  FENN */
4713           /* And this works the same backward as frontward.  MVS */
4714           ecs->event_thread->control.stop_step = 1;
4715           print_end_stepping_range_reason ();
4716           stop_stepping (ecs);
4717           return;
4718         }
4719
4720       /* Reverse stepping through solib trampolines.  */
4721
4722       if (execution_direction == EXEC_REVERSE
4723           && ecs->event_thread->control.step_over_calls != STEP_OVER_NONE
4724           && (gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc)
4725               || (ecs->stop_func_start == 0
4726                   && in_solib_dynsym_resolve_code (stop_pc))))
4727         {
4728           /* Any solib trampoline code can be handled in reverse
4729              by simply continuing to single-step.  We have already
4730              executed the solib function (backwards), and a few 
4731              steps will take us back through the trampoline to the
4732              caller.  */
4733           keep_going (ecs);
4734           return;
4735         }
4736
4737       if (ecs->event_thread->control.step_over_calls == STEP_OVER_ALL)
4738         {
4739           /* We're doing a "next".
4740
4741              Normal (forward) execution: set a breakpoint at the
4742              callee's return address (the address at which the caller
4743              will resume).
4744
4745              Reverse (backward) execution.  set the step-resume
4746              breakpoint at the start of the function that we just
4747              stepped into (backwards), and continue to there.  When we
4748              get there, we'll need to single-step back to the caller.  */
4749
4750           if (execution_direction == EXEC_REVERSE)
4751             {
4752               struct symtab_and_line sr_sal;
4753
4754               /* Normal function call return (static or dynamic).  */
4755               init_sal (&sr_sal);
4756               sr_sal.pc = ecs->stop_func_start;
4757               sr_sal.pspace = get_frame_program_space (frame);
4758               insert_step_resume_breakpoint_at_sal (gdbarch,
4759                                                     sr_sal, null_frame_id);
4760             }
4761           else
4762             insert_step_resume_breakpoint_at_caller (frame);
4763
4764           keep_going (ecs);
4765           return;
4766         }
4767
4768       /* If we are in a function call trampoline (a stub between the
4769          calling routine and the real function), locate the real
4770          function.  That's what tells us (a) whether we want to step
4771          into it at all, and (b) what prologue we want to run to the
4772          end of, if we do step into it.  */
4773       real_stop_pc = skip_language_trampoline (frame, stop_pc);
4774       if (real_stop_pc == 0)
4775         real_stop_pc = gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc);
4776       if (real_stop_pc != 0)
4777         ecs->stop_func_start = real_stop_pc;
4778
4779       if (real_stop_pc != 0 && in_solib_dynsym_resolve_code (real_stop_pc))
4780         {
4781           struct symtab_and_line sr_sal;
4782
4783           init_sal (&sr_sal);
4784           sr_sal.pc = ecs->stop_func_start;
4785           sr_sal.pspace = get_frame_program_space (frame);
4786
4787           insert_step_resume_breakpoint_at_sal (gdbarch,
4788                                                 sr_sal, null_frame_id);
4789           keep_going (ecs);
4790           return;
4791         }
4792
4793       /* If we have line number information for the function we are
4794          thinking of stepping into, step into it.
4795
4796          If there are several symtabs at that PC (e.g. with include
4797          files), just want to know whether *any* of them have line
4798          numbers.  find_pc_line handles this.  */
4799       {
4800         struct symtab_and_line tmp_sal;
4801
4802         tmp_sal = find_pc_line (ecs->stop_func_start, 0);
4803         if (tmp_sal.line != 0)
4804           {
4805             if (execution_direction == EXEC_REVERSE)
4806               handle_step_into_function_backward (gdbarch, ecs);
4807             else
4808               handle_step_into_function (gdbarch, ecs);
4809             return;
4810           }
4811       }
4812
4813       /* If we have no line number and the step-stop-if-no-debug is
4814          set, we stop the step so that the user has a chance to switch
4815          in assembly mode.  */
4816       if (ecs->event_thread->control.step_over_calls == STEP_OVER_UNDEBUGGABLE
4817           && step_stop_if_no_debug)
4818         {
4819           ecs->event_thread->control.stop_step = 1;
4820           print_end_stepping_range_reason ();
4821           stop_stepping (ecs);
4822           return;
4823         }
4824
4825       if (execution_direction == EXEC_REVERSE)
4826         {
4827           /* Set a breakpoint at callee's start address.
4828              From there we can step once and be back in the caller.  */
4829           struct symtab_and_line sr_sal;
4830
4831           init_sal (&sr_sal);
4832           sr_sal.pc = ecs->stop_func_start;
4833           sr_sal.pspace = get_frame_program_space (frame);
4834           insert_step_resume_breakpoint_at_sal (gdbarch,
4835                                                 sr_sal, null_frame_id);
4836         }
4837       else
4838         /* Set a breakpoint at callee's return address (the address
4839            at which the caller will resume).  */
4840         insert_step_resume_breakpoint_at_caller (frame);
4841
4842       keep_going (ecs);
4843       return;
4844     }
4845
4846   /* Reverse stepping through solib trampolines.  */
4847
4848   if (execution_direction == EXEC_REVERSE
4849       && ecs->event_thread->control.step_over_calls != STEP_OVER_NONE)
4850     {
4851       if (gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc)
4852           || (ecs->stop_func_start == 0
4853               && in_solib_dynsym_resolve_code (stop_pc)))
4854         {
4855           /* Any solib trampoline code can be handled in reverse
4856              by simply continuing to single-step.  We have already
4857              executed the solib function (backwards), and a few 
4858              steps will take us back through the trampoline to the
4859              caller.  */
4860           keep_going (ecs);
4861           return;
4862         }
4863       else if (in_solib_dynsym_resolve_code (stop_pc))
4864         {
4865           /* Stepped backward into the solib dynsym resolver.
4866              Set a breakpoint at its start and continue, then
4867              one more step will take us out.  */
4868           struct symtab_and_line sr_sal;
4869
4870           init_sal (&sr_sal);
4871           sr_sal.pc = ecs->stop_func_start;
4872           sr_sal.pspace = get_frame_program_space (frame);
4873           insert_step_resume_breakpoint_at_sal (gdbarch, 
4874                                                 sr_sal, null_frame_id);
4875           keep_going (ecs);
4876           return;
4877         }
4878     }
4879
4880   /* If we're in the return path from a shared library trampoline,
4881      we want to proceed through the trampoline when stepping.  */
4882   if (gdbarch_in_solib_return_trampoline (gdbarch,
4883                                           stop_pc, ecs->stop_func_name))
4884     {
4885       /* Determine where this trampoline returns.  */
4886       CORE_ADDR real_stop_pc;
4887
4888       real_stop_pc = gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc);
4889
4890       if (debug_infrun)
4891          fprintf_unfiltered (gdb_stdlog,
4892                              "infrun: stepped into solib return tramp\n");
4893
4894       /* Only proceed through if we know where it's going.  */
4895       if (real_stop_pc)
4896         {
4897           /* And put the step-breakpoint there and go until there.  */
4898           struct symtab_and_line sr_sal;
4899
4900           init_sal (&sr_sal);   /* initialize to zeroes */
4901           sr_sal.pc = real_stop_pc;
4902           sr_sal.section = find_pc_overlay (sr_sal.pc);
4903           sr_sal.pspace = get_frame_program_space (frame);
4904
4905           /* Do not specify what the fp should be when we stop since
4906              on some machines the prologue is where the new fp value
4907              is established.  */
4908           insert_step_resume_breakpoint_at_sal (gdbarch,
4909                                                 sr_sal, null_frame_id);
4910
4911           /* Restart without fiddling with the step ranges or
4912              other state.  */
4913           keep_going (ecs);
4914           return;
4915         }
4916     }
4917
4918   stop_pc_sal = find_pc_line (stop_pc, 0);
4919
4920   /* NOTE: tausq/2004-05-24: This if block used to be done before all
4921      the trampoline processing logic, however, there are some trampolines 
4922      that have no names, so we should do trampoline handling first.  */
4923   if (ecs->event_thread->control.step_over_calls == STEP_OVER_UNDEBUGGABLE
4924       && ecs->stop_func_name == NULL
4925       && stop_pc_sal.line == 0)
4926     {
4927       if (debug_infrun)
4928          fprintf_unfiltered (gdb_stdlog,
4929                              "infrun: stepped into undebuggable function\n");
4930
4931       /* The inferior just stepped into, or returned to, an
4932          undebuggable function (where there is no debugging information
4933          and no line number corresponding to the address where the
4934          inferior stopped).  Since we want to skip this kind of code,
4935          we keep going until the inferior returns from this
4936          function - unless the user has asked us not to (via
4937          set step-mode) or we no longer know how to get back
4938          to the call site.  */
4939       if (step_stop_if_no_debug
4940           || !frame_id_p (frame_unwind_caller_id (frame)))
4941         {
4942           /* If we have no line number and the step-stop-if-no-debug
4943              is set, we stop the step so that the user has a chance to
4944              switch in assembly mode.  */
4945           ecs->event_thread->control.stop_step = 1;
4946           print_end_stepping_range_reason ();
4947           stop_stepping (ecs);
4948           return;
4949         }
4950       else
4951         {
4952           /* Set a breakpoint at callee's return address (the address
4953              at which the caller will resume).  */
4954           insert_step_resume_breakpoint_at_caller (frame);
4955           keep_going (ecs);
4956           return;
4957         }
4958     }
4959
4960   if (ecs->event_thread->control.step_range_end == 1)
4961     {
4962       /* It is stepi or nexti.  We always want to stop stepping after
4963          one instruction.  */
4964       if (debug_infrun)
4965          fprintf_unfiltered (gdb_stdlog, "infrun: stepi/nexti\n");
4966       ecs->event_thread->control.stop_step = 1;
4967       print_end_stepping_range_reason ();
4968       stop_stepping (ecs);
4969       return;
4970     }
4971
4972   if (stop_pc_sal.line == 0)
4973     {
4974       /* We have no line number information.  That means to stop
4975          stepping (does this always happen right after one instruction,
4976          when we do "s" in a function with no line numbers,
4977          or can this happen as a result of a return or longjmp?).  */
4978       if (debug_infrun)
4979          fprintf_unfiltered (gdb_stdlog, "infrun: no line number info\n");
4980       ecs->event_thread->control.stop_step = 1;
4981       print_end_stepping_range_reason ();
4982       stop_stepping (ecs);
4983       return;
4984     }
4985
4986   /* Look for "calls" to inlined functions, part one.  If the inline
4987      frame machinery detected some skipped call sites, we have entered
4988      a new inline function.  */
4989
4990   if (frame_id_eq (get_frame_id (get_current_frame ()),
4991                    ecs->event_thread->control.step_frame_id)
4992       && inline_skipped_frames (ecs->ptid))
4993     {
4994       struct symtab_and_line call_sal;
4995
4996       if (debug_infrun)
4997         fprintf_unfiltered (gdb_stdlog,
4998                             "infrun: stepped into inlined function\n");
4999
5000       find_frame_sal (get_current_frame (), &call_sal);
5001
5002       if (ecs->event_thread->control.step_over_calls != STEP_OVER_ALL)
5003         {
5004           /* For "step", we're going to stop.  But if the call site
5005              for this inlined function is on the same source line as
5006              we were previously stepping, go down into the function
5007              first.  Otherwise stop at the call site.  */
5008
5009           if (call_sal.line == ecs->event_thread->current_line
5010               && call_sal.symtab == ecs->event_thread->current_symtab)
5011             step_into_inline_frame (ecs->ptid);
5012
5013           ecs->event_thread->control.stop_step = 1;
5014           print_end_stepping_range_reason ();
5015           stop_stepping (ecs);
5016           return;
5017         }
5018       else
5019         {
5020           /* For "next", we should stop at the call site if it is on a
5021              different source line.  Otherwise continue through the
5022              inlined function.  */
5023           if (call_sal.line == ecs->event_thread->current_line
5024               && call_sal.symtab == ecs->event_thread->current_symtab)
5025             keep_going (ecs);
5026           else
5027             {
5028               ecs->event_thread->control.stop_step = 1;
5029               print_end_stepping_range_reason ();
5030               stop_stepping (ecs);
5031             }
5032           return;
5033         }
5034     }
5035
5036   /* Look for "calls" to inlined functions, part two.  If we are still
5037      in the same real function we were stepping through, but we have
5038      to go further up to find the exact frame ID, we are stepping
5039      through a more inlined call beyond its call site.  */
5040
5041   if (get_frame_type (get_current_frame ()) == INLINE_FRAME
5042       && !frame_id_eq (get_frame_id (get_current_frame ()),
5043                        ecs->event_thread->control.step_frame_id)
5044       && stepped_in_from (get_current_frame (),
5045                           ecs->event_thread->control.step_frame_id))
5046     {
5047       if (debug_infrun)
5048         fprintf_unfiltered (gdb_stdlog,
5049                             "infrun: stepping through inlined function\n");
5050
5051       if (ecs->event_thread->control.step_over_calls == STEP_OVER_ALL)
5052         keep_going (ecs);
5053       else
5054         {
5055           ecs->event_thread->control.stop_step = 1;
5056           print_end_stepping_range_reason ();
5057           stop_stepping (ecs);
5058         }
5059       return;
5060     }
5061
5062   if ((stop_pc == stop_pc_sal.pc)
5063       && (ecs->event_thread->current_line != stop_pc_sal.line
5064           || ecs->event_thread->current_symtab != stop_pc_sal.symtab))
5065     {
5066       /* We are at the start of a different line.  So stop.  Note that
5067          we don't stop if we step into the middle of a different line.
5068          That is said to make things like for (;;) statements work
5069          better.  */
5070       if (debug_infrun)
5071          fprintf_unfiltered (gdb_stdlog,
5072                              "infrun: stepped to a different line\n");
5073       ecs->event_thread->control.stop_step = 1;
5074       print_end_stepping_range_reason ();
5075       stop_stepping (ecs);
5076       return;
5077     }
5078
5079   /* We aren't done stepping.
5080
5081      Optimize by setting the stepping range to the line.
5082      (We might not be in the original line, but if we entered a
5083      new line in mid-statement, we continue stepping.  This makes
5084      things like for(;;) statements work better.)  */
5085
5086   ecs->event_thread->control.step_range_start = stop_pc_sal.pc;
5087   ecs->event_thread->control.step_range_end = stop_pc_sal.end;
5088   set_step_info (frame, stop_pc_sal);
5089
5090   if (debug_infrun)
5091      fprintf_unfiltered (gdb_stdlog, "infrun: keep going\n");
5092   keep_going (ecs);
5093 }
5094
5095 /* Is thread TP in the middle of single-stepping?  */
5096
5097 static int
5098 currently_stepping (struct thread_info *tp)
5099 {
5100   return ((tp->control.step_range_end
5101            && tp->control.step_resume_breakpoint == NULL)
5102           || tp->control.trap_expected
5103           || tp->stepping_through_solib_after_catch
5104           || bpstat_should_step ());
5105 }
5106
5107 /* Returns true if any thread *but* the one passed in "data" is in the
5108    middle of stepping or of handling a "next".  */
5109
5110 static int
5111 currently_stepping_or_nexting_callback (struct thread_info *tp, void *data)
5112 {
5113   if (tp == data)
5114     return 0;
5115
5116   return (tp->control.step_range_end
5117           || tp->control.trap_expected
5118           || tp->stepping_through_solib_after_catch);
5119 }
5120
5121 /* Inferior has stepped into a subroutine call with source code that
5122    we should not step over.  Do step to the first line of code in
5123    it.  */
5124
5125 static void
5126 handle_step_into_function (struct gdbarch *gdbarch,
5127                            struct execution_control_state *ecs)
5128 {
5129   struct symtab *s;
5130   struct symtab_and_line stop_func_sal, sr_sal;
5131
5132   s = find_pc_symtab (stop_pc);
5133   if (s && s->language != language_asm)
5134     ecs->stop_func_start = gdbarch_skip_prologue (gdbarch,
5135                                                   ecs->stop_func_start);
5136
5137   stop_func_sal = find_pc_line (ecs->stop_func_start, 0);
5138   /* Use the step_resume_break to step until the end of the prologue,
5139      even if that involves jumps (as it seems to on the vax under
5140      4.2).  */
5141   /* If the prologue ends in the middle of a source line, continue to
5142      the end of that source line (if it is still within the function).
5143      Otherwise, just go to end of prologue.  */
5144   if (stop_func_sal.end
5145       && stop_func_sal.pc != ecs->stop_func_start
5146       && stop_func_sal.end < ecs->stop_func_end)
5147     ecs->stop_func_start = stop_func_sal.end;
5148
5149   /* Architectures which require breakpoint adjustment might not be able
5150      to place a breakpoint at the computed address.  If so, the test
5151      ``ecs->stop_func_start == stop_pc'' will never succeed.  Adjust
5152      ecs->stop_func_start to an address at which a breakpoint may be
5153      legitimately placed.
5154
5155      Note:  kevinb/2004-01-19:  On FR-V, if this adjustment is not
5156      made, GDB will enter an infinite loop when stepping through
5157      optimized code consisting of VLIW instructions which contain
5158      subinstructions corresponding to different source lines.  On
5159      FR-V, it's not permitted to place a breakpoint on any but the
5160      first subinstruction of a VLIW instruction.  When a breakpoint is
5161      set, GDB will adjust the breakpoint address to the beginning of
5162      the VLIW instruction.  Thus, we need to make the corresponding
5163      adjustment here when computing the stop address.  */
5164
5165   if (gdbarch_adjust_breakpoint_address_p (gdbarch))
5166     {
5167       ecs->stop_func_start
5168         = gdbarch_adjust_breakpoint_address (gdbarch,
5169                                              ecs->stop_func_start);
5170     }
5171
5172   if (ecs->stop_func_start == stop_pc)
5173     {
5174       /* We are already there: stop now.  */
5175       ecs->event_thread->control.stop_step = 1;
5176       print_end_stepping_range_reason ();
5177       stop_stepping (ecs);
5178       return;
5179     }
5180   else
5181     {
5182       /* Put the step-breakpoint there and go until there.  */
5183       init_sal (&sr_sal);       /* initialize to zeroes */
5184       sr_sal.pc = ecs->stop_func_start;
5185       sr_sal.section = find_pc_overlay (ecs->stop_func_start);
5186       sr_sal.pspace = get_frame_program_space (get_current_frame ());
5187
5188       /* Do not specify what the fp should be when we stop since on
5189          some machines the prologue is where the new fp value is
5190          established.  */
5191       insert_step_resume_breakpoint_at_sal (gdbarch, sr_sal, null_frame_id);
5192
5193       /* And make sure stepping stops right away then.  */
5194       ecs->event_thread->control.step_range_end
5195         = ecs->event_thread->control.step_range_start;
5196     }
5197   keep_going (ecs);
5198 }
5199
5200 /* Inferior has stepped backward into a subroutine call with source
5201    code that we should not step over.  Do step to the beginning of the
5202    last line of code in it.  */
5203
5204 static void
5205 handle_step_into_function_backward (struct gdbarch *gdbarch,
5206                                     struct execution_control_state *ecs)
5207 {
5208   struct symtab *s;
5209   struct symtab_and_line stop_func_sal;
5210
5211   s = find_pc_symtab (stop_pc);
5212   if (s && s->language != language_asm)
5213     ecs->stop_func_start = gdbarch_skip_prologue (gdbarch,
5214                                                   ecs->stop_func_start);
5215
5216   stop_func_sal = find_pc_line (stop_pc, 0);
5217
5218   /* OK, we're just going to keep stepping here.  */
5219   if (stop_func_sal.pc == stop_pc)
5220     {
5221       /* We're there already.  Just stop stepping now.  */
5222       ecs->event_thread->control.stop_step = 1;
5223       print_end_stepping_range_reason ();
5224       stop_stepping (ecs);
5225     }
5226   else
5227     {
5228       /* Else just reset the step range and keep going.
5229          No step-resume breakpoint, they don't work for
5230          epilogues, which can have multiple entry paths.  */
5231       ecs->event_thread->control.step_range_start = stop_func_sal.pc;
5232       ecs->event_thread->control.step_range_end = stop_func_sal.end;
5233       keep_going (ecs);
5234     }
5235   return;
5236 }
5237
5238 /* Insert a "step-resume breakpoint" at SR_SAL with frame ID SR_ID.
5239    This is used to both functions and to skip over code.  */
5240
5241 static void
5242 insert_step_resume_breakpoint_at_sal_1 (struct gdbarch *gdbarch,
5243                                         struct symtab_and_line sr_sal,
5244                                         struct frame_id sr_id,
5245                                         enum bptype sr_type)
5246 {
5247   /* There should never be more than one step-resume or longjmp-resume
5248      breakpoint per thread, so we should never be setting a new
5249      step_resume_breakpoint when one is already active.  */
5250   gdb_assert (inferior_thread ()->control.step_resume_breakpoint == NULL);
5251   gdb_assert (sr_type == bp_step_resume || sr_type == bp_hp_step_resume);
5252
5253   if (debug_infrun)
5254     fprintf_unfiltered (gdb_stdlog,
5255                         "infrun: inserting step-resume breakpoint at %s\n",
5256                         paddress (gdbarch, sr_sal.pc));
5257
5258   inferior_thread ()->control.step_resume_breakpoint
5259     = set_momentary_breakpoint (gdbarch, sr_sal, sr_id, sr_type);
5260 }
5261
5262 void
5263 insert_step_resume_breakpoint_at_sal (struct gdbarch *gdbarch,
5264                                       struct symtab_and_line sr_sal,
5265                                       struct frame_id sr_id)
5266 {
5267   insert_step_resume_breakpoint_at_sal_1 (gdbarch,
5268                                           sr_sal, sr_id,
5269                                           bp_step_resume);
5270 }
5271
5272 /* Insert a "high-priority step-resume breakpoint" at RETURN_FRAME.pc.
5273    This is used to skip a potential signal handler.
5274
5275    This is called with the interrupted function's frame.  The signal
5276    handler, when it returns, will resume the interrupted function at
5277    RETURN_FRAME.pc.  */
5278
5279 static void
5280 insert_hp_step_resume_breakpoint_at_frame (struct frame_info *return_frame)
5281 {
5282   struct symtab_and_line sr_sal;
5283   struct gdbarch *gdbarch;
5284
5285   gdb_assert (return_frame != NULL);
5286   init_sal (&sr_sal);           /* initialize to zeros */
5287
5288   gdbarch = get_frame_arch (return_frame);
5289   sr_sal.pc = gdbarch_addr_bits_remove (gdbarch, get_frame_pc (return_frame));
5290   sr_sal.section = find_pc_overlay (sr_sal.pc);
5291   sr_sal.pspace = get_frame_program_space (return_frame);
5292
5293   insert_step_resume_breakpoint_at_sal_1 (gdbarch, sr_sal,
5294                                           get_stack_frame_id (return_frame),
5295                                           bp_hp_step_resume);
5296 }
5297
5298 /* Insert a "step-resume breakpoint" at the previous frame's PC.  This
5299    is used to skip a function after stepping into it (for "next" or if
5300    the called function has no debugging information).
5301
5302    The current function has almost always been reached by single
5303    stepping a call or return instruction.  NEXT_FRAME belongs to the
5304    current function, and the breakpoint will be set at the caller's
5305    resume address.
5306
5307    This is a separate function rather than reusing
5308    insert_hp_step_resume_breakpoint_at_frame in order to avoid
5309    get_prev_frame, which may stop prematurely (see the implementation
5310    of frame_unwind_caller_id for an example).  */
5311
5312 static void
5313 insert_step_resume_breakpoint_at_caller (struct frame_info *next_frame)
5314 {
5315   struct symtab_and_line sr_sal;
5316   struct gdbarch *gdbarch;
5317
5318   /* We shouldn't have gotten here if we don't know where the call site
5319      is.  */
5320   gdb_assert (frame_id_p (frame_unwind_caller_id (next_frame)));
5321
5322   init_sal (&sr_sal);           /* initialize to zeros */
5323
5324   gdbarch = frame_unwind_caller_arch (next_frame);
5325   sr_sal.pc = gdbarch_addr_bits_remove (gdbarch,
5326                                         frame_unwind_caller_pc (next_frame));
5327   sr_sal.section = find_pc_overlay (sr_sal.pc);
5328   sr_sal.pspace = frame_unwind_program_space (next_frame);
5329
5330   insert_step_resume_breakpoint_at_sal (gdbarch, sr_sal,
5331                                         frame_unwind_caller_id (next_frame));
5332 }
5333
5334 /* Insert a "longjmp-resume" breakpoint at PC.  This is used to set a
5335    new breakpoint at the target of a jmp_buf.  The handling of
5336    longjmp-resume uses the same mechanisms used for handling
5337    "step-resume" breakpoints.  */
5338
5339 static void
5340 insert_longjmp_resume_breakpoint (struct gdbarch *gdbarch, CORE_ADDR pc)
5341 {
5342   /* There should never be more than one step-resume or longjmp-resume
5343      breakpoint per thread, so we should never be setting a new
5344      longjmp_resume_breakpoint when one is already active.  */
5345   gdb_assert (inferior_thread ()->control.step_resume_breakpoint == NULL);
5346
5347   if (debug_infrun)
5348     fprintf_unfiltered (gdb_stdlog,
5349                         "infrun: inserting longjmp-resume breakpoint at %s\n",
5350                         paddress (gdbarch, pc));
5351
5352   inferior_thread ()->control.step_resume_breakpoint =
5353     set_momentary_breakpoint_at_pc (gdbarch, pc, bp_longjmp_resume);
5354 }
5355
5356 /* Insert an exception resume breakpoint.  TP is the thread throwing
5357    the exception.  The block B is the block of the unwinder debug hook
5358    function.  FRAME is the frame corresponding to the call to this
5359    function.  SYM is the symbol of the function argument holding the
5360    target PC of the exception.  */
5361
5362 static void
5363 insert_exception_resume_breakpoint (struct thread_info *tp,
5364                                     struct block *b,
5365                                     struct frame_info *frame,
5366                                     struct symbol *sym)
5367 {
5368   struct gdb_exception e;
5369
5370   /* We want to ignore errors here.  */
5371   TRY_CATCH (e, RETURN_MASK_ERROR)
5372     {
5373       struct symbol *vsym;
5374       struct value *value;
5375       CORE_ADDR handler;
5376       struct breakpoint *bp;
5377
5378       vsym = lookup_symbol (SYMBOL_LINKAGE_NAME (sym), b, VAR_DOMAIN, NULL);
5379       value = read_var_value (vsym, frame);
5380       /* If the value was optimized out, revert to the old behavior.  */
5381       if (! value_optimized_out (value))
5382         {
5383           handler = value_as_address (value);
5384
5385           if (debug_infrun)
5386             fprintf_unfiltered (gdb_stdlog,
5387                                 "infrun: exception resume at %lx\n",
5388                                 (unsigned long) handler);
5389
5390           bp = set_momentary_breakpoint_at_pc (get_frame_arch (frame),
5391                                                handler, bp_exception_resume);
5392           bp->thread = tp->num;
5393           inferior_thread ()->control.exception_resume_breakpoint = bp;
5394         }
5395     }
5396 }
5397
5398 /* This is called when an exception has been intercepted.  Check to
5399    see whether the exception's destination is of interest, and if so,
5400    set an exception resume breakpoint there.  */
5401
5402 static void
5403 check_exception_resume (struct execution_control_state *ecs,
5404                         struct frame_info *frame, struct symbol *func)
5405 {
5406   struct gdb_exception e;
5407
5408   TRY_CATCH (e, RETURN_MASK_ERROR)
5409     {
5410       struct block *b;
5411       struct dict_iterator iter;
5412       struct symbol *sym;
5413       int argno = 0;
5414
5415       /* The exception breakpoint is a thread-specific breakpoint on
5416          the unwinder's debug hook, declared as:
5417          
5418          void _Unwind_DebugHook (void *cfa, void *handler);
5419          
5420          The CFA argument indicates the frame to which control is
5421          about to be transferred.  HANDLER is the destination PC.
5422          
5423          We ignore the CFA and set a temporary breakpoint at HANDLER.
5424          This is not extremely efficient but it avoids issues in gdb
5425          with computing the DWARF CFA, and it also works even in weird
5426          cases such as throwing an exception from inside a signal
5427          handler.  */
5428
5429       b = SYMBOL_BLOCK_VALUE (func);
5430       ALL_BLOCK_SYMBOLS (b, iter, sym)
5431         {
5432           if (!SYMBOL_IS_ARGUMENT (sym))
5433             continue;
5434
5435           if (argno == 0)
5436             ++argno;
5437           else
5438             {
5439               insert_exception_resume_breakpoint (ecs->event_thread,
5440                                                   b, frame, sym);
5441               break;
5442             }
5443         }
5444     }
5445 }
5446
5447 static void
5448 stop_stepping (struct execution_control_state *ecs)
5449 {
5450   if (debug_infrun)
5451     fprintf_unfiltered (gdb_stdlog, "infrun: stop_stepping\n");
5452
5453   /* Let callers know we don't want to wait for the inferior anymore.  */
5454   ecs->wait_some_more = 0;
5455 }
5456
5457 /* This function handles various cases where we need to continue
5458    waiting for the inferior.  */
5459 /* (Used to be the keep_going: label in the old wait_for_inferior).  */
5460
5461 static void
5462 keep_going (struct execution_control_state *ecs)
5463 {
5464   /* Make sure normal_stop is called if we get a QUIT handled before
5465      reaching resume.  */
5466   struct cleanup *old_cleanups = make_cleanup (resume_cleanups, 0);
5467
5468   /* Save the pc before execution, to compare with pc after stop.  */
5469   ecs->event_thread->prev_pc
5470     = regcache_read_pc (get_thread_regcache (ecs->ptid));
5471
5472   /* If we did not do break;, it means we should keep running the
5473      inferior and not return to debugger.  */
5474
5475   if (ecs->event_thread->control.trap_expected
5476       && ecs->event_thread->suspend.stop_signal != TARGET_SIGNAL_TRAP)
5477     {
5478       /* We took a signal (which we are supposed to pass through to
5479          the inferior, else we'd not get here) and we haven't yet
5480          gotten our trap.  Simply continue.  */
5481
5482       discard_cleanups (old_cleanups);
5483       resume (currently_stepping (ecs->event_thread),
5484               ecs->event_thread->suspend.stop_signal);
5485     }
5486   else
5487     {
5488       /* Either the trap was not expected, but we are continuing
5489          anyway (the user asked that this signal be passed to the
5490          child)
5491          -- or --
5492          The signal was SIGTRAP, e.g. it was our signal, but we
5493          decided we should resume from it.
5494
5495          We're going to run this baby now!  
5496
5497          Note that insert_breakpoints won't try to re-insert
5498          already inserted breakpoints.  Therefore, we don't
5499          care if breakpoints were already inserted, or not.  */
5500       
5501       if (ecs->event_thread->stepping_over_breakpoint)
5502         {
5503           struct regcache *thread_regcache = get_thread_regcache (ecs->ptid);
5504
5505           if (!use_displaced_stepping (get_regcache_arch (thread_regcache)))
5506             /* Since we can't do a displaced step, we have to remove
5507                the breakpoint while we step it.  To keep things
5508                simple, we remove them all.  */
5509             remove_breakpoints ();
5510         }
5511       else
5512         {
5513           struct gdb_exception e;
5514
5515           /* Stop stepping when inserting breakpoints
5516              has failed.  */
5517           TRY_CATCH (e, RETURN_MASK_ERROR)
5518             {
5519               insert_breakpoints ();
5520             }
5521           if (e.reason < 0)
5522             {
5523               exception_print (gdb_stderr, e);
5524               stop_stepping (ecs);
5525               return;
5526             }
5527         }
5528
5529       ecs->event_thread->control.trap_expected
5530         = ecs->event_thread->stepping_over_breakpoint;
5531
5532       /* Do not deliver SIGNAL_TRAP (except when the user explicitly
5533          specifies that such a signal should be delivered to the
5534          target program).
5535
5536          Typically, this would occure when a user is debugging a
5537          target monitor on a simulator: the target monitor sets a
5538          breakpoint; the simulator encounters this break-point and
5539          halts the simulation handing control to GDB; GDB, noteing
5540          that the break-point isn't valid, returns control back to the
5541          simulator; the simulator then delivers the hardware
5542          equivalent of a SIGNAL_TRAP to the program being debugged.  */
5543
5544       if (ecs->event_thread->suspend.stop_signal == TARGET_SIGNAL_TRAP
5545           && !signal_program[ecs->event_thread->suspend.stop_signal])
5546         ecs->event_thread->suspend.stop_signal = TARGET_SIGNAL_0;
5547
5548       discard_cleanups (old_cleanups);
5549       resume (currently_stepping (ecs->event_thread),
5550               ecs->event_thread->suspend.stop_signal);
5551     }
5552
5553   prepare_to_wait (ecs);
5554 }
5555
5556 /* This function normally comes after a resume, before
5557    handle_inferior_event exits.  It takes care of any last bits of
5558    housekeeping, and sets the all-important wait_some_more flag.  */
5559
5560 static void
5561 prepare_to_wait (struct execution_control_state *ecs)
5562 {
5563   if (debug_infrun)
5564     fprintf_unfiltered (gdb_stdlog, "infrun: prepare_to_wait\n");
5565
5566   /* This is the old end of the while loop.  Let everybody know we
5567      want to wait for the inferior some more and get called again
5568      soon.  */
5569   ecs->wait_some_more = 1;
5570 }
5571
5572 /* Several print_*_reason functions to print why the inferior has stopped.
5573    We always print something when the inferior exits, or receives a signal.
5574    The rest of the cases are dealt with later on in normal_stop and
5575    print_it_typical.  Ideally there should be a call to one of these
5576    print_*_reason functions functions from handle_inferior_event each time
5577    stop_stepping is called.  */
5578
5579 /* Print why the inferior has stopped.  
5580    We are done with a step/next/si/ni command, print why the inferior has
5581    stopped.  For now print nothing.  Print a message only if not in the middle
5582    of doing a "step n" operation for n > 1.  */
5583
5584 static void
5585 print_end_stepping_range_reason (void)
5586 {
5587   if ((!inferior_thread ()->step_multi
5588        || !inferior_thread ()->control.stop_step)
5589       && ui_out_is_mi_like_p (uiout))
5590     ui_out_field_string (uiout, "reason",
5591                          async_reason_lookup (EXEC_ASYNC_END_STEPPING_RANGE));
5592 }
5593
5594 /* The inferior was terminated by a signal, print why it stopped.  */
5595
5596 static void
5597 print_signal_exited_reason (enum target_signal siggnal)
5598 {
5599   annotate_signalled ();
5600   if (ui_out_is_mi_like_p (uiout))
5601     ui_out_field_string
5602       (uiout, "reason", async_reason_lookup (EXEC_ASYNC_EXITED_SIGNALLED));
5603   ui_out_text (uiout, "\nProgram terminated with signal ");
5604   annotate_signal_name ();
5605   ui_out_field_string (uiout, "signal-name",
5606                        target_signal_to_name (siggnal));
5607   annotate_signal_name_end ();
5608   ui_out_text (uiout, ", ");
5609   annotate_signal_string ();
5610   ui_out_field_string (uiout, "signal-meaning",
5611                        target_signal_to_string (siggnal));
5612   annotate_signal_string_end ();
5613   ui_out_text (uiout, ".\n");
5614   ui_out_text (uiout, "The program no longer exists.\n");
5615 }
5616
5617 /* The inferior program is finished, print why it stopped.  */
5618
5619 static void
5620 print_exited_reason (int exitstatus)
5621 {
5622   struct inferior *inf = current_inferior ();
5623   const char *pidstr = target_pid_to_str (pid_to_ptid (inf->pid));
5624
5625   annotate_exited (exitstatus);
5626   if (exitstatus)
5627     {
5628       if (ui_out_is_mi_like_p (uiout))
5629         ui_out_field_string (uiout, "reason", 
5630                              async_reason_lookup (EXEC_ASYNC_EXITED));
5631       ui_out_text (uiout, "[Inferior ");
5632       ui_out_text (uiout, plongest (inf->num));
5633       ui_out_text (uiout, " (");
5634       ui_out_text (uiout, pidstr);
5635       ui_out_text (uiout, ") exited with code ");
5636       ui_out_field_fmt (uiout, "exit-code", "0%o", (unsigned int) exitstatus);
5637       ui_out_text (uiout, "]\n");
5638     }
5639   else
5640     {
5641       if (ui_out_is_mi_like_p (uiout))
5642         ui_out_field_string
5643           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_EXITED_NORMALLY));
5644       ui_out_text (uiout, "[Inferior ");
5645       ui_out_text (uiout, plongest (inf->num));
5646       ui_out_text (uiout, " (");
5647       ui_out_text (uiout, pidstr);
5648       ui_out_text (uiout, ") exited normally]\n");
5649     }
5650   /* Support the --return-child-result option.  */
5651   return_child_result_value = exitstatus;
5652 }
5653
5654 /* Signal received, print why the inferior has stopped.  The signal table
5655    tells us to print about it.  */
5656
5657 static void
5658 print_signal_received_reason (enum target_signal siggnal)
5659 {
5660   annotate_signal ();
5661
5662   if (siggnal == TARGET_SIGNAL_0 && !ui_out_is_mi_like_p (uiout))
5663     {
5664       struct thread_info *t = inferior_thread ();
5665
5666       ui_out_text (uiout, "\n[");
5667       ui_out_field_string (uiout, "thread-name",
5668                            target_pid_to_str (t->ptid));
5669       ui_out_field_fmt (uiout, "thread-id", "] #%d", t->num);
5670       ui_out_text (uiout, " stopped");
5671     }
5672   else
5673     {
5674       ui_out_text (uiout, "\nProgram received signal ");
5675       annotate_signal_name ();
5676       if (ui_out_is_mi_like_p (uiout))
5677         ui_out_field_string
5678           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_SIGNAL_RECEIVED));
5679       ui_out_field_string (uiout, "signal-name",
5680                            target_signal_to_name (siggnal));
5681       annotate_signal_name_end ();
5682       ui_out_text (uiout, ", ");
5683       annotate_signal_string ();
5684       ui_out_field_string (uiout, "signal-meaning",
5685                            target_signal_to_string (siggnal));
5686       annotate_signal_string_end ();
5687     }
5688   ui_out_text (uiout, ".\n");
5689 }
5690
5691 /* Reverse execution: target ran out of history info, print why the inferior
5692    has stopped.  */
5693
5694 static void
5695 print_no_history_reason (void)
5696 {
5697   ui_out_text (uiout, "\nNo more reverse-execution history.\n");
5698 }
5699
5700 /* Here to return control to GDB when the inferior stops for real.
5701    Print appropriate messages, remove breakpoints, give terminal our modes.
5702
5703    STOP_PRINT_FRAME nonzero means print the executing frame
5704    (pc, function, args, file, line number and line text).
5705    BREAKPOINTS_FAILED nonzero means stop was due to error
5706    attempting to insert breakpoints.  */
5707
5708 void
5709 normal_stop (void)
5710 {
5711   struct target_waitstatus last;
5712   ptid_t last_ptid;
5713   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
5714
5715   get_last_target_status (&last_ptid, &last);
5716
5717   /* If an exception is thrown from this point on, make sure to
5718      propagate GDB's knowledge of the executing state to the
5719      frontend/user running state.  A QUIT is an easy exception to see
5720      here, so do this before any filtered output.  */
5721   if (!non_stop)
5722     make_cleanup (finish_thread_state_cleanup, &minus_one_ptid);
5723   else if (last.kind != TARGET_WAITKIND_SIGNALLED
5724            && last.kind != TARGET_WAITKIND_EXITED)
5725     make_cleanup (finish_thread_state_cleanup, &inferior_ptid);
5726
5727   /* In non-stop mode, we don't want GDB to switch threads behind the
5728      user's back, to avoid races where the user is typing a command to
5729      apply to thread x, but GDB switches to thread y before the user
5730      finishes entering the command.  */
5731
5732   /* As with the notification of thread events, we want to delay
5733      notifying the user that we've switched thread context until
5734      the inferior actually stops.
5735
5736      There's no point in saying anything if the inferior has exited.
5737      Note that SIGNALLED here means "exited with a signal", not
5738      "received a signal".  */
5739   if (!non_stop
5740       && !ptid_equal (previous_inferior_ptid, inferior_ptid)
5741       && target_has_execution
5742       && last.kind != TARGET_WAITKIND_SIGNALLED
5743       && last.kind != TARGET_WAITKIND_EXITED)
5744     {
5745       target_terminal_ours_for_output ();
5746       printf_filtered (_("[Switching to %s]\n"),
5747                        target_pid_to_str (inferior_ptid));
5748       annotate_thread_changed ();
5749       previous_inferior_ptid = inferior_ptid;
5750     }
5751
5752   if (!breakpoints_always_inserted_mode () && target_has_execution)
5753     {
5754       if (remove_breakpoints ())
5755         {
5756           target_terminal_ours_for_output ();
5757           printf_filtered (_("Cannot remove breakpoints because "
5758                              "program is no longer writable.\nFurther "
5759                              "execution is probably impossible.\n"));
5760         }
5761     }
5762
5763   /* If an auto-display called a function and that got a signal,
5764      delete that auto-display to avoid an infinite recursion.  */
5765
5766   if (stopped_by_random_signal)
5767     disable_current_display ();
5768
5769   /* Don't print a message if in the middle of doing a "step n"
5770      operation for n > 1 */
5771   if (target_has_execution
5772       && last.kind != TARGET_WAITKIND_SIGNALLED
5773       && last.kind != TARGET_WAITKIND_EXITED
5774       && inferior_thread ()->step_multi
5775       && inferior_thread ()->control.stop_step)
5776     goto done;
5777
5778   target_terminal_ours ();
5779
5780   /* Set the current source location.  This will also happen if we
5781      display the frame below, but the current SAL will be incorrect
5782      during a user hook-stop function.  */
5783   if (has_stack_frames () && !stop_stack_dummy)
5784     set_current_sal_from_frame (get_current_frame (), 1);
5785
5786   /* Let the user/frontend see the threads as stopped.  */
5787   do_cleanups (old_chain);
5788
5789   /* Look up the hook_stop and run it (CLI internally handles problem
5790      of stop_command's pre-hook not existing).  */
5791   if (stop_command)
5792     catch_errors (hook_stop_stub, stop_command,
5793                   "Error while running hook_stop:\n", RETURN_MASK_ALL);
5794
5795   if (!has_stack_frames ())
5796     goto done;
5797
5798   if (last.kind == TARGET_WAITKIND_SIGNALLED
5799       || last.kind == TARGET_WAITKIND_EXITED)
5800     goto done;
5801
5802   /* Select innermost stack frame - i.e., current frame is frame 0,
5803      and current location is based on that.
5804      Don't do this on return from a stack dummy routine,
5805      or if the program has exited.  */
5806
5807   if (!stop_stack_dummy)
5808     {
5809       select_frame (get_current_frame ());
5810
5811       /* Print current location without a level number, if
5812          we have changed functions or hit a breakpoint.
5813          Print source line if we have one.
5814          bpstat_print() contains the logic deciding in detail
5815          what to print, based on the event(s) that just occurred.  */
5816
5817       /* If --batch-silent is enabled then there's no need to print the current
5818          source location, and to try risks causing an error message about
5819          missing source files.  */
5820       if (stop_print_frame && !batch_silent)
5821         {
5822           int bpstat_ret;
5823           int source_flag;
5824           int do_frame_printing = 1;
5825           struct thread_info *tp = inferior_thread ();
5826
5827           bpstat_ret = bpstat_print (tp->control.stop_bpstat);
5828           switch (bpstat_ret)
5829             {
5830             case PRINT_UNKNOWN:
5831               /* If we had hit a shared library event breakpoint,
5832                  bpstat_print would print out this message.  If we hit
5833                  an OS-level shared library event, do the same
5834                  thing.  */
5835               if (last.kind == TARGET_WAITKIND_LOADED)
5836                 {
5837                   printf_filtered (_("Stopped due to shared library event\n"));
5838                   source_flag = SRC_LINE;       /* something bogus */
5839                   do_frame_printing = 0;
5840                   break;
5841                 }
5842
5843               /* FIXME: cagney/2002-12-01: Given that a frame ID does
5844                  (or should) carry around the function and does (or
5845                  should) use that when doing a frame comparison.  */
5846               if (tp->control.stop_step
5847                   && frame_id_eq (tp->control.step_frame_id,
5848                                   get_frame_id (get_current_frame ()))
5849                   && step_start_function == find_pc_function (stop_pc))
5850                 source_flag = SRC_LINE;         /* Finished step, just
5851                                                    print source line.  */
5852               else
5853                 source_flag = SRC_AND_LOC;      /* Print location and
5854                                                    source line.  */
5855               break;
5856             case PRINT_SRC_AND_LOC:
5857               source_flag = SRC_AND_LOC;        /* Print location and
5858                                                    source line.  */
5859               break;
5860             case PRINT_SRC_ONLY:
5861               source_flag = SRC_LINE;
5862               break;
5863             case PRINT_NOTHING:
5864               source_flag = SRC_LINE;   /* something bogus */
5865               do_frame_printing = 0;
5866               break;
5867             default:
5868               internal_error (__FILE__, __LINE__, _("Unknown value."));
5869             }
5870
5871           /* The behavior of this routine with respect to the source
5872              flag is:
5873              SRC_LINE: Print only source line
5874              LOCATION: Print only location
5875              SRC_AND_LOC: Print location and source line.  */
5876           if (do_frame_printing)
5877             print_stack_frame (get_selected_frame (NULL), 0, source_flag);
5878
5879           /* Display the auto-display expressions.  */
5880           do_displays ();
5881         }
5882     }
5883
5884   /* Save the function value return registers, if we care.
5885      We might be about to restore their previous contents.  */
5886   if (inferior_thread ()->control.proceed_to_finish
5887       && execution_direction != EXEC_REVERSE)
5888     {
5889       /* This should not be necessary.  */
5890       if (stop_registers)
5891         regcache_xfree (stop_registers);
5892
5893       /* NB: The copy goes through to the target picking up the value of
5894          all the registers.  */
5895       stop_registers = regcache_dup (get_current_regcache ());
5896     }
5897
5898   if (stop_stack_dummy == STOP_STACK_DUMMY)
5899     {
5900       /* Pop the empty frame that contains the stack dummy.
5901          This also restores inferior state prior to the call
5902          (struct infcall_suspend_state).  */
5903       struct frame_info *frame = get_current_frame ();
5904
5905       gdb_assert (get_frame_type (frame) == DUMMY_FRAME);
5906       frame_pop (frame);
5907       /* frame_pop() calls reinit_frame_cache as the last thing it
5908          does which means there's currently no selected frame.  We
5909          don't need to re-establish a selected frame if the dummy call
5910          returns normally, that will be done by
5911          restore_infcall_control_state.  However, we do have to handle
5912          the case where the dummy call is returning after being
5913          stopped (e.g. the dummy call previously hit a breakpoint).
5914          We can't know which case we have so just always re-establish
5915          a selected frame here.  */
5916       select_frame (get_current_frame ());
5917     }
5918
5919 done:
5920   annotate_stopped ();
5921
5922   /* Suppress the stop observer if we're in the middle of:
5923
5924      - a step n (n > 1), as there still more steps to be done.
5925
5926      - a "finish" command, as the observer will be called in
5927        finish_command_continuation, so it can include the inferior
5928        function's return value.
5929
5930      - calling an inferior function, as we pretend we inferior didn't
5931        run at all.  The return value of the call is handled by the
5932        expression evaluator, through call_function_by_hand.  */
5933
5934   if (!target_has_execution
5935       || last.kind == TARGET_WAITKIND_SIGNALLED
5936       || last.kind == TARGET_WAITKIND_EXITED
5937       || (!inferior_thread ()->step_multi
5938           && !(inferior_thread ()->control.stop_bpstat
5939                && inferior_thread ()->control.proceed_to_finish)
5940           && !inferior_thread ()->control.in_infcall))
5941     {
5942       if (!ptid_equal (inferior_ptid, null_ptid))
5943         observer_notify_normal_stop (inferior_thread ()->control.stop_bpstat,
5944                                      stop_print_frame);
5945       else
5946         observer_notify_normal_stop (NULL, stop_print_frame);
5947     }
5948
5949   if (target_has_execution)
5950     {
5951       if (last.kind != TARGET_WAITKIND_SIGNALLED
5952           && last.kind != TARGET_WAITKIND_EXITED)
5953         /* Delete the breakpoint we stopped at, if it wants to be deleted.
5954            Delete any breakpoint that is to be deleted at the next stop.  */
5955         breakpoint_auto_delete (inferior_thread ()->control.stop_bpstat);
5956     }
5957
5958   /* Try to get rid of automatically added inferiors that are no
5959      longer needed.  Keeping those around slows down things linearly.
5960      Note that this never removes the current inferior.  */
5961   prune_inferiors ();
5962 }
5963
5964 static int
5965 hook_stop_stub (void *cmd)
5966 {
5967   execute_cmd_pre_hook ((struct cmd_list_element *) cmd);
5968   return (0);
5969 }
5970 \f
5971 int
5972 signal_stop_state (int signo)
5973 {
5974   return signal_stop[signo];
5975 }
5976
5977 int
5978 signal_print_state (int signo)
5979 {
5980   return signal_print[signo];
5981 }
5982
5983 int
5984 signal_pass_state (int signo)
5985 {
5986   return signal_program[signo];
5987 }
5988
5989 static void
5990 signal_cache_update (int signo)
5991 {
5992   if (signo == -1)
5993     {
5994       for (signo = 0; signo < (int) TARGET_SIGNAL_LAST; signo++)
5995         signal_cache_update (signo);
5996
5997       return;
5998     }
5999
6000   signal_pass[signo] = (signal_stop[signo] == 0
6001                         && signal_print[signo] == 0
6002                         && signal_program[signo] == 1);
6003 }
6004
6005 int
6006 signal_stop_update (int signo, int state)
6007 {
6008   int ret = signal_stop[signo];
6009
6010   signal_stop[signo] = state;
6011   signal_cache_update (signo);
6012   return ret;
6013 }
6014
6015 int
6016 signal_print_update (int signo, int state)
6017 {
6018   int ret = signal_print[signo];
6019
6020   signal_print[signo] = state;
6021   signal_cache_update (signo);
6022   return ret;
6023 }
6024
6025 int
6026 signal_pass_update (int signo, int state)
6027 {
6028   int ret = signal_program[signo];
6029
6030   signal_program[signo] = state;
6031   signal_cache_update (signo);
6032   return ret;
6033 }
6034
6035 static void
6036 sig_print_header (void)
6037 {
6038   printf_filtered (_("Signal        Stop\tPrint\tPass "
6039                      "to program\tDescription\n"));
6040 }
6041
6042 static void
6043 sig_print_info (enum target_signal oursig)
6044 {
6045   const char *name = target_signal_to_name (oursig);
6046   int name_padding = 13 - strlen (name);
6047
6048   if (name_padding <= 0)
6049     name_padding = 0;
6050
6051   printf_filtered ("%s", name);
6052   printf_filtered ("%*.*s ", name_padding, name_padding, "                 ");
6053   printf_filtered ("%s\t", signal_stop[oursig] ? "Yes" : "No");
6054   printf_filtered ("%s\t", signal_print[oursig] ? "Yes" : "No");
6055   printf_filtered ("%s\t\t", signal_program[oursig] ? "Yes" : "No");
6056   printf_filtered ("%s\n", target_signal_to_string (oursig));
6057 }
6058
6059 /* Specify how various signals in the inferior should be handled.  */
6060
6061 static void
6062 handle_command (char *args, int from_tty)
6063 {
6064   char **argv;
6065   int digits, wordlen;
6066   int sigfirst, signum, siglast;
6067   enum target_signal oursig;
6068   int allsigs;
6069   int nsigs;
6070   unsigned char *sigs;
6071   struct cleanup *old_chain;
6072
6073   if (args == NULL)
6074     {
6075       error_no_arg (_("signal to handle"));
6076     }
6077
6078   /* Allocate and zero an array of flags for which signals to handle.  */
6079
6080   nsigs = (int) TARGET_SIGNAL_LAST;
6081   sigs = (unsigned char *) alloca (nsigs);
6082   memset (sigs, 0, nsigs);
6083
6084   /* Break the command line up into args.  */
6085
6086   argv = gdb_buildargv (args);
6087   old_chain = make_cleanup_freeargv (argv);
6088
6089   /* Walk through the args, looking for signal oursigs, signal names, and
6090      actions.  Signal numbers and signal names may be interspersed with
6091      actions, with the actions being performed for all signals cumulatively
6092      specified.  Signal ranges can be specified as <LOW>-<HIGH>.  */
6093
6094   while (*argv != NULL)
6095     {
6096       wordlen = strlen (*argv);
6097       for (digits = 0; isdigit ((*argv)[digits]); digits++)
6098         {;
6099         }
6100       allsigs = 0;
6101       sigfirst = siglast = -1;
6102
6103       if (wordlen >= 1 && !strncmp (*argv, "all", wordlen))
6104         {
6105           /* Apply action to all signals except those used by the
6106              debugger.  Silently skip those.  */
6107           allsigs = 1;
6108           sigfirst = 0;
6109           siglast = nsigs - 1;
6110         }
6111       else if (wordlen >= 1 && !strncmp (*argv, "stop", wordlen))
6112         {
6113           SET_SIGS (nsigs, sigs, signal_stop);
6114           SET_SIGS (nsigs, sigs, signal_print);
6115         }
6116       else if (wordlen >= 1 && !strncmp (*argv, "ignore", wordlen))
6117         {
6118           UNSET_SIGS (nsigs, sigs, signal_program);
6119         }
6120       else if (wordlen >= 2 && !strncmp (*argv, "print", wordlen))
6121         {
6122           SET_SIGS (nsigs, sigs, signal_print);
6123         }
6124       else if (wordlen >= 2 && !strncmp (*argv, "pass", wordlen))
6125         {
6126           SET_SIGS (nsigs, sigs, signal_program);
6127         }
6128       else if (wordlen >= 3 && !strncmp (*argv, "nostop", wordlen))
6129         {
6130           UNSET_SIGS (nsigs, sigs, signal_stop);
6131         }
6132       else if (wordlen >= 3 && !strncmp (*argv, "noignore", wordlen))
6133         {
6134           SET_SIGS (nsigs, sigs, signal_program);
6135         }
6136       else if (wordlen >= 4 && !strncmp (*argv, "noprint", wordlen))
6137         {
6138           UNSET_SIGS (nsigs, sigs, signal_print);
6139           UNSET_SIGS (nsigs, sigs, signal_stop);
6140         }
6141       else if (wordlen >= 4 && !strncmp (*argv, "nopass", wordlen))
6142         {
6143           UNSET_SIGS (nsigs, sigs, signal_program);
6144         }
6145       else if (digits > 0)
6146         {
6147           /* It is numeric.  The numeric signal refers to our own
6148              internal signal numbering from target.h, not to host/target
6149              signal  number.  This is a feature; users really should be
6150              using symbolic names anyway, and the common ones like
6151              SIGHUP, SIGINT, SIGALRM, etc. will work right anyway.  */
6152
6153           sigfirst = siglast = (int)
6154             target_signal_from_command (atoi (*argv));
6155           if ((*argv)[digits] == '-')
6156             {
6157               siglast = (int)
6158                 target_signal_from_command (atoi ((*argv) + digits + 1));
6159             }
6160           if (sigfirst > siglast)
6161             {
6162               /* Bet he didn't figure we'd think of this case...  */
6163               signum = sigfirst;
6164               sigfirst = siglast;
6165               siglast = signum;
6166             }
6167         }
6168       else
6169         {
6170           oursig = target_signal_from_name (*argv);
6171           if (oursig != TARGET_SIGNAL_UNKNOWN)
6172             {
6173               sigfirst = siglast = (int) oursig;
6174             }
6175           else
6176             {
6177               /* Not a number and not a recognized flag word => complain.  */
6178               error (_("Unrecognized or ambiguous flag word: \"%s\"."), *argv);
6179             }
6180         }
6181
6182       /* If any signal numbers or symbol names were found, set flags for
6183          which signals to apply actions to.  */
6184
6185       for (signum = sigfirst; signum >= 0 && signum <= siglast; signum++)
6186         {
6187           switch ((enum target_signal) signum)
6188             {
6189             case TARGET_SIGNAL_TRAP:
6190             case TARGET_SIGNAL_INT:
6191               if (!allsigs && !sigs[signum])
6192                 {
6193                   if (query (_("%s is used by the debugger.\n\
6194 Are you sure you want to change it? "),
6195                              target_signal_to_name ((enum target_signal) signum)))
6196                     {
6197                       sigs[signum] = 1;
6198                     }
6199                   else
6200                     {
6201                       printf_unfiltered (_("Not confirmed, unchanged.\n"));
6202                       gdb_flush (gdb_stdout);
6203                     }
6204                 }
6205               break;
6206             case TARGET_SIGNAL_0:
6207             case TARGET_SIGNAL_DEFAULT:
6208             case TARGET_SIGNAL_UNKNOWN:
6209               /* Make sure that "all" doesn't print these.  */
6210               break;
6211             default:
6212               sigs[signum] = 1;
6213               break;
6214             }
6215         }
6216
6217       argv++;
6218     }
6219
6220   for (signum = 0; signum < nsigs; signum++)
6221     if (sigs[signum])
6222       {
6223         signal_cache_update (-1);
6224         target_pass_signals ((int) TARGET_SIGNAL_LAST, signal_pass);
6225
6226         if (from_tty)
6227           {
6228             /* Show the results.  */
6229             sig_print_header ();
6230             for (; signum < nsigs; signum++)
6231               if (sigs[signum])
6232                 sig_print_info (signum);
6233           }
6234
6235         break;
6236       }
6237
6238   do_cleanups (old_chain);
6239 }
6240
6241 static void
6242 xdb_handle_command (char *args, int from_tty)
6243 {
6244   char **argv;
6245   struct cleanup *old_chain;
6246
6247   if (args == NULL)
6248     error_no_arg (_("xdb command"));
6249
6250   /* Break the command line up into args.  */
6251
6252   argv = gdb_buildargv (args);
6253   old_chain = make_cleanup_freeargv (argv);
6254   if (argv[1] != (char *) NULL)
6255     {
6256       char *argBuf;
6257       int bufLen;
6258
6259       bufLen = strlen (argv[0]) + 20;
6260       argBuf = (char *) xmalloc (bufLen);
6261       if (argBuf)
6262         {
6263           int validFlag = 1;
6264           enum target_signal oursig;
6265
6266           oursig = target_signal_from_name (argv[0]);
6267           memset (argBuf, 0, bufLen);
6268           if (strcmp (argv[1], "Q") == 0)
6269             sprintf (argBuf, "%s %s", argv[0], "noprint");
6270           else
6271             {
6272               if (strcmp (argv[1], "s") == 0)
6273                 {
6274                   if (!signal_stop[oursig])
6275                     sprintf (argBuf, "%s %s", argv[0], "stop");
6276                   else
6277                     sprintf (argBuf, "%s %s", argv[0], "nostop");
6278                 }
6279               else if (strcmp (argv[1], "i") == 0)
6280                 {
6281                   if (!signal_program[oursig])
6282                     sprintf (argBuf, "%s %s", argv[0], "pass");
6283                   else
6284                     sprintf (argBuf, "%s %s", argv[0], "nopass");
6285                 }
6286               else if (strcmp (argv[1], "r") == 0)
6287                 {
6288                   if (!signal_print[oursig])
6289                     sprintf (argBuf, "%s %s", argv[0], "print");
6290                   else
6291                     sprintf (argBuf, "%s %s", argv[0], "noprint");
6292                 }
6293               else
6294                 validFlag = 0;
6295             }
6296           if (validFlag)
6297             handle_command (argBuf, from_tty);
6298           else
6299             printf_filtered (_("Invalid signal handling flag.\n"));
6300           if (argBuf)
6301             xfree (argBuf);
6302         }
6303     }
6304   do_cleanups (old_chain);
6305 }
6306
6307 /* Print current contents of the tables set by the handle command.
6308    It is possible we should just be printing signals actually used
6309    by the current target (but for things to work right when switching
6310    targets, all signals should be in the signal tables).  */
6311
6312 static void
6313 signals_info (char *signum_exp, int from_tty)
6314 {
6315   enum target_signal oursig;
6316
6317   sig_print_header ();
6318
6319   if (signum_exp)
6320     {
6321       /* First see if this is a symbol name.  */
6322       oursig = target_signal_from_name (signum_exp);
6323       if (oursig == TARGET_SIGNAL_UNKNOWN)
6324         {
6325           /* No, try numeric.  */
6326           oursig =
6327             target_signal_from_command (parse_and_eval_long (signum_exp));
6328         }
6329       sig_print_info (oursig);
6330       return;
6331     }
6332
6333   printf_filtered ("\n");
6334   /* These ugly casts brought to you by the native VAX compiler.  */
6335   for (oursig = TARGET_SIGNAL_FIRST;
6336        (int) oursig < (int) TARGET_SIGNAL_LAST;
6337        oursig = (enum target_signal) ((int) oursig + 1))
6338     {
6339       QUIT;
6340
6341       if (oursig != TARGET_SIGNAL_UNKNOWN
6342           && oursig != TARGET_SIGNAL_DEFAULT && oursig != TARGET_SIGNAL_0)
6343         sig_print_info (oursig);
6344     }
6345
6346   printf_filtered (_("\nUse the \"handle\" command "
6347                      "to change these tables.\n"));
6348 }
6349
6350 /* The $_siginfo convenience variable is a bit special.  We don't know
6351    for sure the type of the value until we actually have a chance to
6352    fetch the data.  The type can change depending on gdbarch, so it is
6353    also dependent on which thread you have selected.
6354
6355      1. making $_siginfo be an internalvar that creates a new value on
6356      access.
6357
6358      2. making the value of $_siginfo be an lval_computed value.  */
6359
6360 /* This function implements the lval_computed support for reading a
6361    $_siginfo value.  */
6362
6363 static void
6364 siginfo_value_read (struct value *v)
6365 {
6366   LONGEST transferred;
6367
6368   transferred =
6369     target_read (&current_target, TARGET_OBJECT_SIGNAL_INFO,
6370                  NULL,
6371                  value_contents_all_raw (v),
6372                  value_offset (v),
6373                  TYPE_LENGTH (value_type (v)));
6374
6375   if (transferred != TYPE_LENGTH (value_type (v)))
6376     error (_("Unable to read siginfo"));
6377 }
6378
6379 /* This function implements the lval_computed support for writing a
6380    $_siginfo value.  */
6381
6382 static void
6383 siginfo_value_write (struct value *v, struct value *fromval)
6384 {
6385   LONGEST transferred;
6386
6387   transferred = target_write (&current_target,
6388                               TARGET_OBJECT_SIGNAL_INFO,
6389                               NULL,
6390                               value_contents_all_raw (fromval),
6391                               value_offset (v),
6392                               TYPE_LENGTH (value_type (fromval)));
6393
6394   if (transferred != TYPE_LENGTH (value_type (fromval)))
6395     error (_("Unable to write siginfo"));
6396 }
6397
6398 static struct lval_funcs siginfo_value_funcs =
6399   {
6400     siginfo_value_read,
6401     siginfo_value_write
6402   };
6403
6404 /* Return a new value with the correct type for the siginfo object of
6405    the current thread using architecture GDBARCH.  Return a void value
6406    if there's no object available.  */
6407
6408 static struct value *
6409 siginfo_make_value (struct gdbarch *gdbarch, struct internalvar *var)
6410 {
6411   if (target_has_stack
6412       && !ptid_equal (inferior_ptid, null_ptid)
6413       && gdbarch_get_siginfo_type_p (gdbarch))
6414     {
6415       struct type *type = gdbarch_get_siginfo_type (gdbarch);
6416
6417       return allocate_computed_value (type, &siginfo_value_funcs, NULL);
6418     }
6419
6420   return allocate_value (builtin_type (gdbarch)->builtin_void);
6421 }
6422
6423 \f
6424 /* infcall_suspend_state contains state about the program itself like its
6425    registers and any signal it received when it last stopped.
6426    This state must be restored regardless of how the inferior function call
6427    ends (either successfully, or after it hits a breakpoint or signal)
6428    if the program is to properly continue where it left off.  */
6429
6430 struct infcall_suspend_state
6431 {
6432   struct thread_suspend_state thread_suspend;
6433   struct inferior_suspend_state inferior_suspend;
6434
6435   /* Other fields:  */
6436   CORE_ADDR stop_pc;
6437   struct regcache *registers;
6438
6439   /* Format of SIGINFO_DATA or NULL if it is not present.  */
6440   struct gdbarch *siginfo_gdbarch;
6441
6442   /* The inferior format depends on SIGINFO_GDBARCH and it has a length of
6443      TYPE_LENGTH (gdbarch_get_siginfo_type ()).  For different gdbarch the
6444      content would be invalid.  */
6445   gdb_byte *siginfo_data;
6446 };
6447
6448 struct infcall_suspend_state *
6449 save_infcall_suspend_state (void)
6450 {
6451   struct infcall_suspend_state *inf_state;
6452   struct thread_info *tp = inferior_thread ();
6453   struct inferior *inf = current_inferior ();
6454   struct regcache *regcache = get_current_regcache ();
6455   struct gdbarch *gdbarch = get_regcache_arch (regcache);
6456   gdb_byte *siginfo_data = NULL;
6457
6458   if (gdbarch_get_siginfo_type_p (gdbarch))
6459     {
6460       struct type *type = gdbarch_get_siginfo_type (gdbarch);
6461       size_t len = TYPE_LENGTH (type);
6462       struct cleanup *back_to;
6463
6464       siginfo_data = xmalloc (len);
6465       back_to = make_cleanup (xfree, siginfo_data);
6466
6467       if (target_read (&current_target, TARGET_OBJECT_SIGNAL_INFO, NULL,
6468                        siginfo_data, 0, len) == len)
6469         discard_cleanups (back_to);
6470       else
6471         {
6472           /* Errors ignored.  */
6473           do_cleanups (back_to);
6474           siginfo_data = NULL;
6475         }
6476     }
6477
6478   inf_state = XZALLOC (struct infcall_suspend_state);
6479
6480   if (siginfo_data)
6481     {
6482       inf_state->siginfo_gdbarch = gdbarch;
6483       inf_state->siginfo_data = siginfo_data;
6484     }
6485
6486   inf_state->thread_suspend = tp->suspend;
6487   inf_state->inferior_suspend = inf->suspend;
6488
6489   /* run_inferior_call will not use the signal due to its `proceed' call with
6490      TARGET_SIGNAL_0 anyway.  */
6491   tp->suspend.stop_signal = TARGET_SIGNAL_0;
6492
6493   inf_state->stop_pc = stop_pc;
6494
6495   inf_state->registers = regcache_dup (regcache);
6496
6497   return inf_state;
6498 }
6499
6500 /* Restore inferior session state to INF_STATE.  */
6501
6502 void
6503 restore_infcall_suspend_state (struct infcall_suspend_state *inf_state)
6504 {
6505   struct thread_info *tp = inferior_thread ();
6506   struct inferior *inf = current_inferior ();
6507   struct regcache *regcache = get_current_regcache ();
6508   struct gdbarch *gdbarch = get_regcache_arch (regcache);
6509
6510   tp->suspend = inf_state->thread_suspend;
6511   inf->suspend = inf_state->inferior_suspend;
6512
6513   stop_pc = inf_state->stop_pc;
6514
6515   if (inf_state->siginfo_gdbarch == gdbarch)
6516     {
6517       struct type *type = gdbarch_get_siginfo_type (gdbarch);
6518       size_t len = TYPE_LENGTH (type);
6519
6520       /* Errors ignored.  */
6521       target_write (&current_target, TARGET_OBJECT_SIGNAL_INFO, NULL,
6522                     inf_state->siginfo_data, 0, len);
6523     }
6524
6525   /* The inferior can be gone if the user types "print exit(0)"
6526      (and perhaps other times).  */
6527   if (target_has_execution)
6528     /* NB: The register write goes through to the target.  */
6529     regcache_cpy (regcache, inf_state->registers);
6530
6531   discard_infcall_suspend_state (inf_state);
6532 }
6533
6534 static void
6535 do_restore_infcall_suspend_state_cleanup (void *state)
6536 {
6537   restore_infcall_suspend_state (state);
6538 }
6539
6540 struct cleanup *
6541 make_cleanup_restore_infcall_suspend_state
6542   (struct infcall_suspend_state *inf_state)
6543 {
6544   return make_cleanup (do_restore_infcall_suspend_state_cleanup, inf_state);
6545 }
6546
6547 void
6548 discard_infcall_suspend_state (struct infcall_suspend_state *inf_state)
6549 {
6550   regcache_xfree (inf_state->registers);
6551   xfree (inf_state->siginfo_data);
6552   xfree (inf_state);
6553 }
6554
6555 struct regcache *
6556 get_infcall_suspend_state_regcache (struct infcall_suspend_state *inf_state)
6557 {
6558   return inf_state->registers;
6559 }
6560
6561 /* infcall_control_state contains state regarding gdb's control of the
6562    inferior itself like stepping control.  It also contains session state like
6563    the user's currently selected frame.  */
6564
6565 struct infcall_control_state
6566 {
6567   struct thread_control_state thread_control;
6568   struct inferior_control_state inferior_control;
6569
6570   /* Other fields:  */
6571   enum stop_stack_kind stop_stack_dummy;
6572   int stopped_by_random_signal;
6573   int stop_after_trap;
6574
6575   /* ID if the selected frame when the inferior function call was made.  */
6576   struct frame_id selected_frame_id;
6577 };
6578
6579 /* Save all of the information associated with the inferior<==>gdb
6580    connection.  */
6581
6582 struct infcall_control_state *
6583 save_infcall_control_state (void)
6584 {
6585   struct infcall_control_state *inf_status = xmalloc (sizeof (*inf_status));
6586   struct thread_info *tp = inferior_thread ();
6587   struct inferior *inf = current_inferior ();
6588
6589   inf_status->thread_control = tp->control;
6590   inf_status->inferior_control = inf->control;
6591
6592   tp->control.step_resume_breakpoint = NULL;
6593   tp->control.exception_resume_breakpoint = NULL;
6594
6595   /* Save original bpstat chain to INF_STATUS; replace it in TP with copy of
6596      chain.  If caller's caller is walking the chain, they'll be happier if we
6597      hand them back the original chain when restore_infcall_control_state is
6598      called.  */
6599   tp->control.stop_bpstat = bpstat_copy (tp->control.stop_bpstat);
6600
6601   /* Other fields:  */
6602   inf_status->stop_stack_dummy = stop_stack_dummy;
6603   inf_status->stopped_by_random_signal = stopped_by_random_signal;
6604   inf_status->stop_after_trap = stop_after_trap;
6605
6606   inf_status->selected_frame_id = get_frame_id (get_selected_frame (NULL));
6607
6608   return inf_status;
6609 }
6610
6611 static int
6612 restore_selected_frame (void *args)
6613 {
6614   struct frame_id *fid = (struct frame_id *) args;
6615   struct frame_info *frame;
6616
6617   frame = frame_find_by_id (*fid);
6618
6619   /* If inf_status->selected_frame_id is NULL, there was no previously
6620      selected frame.  */
6621   if (frame == NULL)
6622     {
6623       warning (_("Unable to restore previously selected frame."));
6624       return 0;
6625     }
6626
6627   select_frame (frame);
6628
6629   return (1);
6630 }
6631
6632 /* Restore inferior session state to INF_STATUS.  */
6633
6634 void
6635 restore_infcall_control_state (struct infcall_control_state *inf_status)
6636 {
6637   struct thread_info *tp = inferior_thread ();
6638   struct inferior *inf = current_inferior ();
6639
6640   if (tp->control.step_resume_breakpoint)
6641     tp->control.step_resume_breakpoint->disposition = disp_del_at_next_stop;
6642
6643   if (tp->control.exception_resume_breakpoint)
6644     tp->control.exception_resume_breakpoint->disposition
6645       = disp_del_at_next_stop;
6646
6647   /* Handle the bpstat_copy of the chain.  */
6648   bpstat_clear (&tp->control.stop_bpstat);
6649
6650   tp->control = inf_status->thread_control;
6651   inf->control = inf_status->inferior_control;
6652
6653   /* Other fields:  */
6654   stop_stack_dummy = inf_status->stop_stack_dummy;
6655   stopped_by_random_signal = inf_status->stopped_by_random_signal;
6656   stop_after_trap = inf_status->stop_after_trap;
6657
6658   if (target_has_stack)
6659     {
6660       /* The point of catch_errors is that if the stack is clobbered,
6661          walking the stack might encounter a garbage pointer and
6662          error() trying to dereference it.  */
6663       if (catch_errors
6664           (restore_selected_frame, &inf_status->selected_frame_id,
6665            "Unable to restore previously selected frame:\n",
6666            RETURN_MASK_ERROR) == 0)
6667         /* Error in restoring the selected frame.  Select the innermost
6668            frame.  */
6669         select_frame (get_current_frame ());
6670     }
6671
6672   xfree (inf_status);
6673 }
6674
6675 static void
6676 do_restore_infcall_control_state_cleanup (void *sts)
6677 {
6678   restore_infcall_control_state (sts);
6679 }
6680
6681 struct cleanup *
6682 make_cleanup_restore_infcall_control_state
6683   (struct infcall_control_state *inf_status)
6684 {
6685   return make_cleanup (do_restore_infcall_control_state_cleanup, inf_status);
6686 }
6687
6688 void
6689 discard_infcall_control_state (struct infcall_control_state *inf_status)
6690 {
6691   if (inf_status->thread_control.step_resume_breakpoint)
6692     inf_status->thread_control.step_resume_breakpoint->disposition
6693       = disp_del_at_next_stop;
6694
6695   if (inf_status->thread_control.exception_resume_breakpoint)
6696     inf_status->thread_control.exception_resume_breakpoint->disposition
6697       = disp_del_at_next_stop;
6698
6699   /* See save_infcall_control_state for info on stop_bpstat.  */
6700   bpstat_clear (&inf_status->thread_control.stop_bpstat);
6701
6702   xfree (inf_status);
6703 }
6704 \f
6705 int
6706 inferior_has_forked (ptid_t pid, ptid_t *child_pid)
6707 {
6708   struct target_waitstatus last;
6709   ptid_t last_ptid;
6710
6711   get_last_target_status (&last_ptid, &last);
6712
6713   if (last.kind != TARGET_WAITKIND_FORKED)
6714     return 0;
6715
6716   if (!ptid_equal (last_ptid, pid))
6717     return 0;
6718
6719   *child_pid = last.value.related_pid;
6720   return 1;
6721 }
6722
6723 int
6724 inferior_has_vforked (ptid_t pid, ptid_t *child_pid)
6725 {
6726   struct target_waitstatus last;
6727   ptid_t last_ptid;
6728
6729   get_last_target_status (&last_ptid, &last);
6730
6731   if (last.kind != TARGET_WAITKIND_VFORKED)
6732     return 0;
6733
6734   if (!ptid_equal (last_ptid, pid))
6735     return 0;
6736
6737   *child_pid = last.value.related_pid;
6738   return 1;
6739 }
6740
6741 int
6742 inferior_has_execd (ptid_t pid, char **execd_pathname)
6743 {
6744   struct target_waitstatus last;
6745   ptid_t last_ptid;
6746
6747   get_last_target_status (&last_ptid, &last);
6748
6749   if (last.kind != TARGET_WAITKIND_EXECD)
6750     return 0;
6751
6752   if (!ptid_equal (last_ptid, pid))
6753     return 0;
6754
6755   *execd_pathname = xstrdup (last.value.execd_pathname);
6756   return 1;
6757 }
6758
6759 int
6760 inferior_has_called_syscall (ptid_t pid, int *syscall_number)
6761 {
6762   struct target_waitstatus last;
6763   ptid_t last_ptid;
6764
6765   get_last_target_status (&last_ptid, &last);
6766
6767   if (last.kind != TARGET_WAITKIND_SYSCALL_ENTRY &&
6768       last.kind != TARGET_WAITKIND_SYSCALL_RETURN)
6769     return 0;
6770
6771   if (!ptid_equal (last_ptid, pid))
6772     return 0;
6773
6774   *syscall_number = last.value.syscall_number;
6775   return 1;
6776 }
6777
6778 /* Oft used ptids */
6779 ptid_t null_ptid;
6780 ptid_t minus_one_ptid;
6781
6782 /* Create a ptid given the necessary PID, LWP, and TID components.  */
6783
6784 ptid_t
6785 ptid_build (int pid, long lwp, long tid)
6786 {
6787   ptid_t ptid;
6788
6789   ptid.pid = pid;
6790   ptid.lwp = lwp;
6791   ptid.tid = tid;
6792   return ptid;
6793 }
6794
6795 /* Create a ptid from just a pid.  */
6796
6797 ptid_t
6798 pid_to_ptid (int pid)
6799 {
6800   return ptid_build (pid, 0, 0);
6801 }
6802
6803 /* Fetch the pid (process id) component from a ptid.  */
6804
6805 int
6806 ptid_get_pid (ptid_t ptid)
6807 {
6808   return ptid.pid;
6809 }
6810
6811 /* Fetch the lwp (lightweight process) component from a ptid.  */
6812
6813 long
6814 ptid_get_lwp (ptid_t ptid)
6815 {
6816   return ptid.lwp;
6817 }
6818
6819 /* Fetch the tid (thread id) component from a ptid.  */
6820
6821 long
6822 ptid_get_tid (ptid_t ptid)
6823 {
6824   return ptid.tid;
6825 }
6826
6827 /* ptid_equal() is used to test equality of two ptids.  */
6828
6829 int
6830 ptid_equal (ptid_t ptid1, ptid_t ptid2)
6831 {
6832   return (ptid1.pid == ptid2.pid && ptid1.lwp == ptid2.lwp
6833           && ptid1.tid == ptid2.tid);
6834 }
6835
6836 /* Returns true if PTID represents a process.  */
6837
6838 int
6839 ptid_is_pid (ptid_t ptid)
6840 {
6841   if (ptid_equal (minus_one_ptid, ptid))
6842     return 0;
6843   if (ptid_equal (null_ptid, ptid))
6844     return 0;
6845
6846   return (ptid_get_lwp (ptid) == 0 && ptid_get_tid (ptid) == 0);
6847 }
6848
6849 int
6850 ptid_match (ptid_t ptid, ptid_t filter)
6851 {
6852   if (ptid_equal (filter, minus_one_ptid))
6853     return 1;
6854   if (ptid_is_pid (filter)
6855       && ptid_get_pid (ptid) == ptid_get_pid (filter))
6856     return 1;
6857   else if (ptid_equal (ptid, filter))
6858     return 1;
6859
6860   return 0;
6861 }
6862
6863 /* restore_inferior_ptid() will be used by the cleanup machinery
6864    to restore the inferior_ptid value saved in a call to
6865    save_inferior_ptid().  */
6866
6867 static void
6868 restore_inferior_ptid (void *arg)
6869 {
6870   ptid_t *saved_ptid_ptr = arg;
6871
6872   inferior_ptid = *saved_ptid_ptr;
6873   xfree (arg);
6874 }
6875
6876 /* Save the value of inferior_ptid so that it may be restored by a
6877    later call to do_cleanups().  Returns the struct cleanup pointer
6878    needed for later doing the cleanup.  */
6879
6880 struct cleanup *
6881 save_inferior_ptid (void)
6882 {
6883   ptid_t *saved_ptid_ptr;
6884
6885   saved_ptid_ptr = xmalloc (sizeof (ptid_t));
6886   *saved_ptid_ptr = inferior_ptid;
6887   return make_cleanup (restore_inferior_ptid, saved_ptid_ptr);
6888 }
6889 \f
6890
6891 /* User interface for reverse debugging:
6892    Set exec-direction / show exec-direction commands
6893    (returns error unless target implements to_set_exec_direction method).  */
6894
6895 int execution_direction = EXEC_FORWARD;
6896 static const char exec_forward[] = "forward";
6897 static const char exec_reverse[] = "reverse";
6898 static const char *exec_direction = exec_forward;
6899 static const char *exec_direction_names[] = {
6900   exec_forward,
6901   exec_reverse,
6902   NULL
6903 };
6904
6905 static void
6906 set_exec_direction_func (char *args, int from_tty,
6907                          struct cmd_list_element *cmd)
6908 {
6909   if (target_can_execute_reverse)
6910     {
6911       if (!strcmp (exec_direction, exec_forward))
6912         execution_direction = EXEC_FORWARD;
6913       else if (!strcmp (exec_direction, exec_reverse))
6914         execution_direction = EXEC_REVERSE;
6915     }
6916   else
6917     {
6918       exec_direction = exec_forward;
6919       error (_("Target does not support this operation."));
6920     }
6921 }
6922
6923 static void
6924 show_exec_direction_func (struct ui_file *out, int from_tty,
6925                           struct cmd_list_element *cmd, const char *value)
6926 {
6927   switch (execution_direction) {
6928   case EXEC_FORWARD:
6929     fprintf_filtered (out, _("Forward.\n"));
6930     break;
6931   case EXEC_REVERSE:
6932     fprintf_filtered (out, _("Reverse.\n"));
6933     break;
6934   default:
6935     internal_error (__FILE__, __LINE__,
6936                     _("bogus execution_direction value: %d"),
6937                     (int) execution_direction);
6938   }
6939 }
6940
6941 /* User interface for non-stop mode.  */
6942
6943 int non_stop = 0;
6944
6945 static void
6946 set_non_stop (char *args, int from_tty,
6947               struct cmd_list_element *c)
6948 {
6949   if (target_has_execution)
6950     {
6951       non_stop_1 = non_stop;
6952       error (_("Cannot change this setting while the inferior is running."));
6953     }
6954
6955   non_stop = non_stop_1;
6956 }
6957
6958 static void
6959 show_non_stop (struct ui_file *file, int from_tty,
6960                struct cmd_list_element *c, const char *value)
6961 {
6962   fprintf_filtered (file,
6963                     _("Controlling the inferior in non-stop mode is %s.\n"),
6964                     value);
6965 }
6966
6967 static void
6968 show_schedule_multiple (struct ui_file *file, int from_tty,
6969                         struct cmd_list_element *c, const char *value)
6970 {
6971   fprintf_filtered (file, _("Resuming the execution of threads "
6972                             "of all processes is %s.\n"), value);
6973 }
6974
6975 void
6976 _initialize_infrun (void)
6977 {
6978   int i;
6979   int numsigs;
6980
6981   add_info ("signals", signals_info, _("\
6982 What debugger does when program gets various signals.\n\
6983 Specify a signal as argument to print info on that signal only."));
6984   add_info_alias ("handle", "signals", 0);
6985
6986   add_com ("handle", class_run, handle_command, _("\
6987 Specify how to handle a signal.\n\
6988 Args are signals and actions to apply to those signals.\n\
6989 Symbolic signals (e.g. SIGSEGV) are recommended but numeric signals\n\
6990 from 1-15 are allowed for compatibility with old versions of GDB.\n\
6991 Numeric ranges may be specified with the form LOW-HIGH (e.g. 1-5).\n\
6992 The special arg \"all\" is recognized to mean all signals except those\n\
6993 used by the debugger, typically SIGTRAP and SIGINT.\n\
6994 Recognized actions include \"stop\", \"nostop\", \"print\", \"noprint\",\n\
6995 \"pass\", \"nopass\", \"ignore\", or \"noignore\".\n\
6996 Stop means reenter debugger if this signal happens (implies print).\n\
6997 Print means print a message if this signal happens.\n\
6998 Pass means let program see this signal; otherwise program doesn't know.\n\
6999 Ignore is a synonym for nopass and noignore is a synonym for pass.\n\
7000 Pass and Stop may be combined."));
7001   if (xdb_commands)
7002     {
7003       add_com ("lz", class_info, signals_info, _("\
7004 What debugger does when program gets various signals.\n\
7005 Specify a signal as argument to print info on that signal only."));
7006       add_com ("z", class_run, xdb_handle_command, _("\
7007 Specify how to handle a signal.\n\
7008 Args are signals and actions to apply to those signals.\n\
7009 Symbolic signals (e.g. SIGSEGV) are recommended but numeric signals\n\
7010 from 1-15 are allowed for compatibility with old versions of GDB.\n\
7011 Numeric ranges may be specified with the form LOW-HIGH (e.g. 1-5).\n\
7012 The special arg \"all\" is recognized to mean all signals except those\n\
7013 used by the debugger, typically SIGTRAP and SIGINT.\n\
7014 Recognized actions include \"s\" (toggles between stop and nostop),\n\
7015 \"r\" (toggles between print and noprint), \"i\" (toggles between pass and \
7016 nopass), \"Q\" (noprint)\n\
7017 Stop means reenter debugger if this signal happens (implies print).\n\
7018 Print means print a message if this signal happens.\n\
7019 Pass means let program see this signal; otherwise program doesn't know.\n\
7020 Ignore is a synonym for nopass and noignore is a synonym for pass.\n\
7021 Pass and Stop may be combined."));
7022     }
7023
7024   if (!dbx_commands)
7025     stop_command = add_cmd ("stop", class_obscure,
7026                             not_just_help_class_command, _("\
7027 There is no `stop' command, but you can set a hook on `stop'.\n\
7028 This allows you to set a list of commands to be run each time execution\n\
7029 of the program stops."), &cmdlist);
7030
7031   add_setshow_zinteger_cmd ("infrun", class_maintenance, &debug_infrun, _("\
7032 Set inferior debugging."), _("\
7033 Show inferior debugging."), _("\
7034 When non-zero, inferior specific debugging is enabled."),
7035                             NULL,
7036                             show_debug_infrun,
7037                             &setdebuglist, &showdebuglist);
7038
7039   add_setshow_boolean_cmd ("displaced", class_maintenance,
7040                            &debug_displaced, _("\
7041 Set displaced stepping debugging."), _("\
7042 Show displaced stepping debugging."), _("\
7043 When non-zero, displaced stepping specific debugging is enabled."),
7044                             NULL,
7045                             show_debug_displaced,
7046                             &setdebuglist, &showdebuglist);
7047
7048   add_setshow_boolean_cmd ("non-stop", no_class,
7049                            &non_stop_1, _("\
7050 Set whether gdb controls the inferior in non-stop mode."), _("\
7051 Show whether gdb controls the inferior in non-stop mode."), _("\
7052 When debugging a multi-threaded program and this setting is\n\
7053 off (the default, also called all-stop mode), when one thread stops\n\
7054 (for a breakpoint, watchpoint, exception, or similar events), GDB stops\n\
7055 all other threads in the program while you interact with the thread of\n\
7056 interest.  When you continue or step a thread, you can allow the other\n\
7057 threads to run, or have them remain stopped, but while you inspect any\n\
7058 thread's state, all threads stop.\n\
7059 \n\
7060 In non-stop mode, when one thread stops, other threads can continue\n\
7061 to run freely.  You'll be able to step each thread independently,\n\
7062 leave it stopped or free to run as needed."),
7063                            set_non_stop,
7064                            show_non_stop,
7065                            &setlist,
7066                            &showlist);
7067
7068   numsigs = (int) TARGET_SIGNAL_LAST;
7069   signal_stop = (unsigned char *) xmalloc (sizeof (signal_stop[0]) * numsigs);
7070   signal_print = (unsigned char *)
7071     xmalloc (sizeof (signal_print[0]) * numsigs);
7072   signal_program = (unsigned char *)
7073     xmalloc (sizeof (signal_program[0]) * numsigs);
7074   signal_pass = (unsigned char *)
7075     xmalloc (sizeof (signal_program[0]) * numsigs);
7076   for (i = 0; i < numsigs; i++)
7077     {
7078       signal_stop[i] = 1;
7079       signal_print[i] = 1;
7080       signal_program[i] = 1;
7081     }
7082
7083   /* Signals caused by debugger's own actions
7084      should not be given to the program afterwards.  */
7085   signal_program[TARGET_SIGNAL_TRAP] = 0;
7086   signal_program[TARGET_SIGNAL_INT] = 0;
7087
7088   /* Signals that are not errors should not normally enter the debugger.  */
7089   signal_stop[TARGET_SIGNAL_ALRM] = 0;
7090   signal_print[TARGET_SIGNAL_ALRM] = 0;
7091   signal_stop[TARGET_SIGNAL_VTALRM] = 0;
7092   signal_print[TARGET_SIGNAL_VTALRM] = 0;
7093   signal_stop[TARGET_SIGNAL_PROF] = 0;
7094   signal_print[TARGET_SIGNAL_PROF] = 0;
7095   signal_stop[TARGET_SIGNAL_CHLD] = 0;
7096   signal_print[TARGET_SIGNAL_CHLD] = 0;
7097   signal_stop[TARGET_SIGNAL_IO] = 0;
7098   signal_print[TARGET_SIGNAL_IO] = 0;
7099   signal_stop[TARGET_SIGNAL_POLL] = 0;
7100   signal_print[TARGET_SIGNAL_POLL] = 0;
7101   signal_stop[TARGET_SIGNAL_URG] = 0;
7102   signal_print[TARGET_SIGNAL_URG] = 0;
7103   signal_stop[TARGET_SIGNAL_WINCH] = 0;
7104   signal_print[TARGET_SIGNAL_WINCH] = 0;
7105   signal_stop[TARGET_SIGNAL_PRIO] = 0;
7106   signal_print[TARGET_SIGNAL_PRIO] = 0;
7107
7108   /* These signals are used internally by user-level thread
7109      implementations.  (See signal(5) on Solaris.)  Like the above
7110      signals, a healthy program receives and handles them as part of
7111      its normal operation.  */
7112   signal_stop[TARGET_SIGNAL_LWP] = 0;
7113   signal_print[TARGET_SIGNAL_LWP] = 0;
7114   signal_stop[TARGET_SIGNAL_WAITING] = 0;
7115   signal_print[TARGET_SIGNAL_WAITING] = 0;
7116   signal_stop[TARGET_SIGNAL_CANCEL] = 0;
7117   signal_print[TARGET_SIGNAL_CANCEL] = 0;
7118
7119   /* Update cached state.  */
7120   signal_cache_update (-1);
7121
7122   add_setshow_zinteger_cmd ("stop-on-solib-events", class_support,
7123                             &stop_on_solib_events, _("\
7124 Set stopping for shared library events."), _("\
7125 Show stopping for shared library events."), _("\
7126 If nonzero, gdb will give control to the user when the dynamic linker\n\
7127 notifies gdb of shared library events.  The most common event of interest\n\
7128 to the user would be loading/unloading of a new library."),
7129                             NULL,
7130                             show_stop_on_solib_events,
7131                             &setlist, &showlist);
7132
7133   add_setshow_enum_cmd ("follow-fork-mode", class_run,
7134                         follow_fork_mode_kind_names,
7135                         &follow_fork_mode_string, _("\
7136 Set debugger response to a program call of fork or vfork."), _("\
7137 Show debugger response to a program call of fork or vfork."), _("\
7138 A fork or vfork creates a new process.  follow-fork-mode can be:\n\
7139   parent  - the original process is debugged after a fork\n\
7140   child   - the new process is debugged after a fork\n\
7141 The unfollowed process will continue to run.\n\
7142 By default, the debugger will follow the parent process."),
7143                         NULL,
7144                         show_follow_fork_mode_string,
7145                         &setlist, &showlist);
7146
7147   add_setshow_enum_cmd ("follow-exec-mode", class_run,
7148                         follow_exec_mode_names,
7149                         &follow_exec_mode_string, _("\
7150 Set debugger response to a program call of exec."), _("\
7151 Show debugger response to a program call of exec."), _("\
7152 An exec call replaces the program image of a process.\n\
7153 \n\
7154 follow-exec-mode can be:\n\
7155 \n\
7156   new - the debugger creates a new inferior and rebinds the process\n\
7157 to this new inferior.  The program the process was running before\n\
7158 the exec call can be restarted afterwards by restarting the original\n\
7159 inferior.\n\
7160 \n\
7161   same - the debugger keeps the process bound to the same inferior.\n\
7162 The new executable image replaces the previous executable loaded in\n\
7163 the inferior.  Restarting the inferior after the exec call restarts\n\
7164 the executable the process was running after the exec call.\n\
7165 \n\
7166 By default, the debugger will use the same inferior."),
7167                         NULL,
7168                         show_follow_exec_mode_string,
7169                         &setlist, &showlist);
7170
7171   add_setshow_enum_cmd ("scheduler-locking", class_run, 
7172                         scheduler_enums, &scheduler_mode, _("\
7173 Set mode for locking scheduler during execution."), _("\
7174 Show mode for locking scheduler during execution."), _("\
7175 off  == no locking (threads may preempt at any time)\n\
7176 on   == full locking (no thread except the current thread may run)\n\
7177 step == scheduler locked during every single-step operation.\n\
7178         In this mode, no other thread may run during a step command.\n\
7179         Other threads may run while stepping over a function call ('next')."), 
7180                         set_schedlock_func,     /* traps on target vector */
7181                         show_scheduler_mode,
7182                         &setlist, &showlist);
7183
7184   add_setshow_boolean_cmd ("schedule-multiple", class_run, &sched_multi, _("\
7185 Set mode for resuming threads of all processes."), _("\
7186 Show mode for resuming threads of all processes."), _("\
7187 When on, execution commands (such as 'continue' or 'next') resume all\n\
7188 threads of all processes.  When off (which is the default), execution\n\
7189 commands only resume the threads of the current process.  The set of\n\
7190 threads that are resumed is further refined by the scheduler-locking\n\
7191 mode (see help set scheduler-locking)."),
7192                            NULL,
7193                            show_schedule_multiple,
7194                            &setlist, &showlist);
7195
7196   add_setshow_boolean_cmd ("step-mode", class_run, &step_stop_if_no_debug, _("\
7197 Set mode of the step operation."), _("\
7198 Show mode of the step operation."), _("\
7199 When set, doing a step over a function without debug line information\n\
7200 will stop at the first instruction of that function. Otherwise, the\n\
7201 function is skipped and the step command stops at a different source line."),
7202                            NULL,
7203                            show_step_stop_if_no_debug,
7204                            &setlist, &showlist);
7205
7206   add_setshow_enum_cmd ("displaced-stepping", class_run,
7207                         can_use_displaced_stepping_enum,
7208                         &can_use_displaced_stepping, _("\
7209 Set debugger's willingness to use displaced stepping."), _("\
7210 Show debugger's willingness to use displaced stepping."), _("\
7211 If on, gdb will use displaced stepping to step over breakpoints if it is\n\
7212 supported by the target architecture.  If off, gdb will not use displaced\n\
7213 stepping to step over breakpoints, even if such is supported by the target\n\
7214 architecture.  If auto (which is the default), gdb will use displaced stepping\n\
7215 if the target architecture supports it and non-stop mode is active, but will not\n\
7216 use it in all-stop mode (see help set non-stop)."),
7217                         NULL,
7218                         show_can_use_displaced_stepping,
7219                         &setlist, &showlist);
7220
7221   add_setshow_enum_cmd ("exec-direction", class_run, exec_direction_names,
7222                         &exec_direction, _("Set direction of execution.\n\
7223 Options are 'forward' or 'reverse'."),
7224                         _("Show direction of execution (forward/reverse)."),
7225                         _("Tells gdb whether to execute forward or backward."),
7226                         set_exec_direction_func, show_exec_direction_func,
7227                         &setlist, &showlist);
7228
7229   /* Set/show detach-on-fork: user-settable mode.  */
7230
7231   add_setshow_boolean_cmd ("detach-on-fork", class_run, &detach_fork, _("\
7232 Set whether gdb will detach the child of a fork."), _("\
7233 Show whether gdb will detach the child of a fork."), _("\
7234 Tells gdb whether to detach the child of a fork."),
7235                            NULL, NULL, &setlist, &showlist);
7236
7237   /* ptid initializations */
7238   null_ptid = ptid_build (0, 0, 0);
7239   minus_one_ptid = ptid_build (-1, 0, 0);
7240   inferior_ptid = null_ptid;
7241   target_last_wait_ptid = minus_one_ptid;
7242
7243   observer_attach_thread_ptid_changed (infrun_thread_ptid_changed);
7244   observer_attach_thread_stop_requested (infrun_thread_stop_requested);
7245   observer_attach_thread_exit (infrun_thread_thread_exit);
7246   observer_attach_inferior_exit (infrun_inferior_exit);
7247
7248   /* Explicitly create without lookup, since that tries to create a
7249      value with a void typed value, and when we get here, gdbarch
7250      isn't initialized yet.  At this point, we're quite sure there
7251      isn't another convenience variable of the same name.  */
7252   create_internalvar_type_lazy ("_siginfo", siginfo_make_value);
7253
7254   add_setshow_boolean_cmd ("observer", no_class,
7255                            &observer_mode_1, _("\
7256 Set whether gdb controls the inferior in observer mode."), _("\
7257 Show whether gdb controls the inferior in observer mode."), _("\
7258 In observer mode, GDB can get data from the inferior, but not\n\
7259 affect its execution.  Registers and memory may not be changed,\n\
7260 breakpoints may not be set, and the program cannot be interrupted\n\
7261 or signalled."),
7262                            set_observer_mode,
7263                            show_observer_mode,
7264                            &setlist,
7265                            &showlist);
7266 }