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