2012-06-06 Pedro Alves <palves@redhat.com>
[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 wait_some_more;
2397 };
2398
2399 static void handle_inferior_event (struct execution_control_state *ecs);
2400
2401 static void handle_step_into_function (struct gdbarch *gdbarch,
2402                                        struct execution_control_state *ecs);
2403 static void handle_step_into_function_backward (struct gdbarch *gdbarch,
2404                                                 struct execution_control_state *ecs);
2405 static void check_exception_resume (struct execution_control_state *,
2406                                     struct frame_info *);
2407
2408 static void stop_stepping (struct execution_control_state *ecs);
2409 static void prepare_to_wait (struct execution_control_state *ecs);
2410 static void keep_going (struct execution_control_state *ecs);
2411
2412 /* Callback for iterate over threads.  If the thread is stopped, but
2413    the user/frontend doesn't know about that yet, go through
2414    normal_stop, as if the thread had just stopped now.  ARG points at
2415    a ptid.  If PTID is MINUS_ONE_PTID, applies to all threads.  If
2416    ptid_is_pid(PTID) is true, applies to all threads of the process
2417    pointed at by PTID.  Otherwise, apply only to the thread pointed by
2418    PTID.  */
2419
2420 static int
2421 infrun_thread_stop_requested_callback (struct thread_info *info, void *arg)
2422 {
2423   ptid_t ptid = * (ptid_t *) arg;
2424
2425   if ((ptid_equal (info->ptid, ptid)
2426        || ptid_equal (minus_one_ptid, ptid)
2427        || (ptid_is_pid (ptid)
2428            && ptid_get_pid (ptid) == ptid_get_pid (info->ptid)))
2429       && is_running (info->ptid)
2430       && !is_executing (info->ptid))
2431     {
2432       struct cleanup *old_chain;
2433       struct execution_control_state ecss;
2434       struct execution_control_state *ecs = &ecss;
2435
2436       memset (ecs, 0, sizeof (*ecs));
2437
2438       old_chain = make_cleanup_restore_current_thread ();
2439
2440       switch_to_thread (info->ptid);
2441
2442       /* Go through handle_inferior_event/normal_stop, so we always
2443          have consistent output as if the stop event had been
2444          reported.  */
2445       ecs->ptid = info->ptid;
2446       ecs->event_thread = find_thread_ptid (info->ptid);
2447       ecs->ws.kind = TARGET_WAITKIND_STOPPED;
2448       ecs->ws.value.sig = GDB_SIGNAL_0;
2449
2450       handle_inferior_event (ecs);
2451
2452       if (!ecs->wait_some_more)
2453         {
2454           struct thread_info *tp;
2455
2456           normal_stop ();
2457
2458           /* Finish off the continuations.  */
2459           tp = inferior_thread ();
2460           do_all_intermediate_continuations_thread (tp, 1);
2461           do_all_continuations_thread (tp, 1);
2462         }
2463
2464       do_cleanups (old_chain);
2465     }
2466
2467   return 0;
2468 }
2469
2470 /* This function is attached as a "thread_stop_requested" observer.
2471    Cleanup local state that assumed the PTID was to be resumed, and
2472    report the stop to the frontend.  */
2473
2474 static void
2475 infrun_thread_stop_requested (ptid_t ptid)
2476 {
2477   struct displaced_step_inferior_state *displaced;
2478
2479   /* PTID was requested to stop.  Remove it from the displaced
2480      stepping queue, so we don't try to resume it automatically.  */
2481
2482   for (displaced = displaced_step_inferior_states;
2483        displaced;
2484        displaced = displaced->next)
2485     {
2486       struct displaced_step_request *it, **prev_next_p;
2487
2488       it = displaced->step_request_queue;
2489       prev_next_p = &displaced->step_request_queue;
2490       while (it)
2491         {
2492           if (ptid_match (it->ptid, ptid))
2493             {
2494               *prev_next_p = it->next;
2495               it->next = NULL;
2496               xfree (it);
2497             }
2498           else
2499             {
2500               prev_next_p = &it->next;
2501             }
2502
2503           it = *prev_next_p;
2504         }
2505     }
2506
2507   iterate_over_threads (infrun_thread_stop_requested_callback, &ptid);
2508 }
2509
2510 static void
2511 infrun_thread_thread_exit (struct thread_info *tp, int silent)
2512 {
2513   if (ptid_equal (target_last_wait_ptid, tp->ptid))
2514     nullify_last_target_wait_ptid ();
2515 }
2516
2517 /* Callback for iterate_over_threads.  */
2518
2519 static int
2520 delete_step_resume_breakpoint_callback (struct thread_info *info, void *data)
2521 {
2522   if (is_exited (info->ptid))
2523     return 0;
2524
2525   delete_step_resume_breakpoint (info);
2526   delete_exception_resume_breakpoint (info);
2527   return 0;
2528 }
2529
2530 /* In all-stop, delete the step resume breakpoint of any thread that
2531    had one.  In non-stop, delete the step resume breakpoint of the
2532    thread that just stopped.  */
2533
2534 static void
2535 delete_step_thread_step_resume_breakpoint (void)
2536 {
2537   if (!target_has_execution
2538       || ptid_equal (inferior_ptid, null_ptid))
2539     /* If the inferior has exited, we have already deleted the step
2540        resume breakpoints out of GDB's lists.  */
2541     return;
2542
2543   if (non_stop)
2544     {
2545       /* If in non-stop mode, only delete the step-resume or
2546          longjmp-resume breakpoint of the thread that just stopped
2547          stepping.  */
2548       struct thread_info *tp = inferior_thread ();
2549
2550       delete_step_resume_breakpoint (tp);
2551       delete_exception_resume_breakpoint (tp);
2552     }
2553   else
2554     /* In all-stop mode, delete all step-resume and longjmp-resume
2555        breakpoints of any thread that had them.  */
2556     iterate_over_threads (delete_step_resume_breakpoint_callback, NULL);
2557 }
2558
2559 /* A cleanup wrapper.  */
2560
2561 static void
2562 delete_step_thread_step_resume_breakpoint_cleanup (void *arg)
2563 {
2564   delete_step_thread_step_resume_breakpoint ();
2565 }
2566
2567 /* Pretty print the results of target_wait, for debugging purposes.  */
2568
2569 static void
2570 print_target_wait_results (ptid_t waiton_ptid, ptid_t result_ptid,
2571                            const struct target_waitstatus *ws)
2572 {
2573   char *status_string = target_waitstatus_to_string (ws);
2574   struct ui_file *tmp_stream = mem_fileopen ();
2575   char *text;
2576
2577   /* The text is split over several lines because it was getting too long.
2578      Call fprintf_unfiltered (gdb_stdlog) once so that the text is still
2579      output as a unit; we want only one timestamp printed if debug_timestamp
2580      is set.  */
2581
2582   fprintf_unfiltered (tmp_stream,
2583                       "infrun: target_wait (%d", PIDGET (waiton_ptid));
2584   if (PIDGET (waiton_ptid) != -1)
2585     fprintf_unfiltered (tmp_stream,
2586                         " [%s]", target_pid_to_str (waiton_ptid));
2587   fprintf_unfiltered (tmp_stream, ", status) =\n");
2588   fprintf_unfiltered (tmp_stream,
2589                       "infrun:   %d [%s],\n",
2590                       PIDGET (result_ptid), target_pid_to_str (result_ptid));
2591   fprintf_unfiltered (tmp_stream,
2592                       "infrun:   %s\n",
2593                       status_string);
2594
2595   text = ui_file_xstrdup (tmp_stream, NULL);
2596
2597   /* This uses %s in part to handle %'s in the text, but also to avoid
2598      a gcc error: the format attribute requires a string literal.  */
2599   fprintf_unfiltered (gdb_stdlog, "%s", text);
2600
2601   xfree (status_string);
2602   xfree (text);
2603   ui_file_delete (tmp_stream);
2604 }
2605
2606 /* Prepare and stabilize the inferior for detaching it.  E.g.,
2607    detaching while a thread is displaced stepping is a recipe for
2608    crashing it, as nothing would readjust the PC out of the scratch
2609    pad.  */
2610
2611 void
2612 prepare_for_detach (void)
2613 {
2614   struct inferior *inf = current_inferior ();
2615   ptid_t pid_ptid = pid_to_ptid (inf->pid);
2616   struct cleanup *old_chain_1;
2617   struct displaced_step_inferior_state *displaced;
2618
2619   displaced = get_displaced_stepping_state (inf->pid);
2620
2621   /* Is any thread of this process displaced stepping?  If not,
2622      there's nothing else to do.  */
2623   if (displaced == NULL || ptid_equal (displaced->step_ptid, null_ptid))
2624     return;
2625
2626   if (debug_infrun)
2627     fprintf_unfiltered (gdb_stdlog,
2628                         "displaced-stepping in-process while detaching");
2629
2630   old_chain_1 = make_cleanup_restore_integer (&inf->detaching);
2631   inf->detaching = 1;
2632
2633   while (!ptid_equal (displaced->step_ptid, null_ptid))
2634     {
2635       struct cleanup *old_chain_2;
2636       struct execution_control_state ecss;
2637       struct execution_control_state *ecs;
2638
2639       ecs = &ecss;
2640       memset (ecs, 0, sizeof (*ecs));
2641
2642       overlay_cache_invalid = 1;
2643
2644       if (deprecated_target_wait_hook)
2645         ecs->ptid = deprecated_target_wait_hook (pid_ptid, &ecs->ws, 0);
2646       else
2647         ecs->ptid = target_wait (pid_ptid, &ecs->ws, 0);
2648
2649       if (debug_infrun)
2650         print_target_wait_results (pid_ptid, ecs->ptid, &ecs->ws);
2651
2652       /* If an error happens while handling the event, propagate GDB's
2653          knowledge of the executing state to the frontend/user running
2654          state.  */
2655       old_chain_2 = make_cleanup (finish_thread_state_cleanup,
2656                                   &minus_one_ptid);
2657
2658       /* In non-stop mode, each thread is handled individually.
2659          Switch early, so the global state is set correctly for this
2660          thread.  */
2661       if (non_stop
2662           && ecs->ws.kind != TARGET_WAITKIND_EXITED
2663           && ecs->ws.kind != TARGET_WAITKIND_SIGNALLED)
2664         context_switch (ecs->ptid);
2665
2666       /* Now figure out what to do with the result of the result.  */
2667       handle_inferior_event (ecs);
2668
2669       /* No error, don't finish the state yet.  */
2670       discard_cleanups (old_chain_2);
2671
2672       /* Breakpoints and watchpoints are not installed on the target
2673          at this point, and signals are passed directly to the
2674          inferior, so this must mean the process is gone.  */
2675       if (!ecs->wait_some_more)
2676         {
2677           discard_cleanups (old_chain_1);
2678           error (_("Program exited while detaching"));
2679         }
2680     }
2681
2682   discard_cleanups (old_chain_1);
2683 }
2684
2685 /* Wait for control to return from inferior to debugger.
2686
2687    If inferior gets a signal, we may decide to start it up again
2688    instead of returning.  That is why there is a loop in this function.
2689    When this function actually returns it means the inferior
2690    should be left stopped and GDB should read more commands.  */
2691
2692 void
2693 wait_for_inferior (void)
2694 {
2695   struct cleanup *old_cleanups;
2696
2697   if (debug_infrun)
2698     fprintf_unfiltered
2699       (gdb_stdlog, "infrun: wait_for_inferior ()\n");
2700
2701   old_cleanups =
2702     make_cleanup (delete_step_thread_step_resume_breakpoint_cleanup, NULL);
2703
2704   while (1)
2705     {
2706       struct execution_control_state ecss;
2707       struct execution_control_state *ecs = &ecss;
2708       struct cleanup *old_chain;
2709
2710       memset (ecs, 0, sizeof (*ecs));
2711
2712       overlay_cache_invalid = 1;
2713
2714       if (deprecated_target_wait_hook)
2715         ecs->ptid = deprecated_target_wait_hook (waiton_ptid, &ecs->ws, 0);
2716       else
2717         ecs->ptid = target_wait (waiton_ptid, &ecs->ws, 0);
2718
2719       if (debug_infrun)
2720         print_target_wait_results (waiton_ptid, ecs->ptid, &ecs->ws);
2721
2722       /* If an error happens while handling the event, propagate GDB's
2723          knowledge of the executing state to the frontend/user running
2724          state.  */
2725       old_chain = make_cleanup (finish_thread_state_cleanup, &minus_one_ptid);
2726
2727       /* Now figure out what to do with the result of the result.  */
2728       handle_inferior_event (ecs);
2729
2730       /* No error, don't finish the state yet.  */
2731       discard_cleanups (old_chain);
2732
2733       if (!ecs->wait_some_more)
2734         break;
2735     }
2736
2737   do_cleanups (old_cleanups);
2738 }
2739
2740 /* Asynchronous version of wait_for_inferior.  It is called by the
2741    event loop whenever a change of state is detected on the file
2742    descriptor corresponding to the target.  It can be called more than
2743    once to complete a single execution command.  In such cases we need
2744    to keep the state in a global variable ECSS.  If it is the last time
2745    that this function is called for a single execution command, then
2746    report to the user that the inferior has stopped, and do the
2747    necessary cleanups.  */
2748
2749 void
2750 fetch_inferior_event (void *client_data)
2751 {
2752   struct execution_control_state ecss;
2753   struct execution_control_state *ecs = &ecss;
2754   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
2755   struct cleanup *ts_old_chain;
2756   int was_sync = sync_execution;
2757   int cmd_done = 0;
2758
2759   memset (ecs, 0, sizeof (*ecs));
2760
2761   /* We're handling a live event, so make sure we're doing live
2762      debugging.  If we're looking at traceframes while the target is
2763      running, we're going to need to get back to that mode after
2764      handling the event.  */
2765   if (non_stop)
2766     {
2767       make_cleanup_restore_current_traceframe ();
2768       set_current_traceframe (-1);
2769     }
2770
2771   if (non_stop)
2772     /* In non-stop mode, the user/frontend should not notice a thread
2773        switch due to internal events.  Make sure we reverse to the
2774        user selected thread and frame after handling the event and
2775        running any breakpoint commands.  */
2776     make_cleanup_restore_current_thread ();
2777
2778   overlay_cache_invalid = 1;
2779
2780   make_cleanup_restore_integer (&execution_direction);
2781   execution_direction = target_execution_direction ();
2782
2783   if (deprecated_target_wait_hook)
2784     ecs->ptid =
2785       deprecated_target_wait_hook (waiton_ptid, &ecs->ws, TARGET_WNOHANG);
2786   else
2787     ecs->ptid = target_wait (waiton_ptid, &ecs->ws, TARGET_WNOHANG);
2788
2789   if (debug_infrun)
2790     print_target_wait_results (waiton_ptid, ecs->ptid, &ecs->ws);
2791
2792   if (non_stop
2793       && ecs->ws.kind != TARGET_WAITKIND_IGNORE
2794       && ecs->ws.kind != TARGET_WAITKIND_NO_RESUMED
2795       && ecs->ws.kind != TARGET_WAITKIND_EXITED
2796       && ecs->ws.kind != TARGET_WAITKIND_SIGNALLED)
2797     /* In non-stop mode, each thread is handled individually.  Switch
2798        early, so the global state is set correctly for this
2799        thread.  */
2800     context_switch (ecs->ptid);
2801
2802   /* If an error happens while handling the event, propagate GDB's
2803      knowledge of the executing state to the frontend/user running
2804      state.  */
2805   if (!non_stop)
2806     ts_old_chain = make_cleanup (finish_thread_state_cleanup, &minus_one_ptid);
2807   else
2808     ts_old_chain = make_cleanup (finish_thread_state_cleanup, &ecs->ptid);
2809
2810   /* Get executed before make_cleanup_restore_current_thread above to apply
2811      still for the thread which has thrown the exception.  */
2812   make_bpstat_clear_actions_cleanup ();
2813
2814   /* Now figure out what to do with the result of the result.  */
2815   handle_inferior_event (ecs);
2816
2817   if (!ecs->wait_some_more)
2818     {
2819       struct inferior *inf = find_inferior_pid (ptid_get_pid (ecs->ptid));
2820
2821       delete_step_thread_step_resume_breakpoint ();
2822
2823       /* We may not find an inferior if this was a process exit.  */
2824       if (inf == NULL || inf->control.stop_soon == NO_STOP_QUIETLY)
2825         normal_stop ();
2826
2827       if (target_has_execution
2828           && ecs->ws.kind != TARGET_WAITKIND_NO_RESUMED
2829           && ecs->ws.kind != TARGET_WAITKIND_EXITED
2830           && ecs->ws.kind != TARGET_WAITKIND_SIGNALLED
2831           && ecs->event_thread->step_multi
2832           && ecs->event_thread->control.stop_step)
2833         inferior_event_handler (INF_EXEC_CONTINUE, NULL);
2834       else
2835         {
2836           inferior_event_handler (INF_EXEC_COMPLETE, NULL);
2837           cmd_done = 1;
2838         }
2839     }
2840
2841   /* No error, don't finish the thread states yet.  */
2842   discard_cleanups (ts_old_chain);
2843
2844   /* Revert thread and frame.  */
2845   do_cleanups (old_chain);
2846
2847   /* If the inferior was in sync execution mode, and now isn't,
2848      restore the prompt (a synchronous execution command has finished,
2849      and we're ready for input).  */
2850   if (interpreter_async && was_sync && !sync_execution)
2851     display_gdb_prompt (0);
2852
2853   if (cmd_done
2854       && !was_sync
2855       && exec_done_display_p
2856       && (ptid_equal (inferior_ptid, null_ptid)
2857           || !is_running (inferior_ptid)))
2858     printf_unfiltered (_("completed.\n"));
2859 }
2860
2861 /* Record the frame and location we're currently stepping through.  */
2862 void
2863 set_step_info (struct frame_info *frame, struct symtab_and_line sal)
2864 {
2865   struct thread_info *tp = inferior_thread ();
2866
2867   tp->control.step_frame_id = get_frame_id (frame);
2868   tp->control.step_stack_frame_id = get_stack_frame_id (frame);
2869
2870   tp->current_symtab = sal.symtab;
2871   tp->current_line = sal.line;
2872 }
2873
2874 /* Clear context switchable stepping state.  */
2875
2876 void
2877 init_thread_stepping_state (struct thread_info *tss)
2878 {
2879   tss->stepping_over_breakpoint = 0;
2880   tss->step_after_step_resume_breakpoint = 0;
2881 }
2882
2883 /* Return the cached copy of the last pid/waitstatus returned by
2884    target_wait()/deprecated_target_wait_hook().  The data is actually
2885    cached by handle_inferior_event(), which gets called immediately
2886    after target_wait()/deprecated_target_wait_hook().  */
2887
2888 void
2889 get_last_target_status (ptid_t *ptidp, struct target_waitstatus *status)
2890 {
2891   *ptidp = target_last_wait_ptid;
2892   *status = target_last_waitstatus;
2893 }
2894
2895 void
2896 nullify_last_target_wait_ptid (void)
2897 {
2898   target_last_wait_ptid = minus_one_ptid;
2899 }
2900
2901 /* Switch thread contexts.  */
2902
2903 static void
2904 context_switch (ptid_t ptid)
2905 {
2906   if (debug_infrun && !ptid_equal (ptid, inferior_ptid))
2907     {
2908       fprintf_unfiltered (gdb_stdlog, "infrun: Switching context from %s ",
2909                           target_pid_to_str (inferior_ptid));
2910       fprintf_unfiltered (gdb_stdlog, "to %s\n",
2911                           target_pid_to_str (ptid));
2912     }
2913
2914   switch_to_thread (ptid);
2915 }
2916
2917 static void
2918 adjust_pc_after_break (struct execution_control_state *ecs)
2919 {
2920   struct regcache *regcache;
2921   struct gdbarch *gdbarch;
2922   struct address_space *aspace;
2923   CORE_ADDR breakpoint_pc;
2924
2925   /* If we've hit a breakpoint, we'll normally be stopped with SIGTRAP.  If
2926      we aren't, just return.
2927
2928      We assume that waitkinds other than TARGET_WAITKIND_STOPPED are not
2929      affected by gdbarch_decr_pc_after_break.  Other waitkinds which are
2930      implemented by software breakpoints should be handled through the normal
2931      breakpoint layer.
2932
2933      NOTE drow/2004-01-31: On some targets, breakpoints may generate
2934      different signals (SIGILL or SIGEMT for instance), but it is less
2935      clear where the PC is pointing afterwards.  It may not match
2936      gdbarch_decr_pc_after_break.  I don't know any specific target that
2937      generates these signals at breakpoints (the code has been in GDB since at
2938      least 1992) so I can not guess how to handle them here.
2939
2940      In earlier versions of GDB, a target with 
2941      gdbarch_have_nonsteppable_watchpoint would have the PC after hitting a
2942      watchpoint affected by gdbarch_decr_pc_after_break.  I haven't found any
2943      target with both of these set in GDB history, and it seems unlikely to be
2944      correct, so gdbarch_have_nonsteppable_watchpoint is not checked here.  */
2945
2946   if (ecs->ws.kind != TARGET_WAITKIND_STOPPED)
2947     return;
2948
2949   if (ecs->ws.value.sig != GDB_SIGNAL_TRAP)
2950     return;
2951
2952   /* In reverse execution, when a breakpoint is hit, the instruction
2953      under it has already been de-executed.  The reported PC always
2954      points at the breakpoint address, so adjusting it further would
2955      be wrong.  E.g., consider this case on a decr_pc_after_break == 1
2956      architecture:
2957
2958        B1         0x08000000 :   INSN1
2959        B2         0x08000001 :   INSN2
2960                   0x08000002 :   INSN3
2961             PC -> 0x08000003 :   INSN4
2962
2963      Say you're stopped at 0x08000003 as above.  Reverse continuing
2964      from that point should hit B2 as below.  Reading the PC when the
2965      SIGTRAP is reported should read 0x08000001 and INSN2 should have
2966      been de-executed already.
2967
2968        B1         0x08000000 :   INSN1
2969        B2   PC -> 0x08000001 :   INSN2
2970                   0x08000002 :   INSN3
2971                   0x08000003 :   INSN4
2972
2973      We can't apply the same logic as for forward execution, because
2974      we would wrongly adjust the PC to 0x08000000, since there's a
2975      breakpoint at PC - 1.  We'd then report a hit on B1, although
2976      INSN1 hadn't been de-executed yet.  Doing nothing is the correct
2977      behaviour.  */
2978   if (execution_direction == EXEC_REVERSE)
2979     return;
2980
2981   /* If this target does not decrement the PC after breakpoints, then
2982      we have nothing to do.  */
2983   regcache = get_thread_regcache (ecs->ptid);
2984   gdbarch = get_regcache_arch (regcache);
2985   if (gdbarch_decr_pc_after_break (gdbarch) == 0)
2986     return;
2987
2988   aspace = get_regcache_aspace (regcache);
2989
2990   /* Find the location where (if we've hit a breakpoint) the
2991      breakpoint would be.  */
2992   breakpoint_pc = regcache_read_pc (regcache)
2993                   - gdbarch_decr_pc_after_break (gdbarch);
2994
2995   /* Check whether there actually is a software breakpoint inserted at
2996      that location.
2997
2998      If in non-stop mode, a race condition is possible where we've
2999      removed a breakpoint, but stop events for that breakpoint were
3000      already queued and arrive later.  To suppress those spurious
3001      SIGTRAPs, we keep a list of such breakpoint locations for a bit,
3002      and retire them after a number of stop events are reported.  */
3003   if (software_breakpoint_inserted_here_p (aspace, breakpoint_pc)
3004       || (non_stop && moribund_breakpoint_here_p (aspace, breakpoint_pc)))
3005     {
3006       struct cleanup *old_cleanups = NULL;
3007
3008       if (RECORD_IS_USED)
3009         old_cleanups = record_gdb_operation_disable_set ();
3010
3011       /* When using hardware single-step, a SIGTRAP is reported for both
3012          a completed single-step and a software breakpoint.  Need to
3013          differentiate between the two, as the latter needs adjusting
3014          but the former does not.
3015
3016          The SIGTRAP can be due to a completed hardware single-step only if 
3017           - we didn't insert software single-step breakpoints
3018           - the thread to be examined is still the current thread
3019           - this thread is currently being stepped
3020
3021          If any of these events did not occur, we must have stopped due
3022          to hitting a software breakpoint, and have to back up to the
3023          breakpoint address.
3024
3025          As a special case, we could have hardware single-stepped a
3026          software breakpoint.  In this case (prev_pc == breakpoint_pc),
3027          we also need to back up to the breakpoint address.  */
3028
3029       if (singlestep_breakpoints_inserted_p
3030           || !ptid_equal (ecs->ptid, inferior_ptid)
3031           || !currently_stepping (ecs->event_thread)
3032           || ecs->event_thread->prev_pc == breakpoint_pc)
3033         regcache_write_pc (regcache, breakpoint_pc);
3034
3035       if (RECORD_IS_USED)
3036         do_cleanups (old_cleanups);
3037     }
3038 }
3039
3040 void
3041 init_infwait_state (void)
3042 {
3043   waiton_ptid = pid_to_ptid (-1);
3044   infwait_state = infwait_normal_state;
3045 }
3046
3047 void
3048 error_is_running (void)
3049 {
3050   error (_("Cannot execute this command while "
3051            "the selected thread is running."));
3052 }
3053
3054 void
3055 ensure_not_running (void)
3056 {
3057   if (is_running (inferior_ptid))
3058     error_is_running ();
3059 }
3060
3061 static int
3062 stepped_in_from (struct frame_info *frame, struct frame_id step_frame_id)
3063 {
3064   for (frame = get_prev_frame (frame);
3065        frame != NULL;
3066        frame = get_prev_frame (frame))
3067     {
3068       if (frame_id_eq (get_frame_id (frame), step_frame_id))
3069         return 1;
3070       if (get_frame_type (frame) != INLINE_FRAME)
3071         break;
3072     }
3073
3074   return 0;
3075 }
3076
3077 /* Auxiliary function that handles syscall entry/return events.
3078    It returns 1 if the inferior should keep going (and GDB
3079    should ignore the event), or 0 if the event deserves to be
3080    processed.  */
3081
3082 static int
3083 handle_syscall_event (struct execution_control_state *ecs)
3084 {
3085   struct regcache *regcache;
3086   struct gdbarch *gdbarch;
3087   int syscall_number;
3088
3089   if (!ptid_equal (ecs->ptid, inferior_ptid))
3090     context_switch (ecs->ptid);
3091
3092   regcache = get_thread_regcache (ecs->ptid);
3093   gdbarch = get_regcache_arch (regcache);
3094   syscall_number = ecs->ws.value.syscall_number;
3095   stop_pc = regcache_read_pc (regcache);
3096
3097   if (catch_syscall_enabled () > 0
3098       && catching_syscall_number (syscall_number) > 0)
3099     {
3100       if (debug_infrun)
3101         fprintf_unfiltered (gdb_stdlog, "infrun: syscall number = '%d'\n",
3102                             syscall_number);
3103
3104       ecs->event_thread->control.stop_bpstat
3105         = bpstat_stop_status (get_regcache_aspace (regcache),
3106                               stop_pc, ecs->ptid, &ecs->ws);
3107       ecs->random_signal
3108         = !bpstat_explains_signal (ecs->event_thread->control.stop_bpstat);
3109
3110       if (!ecs->random_signal)
3111         {
3112           /* Catchpoint hit.  */
3113           ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_TRAP;
3114           return 0;
3115         }
3116     }
3117
3118   /* If no catchpoint triggered for this, then keep going.  */
3119   ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0;
3120   keep_going (ecs);
3121   return 1;
3122 }
3123
3124 /* Clear the supplied execution_control_state's stop_func_* fields.  */
3125
3126 static void
3127 clear_stop_func (struct execution_control_state *ecs)
3128 {
3129   ecs->stop_func_filled_in = 0;
3130   ecs->stop_func_start = 0;
3131   ecs->stop_func_end = 0;
3132   ecs->stop_func_name = NULL;
3133 }
3134
3135 /* Lazily fill in the execution_control_state's stop_func_* fields.  */
3136
3137 static void
3138 fill_in_stop_func (struct gdbarch *gdbarch,
3139                    struct execution_control_state *ecs)
3140 {
3141   if (!ecs->stop_func_filled_in)
3142     {
3143       /* Don't care about return value; stop_func_start and stop_func_name
3144          will both be 0 if it doesn't work.  */
3145       find_pc_partial_function (stop_pc, &ecs->stop_func_name,
3146                                 &ecs->stop_func_start, &ecs->stop_func_end);
3147       ecs->stop_func_start
3148         += gdbarch_deprecated_function_start_offset (gdbarch);
3149
3150       ecs->stop_func_filled_in = 1;
3151     }
3152 }
3153
3154 /* Given an execution control state that has been freshly filled in
3155    by an event from the inferior, figure out what it means and take
3156    appropriate action.  */
3157
3158 static void
3159 handle_inferior_event (struct execution_control_state *ecs)
3160 {
3161   struct frame_info *frame;
3162   struct gdbarch *gdbarch;
3163   int stopped_by_watchpoint;
3164   int stepped_after_stopped_by_watchpoint = 0;
3165   struct symtab_and_line stop_pc_sal;
3166   enum stop_kind stop_soon;
3167
3168   if (ecs->ws.kind == TARGET_WAITKIND_IGNORE)
3169     {
3170       /* We had an event in the inferior, but we are not interested in
3171          handling it at this level.  The lower layers have already
3172          done what needs to be done, if anything.
3173
3174          One of the possible circumstances for this is when the
3175          inferior produces output for the console.  The inferior has
3176          not stopped, and we are ignoring the event.  Another possible
3177          circumstance is any event which the lower level knows will be
3178          reported multiple times without an intervening resume.  */
3179       if (debug_infrun)
3180         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_IGNORE\n");
3181       prepare_to_wait (ecs);
3182       return;
3183     }
3184
3185   if (ecs->ws.kind == TARGET_WAITKIND_NO_RESUMED
3186       && target_can_async_p () && !sync_execution)
3187     {
3188       /* There were no unwaited-for children left in the target, but,
3189          we're not synchronously waiting for events either.  Just
3190          ignore.  Otherwise, if we were running a synchronous
3191          execution command, we need to cancel it and give the user
3192          back the terminal.  */
3193       if (debug_infrun)
3194         fprintf_unfiltered (gdb_stdlog,
3195                             "infrun: TARGET_WAITKIND_NO_RESUMED (ignoring)\n");
3196       prepare_to_wait (ecs);
3197       return;
3198     }
3199
3200   if (ecs->ws.kind != TARGET_WAITKIND_EXITED
3201       && ecs->ws.kind != TARGET_WAITKIND_SIGNALLED
3202       && ecs->ws.kind != TARGET_WAITKIND_NO_RESUMED)
3203     {
3204       struct inferior *inf = find_inferior_pid (ptid_get_pid (ecs->ptid));
3205
3206       gdb_assert (inf);
3207       stop_soon = inf->control.stop_soon;
3208     }
3209   else
3210     stop_soon = NO_STOP_QUIETLY;
3211
3212   /* Cache the last pid/waitstatus.  */
3213   target_last_wait_ptid = ecs->ptid;
3214   target_last_waitstatus = ecs->ws;
3215
3216   /* Always clear state belonging to the previous time we stopped.  */
3217   stop_stack_dummy = STOP_NONE;
3218
3219   if (ecs->ws.kind == TARGET_WAITKIND_NO_RESUMED)
3220     {
3221       /* No unwaited-for children left.  IOW, all resumed children
3222          have exited.  */
3223       if (debug_infrun)
3224         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_NO_RESUMED\n");
3225
3226       stop_print_frame = 0;
3227       stop_stepping (ecs);
3228       return;
3229     }
3230
3231   if (ecs->ws.kind != TARGET_WAITKIND_EXITED
3232       && ecs->ws.kind != TARGET_WAITKIND_SIGNALLED
3233       && !ptid_equal (ecs->ptid, minus_one_ptid))
3234     {
3235       ecs->event_thread = find_thread_ptid (ecs->ptid);
3236       /* If it's a new thread, add it to the thread database.  */
3237       if (ecs->event_thread == NULL)
3238         ecs->event_thread = add_thread (ecs->ptid);
3239     }
3240
3241   /* Dependent on valid ECS->EVENT_THREAD.  */
3242   adjust_pc_after_break (ecs);
3243
3244   /* Dependent on the current PC value modified by adjust_pc_after_break.  */
3245   reinit_frame_cache ();
3246
3247   breakpoint_retire_moribund ();
3248
3249   /* First, distinguish signals caused by the debugger from signals
3250      that have to do with the program's own actions.  Note that
3251      breakpoint insns may cause SIGTRAP or SIGILL or SIGEMT, depending
3252      on the operating system version.  Here we detect when a SIGILL or
3253      SIGEMT is really a breakpoint and change it to SIGTRAP.  We do
3254      something similar for SIGSEGV, since a SIGSEGV will be generated
3255      when we're trying to execute a breakpoint instruction on a
3256      non-executable stack.  This happens for call dummy breakpoints
3257      for architectures like SPARC that place call dummies on the
3258      stack.  */
3259   if (ecs->ws.kind == TARGET_WAITKIND_STOPPED
3260       && (ecs->ws.value.sig == GDB_SIGNAL_ILL
3261           || ecs->ws.value.sig == GDB_SIGNAL_SEGV
3262           || ecs->ws.value.sig == GDB_SIGNAL_EMT))
3263     {
3264       struct regcache *regcache = get_thread_regcache (ecs->ptid);
3265
3266       if (breakpoint_inserted_here_p (get_regcache_aspace (regcache),
3267                                       regcache_read_pc (regcache)))
3268         {
3269           if (debug_infrun)
3270             fprintf_unfiltered (gdb_stdlog,
3271                                 "infrun: Treating signal as SIGTRAP\n");
3272           ecs->ws.value.sig = GDB_SIGNAL_TRAP;
3273         }
3274     }
3275
3276   /* Mark the non-executing threads accordingly.  In all-stop, all
3277      threads of all processes are stopped when we get any event
3278      reported.  In non-stop mode, only the event thread stops.  If
3279      we're handling a process exit in non-stop mode, there's nothing
3280      to do, as threads of the dead process are gone, and threads of
3281      any other process were left running.  */
3282   if (!non_stop)
3283     set_executing (minus_one_ptid, 0);
3284   else if (ecs->ws.kind != TARGET_WAITKIND_SIGNALLED
3285            && ecs->ws.kind != TARGET_WAITKIND_EXITED)
3286     set_executing (ecs->ptid, 0);
3287
3288   switch (infwait_state)
3289     {
3290     case infwait_thread_hop_state:
3291       if (debug_infrun)
3292         fprintf_unfiltered (gdb_stdlog, "infrun: infwait_thread_hop_state\n");
3293       break;
3294
3295     case infwait_normal_state:
3296       if (debug_infrun)
3297         fprintf_unfiltered (gdb_stdlog, "infrun: infwait_normal_state\n");
3298       break;
3299
3300     case infwait_step_watch_state:
3301       if (debug_infrun)
3302         fprintf_unfiltered (gdb_stdlog,
3303                             "infrun: infwait_step_watch_state\n");
3304
3305       stepped_after_stopped_by_watchpoint = 1;
3306       break;
3307
3308     case infwait_nonstep_watch_state:
3309       if (debug_infrun)
3310         fprintf_unfiltered (gdb_stdlog,
3311                             "infrun: infwait_nonstep_watch_state\n");
3312       insert_breakpoints ();
3313
3314       /* FIXME-maybe: is this cleaner than setting a flag?  Does it
3315          handle things like signals arriving and other things happening
3316          in combination correctly?  */
3317       stepped_after_stopped_by_watchpoint = 1;
3318       break;
3319
3320     default:
3321       internal_error (__FILE__, __LINE__, _("bad switch"));
3322     }
3323
3324   infwait_state = infwait_normal_state;
3325   waiton_ptid = pid_to_ptid (-1);
3326
3327   switch (ecs->ws.kind)
3328     {
3329     case TARGET_WAITKIND_LOADED:
3330       if (debug_infrun)
3331         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_LOADED\n");
3332       /* Ignore gracefully during startup of the inferior, as it might
3333          be the shell which has just loaded some objects, otherwise
3334          add the symbols for the newly loaded objects.  Also ignore at
3335          the beginning of an attach or remote session; we will query
3336          the full list of libraries once the connection is
3337          established.  */
3338       if (stop_soon == NO_STOP_QUIETLY)
3339         {
3340           struct regcache *regcache;
3341
3342           if (!ptid_equal (ecs->ptid, inferior_ptid))
3343             context_switch (ecs->ptid);
3344           regcache = get_thread_regcache (ecs->ptid);
3345
3346           handle_solib_event ();
3347
3348           ecs->event_thread->control.stop_bpstat
3349             = bpstat_stop_status (get_regcache_aspace (regcache),
3350                                   stop_pc, ecs->ptid, &ecs->ws);
3351           ecs->random_signal
3352             = !bpstat_explains_signal (ecs->event_thread->control.stop_bpstat);
3353
3354           if (!ecs->random_signal)
3355             {
3356               /* A catchpoint triggered.  */
3357               ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_TRAP;
3358               goto process_event_stop_test;
3359             }
3360
3361           /* If requested, stop when the dynamic linker notifies
3362              gdb of events.  This allows the user to get control
3363              and place breakpoints in initializer routines for
3364              dynamically loaded objects (among other things).  */
3365           ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0;
3366           if (stop_on_solib_events)
3367             {
3368               /* Make sure we print "Stopped due to solib-event" in
3369                  normal_stop.  */
3370               stop_print_frame = 1;
3371
3372               stop_stepping (ecs);
3373               return;
3374             }
3375         }
3376
3377       /* If we are skipping through a shell, or through shared library
3378          loading that we aren't interested in, resume the program.  If
3379          we're running the program normally, also resume.  But stop if
3380          we're attaching or setting up a remote connection.  */
3381       if (stop_soon == STOP_QUIETLY || stop_soon == NO_STOP_QUIETLY)
3382         {
3383           /* Loading of shared libraries might have changed breakpoint
3384              addresses.  Make sure new breakpoints are inserted.  */
3385           if (stop_soon == NO_STOP_QUIETLY
3386               && !breakpoints_always_inserted_mode ())
3387             insert_breakpoints ();
3388           resume (0, GDB_SIGNAL_0);
3389           prepare_to_wait (ecs);
3390           return;
3391         }
3392
3393       break;
3394
3395     case TARGET_WAITKIND_SPURIOUS:
3396       if (debug_infrun)
3397         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_SPURIOUS\n");
3398       resume (0, GDB_SIGNAL_0);
3399       prepare_to_wait (ecs);
3400       return;
3401
3402     case TARGET_WAITKIND_EXITED:
3403       if (debug_infrun)
3404         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_EXITED\n");
3405       inferior_ptid = ecs->ptid;
3406       set_current_inferior (find_inferior_pid (ptid_get_pid (ecs->ptid)));
3407       set_current_program_space (current_inferior ()->pspace);
3408       handle_vfork_child_exec_or_exit (0);
3409       target_terminal_ours ();  /* Must do this before mourn anyway.  */
3410       print_exited_reason (ecs->ws.value.integer);
3411
3412       /* Record the exit code in the convenience variable $_exitcode, so
3413          that the user can inspect this again later.  */
3414       set_internalvar_integer (lookup_internalvar ("_exitcode"),
3415                                (LONGEST) ecs->ws.value.integer);
3416
3417       /* Also record this in the inferior itself.  */
3418       current_inferior ()->has_exit_code = 1;
3419       current_inferior ()->exit_code = (LONGEST) ecs->ws.value.integer;
3420
3421       gdb_flush (gdb_stdout);
3422       target_mourn_inferior ();
3423       singlestep_breakpoints_inserted_p = 0;
3424       cancel_single_step_breakpoints ();
3425       stop_print_frame = 0;
3426       stop_stepping (ecs);
3427       return;
3428
3429     case TARGET_WAITKIND_SIGNALLED:
3430       if (debug_infrun)
3431         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_SIGNALLED\n");
3432       inferior_ptid = ecs->ptid;
3433       set_current_inferior (find_inferior_pid (ptid_get_pid (ecs->ptid)));
3434       set_current_program_space (current_inferior ()->pspace);
3435       handle_vfork_child_exec_or_exit (0);
3436       stop_print_frame = 0;
3437       target_terminal_ours ();  /* Must do this before mourn anyway.  */
3438
3439       /* Note: By definition of TARGET_WAITKIND_SIGNALLED, we shouldn't
3440          reach here unless the inferior is dead.  However, for years
3441          target_kill() was called here, which hints that fatal signals aren't
3442          really fatal on some systems.  If that's true, then some changes
3443          may be needed.  */
3444       target_mourn_inferior ();
3445
3446       print_signal_exited_reason (ecs->ws.value.sig);
3447       singlestep_breakpoints_inserted_p = 0;
3448       cancel_single_step_breakpoints ();
3449       stop_stepping (ecs);
3450       return;
3451
3452       /* The following are the only cases in which we keep going;
3453          the above cases end in a continue or goto.  */
3454     case TARGET_WAITKIND_FORKED:
3455     case TARGET_WAITKIND_VFORKED:
3456       if (debug_infrun)
3457         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_FORKED\n");
3458
3459       /* Check whether the inferior is displaced stepping.  */
3460       {
3461         struct regcache *regcache = get_thread_regcache (ecs->ptid);
3462         struct gdbarch *gdbarch = get_regcache_arch (regcache);
3463         struct displaced_step_inferior_state *displaced
3464           = get_displaced_stepping_state (ptid_get_pid (ecs->ptid));
3465
3466         /* If checking displaced stepping is supported, and thread
3467            ecs->ptid is displaced stepping.  */
3468         if (displaced && ptid_equal (displaced->step_ptid, ecs->ptid))
3469           {
3470             struct inferior *parent_inf
3471               = find_inferior_pid (ptid_get_pid (ecs->ptid));
3472             struct regcache *child_regcache;
3473             CORE_ADDR parent_pc;
3474
3475             /* GDB has got TARGET_WAITKIND_FORKED or TARGET_WAITKIND_VFORKED,
3476                indicating that the displaced stepping of syscall instruction
3477                has been done.  Perform cleanup for parent process here.  Note
3478                that this operation also cleans up the child process for vfork,
3479                because their pages are shared.  */
3480             displaced_step_fixup (ecs->ptid, GDB_SIGNAL_TRAP);
3481
3482             if (ecs->ws.kind == TARGET_WAITKIND_FORKED)
3483               {
3484                 /* Restore scratch pad for child process.  */
3485                 displaced_step_restore (displaced, ecs->ws.value.related_pid);
3486               }
3487
3488             /* Since the vfork/fork syscall instruction was executed in the scratchpad,
3489                the child's PC is also within the scratchpad.  Set the child's PC
3490                to the parent's PC value, which has already been fixed up.
3491                FIXME: we use the parent's aspace here, although we're touching
3492                the child, because the child hasn't been added to the inferior
3493                list yet at this point.  */
3494
3495             child_regcache
3496               = get_thread_arch_aspace_regcache (ecs->ws.value.related_pid,
3497                                                  gdbarch,
3498                                                  parent_inf->aspace);
3499             /* Read PC value of parent process.  */
3500             parent_pc = regcache_read_pc (regcache);
3501
3502             if (debug_displaced)
3503               fprintf_unfiltered (gdb_stdlog,
3504                                   "displaced: write child pc from %s to %s\n",
3505                                   paddress (gdbarch,
3506                                             regcache_read_pc (child_regcache)),
3507                                   paddress (gdbarch, parent_pc));
3508
3509             regcache_write_pc (child_regcache, parent_pc);
3510           }
3511       }
3512
3513       if (!ptid_equal (ecs->ptid, inferior_ptid))
3514         {
3515           context_switch (ecs->ptid);
3516           reinit_frame_cache ();
3517         }
3518
3519       /* Immediately detach breakpoints from the child before there's
3520          any chance of letting the user delete breakpoints from the
3521          breakpoint lists.  If we don't do this early, it's easy to
3522          leave left over traps in the child, vis: "break foo; catch
3523          fork; c; <fork>; del; c; <child calls foo>".  We only follow
3524          the fork on the last `continue', and by that time the
3525          breakpoint at "foo" is long gone from the breakpoint table.
3526          If we vforked, then we don't need to unpatch here, since both
3527          parent and child are sharing the same memory pages; we'll
3528          need to unpatch at follow/detach time instead to be certain
3529          that new breakpoints added between catchpoint hit time and
3530          vfork follow are detached.  */
3531       if (ecs->ws.kind != TARGET_WAITKIND_VFORKED)
3532         {
3533           int child_pid = ptid_get_pid (ecs->ws.value.related_pid);
3534
3535           /* This won't actually modify the breakpoint list, but will
3536              physically remove the breakpoints from the child.  */
3537           detach_breakpoints (child_pid);
3538         }
3539
3540       if (singlestep_breakpoints_inserted_p)
3541         {
3542           /* Pull the single step breakpoints out of the target.  */
3543           remove_single_step_breakpoints ();
3544           singlestep_breakpoints_inserted_p = 0;
3545         }
3546
3547       /* In case the event is caught by a catchpoint, remember that
3548          the event is to be followed at the next resume of the thread,
3549          and not immediately.  */
3550       ecs->event_thread->pending_follow = ecs->ws;
3551
3552       stop_pc = regcache_read_pc (get_thread_regcache (ecs->ptid));
3553
3554       ecs->event_thread->control.stop_bpstat
3555         = bpstat_stop_status (get_regcache_aspace (get_current_regcache ()),
3556                               stop_pc, ecs->ptid, &ecs->ws);
3557
3558       /* Note that we're interested in knowing the bpstat actually
3559          causes a stop, not just if it may explain the signal.
3560          Software watchpoints, for example, always appear in the
3561          bpstat.  */
3562       ecs->random_signal
3563         = !bpstat_causes_stop (ecs->event_thread->control.stop_bpstat);
3564
3565       /* If no catchpoint triggered for this, then keep going.  */
3566       if (ecs->random_signal)
3567         {
3568           ptid_t parent;
3569           ptid_t child;
3570           int should_resume;
3571           int follow_child
3572             = (follow_fork_mode_string == follow_fork_mode_child);
3573
3574           ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0;
3575
3576           should_resume = follow_fork ();
3577
3578           parent = ecs->ptid;
3579           child = ecs->ws.value.related_pid;
3580
3581           /* In non-stop mode, also resume the other branch.  */
3582           if (non_stop && !detach_fork)
3583             {
3584               if (follow_child)
3585                 switch_to_thread (parent);
3586               else
3587                 switch_to_thread (child);
3588
3589               ecs->event_thread = inferior_thread ();
3590               ecs->ptid = inferior_ptid;
3591               keep_going (ecs);
3592             }
3593
3594           if (follow_child)
3595             switch_to_thread (child);
3596           else
3597             switch_to_thread (parent);
3598
3599           ecs->event_thread = inferior_thread ();
3600           ecs->ptid = inferior_ptid;
3601
3602           if (should_resume)
3603             keep_going (ecs);
3604           else
3605             stop_stepping (ecs);
3606           return;
3607         }
3608       ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_TRAP;
3609       goto process_event_stop_test;
3610
3611     case TARGET_WAITKIND_VFORK_DONE:
3612       /* Done with the shared memory region.  Re-insert breakpoints in
3613          the parent, and keep going.  */
3614
3615       if (debug_infrun)
3616         fprintf_unfiltered (gdb_stdlog,
3617                             "infrun: TARGET_WAITKIND_VFORK_DONE\n");
3618
3619       if (!ptid_equal (ecs->ptid, inferior_ptid))
3620         context_switch (ecs->ptid);
3621
3622       current_inferior ()->waiting_for_vfork_done = 0;
3623       current_inferior ()->pspace->breakpoints_not_allowed = 0;
3624       /* This also takes care of reinserting breakpoints in the
3625          previously locked inferior.  */
3626       keep_going (ecs);
3627       return;
3628
3629     case TARGET_WAITKIND_EXECD:
3630       if (debug_infrun)
3631         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_EXECD\n");
3632
3633       if (!ptid_equal (ecs->ptid, inferior_ptid))
3634         {
3635           context_switch (ecs->ptid);
3636           reinit_frame_cache ();
3637         }
3638
3639       singlestep_breakpoints_inserted_p = 0;
3640       cancel_single_step_breakpoints ();
3641
3642       stop_pc = regcache_read_pc (get_thread_regcache (ecs->ptid));
3643
3644       /* Do whatever is necessary to the parent branch of the vfork.  */
3645       handle_vfork_child_exec_or_exit (1);
3646
3647       /* This causes the eventpoints and symbol table to be reset.
3648          Must do this now, before trying to determine whether to
3649          stop.  */
3650       follow_exec (inferior_ptid, ecs->ws.value.execd_pathname);
3651
3652       ecs->event_thread->control.stop_bpstat
3653         = bpstat_stop_status (get_regcache_aspace (get_current_regcache ()),
3654                               stop_pc, ecs->ptid, &ecs->ws);
3655       ecs->random_signal
3656         = !bpstat_explains_signal (ecs->event_thread->control.stop_bpstat);
3657
3658       /* Note that this may be referenced from inside
3659          bpstat_stop_status above, through inferior_has_execd.  */
3660       xfree (ecs->ws.value.execd_pathname);
3661       ecs->ws.value.execd_pathname = NULL;
3662
3663       /* If no catchpoint triggered for this, then keep going.  */
3664       if (ecs->random_signal)
3665         {
3666           ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0;
3667           keep_going (ecs);
3668           return;
3669         }
3670       ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_TRAP;
3671       goto process_event_stop_test;
3672
3673       /* Be careful not to try to gather much state about a thread
3674          that's in a syscall.  It's frequently a losing proposition.  */
3675     case TARGET_WAITKIND_SYSCALL_ENTRY:
3676       if (debug_infrun)
3677         fprintf_unfiltered (gdb_stdlog,
3678                             "infrun: TARGET_WAITKIND_SYSCALL_ENTRY\n");
3679       /* Getting the current syscall number.  */
3680       if (handle_syscall_event (ecs) != 0)
3681         return;
3682       goto process_event_stop_test;
3683
3684       /* Before examining the threads further, step this thread to
3685          get it entirely out of the syscall.  (We get notice of the
3686          event when the thread is just on the verge of exiting a
3687          syscall.  Stepping one instruction seems to get it back
3688          into user code.)  */
3689     case TARGET_WAITKIND_SYSCALL_RETURN:
3690       if (debug_infrun)
3691         fprintf_unfiltered (gdb_stdlog,
3692                             "infrun: TARGET_WAITKIND_SYSCALL_RETURN\n");
3693       if (handle_syscall_event (ecs) != 0)
3694         return;
3695       goto process_event_stop_test;
3696
3697     case TARGET_WAITKIND_STOPPED:
3698       if (debug_infrun)
3699         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_STOPPED\n");
3700       ecs->event_thread->suspend.stop_signal = ecs->ws.value.sig;
3701       break;
3702
3703     case TARGET_WAITKIND_NO_HISTORY:
3704       if (debug_infrun)
3705         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_NO_HISTORY\n");
3706       /* Reverse execution: target ran out of history info.  */
3707       stop_pc = regcache_read_pc (get_thread_regcache (ecs->ptid));
3708       print_no_history_reason ();
3709       stop_stepping (ecs);
3710       return;
3711     }
3712
3713   if (ecs->ws.kind == TARGET_WAITKIND_STOPPED)
3714     {
3715       /* Do we need to clean up the state of a thread that has
3716          completed a displaced single-step?  (Doing so usually affects
3717          the PC, so do it here, before we set stop_pc.)  */
3718       displaced_step_fixup (ecs->ptid,
3719                             ecs->event_thread->suspend.stop_signal);
3720
3721       /* If we either finished a single-step or hit a breakpoint, but
3722          the user wanted this thread to be stopped, pretend we got a
3723          SIG0 (generic unsignaled stop).  */
3724
3725       if (ecs->event_thread->stop_requested
3726           && ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP)
3727         ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0;
3728     }
3729
3730   stop_pc = regcache_read_pc (get_thread_regcache (ecs->ptid));
3731
3732   if (debug_infrun)
3733     {
3734       struct regcache *regcache = get_thread_regcache (ecs->ptid);
3735       struct gdbarch *gdbarch = get_regcache_arch (regcache);
3736       struct cleanup *old_chain = save_inferior_ptid ();
3737
3738       inferior_ptid = ecs->ptid;
3739
3740       fprintf_unfiltered (gdb_stdlog, "infrun: stop_pc = %s\n",
3741                           paddress (gdbarch, stop_pc));
3742       if (target_stopped_by_watchpoint ())
3743         {
3744           CORE_ADDR addr;
3745
3746           fprintf_unfiltered (gdb_stdlog, "infrun: stopped by watchpoint\n");
3747
3748           if (target_stopped_data_address (&current_target, &addr))
3749             fprintf_unfiltered (gdb_stdlog,
3750                                 "infrun: stopped data address = %s\n",
3751                                 paddress (gdbarch, addr));
3752           else
3753             fprintf_unfiltered (gdb_stdlog,
3754                                 "infrun: (no data address available)\n");
3755         }
3756
3757       do_cleanups (old_chain);
3758     }
3759
3760   if (stepping_past_singlestep_breakpoint)
3761     {
3762       gdb_assert (singlestep_breakpoints_inserted_p);
3763       gdb_assert (ptid_equal (singlestep_ptid, ecs->ptid));
3764       gdb_assert (!ptid_equal (singlestep_ptid, saved_singlestep_ptid));
3765
3766       stepping_past_singlestep_breakpoint = 0;
3767
3768       /* We've either finished single-stepping past the single-step
3769          breakpoint, or stopped for some other reason.  It would be nice if
3770          we could tell, but we can't reliably.  */
3771       if (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP)
3772         {
3773           if (debug_infrun)
3774             fprintf_unfiltered (gdb_stdlog,
3775                                 "infrun: stepping_past_"
3776                                 "singlestep_breakpoint\n");
3777           /* Pull the single step breakpoints out of the target.  */
3778           remove_single_step_breakpoints ();
3779           singlestep_breakpoints_inserted_p = 0;
3780
3781           ecs->random_signal = 0;
3782           ecs->event_thread->control.trap_expected = 0;
3783
3784           context_switch (saved_singlestep_ptid);
3785           if (deprecated_context_hook)
3786             deprecated_context_hook (pid_to_thread_id (ecs->ptid));
3787
3788           resume (1, GDB_SIGNAL_0);
3789           prepare_to_wait (ecs);
3790           return;
3791         }
3792     }
3793
3794   if (!ptid_equal (deferred_step_ptid, null_ptid))
3795     {
3796       /* In non-stop mode, there's never a deferred_step_ptid set.  */
3797       gdb_assert (!non_stop);
3798
3799       /* If we stopped for some other reason than single-stepping, ignore
3800          the fact that we were supposed to switch back.  */
3801       if (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP)
3802         {
3803           if (debug_infrun)
3804             fprintf_unfiltered (gdb_stdlog,
3805                                 "infrun: handling deferred step\n");
3806
3807           /* Pull the single step breakpoints out of the target.  */
3808           if (singlestep_breakpoints_inserted_p)
3809             {
3810               remove_single_step_breakpoints ();
3811               singlestep_breakpoints_inserted_p = 0;
3812             }
3813
3814           ecs->event_thread->control.trap_expected = 0;
3815
3816           context_switch (deferred_step_ptid);
3817           deferred_step_ptid = null_ptid;
3818           /* Suppress spurious "Switching to ..." message.  */
3819           previous_inferior_ptid = inferior_ptid;
3820
3821           resume (1, GDB_SIGNAL_0);
3822           prepare_to_wait (ecs);
3823           return;
3824         }
3825
3826       deferred_step_ptid = null_ptid;
3827     }
3828
3829   /* See if a thread hit a thread-specific breakpoint that was meant for
3830      another thread.  If so, then step that thread past the breakpoint,
3831      and continue it.  */
3832
3833   if (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP)
3834     {
3835       int thread_hop_needed = 0;
3836       struct address_space *aspace = 
3837         get_regcache_aspace (get_thread_regcache (ecs->ptid));
3838
3839       /* Check if a regular breakpoint has been hit before checking
3840          for a potential single step breakpoint.  Otherwise, GDB will
3841          not see this breakpoint hit when stepping onto breakpoints.  */
3842       if (regular_breakpoint_inserted_here_p (aspace, stop_pc))
3843         {
3844           ecs->random_signal = 0;
3845           if (!breakpoint_thread_match (aspace, stop_pc, ecs->ptid))
3846             thread_hop_needed = 1;
3847         }
3848       else if (singlestep_breakpoints_inserted_p)
3849         {
3850           /* We have not context switched yet, so this should be true
3851              no matter which thread hit the singlestep breakpoint.  */
3852           gdb_assert (ptid_equal (inferior_ptid, singlestep_ptid));
3853           if (debug_infrun)
3854             fprintf_unfiltered (gdb_stdlog, "infrun: software single step "
3855                                 "trap for %s\n",
3856                                 target_pid_to_str (ecs->ptid));
3857
3858           ecs->random_signal = 0;
3859           /* The call to in_thread_list is necessary because PTIDs sometimes
3860              change when we go from single-threaded to multi-threaded.  If
3861              the singlestep_ptid is still in the list, assume that it is
3862              really different from ecs->ptid.  */
3863           if (!ptid_equal (singlestep_ptid, ecs->ptid)
3864               && in_thread_list (singlestep_ptid))
3865             {
3866               /* If the PC of the thread we were trying to single-step
3867                  has changed, discard this event (which we were going
3868                  to ignore anyway), and pretend we saw that thread
3869                  trap.  This prevents us continuously moving the
3870                  single-step breakpoint forward, one instruction at a
3871                  time.  If the PC has changed, then the thread we were
3872                  trying to single-step has trapped or been signalled,
3873                  but the event has not been reported to GDB yet.
3874
3875                  There might be some cases where this loses signal
3876                  information, if a signal has arrived at exactly the
3877                  same time that the PC changed, but this is the best
3878                  we can do with the information available.  Perhaps we
3879                  should arrange to report all events for all threads
3880                  when they stop, or to re-poll the remote looking for
3881                  this particular thread (i.e. temporarily enable
3882                  schedlock).  */
3883
3884              CORE_ADDR new_singlestep_pc
3885                = regcache_read_pc (get_thread_regcache (singlestep_ptid));
3886
3887              if (new_singlestep_pc != singlestep_pc)
3888                {
3889                  enum gdb_signal stop_signal;
3890
3891                  if (debug_infrun)
3892                    fprintf_unfiltered (gdb_stdlog, "infrun: unexpected thread,"
3893                                        " but expected thread advanced also\n");
3894
3895                  /* The current context still belongs to
3896                     singlestep_ptid.  Don't swap here, since that's
3897                     the context we want to use.  Just fudge our
3898                     state and continue.  */
3899                  stop_signal = ecs->event_thread->suspend.stop_signal;
3900                  ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0;
3901                  ecs->ptid = singlestep_ptid;
3902                  ecs->event_thread = find_thread_ptid (ecs->ptid);
3903                  ecs->event_thread->suspend.stop_signal = stop_signal;
3904                  stop_pc = new_singlestep_pc;
3905                }
3906              else
3907                {
3908                  if (debug_infrun)
3909                    fprintf_unfiltered (gdb_stdlog,
3910                                        "infrun: unexpected thread\n");
3911
3912                  thread_hop_needed = 1;
3913                  stepping_past_singlestep_breakpoint = 1;
3914                  saved_singlestep_ptid = singlestep_ptid;
3915                }
3916             }
3917         }
3918
3919       if (thread_hop_needed)
3920         {
3921           struct regcache *thread_regcache;
3922           int remove_status = 0;
3923
3924           if (debug_infrun)
3925             fprintf_unfiltered (gdb_stdlog, "infrun: thread_hop_needed\n");
3926
3927           /* Switch context before touching inferior memory, the
3928              previous thread may have exited.  */
3929           if (!ptid_equal (inferior_ptid, ecs->ptid))
3930             context_switch (ecs->ptid);
3931
3932           /* Saw a breakpoint, but it was hit by the wrong thread.
3933              Just continue.  */
3934
3935           if (singlestep_breakpoints_inserted_p)
3936             {
3937               /* Pull the single step breakpoints out of the target.  */
3938               remove_single_step_breakpoints ();
3939               singlestep_breakpoints_inserted_p = 0;
3940             }
3941
3942           /* If the arch can displace step, don't remove the
3943              breakpoints.  */
3944           thread_regcache = get_thread_regcache (ecs->ptid);
3945           if (!use_displaced_stepping (get_regcache_arch (thread_regcache)))
3946             remove_status = remove_breakpoints ();
3947
3948           /* Did we fail to remove breakpoints?  If so, try
3949              to set the PC past the bp.  (There's at least
3950              one situation in which we can fail to remove
3951              the bp's: On HP-UX's that use ttrace, we can't
3952              change the address space of a vforking child
3953              process until the child exits (well, okay, not
3954              then either :-) or execs.  */
3955           if (remove_status != 0)
3956             error (_("Cannot step over breakpoint hit in wrong thread"));
3957           else
3958             {                   /* Single step */
3959               if (!non_stop)
3960                 {
3961                   /* Only need to require the next event from this
3962                      thread in all-stop mode.  */
3963                   waiton_ptid = ecs->ptid;
3964                   infwait_state = infwait_thread_hop_state;
3965                 }
3966
3967               ecs->event_thread->stepping_over_breakpoint = 1;
3968               keep_going (ecs);
3969               return;
3970             }
3971         }
3972       else if (singlestep_breakpoints_inserted_p)
3973         {
3974           ecs->random_signal = 0;
3975         }
3976     }
3977   else
3978     ecs->random_signal = 1;
3979
3980   /* See if something interesting happened to the non-current thread.  If
3981      so, then switch to that thread.  */
3982   if (!ptid_equal (ecs->ptid, inferior_ptid))
3983     {
3984       if (debug_infrun)
3985         fprintf_unfiltered (gdb_stdlog, "infrun: context switch\n");
3986
3987       context_switch (ecs->ptid);
3988
3989       if (deprecated_context_hook)
3990         deprecated_context_hook (pid_to_thread_id (ecs->ptid));
3991     }
3992
3993   /* At this point, get hold of the now-current thread's frame.  */
3994   frame = get_current_frame ();
3995   gdbarch = get_frame_arch (frame);
3996
3997   if (singlestep_breakpoints_inserted_p)
3998     {
3999       /* Pull the single step breakpoints out of the target.  */
4000       remove_single_step_breakpoints ();
4001       singlestep_breakpoints_inserted_p = 0;
4002     }
4003
4004   if (stepped_after_stopped_by_watchpoint)
4005     stopped_by_watchpoint = 0;
4006   else
4007     stopped_by_watchpoint = watchpoints_triggered (&ecs->ws);
4008
4009   /* If necessary, step over this watchpoint.  We'll be back to display
4010      it in a moment.  */
4011   if (stopped_by_watchpoint
4012       && (target_have_steppable_watchpoint
4013           || gdbarch_have_nonsteppable_watchpoint (gdbarch)))
4014     {
4015       /* At this point, we are stopped at an instruction which has
4016          attempted to write to a piece of memory under control of
4017          a watchpoint.  The instruction hasn't actually executed
4018          yet.  If we were to evaluate the watchpoint expression
4019          now, we would get the old value, and therefore no change
4020          would seem to have occurred.
4021
4022          In order to make watchpoints work `right', we really need
4023          to complete the memory write, and then evaluate the
4024          watchpoint expression.  We do this by single-stepping the
4025          target.
4026
4027          It may not be necessary to disable the watchpoint to stop over
4028          it.  For example, the PA can (with some kernel cooperation)
4029          single step over a watchpoint without disabling the watchpoint.
4030
4031          It is far more common to need to disable a watchpoint to step
4032          the inferior over it.  If we have non-steppable watchpoints,
4033          we must disable the current watchpoint; it's simplest to
4034          disable all watchpoints and breakpoints.  */
4035       int hw_step = 1;
4036
4037       if (!target_have_steppable_watchpoint)
4038         {
4039           remove_breakpoints ();
4040           /* See comment in resume why we need to stop bypassing signals
4041              while breakpoints have been removed.  */
4042           target_pass_signals (0, NULL);
4043         }
4044         /* Single step */
4045       hw_step = maybe_software_singlestep (gdbarch, stop_pc);
4046       target_resume (ecs->ptid, hw_step, GDB_SIGNAL_0);
4047       waiton_ptid = ecs->ptid;
4048       if (target_have_steppable_watchpoint)
4049         infwait_state = infwait_step_watch_state;
4050       else
4051         infwait_state = infwait_nonstep_watch_state;
4052       prepare_to_wait (ecs);
4053       return;
4054     }
4055
4056   clear_stop_func (ecs);
4057   ecs->event_thread->stepping_over_breakpoint = 0;
4058   bpstat_clear (&ecs->event_thread->control.stop_bpstat);
4059   ecs->event_thread->control.stop_step = 0;
4060   stop_print_frame = 1;
4061   ecs->random_signal = 0;
4062   stopped_by_random_signal = 0;
4063
4064   /* Hide inlined functions starting here, unless we just performed stepi or
4065      nexti.  After stepi and nexti, always show the innermost frame (not any
4066      inline function call sites).  */
4067   if (ecs->event_thread->control.step_range_end != 1)
4068     {
4069       struct address_space *aspace = 
4070         get_regcache_aspace (get_thread_regcache (ecs->ptid));
4071
4072       /* skip_inline_frames is expensive, so we avoid it if we can
4073          determine that the address is one where functions cannot have
4074          been inlined.  This improves performance with inferiors that
4075          load a lot of shared libraries, because the solib event
4076          breakpoint is defined as the address of a function (i.e. not
4077          inline).  Note that we have to check the previous PC as well
4078          as the current one to catch cases when we have just
4079          single-stepped off a breakpoint prior to reinstating it.
4080          Note that we're assuming that the code we single-step to is
4081          not inline, but that's not definitive: there's nothing
4082          preventing the event breakpoint function from containing
4083          inlined code, and the single-step ending up there.  If the
4084          user had set a breakpoint on that inlined code, the missing
4085          skip_inline_frames call would break things.  Fortunately
4086          that's an extremely unlikely scenario.  */
4087       if (!pc_at_non_inline_function (aspace, stop_pc, &ecs->ws)
4088           && !(ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP
4089                && ecs->event_thread->control.trap_expected
4090                && pc_at_non_inline_function (aspace,
4091                                              ecs->event_thread->prev_pc,
4092                                              &ecs->ws)))
4093         skip_inline_frames (ecs->ptid);
4094     }
4095
4096   if (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP
4097       && ecs->event_thread->control.trap_expected
4098       && gdbarch_single_step_through_delay_p (gdbarch)
4099       && currently_stepping (ecs->event_thread))
4100     {
4101       /* We're trying to step off a breakpoint.  Turns out that we're
4102          also on an instruction that needs to be stepped multiple
4103          times before it's been fully executing.  E.g., architectures
4104          with a delay slot.  It needs to be stepped twice, once for
4105          the instruction and once for the delay slot.  */
4106       int step_through_delay
4107         = gdbarch_single_step_through_delay (gdbarch, frame);
4108
4109       if (debug_infrun && step_through_delay)
4110         fprintf_unfiltered (gdb_stdlog, "infrun: step through delay\n");
4111       if (ecs->event_thread->control.step_range_end == 0
4112           && step_through_delay)
4113         {
4114           /* The user issued a continue when stopped at a breakpoint.
4115              Set up for another trap and get out of here.  */
4116          ecs->event_thread->stepping_over_breakpoint = 1;
4117          keep_going (ecs);
4118          return;
4119         }
4120       else if (step_through_delay)
4121         {
4122           /* The user issued a step when stopped at a breakpoint.
4123              Maybe we should stop, maybe we should not - the delay
4124              slot *might* correspond to a line of source.  In any
4125              case, don't decide that here, just set 
4126              ecs->stepping_over_breakpoint, making sure we 
4127              single-step again before breakpoints are re-inserted.  */
4128           ecs->event_thread->stepping_over_breakpoint = 1;
4129         }
4130     }
4131
4132   /* Look at the cause of the stop, and decide what to do.
4133      The alternatives are:
4134      1) stop_stepping and return; to really stop and return to the debugger,
4135      2) keep_going and return to start up again
4136      (set ecs->event_thread->stepping_over_breakpoint to 1 to single step once)
4137      3) set ecs->random_signal to 1, and the decision between 1 and 2
4138      will be made according to the signal handling tables.  */
4139
4140   if (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP
4141       || stop_soon == STOP_QUIETLY || stop_soon == STOP_QUIETLY_NO_SIGSTOP
4142       || stop_soon == STOP_QUIETLY_REMOTE)
4143     {
4144       if (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP
4145           && stop_after_trap)
4146         {
4147           if (debug_infrun)
4148             fprintf_unfiltered (gdb_stdlog, "infrun: stopped\n");
4149           stop_print_frame = 0;
4150           stop_stepping (ecs);
4151           return;
4152         }
4153
4154       /* This is originated from start_remote(), start_inferior() and
4155          shared libraries hook functions.  */
4156       if (stop_soon == STOP_QUIETLY || stop_soon == STOP_QUIETLY_REMOTE)
4157         {
4158           if (debug_infrun)
4159             fprintf_unfiltered (gdb_stdlog, "infrun: quietly stopped\n");
4160           stop_stepping (ecs);
4161           return;
4162         }
4163
4164       /* This originates from attach_command().  We need to overwrite
4165          the stop_signal here, because some kernels don't ignore a
4166          SIGSTOP in a subsequent ptrace(PTRACE_CONT,SIGSTOP) call.
4167          See more comments in inferior.h.  On the other hand, if we
4168          get a non-SIGSTOP, report it to the user - assume the backend
4169          will handle the SIGSTOP if it should show up later.
4170
4171          Also consider that the attach is complete when we see a
4172          SIGTRAP.  Some systems (e.g. Windows), and stubs supporting
4173          target extended-remote report it instead of a SIGSTOP
4174          (e.g. gdbserver).  We already rely on SIGTRAP being our
4175          signal, so this is no exception.
4176
4177          Also consider that the attach is complete when we see a
4178          GDB_SIGNAL_0.  In non-stop mode, GDB will explicitly tell
4179          the target to stop all threads of the inferior, in case the
4180          low level attach operation doesn't stop them implicitly.  If
4181          they weren't stopped implicitly, then the stub will report a
4182          GDB_SIGNAL_0, meaning: stopped for no particular reason
4183          other than GDB's request.  */
4184       if (stop_soon == STOP_QUIETLY_NO_SIGSTOP
4185           && (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_STOP
4186               || ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP
4187               || ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_0))
4188         {
4189           stop_stepping (ecs);
4190           ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0;
4191           return;
4192         }
4193
4194       /* See if there is a breakpoint/watchpoint/catchpoint/etc. that
4195          handles this event.  */
4196       ecs->event_thread->control.stop_bpstat
4197         = bpstat_stop_status (get_regcache_aspace (get_current_regcache ()),
4198                               stop_pc, ecs->ptid, &ecs->ws);
4199
4200       /* Following in case break condition called a
4201          function.  */
4202       stop_print_frame = 1;
4203
4204       /* This is where we handle "moribund" watchpoints.  Unlike
4205          software breakpoints traps, hardware watchpoint traps are
4206          always distinguishable from random traps.  If no high-level
4207          watchpoint is associated with the reported stop data address
4208          anymore, then the bpstat does not explain the signal ---
4209          simply make sure to ignore it if `stopped_by_watchpoint' is
4210          set.  */
4211
4212       if (debug_infrun
4213           && ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP
4214           && !bpstat_explains_signal (ecs->event_thread->control.stop_bpstat)
4215           && stopped_by_watchpoint)
4216         fprintf_unfiltered (gdb_stdlog,
4217                             "infrun: no user watchpoint explains "
4218                             "watchpoint SIGTRAP, ignoring\n");
4219
4220       /* NOTE: cagney/2003-03-29: These two checks for a random signal
4221          at one stage in the past included checks for an inferior
4222          function call's call dummy's return breakpoint.  The original
4223          comment, that went with the test, read:
4224
4225          ``End of a stack dummy.  Some systems (e.g. Sony news) give
4226          another signal besides SIGTRAP, so check here as well as
4227          above.''
4228
4229          If someone ever tries to get call dummys on a
4230          non-executable stack to work (where the target would stop
4231          with something like a SIGSEGV), then those tests might need
4232          to be re-instated.  Given, however, that the tests were only
4233          enabled when momentary breakpoints were not being used, I
4234          suspect that it won't be the case.
4235
4236          NOTE: kettenis/2004-02-05: Indeed such checks don't seem to
4237          be necessary for call dummies on a non-executable stack on
4238          SPARC.  */
4239
4240       if (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP)
4241         ecs->random_signal
4242           = !(bpstat_explains_signal (ecs->event_thread->control.stop_bpstat)
4243               || stopped_by_watchpoint
4244               || ecs->event_thread->control.trap_expected
4245               || (ecs->event_thread->control.step_range_end
4246                   && (ecs->event_thread->control.step_resume_breakpoint
4247                       == NULL)));
4248       else
4249         {
4250           ecs->random_signal = !bpstat_explains_signal
4251                                      (ecs->event_thread->control.stop_bpstat);
4252           if (!ecs->random_signal)
4253             ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_TRAP;
4254         }
4255     }
4256
4257   /* When we reach this point, we've pretty much decided
4258      that the reason for stopping must've been a random
4259      (unexpected) signal.  */
4260
4261   else
4262     ecs->random_signal = 1;
4263
4264 process_event_stop_test:
4265
4266   /* Re-fetch current thread's frame in case we did a
4267      "goto process_event_stop_test" above.  */
4268   frame = get_current_frame ();
4269   gdbarch = get_frame_arch (frame);
4270
4271   /* For the program's own signals, act according to
4272      the signal handling tables.  */
4273
4274   if (ecs->random_signal)
4275     {
4276       /* Signal not for debugging purposes.  */
4277       int printed = 0;
4278       struct inferior *inf = find_inferior_pid (ptid_get_pid (ecs->ptid));
4279
4280       if (debug_infrun)
4281          fprintf_unfiltered (gdb_stdlog, "infrun: random signal %d\n",
4282                              ecs->event_thread->suspend.stop_signal);
4283
4284       stopped_by_random_signal = 1;
4285
4286       if (signal_print[ecs->event_thread->suspend.stop_signal])
4287         {
4288           printed = 1;
4289           target_terminal_ours_for_output ();
4290           print_signal_received_reason
4291                                      (ecs->event_thread->suspend.stop_signal);
4292         }
4293       /* Always stop on signals if we're either just gaining control
4294          of the program, or the user explicitly requested this thread
4295          to remain stopped.  */
4296       if (stop_soon != NO_STOP_QUIETLY
4297           || ecs->event_thread->stop_requested
4298           || (!inf->detaching
4299               && signal_stop_state (ecs->event_thread->suspend.stop_signal)))
4300         {
4301           stop_stepping (ecs);
4302           return;
4303         }
4304       /* If not going to stop, give terminal back
4305          if we took it away.  */
4306       else if (printed)
4307         target_terminal_inferior ();
4308
4309       /* Clear the signal if it should not be passed.  */
4310       if (signal_program[ecs->event_thread->suspend.stop_signal] == 0)
4311         ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0;
4312
4313       if (ecs->event_thread->prev_pc == stop_pc
4314           && ecs->event_thread->control.trap_expected
4315           && ecs->event_thread->control.step_resume_breakpoint == NULL)
4316         {
4317           /* We were just starting a new sequence, attempting to
4318              single-step off of a breakpoint and expecting a SIGTRAP.
4319              Instead this signal arrives.  This signal will take us out
4320              of the stepping range so GDB needs to remember to, when
4321              the signal handler returns, resume stepping off that
4322              breakpoint.  */
4323           /* To simplify things, "continue" is forced to use the same
4324              code paths as single-step - set a breakpoint at the
4325              signal return address and then, once hit, step off that
4326              breakpoint.  */
4327           if (debug_infrun)
4328             fprintf_unfiltered (gdb_stdlog,
4329                                 "infrun: signal arrived while stepping over "
4330                                 "breakpoint\n");
4331
4332           insert_hp_step_resume_breakpoint_at_frame (frame);
4333           ecs->event_thread->step_after_step_resume_breakpoint = 1;
4334           /* Reset trap_expected to ensure breakpoints are re-inserted.  */
4335           ecs->event_thread->control.trap_expected = 0;
4336           keep_going (ecs);
4337           return;
4338         }
4339
4340       if (ecs->event_thread->control.step_range_end != 0
4341           && ecs->event_thread->suspend.stop_signal != GDB_SIGNAL_0
4342           && (ecs->event_thread->control.step_range_start <= stop_pc
4343               && stop_pc < ecs->event_thread->control.step_range_end)
4344           && frame_id_eq (get_stack_frame_id (frame),
4345                           ecs->event_thread->control.step_stack_frame_id)
4346           && ecs->event_thread->control.step_resume_breakpoint == NULL)
4347         {
4348           /* The inferior is about to take a signal that will take it
4349              out of the single step range.  Set a breakpoint at the
4350              current PC (which is presumably where the signal handler
4351              will eventually return) and then allow the inferior to
4352              run free.
4353
4354              Note that this is only needed for a signal delivered
4355              while in the single-step range.  Nested signals aren't a
4356              problem as they eventually all return.  */
4357           if (debug_infrun)
4358             fprintf_unfiltered (gdb_stdlog,
4359                                 "infrun: signal may take us out of "
4360                                 "single-step range\n");
4361
4362           insert_hp_step_resume_breakpoint_at_frame (frame);
4363           /* Reset trap_expected to ensure breakpoints are re-inserted.  */
4364           ecs->event_thread->control.trap_expected = 0;
4365           keep_going (ecs);
4366           return;
4367         }
4368
4369       /* Note: step_resume_breakpoint may be non-NULL.  This occures
4370          when either there's a nested signal, or when there's a
4371          pending signal enabled just as the signal handler returns
4372          (leaving the inferior at the step-resume-breakpoint without
4373          actually executing it).  Either way continue until the
4374          breakpoint is really hit.  */
4375       keep_going (ecs);
4376       return;
4377     }
4378
4379   /* Handle cases caused by hitting a breakpoint.  */
4380   {
4381     CORE_ADDR jmp_buf_pc;
4382     struct bpstat_what what;
4383
4384     what = bpstat_what (ecs->event_thread->control.stop_bpstat);
4385
4386     if (what.call_dummy)
4387       {
4388         stop_stack_dummy = what.call_dummy;
4389       }
4390
4391     /* If we hit an internal event that triggers symbol changes, the
4392        current frame will be invalidated within bpstat_what (e.g., if
4393        we hit an internal solib event).  Re-fetch it.  */
4394     frame = get_current_frame ();
4395     gdbarch = get_frame_arch (frame);
4396
4397     switch (what.main_action)
4398       {
4399       case BPSTAT_WHAT_SET_LONGJMP_RESUME:
4400         /* If we hit the breakpoint at longjmp while stepping, we
4401            install a momentary breakpoint at the target of the
4402            jmp_buf.  */
4403
4404         if (debug_infrun)
4405           fprintf_unfiltered (gdb_stdlog,
4406                               "infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME\n");
4407
4408         ecs->event_thread->stepping_over_breakpoint = 1;
4409
4410         if (what.is_longjmp)
4411           {
4412             struct value *arg_value;
4413
4414             /* If we set the longjmp breakpoint via a SystemTap probe,
4415                then use it to extract the arguments.  The destination
4416                PC is the third argument to the probe.  */
4417             arg_value = probe_safe_evaluate_at_pc (frame, 2);
4418             if (arg_value)
4419               jmp_buf_pc = value_as_address (arg_value);
4420             else if (!gdbarch_get_longjmp_target_p (gdbarch)
4421                      || !gdbarch_get_longjmp_target (gdbarch,
4422                                                      frame, &jmp_buf_pc))
4423               {
4424                 if (debug_infrun)
4425                   fprintf_unfiltered (gdb_stdlog,
4426                                       "infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME "
4427                                       "(!gdbarch_get_longjmp_target)\n");
4428                 keep_going (ecs);
4429                 return;
4430               }
4431
4432             /* We're going to replace the current step-resume breakpoint
4433                with a longjmp-resume breakpoint.  */
4434             delete_step_resume_breakpoint (ecs->event_thread);
4435
4436             /* Insert a breakpoint at resume address.  */
4437             insert_longjmp_resume_breakpoint (gdbarch, jmp_buf_pc);
4438           }
4439         else
4440           check_exception_resume (ecs, frame);
4441         keep_going (ecs);
4442         return;
4443
4444       case BPSTAT_WHAT_CLEAR_LONGJMP_RESUME:
4445         if (debug_infrun)
4446           fprintf_unfiltered (gdb_stdlog,
4447                               "infrun: BPSTAT_WHAT_CLEAR_LONGJMP_RESUME\n");
4448
4449         if (what.is_longjmp)
4450           {
4451             gdb_assert (ecs->event_thread->control.step_resume_breakpoint
4452                         != NULL);
4453             delete_step_resume_breakpoint (ecs->event_thread);
4454           }
4455         else
4456           {
4457             /* There are several cases to consider.
4458
4459                1. The initiating frame no longer exists.  In this case
4460                we must stop, because the exception has gone too far.
4461
4462                2. The initiating frame exists, and is the same as the
4463                current frame.  We stop, because the exception has been
4464                caught.
4465
4466                3. The initiating frame exists and is different from
4467                the current frame.  This means the exception has been
4468                caught beneath the initiating frame, so keep going.  */
4469             struct frame_info *init_frame
4470               = frame_find_by_id (ecs->event_thread->initiating_frame);
4471
4472             gdb_assert (ecs->event_thread->control.exception_resume_breakpoint
4473                         != NULL);
4474             delete_exception_resume_breakpoint (ecs->event_thread);
4475
4476             if (init_frame)
4477               {
4478                 struct frame_id current_id
4479                   = get_frame_id (get_current_frame ());
4480                 if (frame_id_eq (current_id,
4481                                  ecs->event_thread->initiating_frame))
4482                   {
4483                     /* Case 2.  Fall through.  */
4484                   }
4485                 else
4486                   {
4487                     /* Case 3.  */
4488                     keep_going (ecs);
4489                     return;
4490                   }
4491               }
4492
4493             /* For Cases 1 and 2, remove the step-resume breakpoint,
4494                if it exists.  */
4495             delete_step_resume_breakpoint (ecs->event_thread);
4496           }
4497
4498         ecs->event_thread->control.stop_step = 1;
4499         print_end_stepping_range_reason ();
4500         stop_stepping (ecs);
4501         return;
4502
4503       case BPSTAT_WHAT_SINGLE:
4504         if (debug_infrun)
4505           fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_SINGLE\n");
4506         ecs->event_thread->stepping_over_breakpoint = 1;
4507         /* Still need to check other stuff, at least the case
4508            where we are stepping and step out of the right range.  */
4509         break;
4510
4511       case BPSTAT_WHAT_STEP_RESUME:
4512         if (debug_infrun)
4513           fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_STEP_RESUME\n");
4514
4515         delete_step_resume_breakpoint (ecs->event_thread);
4516         if (ecs->event_thread->control.proceed_to_finish
4517             && execution_direction == EXEC_REVERSE)
4518           {
4519             struct thread_info *tp = ecs->event_thread;
4520
4521             /* We are finishing a function in reverse, and just hit
4522                the step-resume breakpoint at the start address of the
4523                function, and we're almost there -- just need to back
4524                up by one more single-step, which should take us back
4525                to the function call.  */
4526             tp->control.step_range_start = tp->control.step_range_end = 1;
4527             keep_going (ecs);
4528             return;
4529           }
4530         fill_in_stop_func (gdbarch, ecs);
4531         if (stop_pc == ecs->stop_func_start
4532             && execution_direction == EXEC_REVERSE)
4533           {
4534             /* We are stepping over a function call in reverse, and
4535                just hit the step-resume breakpoint at the start
4536                address of the function.  Go back to single-stepping,
4537                which should take us back to the function call.  */
4538             ecs->event_thread->stepping_over_breakpoint = 1;
4539             keep_going (ecs);
4540             return;
4541           }
4542         break;
4543
4544       case BPSTAT_WHAT_STOP_NOISY:
4545         if (debug_infrun)
4546           fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_STOP_NOISY\n");
4547         stop_print_frame = 1;
4548
4549         /* We are about to nuke the step_resume_breakpointt via the
4550            cleanup chain, so no need to worry about it here.  */
4551
4552         stop_stepping (ecs);
4553         return;
4554
4555       case BPSTAT_WHAT_STOP_SILENT:
4556         if (debug_infrun)
4557           fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_STOP_SILENT\n");
4558         stop_print_frame = 0;
4559
4560         /* We are about to nuke the step_resume_breakpoin via the
4561            cleanup chain, so no need to worry about it here.  */
4562
4563         stop_stepping (ecs);
4564         return;
4565
4566       case BPSTAT_WHAT_HP_STEP_RESUME:
4567         if (debug_infrun)
4568           fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_HP_STEP_RESUME\n");
4569
4570         delete_step_resume_breakpoint (ecs->event_thread);
4571         if (ecs->event_thread->step_after_step_resume_breakpoint)
4572           {
4573             /* Back when the step-resume breakpoint was inserted, we
4574                were trying to single-step off a breakpoint.  Go back
4575                to doing that.  */
4576             ecs->event_thread->step_after_step_resume_breakpoint = 0;
4577             ecs->event_thread->stepping_over_breakpoint = 1;
4578             keep_going (ecs);
4579             return;
4580           }
4581         break;
4582
4583       case BPSTAT_WHAT_KEEP_CHECKING:
4584         break;
4585       }
4586   }
4587
4588   /* We come here if we hit a breakpoint but should not
4589      stop for it.  Possibly we also were stepping
4590      and should stop for that.  So fall through and
4591      test for stepping.  But, if not stepping,
4592      do not stop.  */
4593
4594   /* In all-stop mode, if we're currently stepping but have stopped in
4595      some other thread, we need to switch back to the stepped thread.  */
4596   if (!non_stop)
4597     {
4598       struct thread_info *tp;
4599
4600       tp = iterate_over_threads (currently_stepping_or_nexting_callback,
4601                                  ecs->event_thread);
4602       if (tp)
4603         {
4604           /* However, if the current thread is blocked on some internal
4605              breakpoint, and we simply need to step over that breakpoint
4606              to get it going again, do that first.  */
4607           if ((ecs->event_thread->control.trap_expected
4608                && ecs->event_thread->suspend.stop_signal != GDB_SIGNAL_TRAP)
4609               || ecs->event_thread->stepping_over_breakpoint)
4610             {
4611               keep_going (ecs);
4612               return;
4613             }
4614
4615           /* If the stepping thread exited, then don't try to switch
4616              back and resume it, which could fail in several different
4617              ways depending on the target.  Instead, just keep going.
4618
4619              We can find a stepping dead thread in the thread list in
4620              two cases:
4621
4622              - The target supports thread exit events, and when the
4623              target tries to delete the thread from the thread list,
4624              inferior_ptid pointed at the exiting thread.  In such
4625              case, calling delete_thread does not really remove the
4626              thread from the list; instead, the thread is left listed,
4627              with 'exited' state.
4628
4629              - The target's debug interface does not support thread
4630              exit events, and so we have no idea whatsoever if the
4631              previously stepping thread is still alive.  For that
4632              reason, we need to synchronously query the target
4633              now.  */
4634           if (is_exited (tp->ptid)
4635               || !target_thread_alive (tp->ptid))
4636             {
4637               if (debug_infrun)
4638                 fprintf_unfiltered (gdb_stdlog,
4639                                     "infrun: not switching back to "
4640                                     "stepped thread, it has vanished\n");
4641
4642               delete_thread (tp->ptid);
4643               keep_going (ecs);
4644               return;
4645             }
4646
4647           /* Otherwise, we no longer expect a trap in the current thread.
4648              Clear the trap_expected flag before switching back -- this is
4649              what keep_going would do as well, if we called it.  */
4650           ecs->event_thread->control.trap_expected = 0;
4651
4652           if (debug_infrun)
4653             fprintf_unfiltered (gdb_stdlog,
4654                                 "infrun: switching back to stepped thread\n");
4655
4656           ecs->event_thread = tp;
4657           ecs->ptid = tp->ptid;
4658           context_switch (ecs->ptid);
4659           keep_going (ecs);
4660           return;
4661         }
4662     }
4663
4664   if (ecs->event_thread->control.step_resume_breakpoint)
4665     {
4666       if (debug_infrun)
4667          fprintf_unfiltered (gdb_stdlog,
4668                              "infrun: step-resume breakpoint is inserted\n");
4669
4670       /* Having a step-resume breakpoint overrides anything
4671          else having to do with stepping commands until
4672          that breakpoint is reached.  */
4673       keep_going (ecs);
4674       return;
4675     }
4676
4677   if (ecs->event_thread->control.step_range_end == 0)
4678     {
4679       if (debug_infrun)
4680          fprintf_unfiltered (gdb_stdlog, "infrun: no stepping, continue\n");
4681       /* Likewise if we aren't even stepping.  */
4682       keep_going (ecs);
4683       return;
4684     }
4685
4686   /* Re-fetch current thread's frame in case the code above caused
4687      the frame cache to be re-initialized, making our FRAME variable
4688      a dangling pointer.  */
4689   frame = get_current_frame ();
4690   gdbarch = get_frame_arch (frame);
4691   fill_in_stop_func (gdbarch, ecs);
4692
4693   /* If stepping through a line, keep going if still within it.
4694
4695      Note that step_range_end is the address of the first instruction
4696      beyond the step range, and NOT the address of the last instruction
4697      within it!
4698
4699      Note also that during reverse execution, we may be stepping
4700      through a function epilogue and therefore must detect when
4701      the current-frame changes in the middle of a line.  */
4702
4703   if (stop_pc >= ecs->event_thread->control.step_range_start
4704       && stop_pc < ecs->event_thread->control.step_range_end
4705       && (execution_direction != EXEC_REVERSE
4706           || frame_id_eq (get_frame_id (frame),
4707                           ecs->event_thread->control.step_frame_id)))
4708     {
4709       if (debug_infrun)
4710         fprintf_unfiltered
4711           (gdb_stdlog, "infrun: stepping inside range [%s-%s]\n",
4712            paddress (gdbarch, ecs->event_thread->control.step_range_start),
4713            paddress (gdbarch, ecs->event_thread->control.step_range_end));
4714
4715       /* When stepping backward, stop at beginning of line range
4716          (unless it's the function entry point, in which case
4717          keep going back to the call point).  */
4718       if (stop_pc == ecs->event_thread->control.step_range_start
4719           && stop_pc != ecs->stop_func_start
4720           && execution_direction == EXEC_REVERSE)
4721         {
4722           ecs->event_thread->control.stop_step = 1;
4723           print_end_stepping_range_reason ();
4724           stop_stepping (ecs);
4725         }
4726       else
4727         keep_going (ecs);
4728
4729       return;
4730     }
4731
4732   /* We stepped out of the stepping range.  */
4733
4734   /* If we are stepping at the source level and entered the runtime
4735      loader dynamic symbol resolution code...
4736
4737      EXEC_FORWARD: we keep on single stepping until we exit the run
4738      time loader code and reach the callee's address.
4739
4740      EXEC_REVERSE: we've already executed the callee (backward), and
4741      the runtime loader code is handled just like any other
4742      undebuggable function call.  Now we need only keep stepping
4743      backward through the trampoline code, and that's handled further
4744      down, so there is nothing for us to do here.  */
4745
4746   if (execution_direction != EXEC_REVERSE
4747       && ecs->event_thread->control.step_over_calls == STEP_OVER_UNDEBUGGABLE
4748       && in_solib_dynsym_resolve_code (stop_pc))
4749     {
4750       CORE_ADDR pc_after_resolver =
4751         gdbarch_skip_solib_resolver (gdbarch, stop_pc);
4752
4753       if (debug_infrun)
4754          fprintf_unfiltered (gdb_stdlog,
4755                              "infrun: stepped into dynsym resolve code\n");
4756
4757       if (pc_after_resolver)
4758         {
4759           /* Set up a step-resume breakpoint at the address
4760              indicated by SKIP_SOLIB_RESOLVER.  */
4761           struct symtab_and_line sr_sal;
4762
4763           init_sal (&sr_sal);
4764           sr_sal.pc = pc_after_resolver;
4765           sr_sal.pspace = get_frame_program_space (frame);
4766
4767           insert_step_resume_breakpoint_at_sal (gdbarch,
4768                                                 sr_sal, null_frame_id);
4769         }
4770
4771       keep_going (ecs);
4772       return;
4773     }
4774
4775   if (ecs->event_thread->control.step_range_end != 1
4776       && (ecs->event_thread->control.step_over_calls == STEP_OVER_UNDEBUGGABLE
4777           || ecs->event_thread->control.step_over_calls == STEP_OVER_ALL)
4778       && get_frame_type (frame) == SIGTRAMP_FRAME)
4779     {
4780       if (debug_infrun)
4781          fprintf_unfiltered (gdb_stdlog,
4782                              "infrun: stepped into signal trampoline\n");
4783       /* The inferior, while doing a "step" or "next", has ended up in
4784          a signal trampoline (either by a signal being delivered or by
4785          the signal handler returning).  Just single-step until the
4786          inferior leaves the trampoline (either by calling the handler
4787          or returning).  */
4788       keep_going (ecs);
4789       return;
4790     }
4791
4792   /* If we're in the return path from a shared library trampoline,
4793      we want to proceed through the trampoline when stepping.  */
4794   /* macro/2012-04-25: This needs to come before the subroutine
4795      call check below as on some targets return trampolines look
4796      like subroutine calls (MIPS16 return thunks).  */
4797   if (gdbarch_in_solib_return_trampoline (gdbarch,
4798                                           stop_pc, ecs->stop_func_name)
4799       && ecs->event_thread->control.step_over_calls != STEP_OVER_NONE)
4800     {
4801       /* Determine where this trampoline returns.  */
4802       CORE_ADDR real_stop_pc;
4803
4804       real_stop_pc = gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc);
4805
4806       if (debug_infrun)
4807          fprintf_unfiltered (gdb_stdlog,
4808                              "infrun: stepped into solib return tramp\n");
4809
4810       /* Only proceed through if we know where it's going.  */
4811       if (real_stop_pc)
4812         {
4813           /* And put the step-breakpoint there and go until there.  */
4814           struct symtab_and_line sr_sal;
4815
4816           init_sal (&sr_sal);   /* initialize to zeroes */
4817           sr_sal.pc = real_stop_pc;
4818           sr_sal.section = find_pc_overlay (sr_sal.pc);
4819           sr_sal.pspace = get_frame_program_space (frame);
4820
4821           /* Do not specify what the fp should be when we stop since
4822              on some machines the prologue is where the new fp value
4823              is established.  */
4824           insert_step_resume_breakpoint_at_sal (gdbarch,
4825                                                 sr_sal, null_frame_id);
4826
4827           /* Restart without fiddling with the step ranges or
4828              other state.  */
4829           keep_going (ecs);
4830           return;
4831         }
4832     }
4833
4834   /* Check for subroutine calls.  The check for the current frame
4835      equalling the step ID is not necessary - the check of the
4836      previous frame's ID is sufficient - but it is a common case and
4837      cheaper than checking the previous frame's ID.
4838
4839      NOTE: frame_id_eq will never report two invalid frame IDs as
4840      being equal, so to get into this block, both the current and
4841      previous frame must have valid frame IDs.  */
4842   /* The outer_frame_id check is a heuristic to detect stepping
4843      through startup code.  If we step over an instruction which
4844      sets the stack pointer from an invalid value to a valid value,
4845      we may detect that as a subroutine call from the mythical
4846      "outermost" function.  This could be fixed by marking
4847      outermost frames as !stack_p,code_p,special_p.  Then the
4848      initial outermost frame, before sp was valid, would
4849      have code_addr == &_start.  See the comment in frame_id_eq
4850      for more.  */
4851   if (!frame_id_eq (get_stack_frame_id (frame),
4852                     ecs->event_thread->control.step_stack_frame_id)
4853       && (frame_id_eq (frame_unwind_caller_id (get_current_frame ()),
4854                        ecs->event_thread->control.step_stack_frame_id)
4855           && (!frame_id_eq (ecs->event_thread->control.step_stack_frame_id,
4856                             outer_frame_id)
4857               || step_start_function != find_pc_function (stop_pc))))
4858     {
4859       CORE_ADDR real_stop_pc;
4860
4861       if (debug_infrun)
4862          fprintf_unfiltered (gdb_stdlog, "infrun: stepped into subroutine\n");
4863
4864       if ((ecs->event_thread->control.step_over_calls == STEP_OVER_NONE)
4865           || ((ecs->event_thread->control.step_range_end == 1)
4866               && in_prologue (gdbarch, ecs->event_thread->prev_pc,
4867                               ecs->stop_func_start)))
4868         {
4869           /* I presume that step_over_calls is only 0 when we're
4870              supposed to be stepping at the assembly language level
4871              ("stepi").  Just stop.  */
4872           /* Also, maybe we just did a "nexti" inside a prolog, so we
4873              thought it was a subroutine call but it was not.  Stop as
4874              well.  FENN */
4875           /* And this works the same backward as frontward.  MVS */
4876           ecs->event_thread->control.stop_step = 1;
4877           print_end_stepping_range_reason ();
4878           stop_stepping (ecs);
4879           return;
4880         }
4881
4882       /* Reverse stepping through solib trampolines.  */
4883
4884       if (execution_direction == EXEC_REVERSE
4885           && ecs->event_thread->control.step_over_calls != STEP_OVER_NONE
4886           && (gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc)
4887               || (ecs->stop_func_start == 0
4888                   && in_solib_dynsym_resolve_code (stop_pc))))
4889         {
4890           /* Any solib trampoline code can be handled in reverse
4891              by simply continuing to single-step.  We have already
4892              executed the solib function (backwards), and a few 
4893              steps will take us back through the trampoline to the
4894              caller.  */
4895           keep_going (ecs);
4896           return;
4897         }
4898
4899       if (ecs->event_thread->control.step_over_calls == STEP_OVER_ALL)
4900         {
4901           /* We're doing a "next".
4902
4903              Normal (forward) execution: set a breakpoint at the
4904              callee's return address (the address at which the caller
4905              will resume).
4906
4907              Reverse (backward) execution.  set the step-resume
4908              breakpoint at the start of the function that we just
4909              stepped into (backwards), and continue to there.  When we
4910              get there, we'll need to single-step back to the caller.  */
4911
4912           if (execution_direction == EXEC_REVERSE)
4913             {
4914               struct symtab_and_line sr_sal;
4915
4916               /* Normal function call return (static or dynamic).  */
4917               init_sal (&sr_sal);
4918               sr_sal.pc = ecs->stop_func_start;
4919               sr_sal.pspace = get_frame_program_space (frame);
4920               insert_step_resume_breakpoint_at_sal (gdbarch,
4921                                                     sr_sal, null_frame_id);
4922             }
4923           else
4924             insert_step_resume_breakpoint_at_caller (frame);
4925
4926           keep_going (ecs);
4927           return;
4928         }
4929
4930       /* If we are in a function call trampoline (a stub between the
4931          calling routine and the real function), locate the real
4932          function.  That's what tells us (a) whether we want to step
4933          into it at all, and (b) what prologue we want to run to the
4934          end of, if we do step into it.  */
4935       real_stop_pc = skip_language_trampoline (frame, stop_pc);
4936       if (real_stop_pc == 0)
4937         real_stop_pc = gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc);
4938       if (real_stop_pc != 0)
4939         ecs->stop_func_start = real_stop_pc;
4940
4941       if (real_stop_pc != 0 && in_solib_dynsym_resolve_code (real_stop_pc))
4942         {
4943           struct symtab_and_line sr_sal;
4944
4945           init_sal (&sr_sal);
4946           sr_sal.pc = ecs->stop_func_start;
4947           sr_sal.pspace = get_frame_program_space (frame);
4948
4949           insert_step_resume_breakpoint_at_sal (gdbarch,
4950                                                 sr_sal, null_frame_id);
4951           keep_going (ecs);
4952           return;
4953         }
4954
4955       /* If we have line number information for the function we are
4956          thinking of stepping into and the function isn't on the skip
4957          list, step into it.
4958
4959          If there are several symtabs at that PC (e.g. with include
4960          files), just want to know whether *any* of them have line
4961          numbers.  find_pc_line handles this.  */
4962       {
4963         struct symtab_and_line tmp_sal;
4964
4965         tmp_sal = find_pc_line (ecs->stop_func_start, 0);
4966         if (tmp_sal.line != 0
4967             && !function_pc_is_marked_for_skip (ecs->stop_func_start))
4968           {
4969             if (execution_direction == EXEC_REVERSE)
4970               handle_step_into_function_backward (gdbarch, ecs);
4971             else
4972               handle_step_into_function (gdbarch, ecs);
4973             return;
4974           }
4975       }
4976
4977       /* If we have no line number and the step-stop-if-no-debug is
4978          set, we stop the step so that the user has a chance to switch
4979          in assembly mode.  */
4980       if (ecs->event_thread->control.step_over_calls == STEP_OVER_UNDEBUGGABLE
4981           && step_stop_if_no_debug)
4982         {
4983           ecs->event_thread->control.stop_step = 1;
4984           print_end_stepping_range_reason ();
4985           stop_stepping (ecs);
4986           return;
4987         }
4988
4989       if (execution_direction == EXEC_REVERSE)
4990         {
4991           /* Set a breakpoint at callee's start address.
4992              From there we can step once and be back in the caller.  */
4993           struct symtab_and_line sr_sal;
4994
4995           init_sal (&sr_sal);
4996           sr_sal.pc = ecs->stop_func_start;
4997           sr_sal.pspace = get_frame_program_space (frame);
4998           insert_step_resume_breakpoint_at_sal (gdbarch,
4999                                                 sr_sal, null_frame_id);
5000         }
5001       else
5002         /* Set a breakpoint at callee's return address (the address
5003            at which the caller will resume).  */
5004         insert_step_resume_breakpoint_at_caller (frame);
5005
5006       keep_going (ecs);
5007       return;
5008     }
5009
5010   /* Reverse stepping through solib trampolines.  */
5011
5012   if (execution_direction == EXEC_REVERSE
5013       && ecs->event_thread->control.step_over_calls != STEP_OVER_NONE)
5014     {
5015       if (gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc)
5016           || (ecs->stop_func_start == 0
5017               && in_solib_dynsym_resolve_code (stop_pc)))
5018         {
5019           /* Any solib trampoline code can be handled in reverse
5020              by simply continuing to single-step.  We have already
5021              executed the solib function (backwards), and a few 
5022              steps will take us back through the trampoline to the
5023              caller.  */
5024           keep_going (ecs);
5025           return;
5026         }
5027       else if (in_solib_dynsym_resolve_code (stop_pc))
5028         {
5029           /* Stepped backward into the solib dynsym resolver.
5030              Set a breakpoint at its start and continue, then
5031              one more step will take us out.  */
5032           struct symtab_and_line sr_sal;
5033
5034           init_sal (&sr_sal);
5035           sr_sal.pc = ecs->stop_func_start;
5036           sr_sal.pspace = get_frame_program_space (frame);
5037           insert_step_resume_breakpoint_at_sal (gdbarch, 
5038                                                 sr_sal, null_frame_id);
5039           keep_going (ecs);
5040           return;
5041         }
5042     }
5043
5044   stop_pc_sal = find_pc_line (stop_pc, 0);
5045
5046   /* NOTE: tausq/2004-05-24: This if block used to be done before all
5047      the trampoline processing logic, however, there are some trampolines 
5048      that have no names, so we should do trampoline handling first.  */
5049   if (ecs->event_thread->control.step_over_calls == STEP_OVER_UNDEBUGGABLE
5050       && ecs->stop_func_name == NULL
5051       && stop_pc_sal.line == 0)
5052     {
5053       if (debug_infrun)
5054          fprintf_unfiltered (gdb_stdlog,
5055                              "infrun: stepped into undebuggable function\n");
5056
5057       /* The inferior just stepped into, or returned to, an
5058          undebuggable function (where there is no debugging information
5059          and no line number corresponding to the address where the
5060          inferior stopped).  Since we want to skip this kind of code,
5061          we keep going until the inferior returns from this
5062          function - unless the user has asked us not to (via
5063          set step-mode) or we no longer know how to get back
5064          to the call site.  */
5065       if (step_stop_if_no_debug
5066           || !frame_id_p (frame_unwind_caller_id (frame)))
5067         {
5068           /* If we have no line number and the step-stop-if-no-debug
5069              is set, we stop the step so that the user has a chance to
5070              switch in assembly mode.  */
5071           ecs->event_thread->control.stop_step = 1;
5072           print_end_stepping_range_reason ();
5073           stop_stepping (ecs);
5074           return;
5075         }
5076       else
5077         {
5078           /* Set a breakpoint at callee's return address (the address
5079              at which the caller will resume).  */
5080           insert_step_resume_breakpoint_at_caller (frame);
5081           keep_going (ecs);
5082           return;
5083         }
5084     }
5085
5086   if (ecs->event_thread->control.step_range_end == 1)
5087     {
5088       /* It is stepi or nexti.  We always want to stop stepping after
5089          one instruction.  */
5090       if (debug_infrun)
5091          fprintf_unfiltered (gdb_stdlog, "infrun: stepi/nexti\n");
5092       ecs->event_thread->control.stop_step = 1;
5093       print_end_stepping_range_reason ();
5094       stop_stepping (ecs);
5095       return;
5096     }
5097
5098   if (stop_pc_sal.line == 0)
5099     {
5100       /* We have no line number information.  That means to stop
5101          stepping (does this always happen right after one instruction,
5102          when we do "s" in a function with no line numbers,
5103          or can this happen as a result of a return or longjmp?).  */
5104       if (debug_infrun)
5105          fprintf_unfiltered (gdb_stdlog, "infrun: no line number info\n");
5106       ecs->event_thread->control.stop_step = 1;
5107       print_end_stepping_range_reason ();
5108       stop_stepping (ecs);
5109       return;
5110     }
5111
5112   /* Look for "calls" to inlined functions, part one.  If the inline
5113      frame machinery detected some skipped call sites, we have entered
5114      a new inline function.  */
5115
5116   if (frame_id_eq (get_frame_id (get_current_frame ()),
5117                    ecs->event_thread->control.step_frame_id)
5118       && inline_skipped_frames (ecs->ptid))
5119     {
5120       struct symtab_and_line call_sal;
5121
5122       if (debug_infrun)
5123         fprintf_unfiltered (gdb_stdlog,
5124                             "infrun: stepped into inlined function\n");
5125
5126       find_frame_sal (get_current_frame (), &call_sal);
5127
5128       if (ecs->event_thread->control.step_over_calls != STEP_OVER_ALL)
5129         {
5130           /* For "step", we're going to stop.  But if the call site
5131              for this inlined function is on the same source line as
5132              we were previously stepping, go down into the function
5133              first.  Otherwise stop at the call site.  */
5134
5135           if (call_sal.line == ecs->event_thread->current_line
5136               && call_sal.symtab == ecs->event_thread->current_symtab)
5137             step_into_inline_frame (ecs->ptid);
5138
5139           ecs->event_thread->control.stop_step = 1;
5140           print_end_stepping_range_reason ();
5141           stop_stepping (ecs);
5142           return;
5143         }
5144       else
5145         {
5146           /* For "next", we should stop at the call site if it is on a
5147              different source line.  Otherwise continue through the
5148              inlined function.  */
5149           if (call_sal.line == ecs->event_thread->current_line
5150               && call_sal.symtab == ecs->event_thread->current_symtab)
5151             keep_going (ecs);
5152           else
5153             {
5154               ecs->event_thread->control.stop_step = 1;
5155               print_end_stepping_range_reason ();
5156               stop_stepping (ecs);
5157             }
5158           return;
5159         }
5160     }
5161
5162   /* Look for "calls" to inlined functions, part two.  If we are still
5163      in the same real function we were stepping through, but we have
5164      to go further up to find the exact frame ID, we are stepping
5165      through a more inlined call beyond its call site.  */
5166
5167   if (get_frame_type (get_current_frame ()) == INLINE_FRAME
5168       && !frame_id_eq (get_frame_id (get_current_frame ()),
5169                        ecs->event_thread->control.step_frame_id)
5170       && stepped_in_from (get_current_frame (),
5171                           ecs->event_thread->control.step_frame_id))
5172     {
5173       if (debug_infrun)
5174         fprintf_unfiltered (gdb_stdlog,
5175                             "infrun: stepping through inlined function\n");
5176
5177       if (ecs->event_thread->control.step_over_calls == STEP_OVER_ALL)
5178         keep_going (ecs);
5179       else
5180         {
5181           ecs->event_thread->control.stop_step = 1;
5182           print_end_stepping_range_reason ();
5183           stop_stepping (ecs);
5184         }
5185       return;
5186     }
5187
5188   if ((stop_pc == stop_pc_sal.pc)
5189       && (ecs->event_thread->current_line != stop_pc_sal.line
5190           || ecs->event_thread->current_symtab != stop_pc_sal.symtab))
5191     {
5192       /* We are at the start of a different line.  So stop.  Note that
5193          we don't stop if we step into the middle of a different line.
5194          That is said to make things like for (;;) statements work
5195          better.  */
5196       if (debug_infrun)
5197          fprintf_unfiltered (gdb_stdlog,
5198                              "infrun: stepped to a different line\n");
5199       ecs->event_thread->control.stop_step = 1;
5200       print_end_stepping_range_reason ();
5201       stop_stepping (ecs);
5202       return;
5203     }
5204
5205   /* We aren't done stepping.
5206
5207      Optimize by setting the stepping range to the line.
5208      (We might not be in the original line, but if we entered a
5209      new line in mid-statement, we continue stepping.  This makes
5210      things like for(;;) statements work better.)  */
5211
5212   ecs->event_thread->control.step_range_start = stop_pc_sal.pc;
5213   ecs->event_thread->control.step_range_end = stop_pc_sal.end;
5214   set_step_info (frame, stop_pc_sal);
5215
5216   if (debug_infrun)
5217      fprintf_unfiltered (gdb_stdlog, "infrun: keep going\n");
5218   keep_going (ecs);
5219 }
5220
5221 /* Is thread TP in the middle of single-stepping?  */
5222
5223 static int
5224 currently_stepping (struct thread_info *tp)
5225 {
5226   return ((tp->control.step_range_end
5227            && tp->control.step_resume_breakpoint == NULL)
5228           || tp->control.trap_expected
5229           || bpstat_should_step ());
5230 }
5231
5232 /* Returns true if any thread *but* the one passed in "data" is in the
5233    middle of stepping or of handling a "next".  */
5234
5235 static int
5236 currently_stepping_or_nexting_callback (struct thread_info *tp, void *data)
5237 {
5238   if (tp == data)
5239     return 0;
5240
5241   return (tp->control.step_range_end
5242           || tp->control.trap_expected);
5243 }
5244
5245 /* Inferior has stepped into a subroutine call with source code that
5246    we should not step over.  Do step to the first line of code in
5247    it.  */
5248
5249 static void
5250 handle_step_into_function (struct gdbarch *gdbarch,
5251                            struct execution_control_state *ecs)
5252 {
5253   struct symtab *s;
5254   struct symtab_and_line stop_func_sal, sr_sal;
5255
5256   fill_in_stop_func (gdbarch, ecs);
5257
5258   s = find_pc_symtab (stop_pc);
5259   if (s && s->language != language_asm)
5260     ecs->stop_func_start = gdbarch_skip_prologue (gdbarch,
5261                                                   ecs->stop_func_start);
5262
5263   stop_func_sal = find_pc_line (ecs->stop_func_start, 0);
5264   /* Use the step_resume_break to step until the end of the prologue,
5265      even if that involves jumps (as it seems to on the vax under
5266      4.2).  */
5267   /* If the prologue ends in the middle of a source line, continue to
5268      the end of that source line (if it is still within the function).
5269      Otherwise, just go to end of prologue.  */
5270   if (stop_func_sal.end
5271       && stop_func_sal.pc != ecs->stop_func_start
5272       && stop_func_sal.end < ecs->stop_func_end)
5273     ecs->stop_func_start = stop_func_sal.end;
5274
5275   /* Architectures which require breakpoint adjustment might not be able
5276      to place a breakpoint at the computed address.  If so, the test
5277      ``ecs->stop_func_start == stop_pc'' will never succeed.  Adjust
5278      ecs->stop_func_start to an address at which a breakpoint may be
5279      legitimately placed.
5280
5281      Note:  kevinb/2004-01-19:  On FR-V, if this adjustment is not
5282      made, GDB will enter an infinite loop when stepping through
5283      optimized code consisting of VLIW instructions which contain
5284      subinstructions corresponding to different source lines.  On
5285      FR-V, it's not permitted to place a breakpoint on any but the
5286      first subinstruction of a VLIW instruction.  When a breakpoint is
5287      set, GDB will adjust the breakpoint address to the beginning of
5288      the VLIW instruction.  Thus, we need to make the corresponding
5289      adjustment here when computing the stop address.  */
5290
5291   if (gdbarch_adjust_breakpoint_address_p (gdbarch))
5292     {
5293       ecs->stop_func_start
5294         = gdbarch_adjust_breakpoint_address (gdbarch,
5295                                              ecs->stop_func_start);
5296     }
5297
5298   if (ecs->stop_func_start == stop_pc)
5299     {
5300       /* We are already there: stop now.  */
5301       ecs->event_thread->control.stop_step = 1;
5302       print_end_stepping_range_reason ();
5303       stop_stepping (ecs);
5304       return;
5305     }
5306   else
5307     {
5308       /* Put the step-breakpoint there and go until there.  */
5309       init_sal (&sr_sal);       /* initialize to zeroes */
5310       sr_sal.pc = ecs->stop_func_start;
5311       sr_sal.section = find_pc_overlay (ecs->stop_func_start);
5312       sr_sal.pspace = get_frame_program_space (get_current_frame ());
5313
5314       /* Do not specify what the fp should be when we stop since on
5315          some machines the prologue is where the new fp value is
5316          established.  */
5317       insert_step_resume_breakpoint_at_sal (gdbarch, sr_sal, null_frame_id);
5318
5319       /* And make sure stepping stops right away then.  */
5320       ecs->event_thread->control.step_range_end
5321         = ecs->event_thread->control.step_range_start;
5322     }
5323   keep_going (ecs);
5324 }
5325
5326 /* Inferior has stepped backward into a subroutine call with source
5327    code that we should not step over.  Do step to the beginning of the
5328    last line of code in it.  */
5329
5330 static void
5331 handle_step_into_function_backward (struct gdbarch *gdbarch,
5332                                     struct execution_control_state *ecs)
5333 {
5334   struct symtab *s;
5335   struct symtab_and_line stop_func_sal;
5336
5337   fill_in_stop_func (gdbarch, ecs);
5338
5339   s = find_pc_symtab (stop_pc);
5340   if (s && s->language != language_asm)
5341     ecs->stop_func_start = gdbarch_skip_prologue (gdbarch,
5342                                                   ecs->stop_func_start);
5343
5344   stop_func_sal = find_pc_line (stop_pc, 0);
5345
5346   /* OK, we're just going to keep stepping here.  */
5347   if (stop_func_sal.pc == stop_pc)
5348     {
5349       /* We're there already.  Just stop stepping now.  */
5350       ecs->event_thread->control.stop_step = 1;
5351       print_end_stepping_range_reason ();
5352       stop_stepping (ecs);
5353     }
5354   else
5355     {
5356       /* Else just reset the step range and keep going.
5357          No step-resume breakpoint, they don't work for
5358          epilogues, which can have multiple entry paths.  */
5359       ecs->event_thread->control.step_range_start = stop_func_sal.pc;
5360       ecs->event_thread->control.step_range_end = stop_func_sal.end;
5361       keep_going (ecs);
5362     }
5363   return;
5364 }
5365
5366 /* Insert a "step-resume breakpoint" at SR_SAL with frame ID SR_ID.
5367    This is used to both functions and to skip over code.  */
5368
5369 static void
5370 insert_step_resume_breakpoint_at_sal_1 (struct gdbarch *gdbarch,
5371                                         struct symtab_and_line sr_sal,
5372                                         struct frame_id sr_id,
5373                                         enum bptype sr_type)
5374 {
5375   /* There should never be more than one step-resume or longjmp-resume
5376      breakpoint per thread, so we should never be setting a new
5377      step_resume_breakpoint when one is already active.  */
5378   gdb_assert (inferior_thread ()->control.step_resume_breakpoint == NULL);
5379   gdb_assert (sr_type == bp_step_resume || sr_type == bp_hp_step_resume);
5380
5381   if (debug_infrun)
5382     fprintf_unfiltered (gdb_stdlog,
5383                         "infrun: inserting step-resume breakpoint at %s\n",
5384                         paddress (gdbarch, sr_sal.pc));
5385
5386   inferior_thread ()->control.step_resume_breakpoint
5387     = set_momentary_breakpoint (gdbarch, sr_sal, sr_id, sr_type);
5388 }
5389
5390 void
5391 insert_step_resume_breakpoint_at_sal (struct gdbarch *gdbarch,
5392                                       struct symtab_and_line sr_sal,
5393                                       struct frame_id sr_id)
5394 {
5395   insert_step_resume_breakpoint_at_sal_1 (gdbarch,
5396                                           sr_sal, sr_id,
5397                                           bp_step_resume);
5398 }
5399
5400 /* Insert a "high-priority step-resume breakpoint" at RETURN_FRAME.pc.
5401    This is used to skip a potential signal handler.
5402
5403    This is called with the interrupted function's frame.  The signal
5404    handler, when it returns, will resume the interrupted function at
5405    RETURN_FRAME.pc.  */
5406
5407 static void
5408 insert_hp_step_resume_breakpoint_at_frame (struct frame_info *return_frame)
5409 {
5410   struct symtab_and_line sr_sal;
5411   struct gdbarch *gdbarch;
5412
5413   gdb_assert (return_frame != NULL);
5414   init_sal (&sr_sal);           /* initialize to zeros */
5415
5416   gdbarch = get_frame_arch (return_frame);
5417   sr_sal.pc = gdbarch_addr_bits_remove (gdbarch, get_frame_pc (return_frame));
5418   sr_sal.section = find_pc_overlay (sr_sal.pc);
5419   sr_sal.pspace = get_frame_program_space (return_frame);
5420
5421   insert_step_resume_breakpoint_at_sal_1 (gdbarch, sr_sal,
5422                                           get_stack_frame_id (return_frame),
5423                                           bp_hp_step_resume);
5424 }
5425
5426 /* Insert a "step-resume breakpoint" at the previous frame's PC.  This
5427    is used to skip a function after stepping into it (for "next" or if
5428    the called function has no debugging information).
5429
5430    The current function has almost always been reached by single
5431    stepping a call or return instruction.  NEXT_FRAME belongs to the
5432    current function, and the breakpoint will be set at the caller's
5433    resume address.
5434
5435    This is a separate function rather than reusing
5436    insert_hp_step_resume_breakpoint_at_frame in order to avoid
5437    get_prev_frame, which may stop prematurely (see the implementation
5438    of frame_unwind_caller_id for an example).  */
5439
5440 static void
5441 insert_step_resume_breakpoint_at_caller (struct frame_info *next_frame)
5442 {
5443   struct symtab_and_line sr_sal;
5444   struct gdbarch *gdbarch;
5445
5446   /* We shouldn't have gotten here if we don't know where the call site
5447      is.  */
5448   gdb_assert (frame_id_p (frame_unwind_caller_id (next_frame)));
5449
5450   init_sal (&sr_sal);           /* initialize to zeros */
5451
5452   gdbarch = frame_unwind_caller_arch (next_frame);
5453   sr_sal.pc = gdbarch_addr_bits_remove (gdbarch,
5454                                         frame_unwind_caller_pc (next_frame));
5455   sr_sal.section = find_pc_overlay (sr_sal.pc);
5456   sr_sal.pspace = frame_unwind_program_space (next_frame);
5457
5458   insert_step_resume_breakpoint_at_sal (gdbarch, sr_sal,
5459                                         frame_unwind_caller_id (next_frame));
5460 }
5461
5462 /* Insert a "longjmp-resume" breakpoint at PC.  This is used to set a
5463    new breakpoint at the target of a jmp_buf.  The handling of
5464    longjmp-resume uses the same mechanisms used for handling
5465    "step-resume" breakpoints.  */
5466
5467 static void
5468 insert_longjmp_resume_breakpoint (struct gdbarch *gdbarch, CORE_ADDR pc)
5469 {
5470   /* There should never be more than one step-resume or longjmp-resume
5471      breakpoint per thread, so we should never be setting a new
5472      longjmp_resume_breakpoint when one is already active.  */
5473   gdb_assert (inferior_thread ()->control.step_resume_breakpoint == NULL);
5474
5475   if (debug_infrun)
5476     fprintf_unfiltered (gdb_stdlog,
5477                         "infrun: inserting longjmp-resume breakpoint at %s\n",
5478                         paddress (gdbarch, pc));
5479
5480   inferior_thread ()->control.step_resume_breakpoint =
5481     set_momentary_breakpoint_at_pc (gdbarch, pc, bp_longjmp_resume);
5482 }
5483
5484 /* Insert an exception resume breakpoint.  TP is the thread throwing
5485    the exception.  The block B is the block of the unwinder debug hook
5486    function.  FRAME is the frame corresponding to the call to this
5487    function.  SYM is the symbol of the function argument holding the
5488    target PC of the exception.  */
5489
5490 static void
5491 insert_exception_resume_breakpoint (struct thread_info *tp,
5492                                     struct block *b,
5493                                     struct frame_info *frame,
5494                                     struct symbol *sym)
5495 {
5496   volatile struct gdb_exception e;
5497
5498   /* We want to ignore errors here.  */
5499   TRY_CATCH (e, RETURN_MASK_ERROR)
5500     {
5501       struct symbol *vsym;
5502       struct value *value;
5503       CORE_ADDR handler;
5504       struct breakpoint *bp;
5505
5506       vsym = lookup_symbol (SYMBOL_LINKAGE_NAME (sym), b, VAR_DOMAIN, NULL);
5507       value = read_var_value (vsym, frame);
5508       /* If the value was optimized out, revert to the old behavior.  */
5509       if (! value_optimized_out (value))
5510         {
5511           handler = value_as_address (value);
5512
5513           if (debug_infrun)
5514             fprintf_unfiltered (gdb_stdlog,
5515                                 "infrun: exception resume at %lx\n",
5516                                 (unsigned long) handler);
5517
5518           bp = set_momentary_breakpoint_at_pc (get_frame_arch (frame),
5519                                                handler, bp_exception_resume);
5520
5521           /* set_momentary_breakpoint_at_pc invalidates FRAME.  */
5522           frame = NULL;
5523
5524           bp->thread = tp->num;
5525           inferior_thread ()->control.exception_resume_breakpoint = bp;
5526         }
5527     }
5528 }
5529
5530 /* A helper for check_exception_resume that sets an
5531    exception-breakpoint based on a SystemTap probe.  */
5532
5533 static void
5534 insert_exception_resume_from_probe (struct thread_info *tp,
5535                                     const struct probe *probe,
5536                                     struct objfile *objfile,
5537                                     struct frame_info *frame)
5538 {
5539   struct value *arg_value;
5540   CORE_ADDR handler;
5541   struct breakpoint *bp;
5542
5543   arg_value = probe_safe_evaluate_at_pc (frame, 1);
5544   if (!arg_value)
5545     return;
5546
5547   handler = value_as_address (arg_value);
5548
5549   if (debug_infrun)
5550     fprintf_unfiltered (gdb_stdlog,
5551                         "infrun: exception resume at %s\n",
5552                         paddress (get_objfile_arch (objfile),
5553                                   handler));
5554
5555   bp = set_momentary_breakpoint_at_pc (get_frame_arch (frame),
5556                                        handler, bp_exception_resume);
5557   bp->thread = tp->num;
5558   inferior_thread ()->control.exception_resume_breakpoint = bp;
5559 }
5560
5561 /* This is called when an exception has been intercepted.  Check to
5562    see whether the exception's destination is of interest, and if so,
5563    set an exception resume breakpoint there.  */
5564
5565 static void
5566 check_exception_resume (struct execution_control_state *ecs,
5567                         struct frame_info *frame)
5568 {
5569   volatile struct gdb_exception e;
5570   struct objfile *objfile;
5571   const struct probe *probe;
5572   struct symbol *func;
5573
5574   /* First see if this exception unwinding breakpoint was set via a
5575      SystemTap probe point.  If so, the probe has two arguments: the
5576      CFA and the HANDLER.  We ignore the CFA, extract the handler, and
5577      set a breakpoint there.  */
5578   probe = find_probe_by_pc (get_frame_pc (frame), &objfile);
5579   if (probe)
5580     {
5581       insert_exception_resume_from_probe (ecs->event_thread, probe,
5582                                           objfile, frame);
5583       return;
5584     }
5585
5586   func = get_frame_function (frame);
5587   if (!func)
5588     return;
5589
5590   TRY_CATCH (e, RETURN_MASK_ERROR)
5591     {
5592       struct block *b;
5593       struct block_iterator iter;
5594       struct symbol *sym;
5595       int argno = 0;
5596
5597       /* The exception breakpoint is a thread-specific breakpoint on
5598          the unwinder's debug hook, declared as:
5599          
5600          void _Unwind_DebugHook (void *cfa, void *handler);
5601          
5602          The CFA argument indicates the frame to which control is
5603          about to be transferred.  HANDLER is the destination PC.
5604          
5605          We ignore the CFA and set a temporary breakpoint at HANDLER.
5606          This is not extremely efficient but it avoids issues in gdb
5607          with computing the DWARF CFA, and it also works even in weird
5608          cases such as throwing an exception from inside a signal
5609          handler.  */
5610
5611       b = SYMBOL_BLOCK_VALUE (func);
5612       ALL_BLOCK_SYMBOLS (b, iter, sym)
5613         {
5614           if (!SYMBOL_IS_ARGUMENT (sym))
5615             continue;
5616
5617           if (argno == 0)
5618             ++argno;
5619           else
5620             {
5621               insert_exception_resume_breakpoint (ecs->event_thread,
5622                                                   b, frame, sym);
5623               break;
5624             }
5625         }
5626     }
5627 }
5628
5629 static void
5630 stop_stepping (struct execution_control_state *ecs)
5631 {
5632   if (debug_infrun)
5633     fprintf_unfiltered (gdb_stdlog, "infrun: stop_stepping\n");
5634
5635   /* Let callers know we don't want to wait for the inferior anymore.  */
5636   ecs->wait_some_more = 0;
5637 }
5638
5639 /* This function handles various cases where we need to continue
5640    waiting for the inferior.  */
5641 /* (Used to be the keep_going: label in the old wait_for_inferior).  */
5642
5643 static void
5644 keep_going (struct execution_control_state *ecs)
5645 {
5646   /* Make sure normal_stop is called if we get a QUIT handled before
5647      reaching resume.  */
5648   struct cleanup *old_cleanups = make_cleanup (resume_cleanups, 0);
5649
5650   /* Save the pc before execution, to compare with pc after stop.  */
5651   ecs->event_thread->prev_pc
5652     = regcache_read_pc (get_thread_regcache (ecs->ptid));
5653
5654   /* If we did not do break;, it means we should keep running the
5655      inferior and not return to debugger.  */
5656
5657   if (ecs->event_thread->control.trap_expected
5658       && ecs->event_thread->suspend.stop_signal != GDB_SIGNAL_TRAP)
5659     {
5660       /* We took a signal (which we are supposed to pass through to
5661          the inferior, else we'd not get here) and we haven't yet
5662          gotten our trap.  Simply continue.  */
5663
5664       discard_cleanups (old_cleanups);
5665       resume (currently_stepping (ecs->event_thread),
5666               ecs->event_thread->suspend.stop_signal);
5667     }
5668   else
5669     {
5670       /* Either the trap was not expected, but we are continuing
5671          anyway (the user asked that this signal be passed to the
5672          child)
5673          -- or --
5674          The signal was SIGTRAP, e.g. it was our signal, but we
5675          decided we should resume from it.
5676
5677          We're going to run this baby now!  
5678
5679          Note that insert_breakpoints won't try to re-insert
5680          already inserted breakpoints.  Therefore, we don't
5681          care if breakpoints were already inserted, or not.  */
5682       
5683       if (ecs->event_thread->stepping_over_breakpoint)
5684         {
5685           struct regcache *thread_regcache = get_thread_regcache (ecs->ptid);
5686
5687           if (!use_displaced_stepping (get_regcache_arch (thread_regcache)))
5688             /* Since we can't do a displaced step, we have to remove
5689                the breakpoint while we step it.  To keep things
5690                simple, we remove them all.  */
5691             remove_breakpoints ();
5692         }
5693       else
5694         {
5695           volatile struct gdb_exception e;
5696
5697           /* Stop stepping when inserting breakpoints
5698              has failed.  */
5699           TRY_CATCH (e, RETURN_MASK_ERROR)
5700             {
5701               insert_breakpoints ();
5702             }
5703           if (e.reason < 0)
5704             {
5705               exception_print (gdb_stderr, e);
5706               stop_stepping (ecs);
5707               return;
5708             }
5709         }
5710
5711       ecs->event_thread->control.trap_expected
5712         = ecs->event_thread->stepping_over_breakpoint;
5713
5714       /* Do not deliver SIGNAL_TRAP (except when the user explicitly
5715          specifies that such a signal should be delivered to the
5716          target program).
5717
5718          Typically, this would occure when a user is debugging a
5719          target monitor on a simulator: the target monitor sets a
5720          breakpoint; the simulator encounters this break-point and
5721          halts the simulation handing control to GDB; GDB, noteing
5722          that the break-point isn't valid, returns control back to the
5723          simulator; the simulator then delivers the hardware
5724          equivalent of a SIGNAL_TRAP to the program being debugged.  */
5725
5726       if (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP
5727           && !signal_program[ecs->event_thread->suspend.stop_signal])
5728         ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0;
5729
5730       discard_cleanups (old_cleanups);
5731       resume (currently_stepping (ecs->event_thread),
5732               ecs->event_thread->suspend.stop_signal);
5733     }
5734
5735   prepare_to_wait (ecs);
5736 }
5737
5738 /* This function normally comes after a resume, before
5739    handle_inferior_event exits.  It takes care of any last bits of
5740    housekeeping, and sets the all-important wait_some_more flag.  */
5741
5742 static void
5743 prepare_to_wait (struct execution_control_state *ecs)
5744 {
5745   if (debug_infrun)
5746     fprintf_unfiltered (gdb_stdlog, "infrun: prepare_to_wait\n");
5747
5748   /* This is the old end of the while loop.  Let everybody know we
5749      want to wait for the inferior some more and get called again
5750      soon.  */
5751   ecs->wait_some_more = 1;
5752 }
5753
5754 /* Several print_*_reason functions to print why the inferior has stopped.
5755    We always print something when the inferior exits, or receives a signal.
5756    The rest of the cases are dealt with later on in normal_stop and
5757    print_it_typical.  Ideally there should be a call to one of these
5758    print_*_reason functions functions from handle_inferior_event each time
5759    stop_stepping is called.  */
5760
5761 /* Print why the inferior has stopped.  
5762    We are done with a step/next/si/ni command, print why the inferior has
5763    stopped.  For now print nothing.  Print a message only if not in the middle
5764    of doing a "step n" operation for n > 1.  */
5765
5766 static void
5767 print_end_stepping_range_reason (void)
5768 {
5769   if ((!inferior_thread ()->step_multi
5770        || !inferior_thread ()->control.stop_step)
5771       && ui_out_is_mi_like_p (current_uiout))
5772     ui_out_field_string (current_uiout, "reason",
5773                          async_reason_lookup (EXEC_ASYNC_END_STEPPING_RANGE));
5774 }
5775
5776 /* The inferior was terminated by a signal, print why it stopped.  */
5777
5778 static void
5779 print_signal_exited_reason (enum gdb_signal siggnal)
5780 {
5781   struct ui_out *uiout = current_uiout;
5782
5783   annotate_signalled ();
5784   if (ui_out_is_mi_like_p (uiout))
5785     ui_out_field_string
5786       (uiout, "reason", async_reason_lookup (EXEC_ASYNC_EXITED_SIGNALLED));
5787   ui_out_text (uiout, "\nProgram terminated with signal ");
5788   annotate_signal_name ();
5789   ui_out_field_string (uiout, "signal-name",
5790                        gdb_signal_to_name (siggnal));
5791   annotate_signal_name_end ();
5792   ui_out_text (uiout, ", ");
5793   annotate_signal_string ();
5794   ui_out_field_string (uiout, "signal-meaning",
5795                        gdb_signal_to_string (siggnal));
5796   annotate_signal_string_end ();
5797   ui_out_text (uiout, ".\n");
5798   ui_out_text (uiout, "The program no longer exists.\n");
5799 }
5800
5801 /* The inferior program is finished, print why it stopped.  */
5802
5803 static void
5804 print_exited_reason (int exitstatus)
5805 {
5806   struct inferior *inf = current_inferior ();
5807   const char *pidstr = target_pid_to_str (pid_to_ptid (inf->pid));
5808   struct ui_out *uiout = current_uiout;
5809
5810   annotate_exited (exitstatus);
5811   if (exitstatus)
5812     {
5813       if (ui_out_is_mi_like_p (uiout))
5814         ui_out_field_string (uiout, "reason", 
5815                              async_reason_lookup (EXEC_ASYNC_EXITED));
5816       ui_out_text (uiout, "[Inferior ");
5817       ui_out_text (uiout, plongest (inf->num));
5818       ui_out_text (uiout, " (");
5819       ui_out_text (uiout, pidstr);
5820       ui_out_text (uiout, ") exited with code ");
5821       ui_out_field_fmt (uiout, "exit-code", "0%o", (unsigned int) exitstatus);
5822       ui_out_text (uiout, "]\n");
5823     }
5824   else
5825     {
5826       if (ui_out_is_mi_like_p (uiout))
5827         ui_out_field_string
5828           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_EXITED_NORMALLY));
5829       ui_out_text (uiout, "[Inferior ");
5830       ui_out_text (uiout, plongest (inf->num));
5831       ui_out_text (uiout, " (");
5832       ui_out_text (uiout, pidstr);
5833       ui_out_text (uiout, ") exited normally]\n");
5834     }
5835   /* Support the --return-child-result option.  */
5836   return_child_result_value = exitstatus;
5837 }
5838
5839 /* Signal received, print why the inferior has stopped.  The signal table
5840    tells us to print about it.  */
5841
5842 static void
5843 print_signal_received_reason (enum gdb_signal siggnal)
5844 {
5845   struct ui_out *uiout = current_uiout;
5846
5847   annotate_signal ();
5848
5849   if (siggnal == GDB_SIGNAL_0 && !ui_out_is_mi_like_p (uiout))
5850     {
5851       struct thread_info *t = inferior_thread ();
5852
5853       ui_out_text (uiout, "\n[");
5854       ui_out_field_string (uiout, "thread-name",
5855                            target_pid_to_str (t->ptid));
5856       ui_out_field_fmt (uiout, "thread-id", "] #%d", t->num);
5857       ui_out_text (uiout, " stopped");
5858     }
5859   else
5860     {
5861       ui_out_text (uiout, "\nProgram received signal ");
5862       annotate_signal_name ();
5863       if (ui_out_is_mi_like_p (uiout))
5864         ui_out_field_string
5865           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_SIGNAL_RECEIVED));
5866       ui_out_field_string (uiout, "signal-name",
5867                            gdb_signal_to_name (siggnal));
5868       annotate_signal_name_end ();
5869       ui_out_text (uiout, ", ");
5870       annotate_signal_string ();
5871       ui_out_field_string (uiout, "signal-meaning",
5872                            gdb_signal_to_string (siggnal));
5873       annotate_signal_string_end ();
5874     }
5875   ui_out_text (uiout, ".\n");
5876 }
5877
5878 /* Reverse execution: target ran out of history info, print why the inferior
5879    has stopped.  */
5880
5881 static void
5882 print_no_history_reason (void)
5883 {
5884   ui_out_text (current_uiout, "\nNo more reverse-execution history.\n");
5885 }
5886
5887 /* Here to return control to GDB when the inferior stops for real.
5888    Print appropriate messages, remove breakpoints, give terminal our modes.
5889
5890    STOP_PRINT_FRAME nonzero means print the executing frame
5891    (pc, function, args, file, line number and line text).
5892    BREAKPOINTS_FAILED nonzero means stop was due to error
5893    attempting to insert breakpoints.  */
5894
5895 void
5896 normal_stop (void)
5897 {
5898   struct target_waitstatus last;
5899   ptid_t last_ptid;
5900   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
5901
5902   get_last_target_status (&last_ptid, &last);
5903
5904   /* If an exception is thrown from this point on, make sure to
5905      propagate GDB's knowledge of the executing state to the
5906      frontend/user running state.  A QUIT is an easy exception to see
5907      here, so do this before any filtered output.  */
5908   if (!non_stop)
5909     make_cleanup (finish_thread_state_cleanup, &minus_one_ptid);
5910   else if (last.kind != TARGET_WAITKIND_SIGNALLED
5911            && last.kind != TARGET_WAITKIND_EXITED
5912            && last.kind != TARGET_WAITKIND_NO_RESUMED)
5913     make_cleanup (finish_thread_state_cleanup, &inferior_ptid);
5914
5915   /* In non-stop mode, we don't want GDB to switch threads behind the
5916      user's back, to avoid races where the user is typing a command to
5917      apply to thread x, but GDB switches to thread y before the user
5918      finishes entering the command.  */
5919
5920   /* As with the notification of thread events, we want to delay
5921      notifying the user that we've switched thread context until
5922      the inferior actually stops.
5923
5924      There's no point in saying anything if the inferior has exited.
5925      Note that SIGNALLED here means "exited with a signal", not
5926      "received a signal".  */
5927   if (!non_stop
5928       && !ptid_equal (previous_inferior_ptid, inferior_ptid)
5929       && target_has_execution
5930       && last.kind != TARGET_WAITKIND_SIGNALLED
5931       && last.kind != TARGET_WAITKIND_EXITED
5932       && last.kind != TARGET_WAITKIND_NO_RESUMED)
5933     {
5934       target_terminal_ours_for_output ();
5935       printf_filtered (_("[Switching to %s]\n"),
5936                        target_pid_to_str (inferior_ptid));
5937       annotate_thread_changed ();
5938       previous_inferior_ptid = inferior_ptid;
5939     }
5940
5941   if (last.kind == TARGET_WAITKIND_NO_RESUMED)
5942     {
5943       gdb_assert (sync_execution || !target_can_async_p ());
5944
5945       target_terminal_ours_for_output ();
5946       printf_filtered (_("No unwaited-for children left.\n"));
5947     }
5948
5949   if (!breakpoints_always_inserted_mode () && target_has_execution)
5950     {
5951       if (remove_breakpoints ())
5952         {
5953           target_terminal_ours_for_output ();
5954           printf_filtered (_("Cannot remove breakpoints because "
5955                              "program is no longer writable.\nFurther "
5956                              "execution is probably impossible.\n"));
5957         }
5958     }
5959
5960   /* If an auto-display called a function and that got a signal,
5961      delete that auto-display to avoid an infinite recursion.  */
5962
5963   if (stopped_by_random_signal)
5964     disable_current_display ();
5965
5966   /* Don't print a message if in the middle of doing a "step n"
5967      operation for n > 1 */
5968   if (target_has_execution
5969       && last.kind != TARGET_WAITKIND_SIGNALLED
5970       && last.kind != TARGET_WAITKIND_EXITED
5971       && inferior_thread ()->step_multi
5972       && inferior_thread ()->control.stop_step)
5973     goto done;
5974
5975   target_terminal_ours ();
5976   async_enable_stdin ();
5977
5978   /* Set the current source location.  This will also happen if we
5979      display the frame below, but the current SAL will be incorrect
5980      during a user hook-stop function.  */
5981   if (has_stack_frames () && !stop_stack_dummy)
5982     set_current_sal_from_frame (get_current_frame (), 1);
5983
5984   /* Let the user/frontend see the threads as stopped.  */
5985   do_cleanups (old_chain);
5986
5987   /* Look up the hook_stop and run it (CLI internally handles problem
5988      of stop_command's pre-hook not existing).  */
5989   if (stop_command)
5990     catch_errors (hook_stop_stub, stop_command,
5991                   "Error while running hook_stop:\n", RETURN_MASK_ALL);
5992
5993   if (!has_stack_frames ())
5994     goto done;
5995
5996   if (last.kind == TARGET_WAITKIND_SIGNALLED
5997       || last.kind == TARGET_WAITKIND_EXITED)
5998     goto done;
5999
6000   /* Select innermost stack frame - i.e., current frame is frame 0,
6001      and current location is based on that.
6002      Don't do this on return from a stack dummy routine,
6003      or if the program has exited.  */
6004
6005   if (!stop_stack_dummy)
6006     {
6007       select_frame (get_current_frame ());
6008
6009       /* Print current location without a level number, if
6010          we have changed functions or hit a breakpoint.
6011          Print source line if we have one.
6012          bpstat_print() contains the logic deciding in detail
6013          what to print, based on the event(s) that just occurred.  */
6014
6015       /* If --batch-silent is enabled then there's no need to print the current
6016          source location, and to try risks causing an error message about
6017          missing source files.  */
6018       if (stop_print_frame && !batch_silent)
6019         {
6020           int bpstat_ret;
6021           int source_flag;
6022           int do_frame_printing = 1;
6023           struct thread_info *tp = inferior_thread ();
6024
6025           bpstat_ret = bpstat_print (tp->control.stop_bpstat, last.kind);
6026           switch (bpstat_ret)
6027             {
6028             case PRINT_UNKNOWN:
6029               /* FIXME: cagney/2002-12-01: Given that a frame ID does
6030                  (or should) carry around the function and does (or
6031                  should) use that when doing a frame comparison.  */
6032               if (tp->control.stop_step
6033                   && frame_id_eq (tp->control.step_frame_id,
6034                                   get_frame_id (get_current_frame ()))
6035                   && step_start_function == find_pc_function (stop_pc))
6036                 source_flag = SRC_LINE;         /* Finished step, just
6037                                                    print source line.  */
6038               else
6039                 source_flag = SRC_AND_LOC;      /* Print location and
6040                                                    source line.  */
6041               break;
6042             case PRINT_SRC_AND_LOC:
6043               source_flag = SRC_AND_LOC;        /* Print location and
6044                                                    source line.  */
6045               break;
6046             case PRINT_SRC_ONLY:
6047               source_flag = SRC_LINE;
6048               break;
6049             case PRINT_NOTHING:
6050               source_flag = SRC_LINE;   /* something bogus */
6051               do_frame_printing = 0;
6052               break;
6053             default:
6054               internal_error (__FILE__, __LINE__, _("Unknown value."));
6055             }
6056
6057           /* The behavior of this routine with respect to the source
6058              flag is:
6059              SRC_LINE: Print only source line
6060              LOCATION: Print only location
6061              SRC_AND_LOC: Print location and source line.  */
6062           if (do_frame_printing)
6063             print_stack_frame (get_selected_frame (NULL), 0, source_flag);
6064
6065           /* Display the auto-display expressions.  */
6066           do_displays ();
6067         }
6068     }
6069
6070   /* Save the function value return registers, if we care.
6071      We might be about to restore their previous contents.  */
6072   if (inferior_thread ()->control.proceed_to_finish
6073       && execution_direction != EXEC_REVERSE)
6074     {
6075       /* This should not be necessary.  */
6076       if (stop_registers)
6077         regcache_xfree (stop_registers);
6078
6079       /* NB: The copy goes through to the target picking up the value of
6080          all the registers.  */
6081       stop_registers = regcache_dup (get_current_regcache ());
6082     }
6083
6084   if (stop_stack_dummy == STOP_STACK_DUMMY)
6085     {
6086       /* Pop the empty frame that contains the stack dummy.
6087          This also restores inferior state prior to the call
6088          (struct infcall_suspend_state).  */
6089       struct frame_info *frame = get_current_frame ();
6090
6091       gdb_assert (get_frame_type (frame) == DUMMY_FRAME);
6092       frame_pop (frame);
6093       /* frame_pop() calls reinit_frame_cache as the last thing it
6094          does which means there's currently no selected frame.  We
6095          don't need to re-establish a selected frame if the dummy call
6096          returns normally, that will be done by
6097          restore_infcall_control_state.  However, we do have to handle
6098          the case where the dummy call is returning after being
6099          stopped (e.g. the dummy call previously hit a breakpoint).
6100          We can't know which case we have so just always re-establish
6101          a selected frame here.  */
6102       select_frame (get_current_frame ());
6103     }
6104
6105 done:
6106   annotate_stopped ();
6107
6108   /* Suppress the stop observer if we're in the middle of:
6109
6110      - a step n (n > 1), as there still more steps to be done.
6111
6112      - a "finish" command, as the observer will be called in
6113        finish_command_continuation, so it can include the inferior
6114        function's return value.
6115
6116      - calling an inferior function, as we pretend we inferior didn't
6117        run at all.  The return value of the call is handled by the
6118        expression evaluator, through call_function_by_hand.  */
6119
6120   if (!target_has_execution
6121       || last.kind == TARGET_WAITKIND_SIGNALLED
6122       || last.kind == TARGET_WAITKIND_EXITED
6123       || last.kind == TARGET_WAITKIND_NO_RESUMED
6124       || (!(inferior_thread ()->step_multi
6125             && inferior_thread ()->control.stop_step)
6126           && !(inferior_thread ()->control.stop_bpstat
6127                && inferior_thread ()->control.proceed_to_finish)
6128           && !inferior_thread ()->control.in_infcall))
6129     {
6130       if (!ptid_equal (inferior_ptid, null_ptid))
6131         observer_notify_normal_stop (inferior_thread ()->control.stop_bpstat,
6132                                      stop_print_frame);
6133       else
6134         observer_notify_normal_stop (NULL, stop_print_frame);
6135     }
6136
6137   if (target_has_execution)
6138     {
6139       if (last.kind != TARGET_WAITKIND_SIGNALLED
6140           && last.kind != TARGET_WAITKIND_EXITED)
6141         /* Delete the breakpoint we stopped at, if it wants to be deleted.
6142            Delete any breakpoint that is to be deleted at the next stop.  */
6143         breakpoint_auto_delete (inferior_thread ()->control.stop_bpstat);
6144     }
6145
6146   /* Try to get rid of automatically added inferiors that are no
6147      longer needed.  Keeping those around slows down things linearly.
6148      Note that this never removes the current inferior.  */
6149   prune_inferiors ();
6150 }
6151
6152 static int
6153 hook_stop_stub (void *cmd)
6154 {
6155   execute_cmd_pre_hook ((struct cmd_list_element *) cmd);
6156   return (0);
6157 }
6158 \f
6159 int
6160 signal_stop_state (int signo)
6161 {
6162   return signal_stop[signo];
6163 }
6164
6165 int
6166 signal_print_state (int signo)
6167 {
6168   return signal_print[signo];
6169 }
6170
6171 int
6172 signal_pass_state (int signo)
6173 {
6174   return signal_program[signo];
6175 }
6176
6177 static void
6178 signal_cache_update (int signo)
6179 {
6180   if (signo == -1)
6181     {
6182       for (signo = 0; signo < (int) GDB_SIGNAL_LAST; signo++)
6183         signal_cache_update (signo);
6184
6185       return;
6186     }
6187
6188   signal_pass[signo] = (signal_stop[signo] == 0
6189                         && signal_print[signo] == 0
6190                         && signal_program[signo] == 1);
6191 }
6192
6193 int
6194 signal_stop_update (int signo, int state)
6195 {
6196   int ret = signal_stop[signo];
6197
6198   signal_stop[signo] = state;
6199   signal_cache_update (signo);
6200   return ret;
6201 }
6202
6203 int
6204 signal_print_update (int signo, int state)
6205 {
6206   int ret = signal_print[signo];
6207
6208   signal_print[signo] = state;
6209   signal_cache_update (signo);
6210   return ret;
6211 }
6212
6213 int
6214 signal_pass_update (int signo, int state)
6215 {
6216   int ret = signal_program[signo];
6217
6218   signal_program[signo] = state;
6219   signal_cache_update (signo);
6220   return ret;
6221 }
6222
6223 static void
6224 sig_print_header (void)
6225 {
6226   printf_filtered (_("Signal        Stop\tPrint\tPass "
6227                      "to program\tDescription\n"));
6228 }
6229
6230 static void
6231 sig_print_info (enum gdb_signal oursig)
6232 {
6233   const char *name = gdb_signal_to_name (oursig);
6234   int name_padding = 13 - strlen (name);
6235
6236   if (name_padding <= 0)
6237     name_padding = 0;
6238
6239   printf_filtered ("%s", name);
6240   printf_filtered ("%*.*s ", name_padding, name_padding, "                 ");
6241   printf_filtered ("%s\t", signal_stop[oursig] ? "Yes" : "No");
6242   printf_filtered ("%s\t", signal_print[oursig] ? "Yes" : "No");
6243   printf_filtered ("%s\t\t", signal_program[oursig] ? "Yes" : "No");
6244   printf_filtered ("%s\n", gdb_signal_to_string (oursig));
6245 }
6246
6247 /* Specify how various signals in the inferior should be handled.  */
6248
6249 static void
6250 handle_command (char *args, int from_tty)
6251 {
6252   char **argv;
6253   int digits, wordlen;
6254   int sigfirst, signum, siglast;
6255   enum gdb_signal oursig;
6256   int allsigs;
6257   int nsigs;
6258   unsigned char *sigs;
6259   struct cleanup *old_chain;
6260
6261   if (args == NULL)
6262     {
6263       error_no_arg (_("signal to handle"));
6264     }
6265
6266   /* Allocate and zero an array of flags for which signals to handle.  */
6267
6268   nsigs = (int) GDB_SIGNAL_LAST;
6269   sigs = (unsigned char *) alloca (nsigs);
6270   memset (sigs, 0, nsigs);
6271
6272   /* Break the command line up into args.  */
6273
6274   argv = gdb_buildargv (args);
6275   old_chain = make_cleanup_freeargv (argv);
6276
6277   /* Walk through the args, looking for signal oursigs, signal names, and
6278      actions.  Signal numbers and signal names may be interspersed with
6279      actions, with the actions being performed for all signals cumulatively
6280      specified.  Signal ranges can be specified as <LOW>-<HIGH>.  */
6281
6282   while (*argv != NULL)
6283     {
6284       wordlen = strlen (*argv);
6285       for (digits = 0; isdigit ((*argv)[digits]); digits++)
6286         {;
6287         }
6288       allsigs = 0;
6289       sigfirst = siglast = -1;
6290
6291       if (wordlen >= 1 && !strncmp (*argv, "all", wordlen))
6292         {
6293           /* Apply action to all signals except those used by the
6294              debugger.  Silently skip those.  */
6295           allsigs = 1;
6296           sigfirst = 0;
6297           siglast = nsigs - 1;
6298         }
6299       else if (wordlen >= 1 && !strncmp (*argv, "stop", wordlen))
6300         {
6301           SET_SIGS (nsigs, sigs, signal_stop);
6302           SET_SIGS (nsigs, sigs, signal_print);
6303         }
6304       else if (wordlen >= 1 && !strncmp (*argv, "ignore", wordlen))
6305         {
6306           UNSET_SIGS (nsigs, sigs, signal_program);
6307         }
6308       else if (wordlen >= 2 && !strncmp (*argv, "print", wordlen))
6309         {
6310           SET_SIGS (nsigs, sigs, signal_print);
6311         }
6312       else if (wordlen >= 2 && !strncmp (*argv, "pass", wordlen))
6313         {
6314           SET_SIGS (nsigs, sigs, signal_program);
6315         }
6316       else if (wordlen >= 3 && !strncmp (*argv, "nostop", wordlen))
6317         {
6318           UNSET_SIGS (nsigs, sigs, signal_stop);
6319         }
6320       else if (wordlen >= 3 && !strncmp (*argv, "noignore", wordlen))
6321         {
6322           SET_SIGS (nsigs, sigs, signal_program);
6323         }
6324       else if (wordlen >= 4 && !strncmp (*argv, "noprint", wordlen))
6325         {
6326           UNSET_SIGS (nsigs, sigs, signal_print);
6327           UNSET_SIGS (nsigs, sigs, signal_stop);
6328         }
6329       else if (wordlen >= 4 && !strncmp (*argv, "nopass", wordlen))
6330         {
6331           UNSET_SIGS (nsigs, sigs, signal_program);
6332         }
6333       else if (digits > 0)
6334         {
6335           /* It is numeric.  The numeric signal refers to our own
6336              internal signal numbering from target.h, not to host/target
6337              signal  number.  This is a feature; users really should be
6338              using symbolic names anyway, and the common ones like
6339              SIGHUP, SIGINT, SIGALRM, etc. will work right anyway.  */
6340
6341           sigfirst = siglast = (int)
6342             gdb_signal_from_command (atoi (*argv));
6343           if ((*argv)[digits] == '-')
6344             {
6345               siglast = (int)
6346                 gdb_signal_from_command (atoi ((*argv) + digits + 1));
6347             }
6348           if (sigfirst > siglast)
6349             {
6350               /* Bet he didn't figure we'd think of this case...  */
6351               signum = sigfirst;
6352               sigfirst = siglast;
6353               siglast = signum;
6354             }
6355         }
6356       else
6357         {
6358           oursig = gdb_signal_from_name (*argv);
6359           if (oursig != GDB_SIGNAL_UNKNOWN)
6360             {
6361               sigfirst = siglast = (int) oursig;
6362             }
6363           else
6364             {
6365               /* Not a number and not a recognized flag word => complain.  */
6366               error (_("Unrecognized or ambiguous flag word: \"%s\"."), *argv);
6367             }
6368         }
6369
6370       /* If any signal numbers or symbol names were found, set flags for
6371          which signals to apply actions to.  */
6372
6373       for (signum = sigfirst; signum >= 0 && signum <= siglast; signum++)
6374         {
6375           switch ((enum gdb_signal) signum)
6376             {
6377             case GDB_SIGNAL_TRAP:
6378             case GDB_SIGNAL_INT:
6379               if (!allsigs && !sigs[signum])
6380                 {
6381                   if (query (_("%s is used by the debugger.\n\
6382 Are you sure you want to change it? "),
6383                              gdb_signal_to_name ((enum gdb_signal) signum)))
6384                     {
6385                       sigs[signum] = 1;
6386                     }
6387                   else
6388                     {
6389                       printf_unfiltered (_("Not confirmed, unchanged.\n"));
6390                       gdb_flush (gdb_stdout);
6391                     }
6392                 }
6393               break;
6394             case GDB_SIGNAL_0:
6395             case GDB_SIGNAL_DEFAULT:
6396             case GDB_SIGNAL_UNKNOWN:
6397               /* Make sure that "all" doesn't print these.  */
6398               break;
6399             default:
6400               sigs[signum] = 1;
6401               break;
6402             }
6403         }
6404
6405       argv++;
6406     }
6407
6408   for (signum = 0; signum < nsigs; signum++)
6409     if (sigs[signum])
6410       {
6411         signal_cache_update (-1);
6412         target_pass_signals ((int) GDB_SIGNAL_LAST, signal_pass);
6413         target_program_signals ((int) GDB_SIGNAL_LAST, signal_program);
6414
6415         if (from_tty)
6416           {
6417             /* Show the results.  */
6418             sig_print_header ();
6419             for (; signum < nsigs; signum++)
6420               if (sigs[signum])
6421                 sig_print_info (signum);
6422           }
6423
6424         break;
6425       }
6426
6427   do_cleanups (old_chain);
6428 }
6429
6430 static void
6431 xdb_handle_command (char *args, int from_tty)
6432 {
6433   char **argv;
6434   struct cleanup *old_chain;
6435
6436   if (args == NULL)
6437     error_no_arg (_("xdb command"));
6438
6439   /* Break the command line up into args.  */
6440
6441   argv = gdb_buildargv (args);
6442   old_chain = make_cleanup_freeargv (argv);
6443   if (argv[1] != (char *) NULL)
6444     {
6445       char *argBuf;
6446       int bufLen;
6447
6448       bufLen = strlen (argv[0]) + 20;
6449       argBuf = (char *) xmalloc (bufLen);
6450       if (argBuf)
6451         {
6452           int validFlag = 1;
6453           enum gdb_signal oursig;
6454
6455           oursig = gdb_signal_from_name (argv[0]);
6456           memset (argBuf, 0, bufLen);
6457           if (strcmp (argv[1], "Q") == 0)
6458             sprintf (argBuf, "%s %s", argv[0], "noprint");
6459           else
6460             {
6461               if (strcmp (argv[1], "s") == 0)
6462                 {
6463                   if (!signal_stop[oursig])
6464                     sprintf (argBuf, "%s %s", argv[0], "stop");
6465                   else
6466                     sprintf (argBuf, "%s %s", argv[0], "nostop");
6467                 }
6468               else if (strcmp (argv[1], "i") == 0)
6469                 {
6470                   if (!signal_program[oursig])
6471                     sprintf (argBuf, "%s %s", argv[0], "pass");
6472                   else
6473                     sprintf (argBuf, "%s %s", argv[0], "nopass");
6474                 }
6475               else if (strcmp (argv[1], "r") == 0)
6476                 {
6477                   if (!signal_print[oursig])
6478                     sprintf (argBuf, "%s %s", argv[0], "print");
6479                   else
6480                     sprintf (argBuf, "%s %s", argv[0], "noprint");
6481                 }
6482               else
6483                 validFlag = 0;
6484             }
6485           if (validFlag)
6486             handle_command (argBuf, from_tty);
6487           else
6488             printf_filtered (_("Invalid signal handling flag.\n"));
6489           if (argBuf)
6490             xfree (argBuf);
6491         }
6492     }
6493   do_cleanups (old_chain);
6494 }
6495
6496 enum gdb_signal
6497 gdb_signal_from_command (int num)
6498 {
6499   if (num >= 1 && num <= 15)
6500     return (enum gdb_signal) num;
6501   error (_("Only signals 1-15 are valid as numeric signals.\n\
6502 Use \"info signals\" for a list of symbolic signals."));
6503 }
6504
6505 /* Print current contents of the tables set by the handle command.
6506    It is possible we should just be printing signals actually used
6507    by the current target (but for things to work right when switching
6508    targets, all signals should be in the signal tables).  */
6509
6510 static void
6511 signals_info (char *signum_exp, int from_tty)
6512 {
6513   enum gdb_signal oursig;
6514
6515   sig_print_header ();
6516
6517   if (signum_exp)
6518     {
6519       /* First see if this is a symbol name.  */
6520       oursig = gdb_signal_from_name (signum_exp);
6521       if (oursig == GDB_SIGNAL_UNKNOWN)
6522         {
6523           /* No, try numeric.  */
6524           oursig =
6525             gdb_signal_from_command (parse_and_eval_long (signum_exp));
6526         }
6527       sig_print_info (oursig);
6528       return;
6529     }
6530
6531   printf_filtered ("\n");
6532   /* These ugly casts brought to you by the native VAX compiler.  */
6533   for (oursig = GDB_SIGNAL_FIRST;
6534        (int) oursig < (int) GDB_SIGNAL_LAST;
6535        oursig = (enum gdb_signal) ((int) oursig + 1))
6536     {
6537       QUIT;
6538
6539       if (oursig != GDB_SIGNAL_UNKNOWN
6540           && oursig != GDB_SIGNAL_DEFAULT && oursig != GDB_SIGNAL_0)
6541         sig_print_info (oursig);
6542     }
6543
6544   printf_filtered (_("\nUse the \"handle\" command "
6545                      "to change these tables.\n"));
6546 }
6547
6548 /* Check if it makes sense to read $_siginfo from the current thread
6549    at this point.  If not, throw an error.  */
6550
6551 static void
6552 validate_siginfo_access (void)
6553 {
6554   /* No current inferior, no siginfo.  */
6555   if (ptid_equal (inferior_ptid, null_ptid))
6556     error (_("No thread selected."));
6557
6558   /* Don't try to read from a dead thread.  */
6559   if (is_exited (inferior_ptid))
6560     error (_("The current thread has terminated"));
6561
6562   /* ... or from a spinning thread.  */
6563   if (is_running (inferior_ptid))
6564     error (_("Selected thread is running."));
6565 }
6566
6567 /* The $_siginfo convenience variable is a bit special.  We don't know
6568    for sure the type of the value until we actually have a chance to
6569    fetch the data.  The type can change depending on gdbarch, so it is
6570    also dependent on which thread you have selected.
6571
6572      1. making $_siginfo be an internalvar that creates a new value on
6573      access.
6574
6575      2. making the value of $_siginfo be an lval_computed value.  */
6576
6577 /* This function implements the lval_computed support for reading a
6578    $_siginfo value.  */
6579
6580 static void
6581 siginfo_value_read (struct value *v)
6582 {
6583   LONGEST transferred;
6584
6585   validate_siginfo_access ();
6586
6587   transferred =
6588     target_read (&current_target, TARGET_OBJECT_SIGNAL_INFO,
6589                  NULL,
6590                  value_contents_all_raw (v),
6591                  value_offset (v),
6592                  TYPE_LENGTH (value_type (v)));
6593
6594   if (transferred != TYPE_LENGTH (value_type (v)))
6595     error (_("Unable to read siginfo"));
6596 }
6597
6598 /* This function implements the lval_computed support for writing a
6599    $_siginfo value.  */
6600
6601 static void
6602 siginfo_value_write (struct value *v, struct value *fromval)
6603 {
6604   LONGEST transferred;
6605
6606   validate_siginfo_access ();
6607
6608   transferred = target_write (&current_target,
6609                               TARGET_OBJECT_SIGNAL_INFO,
6610                               NULL,
6611                               value_contents_all_raw (fromval),
6612                               value_offset (v),
6613                               TYPE_LENGTH (value_type (fromval)));
6614
6615   if (transferred != TYPE_LENGTH (value_type (fromval)))
6616     error (_("Unable to write siginfo"));
6617 }
6618
6619 static const struct lval_funcs siginfo_value_funcs =
6620   {
6621     siginfo_value_read,
6622     siginfo_value_write
6623   };
6624
6625 /* Return a new value with the correct type for the siginfo object of
6626    the current thread using architecture GDBARCH.  Return a void value
6627    if there's no object available.  */
6628
6629 static struct value *
6630 siginfo_make_value (struct gdbarch *gdbarch, struct internalvar *var,
6631                     void *ignore)
6632 {
6633   if (target_has_stack
6634       && !ptid_equal (inferior_ptid, null_ptid)
6635       && gdbarch_get_siginfo_type_p (gdbarch))
6636     {
6637       struct type *type = gdbarch_get_siginfo_type (gdbarch);
6638
6639       return allocate_computed_value (type, &siginfo_value_funcs, NULL);
6640     }
6641
6642   return allocate_value (builtin_type (gdbarch)->builtin_void);
6643 }
6644
6645 \f
6646 /* infcall_suspend_state contains state about the program itself like its
6647    registers and any signal it received when it last stopped.
6648    This state must be restored regardless of how the inferior function call
6649    ends (either successfully, or after it hits a breakpoint or signal)
6650    if the program is to properly continue where it left off.  */
6651
6652 struct infcall_suspend_state
6653 {
6654   struct thread_suspend_state thread_suspend;
6655   struct inferior_suspend_state inferior_suspend;
6656
6657   /* Other fields:  */
6658   CORE_ADDR stop_pc;
6659   struct regcache *registers;
6660
6661   /* Format of SIGINFO_DATA or NULL if it is not present.  */
6662   struct gdbarch *siginfo_gdbarch;
6663
6664   /* The inferior format depends on SIGINFO_GDBARCH and it has a length of
6665      TYPE_LENGTH (gdbarch_get_siginfo_type ()).  For different gdbarch the
6666      content would be invalid.  */
6667   gdb_byte *siginfo_data;
6668 };
6669
6670 struct infcall_suspend_state *
6671 save_infcall_suspend_state (void)
6672 {
6673   struct infcall_suspend_state *inf_state;
6674   struct thread_info *tp = inferior_thread ();
6675   struct inferior *inf = current_inferior ();
6676   struct regcache *regcache = get_current_regcache ();
6677   struct gdbarch *gdbarch = get_regcache_arch (regcache);
6678   gdb_byte *siginfo_data = NULL;
6679
6680   if (gdbarch_get_siginfo_type_p (gdbarch))
6681     {
6682       struct type *type = gdbarch_get_siginfo_type (gdbarch);
6683       size_t len = TYPE_LENGTH (type);
6684       struct cleanup *back_to;
6685
6686       siginfo_data = xmalloc (len);
6687       back_to = make_cleanup (xfree, siginfo_data);
6688
6689       if (target_read (&current_target, TARGET_OBJECT_SIGNAL_INFO, NULL,
6690                        siginfo_data, 0, len) == len)
6691         discard_cleanups (back_to);
6692       else
6693         {
6694           /* Errors ignored.  */
6695           do_cleanups (back_to);
6696           siginfo_data = NULL;
6697         }
6698     }
6699
6700   inf_state = XZALLOC (struct infcall_suspend_state);
6701
6702   if (siginfo_data)
6703     {
6704       inf_state->siginfo_gdbarch = gdbarch;
6705       inf_state->siginfo_data = siginfo_data;
6706     }
6707
6708   inf_state->thread_suspend = tp->suspend;
6709   inf_state->inferior_suspend = inf->suspend;
6710
6711   /* run_inferior_call will not use the signal due to its `proceed' call with
6712      GDB_SIGNAL_0 anyway.  */
6713   tp->suspend.stop_signal = GDB_SIGNAL_0;
6714
6715   inf_state->stop_pc = stop_pc;
6716
6717   inf_state->registers = regcache_dup (regcache);
6718
6719   return inf_state;
6720 }
6721
6722 /* Restore inferior session state to INF_STATE.  */
6723
6724 void
6725 restore_infcall_suspend_state (struct infcall_suspend_state *inf_state)
6726 {
6727   struct thread_info *tp = inferior_thread ();
6728   struct inferior *inf = current_inferior ();
6729   struct regcache *regcache = get_current_regcache ();
6730   struct gdbarch *gdbarch = get_regcache_arch (regcache);
6731
6732   tp->suspend = inf_state->thread_suspend;
6733   inf->suspend = inf_state->inferior_suspend;
6734
6735   stop_pc = inf_state->stop_pc;
6736
6737   if (inf_state->siginfo_gdbarch == gdbarch)
6738     {
6739       struct type *type = gdbarch_get_siginfo_type (gdbarch);
6740       size_t len = TYPE_LENGTH (type);
6741
6742       /* Errors ignored.  */
6743       target_write (&current_target, TARGET_OBJECT_SIGNAL_INFO, NULL,
6744                     inf_state->siginfo_data, 0, len);
6745     }
6746
6747   /* The inferior can be gone if the user types "print exit(0)"
6748      (and perhaps other times).  */
6749   if (target_has_execution)
6750     /* NB: The register write goes through to the target.  */
6751     regcache_cpy (regcache, inf_state->registers);
6752
6753   discard_infcall_suspend_state (inf_state);
6754 }
6755
6756 static void
6757 do_restore_infcall_suspend_state_cleanup (void *state)
6758 {
6759   restore_infcall_suspend_state (state);
6760 }
6761
6762 struct cleanup *
6763 make_cleanup_restore_infcall_suspend_state
6764   (struct infcall_suspend_state *inf_state)
6765 {
6766   return make_cleanup (do_restore_infcall_suspend_state_cleanup, inf_state);
6767 }
6768
6769 void
6770 discard_infcall_suspend_state (struct infcall_suspend_state *inf_state)
6771 {
6772   regcache_xfree (inf_state->registers);
6773   xfree (inf_state->siginfo_data);
6774   xfree (inf_state);
6775 }
6776
6777 struct regcache *
6778 get_infcall_suspend_state_regcache (struct infcall_suspend_state *inf_state)
6779 {
6780   return inf_state->registers;
6781 }
6782
6783 /* infcall_control_state contains state regarding gdb's control of the
6784    inferior itself like stepping control.  It also contains session state like
6785    the user's currently selected frame.  */
6786
6787 struct infcall_control_state
6788 {
6789   struct thread_control_state thread_control;
6790   struct inferior_control_state inferior_control;
6791
6792   /* Other fields:  */
6793   enum stop_stack_kind stop_stack_dummy;
6794   int stopped_by_random_signal;
6795   int stop_after_trap;
6796
6797   /* ID if the selected frame when the inferior function call was made.  */
6798   struct frame_id selected_frame_id;
6799 };
6800
6801 /* Save all of the information associated with the inferior<==>gdb
6802    connection.  */
6803
6804 struct infcall_control_state *
6805 save_infcall_control_state (void)
6806 {
6807   struct infcall_control_state *inf_status = xmalloc (sizeof (*inf_status));
6808   struct thread_info *tp = inferior_thread ();
6809   struct inferior *inf = current_inferior ();
6810
6811   inf_status->thread_control = tp->control;
6812   inf_status->inferior_control = inf->control;
6813
6814   tp->control.step_resume_breakpoint = NULL;
6815   tp->control.exception_resume_breakpoint = NULL;
6816
6817   /* Save original bpstat chain to INF_STATUS; replace it in TP with copy of
6818      chain.  If caller's caller is walking the chain, they'll be happier if we
6819      hand them back the original chain when restore_infcall_control_state is
6820      called.  */
6821   tp->control.stop_bpstat = bpstat_copy (tp->control.stop_bpstat);
6822
6823   /* Other fields:  */
6824   inf_status->stop_stack_dummy = stop_stack_dummy;
6825   inf_status->stopped_by_random_signal = stopped_by_random_signal;
6826   inf_status->stop_after_trap = stop_after_trap;
6827
6828   inf_status->selected_frame_id = get_frame_id (get_selected_frame (NULL));
6829
6830   return inf_status;
6831 }
6832
6833 static int
6834 restore_selected_frame (void *args)
6835 {
6836   struct frame_id *fid = (struct frame_id *) args;
6837   struct frame_info *frame;
6838
6839   frame = frame_find_by_id (*fid);
6840
6841   /* If inf_status->selected_frame_id is NULL, there was no previously
6842      selected frame.  */
6843   if (frame == NULL)
6844     {
6845       warning (_("Unable to restore previously selected frame."));
6846       return 0;
6847     }
6848
6849   select_frame (frame);
6850
6851   return (1);
6852 }
6853
6854 /* Restore inferior session state to INF_STATUS.  */
6855
6856 void
6857 restore_infcall_control_state (struct infcall_control_state *inf_status)
6858 {
6859   struct thread_info *tp = inferior_thread ();
6860   struct inferior *inf = current_inferior ();
6861
6862   if (tp->control.step_resume_breakpoint)
6863     tp->control.step_resume_breakpoint->disposition = disp_del_at_next_stop;
6864
6865   if (tp->control.exception_resume_breakpoint)
6866     tp->control.exception_resume_breakpoint->disposition
6867       = disp_del_at_next_stop;
6868
6869   /* Handle the bpstat_copy of the chain.  */
6870   bpstat_clear (&tp->control.stop_bpstat);
6871
6872   tp->control = inf_status->thread_control;
6873   inf->control = inf_status->inferior_control;
6874
6875   /* Other fields:  */
6876   stop_stack_dummy = inf_status->stop_stack_dummy;
6877   stopped_by_random_signal = inf_status->stopped_by_random_signal;
6878   stop_after_trap = inf_status->stop_after_trap;
6879
6880   if (target_has_stack)
6881     {
6882       /* The point of catch_errors is that if the stack is clobbered,
6883          walking the stack might encounter a garbage pointer and
6884          error() trying to dereference it.  */
6885       if (catch_errors
6886           (restore_selected_frame, &inf_status->selected_frame_id,
6887            "Unable to restore previously selected frame:\n",
6888            RETURN_MASK_ERROR) == 0)
6889         /* Error in restoring the selected frame.  Select the innermost
6890            frame.  */
6891         select_frame (get_current_frame ());
6892     }
6893
6894   xfree (inf_status);
6895 }
6896
6897 static void
6898 do_restore_infcall_control_state_cleanup (void *sts)
6899 {
6900   restore_infcall_control_state (sts);
6901 }
6902
6903 struct cleanup *
6904 make_cleanup_restore_infcall_control_state
6905   (struct infcall_control_state *inf_status)
6906 {
6907   return make_cleanup (do_restore_infcall_control_state_cleanup, inf_status);
6908 }
6909
6910 void
6911 discard_infcall_control_state (struct infcall_control_state *inf_status)
6912 {
6913   if (inf_status->thread_control.step_resume_breakpoint)
6914     inf_status->thread_control.step_resume_breakpoint->disposition
6915       = disp_del_at_next_stop;
6916
6917   if (inf_status->thread_control.exception_resume_breakpoint)
6918     inf_status->thread_control.exception_resume_breakpoint->disposition
6919       = disp_del_at_next_stop;
6920
6921   /* See save_infcall_control_state for info on stop_bpstat.  */
6922   bpstat_clear (&inf_status->thread_control.stop_bpstat);
6923
6924   xfree (inf_status);
6925 }
6926 \f
6927 int
6928 ptid_match (ptid_t ptid, ptid_t filter)
6929 {
6930   if (ptid_equal (filter, minus_one_ptid))
6931     return 1;
6932   if (ptid_is_pid (filter)
6933       && ptid_get_pid (ptid) == ptid_get_pid (filter))
6934     return 1;
6935   else if (ptid_equal (ptid, filter))
6936     return 1;
6937
6938   return 0;
6939 }
6940
6941 /* restore_inferior_ptid() will be used by the cleanup machinery
6942    to restore the inferior_ptid value saved in a call to
6943    save_inferior_ptid().  */
6944
6945 static void
6946 restore_inferior_ptid (void *arg)
6947 {
6948   ptid_t *saved_ptid_ptr = arg;
6949
6950   inferior_ptid = *saved_ptid_ptr;
6951   xfree (arg);
6952 }
6953
6954 /* Save the value of inferior_ptid so that it may be restored by a
6955    later call to do_cleanups().  Returns the struct cleanup pointer
6956    needed for later doing the cleanup.  */
6957
6958 struct cleanup *
6959 save_inferior_ptid (void)
6960 {
6961   ptid_t *saved_ptid_ptr;
6962
6963   saved_ptid_ptr = xmalloc (sizeof (ptid_t));
6964   *saved_ptid_ptr = inferior_ptid;
6965   return make_cleanup (restore_inferior_ptid, saved_ptid_ptr);
6966 }
6967 \f
6968
6969 /* User interface for reverse debugging:
6970    Set exec-direction / show exec-direction commands
6971    (returns error unless target implements to_set_exec_direction method).  */
6972
6973 int execution_direction = EXEC_FORWARD;
6974 static const char exec_forward[] = "forward";
6975 static const char exec_reverse[] = "reverse";
6976 static const char *exec_direction = exec_forward;
6977 static const char *const exec_direction_names[] = {
6978   exec_forward,
6979   exec_reverse,
6980   NULL
6981 };
6982
6983 static void
6984 set_exec_direction_func (char *args, int from_tty,
6985                          struct cmd_list_element *cmd)
6986 {
6987   if (target_can_execute_reverse)
6988     {
6989       if (!strcmp (exec_direction, exec_forward))
6990         execution_direction = EXEC_FORWARD;
6991       else if (!strcmp (exec_direction, exec_reverse))
6992         execution_direction = EXEC_REVERSE;
6993     }
6994   else
6995     {
6996       exec_direction = exec_forward;
6997       error (_("Target does not support this operation."));
6998     }
6999 }
7000
7001 static void
7002 show_exec_direction_func (struct ui_file *out, int from_tty,
7003                           struct cmd_list_element *cmd, const char *value)
7004 {
7005   switch (execution_direction) {
7006   case EXEC_FORWARD:
7007     fprintf_filtered (out, _("Forward.\n"));
7008     break;
7009   case EXEC_REVERSE:
7010     fprintf_filtered (out, _("Reverse.\n"));
7011     break;
7012   default:
7013     internal_error (__FILE__, __LINE__,
7014                     _("bogus execution_direction value: %d"),
7015                     (int) execution_direction);
7016   }
7017 }
7018
7019 /* User interface for non-stop mode.  */
7020
7021 int non_stop = 0;
7022
7023 static void
7024 set_non_stop (char *args, int from_tty,
7025               struct cmd_list_element *c)
7026 {
7027   if (target_has_execution)
7028     {
7029       non_stop_1 = non_stop;
7030       error (_("Cannot change this setting while the inferior is running."));
7031     }
7032
7033   non_stop = non_stop_1;
7034 }
7035
7036 static void
7037 show_non_stop (struct ui_file *file, int from_tty,
7038                struct cmd_list_element *c, const char *value)
7039 {
7040   fprintf_filtered (file,
7041                     _("Controlling the inferior in non-stop mode is %s.\n"),
7042                     value);
7043 }
7044
7045 static void
7046 show_schedule_multiple (struct ui_file *file, int from_tty,
7047                         struct cmd_list_element *c, const char *value)
7048 {
7049   fprintf_filtered (file, _("Resuming the execution of threads "
7050                             "of all processes is %s.\n"), value);
7051 }
7052
7053 /* Implementation of `siginfo' variable.  */
7054
7055 static const struct internalvar_funcs siginfo_funcs =
7056 {
7057   siginfo_make_value,
7058   NULL,
7059   NULL
7060 };
7061
7062 void
7063 _initialize_infrun (void)
7064 {
7065   int i;
7066   int numsigs;
7067
7068   add_info ("signals", signals_info, _("\
7069 What debugger does when program gets various signals.\n\
7070 Specify a signal as argument to print info on that signal only."));
7071   add_info_alias ("handle", "signals", 0);
7072
7073   add_com ("handle", class_run, handle_command, _("\
7074 Specify how to handle a signal.\n\
7075 Args are signals and actions to apply to those signals.\n\
7076 Symbolic signals (e.g. SIGSEGV) are recommended but numeric signals\n\
7077 from 1-15 are allowed for compatibility with old versions of GDB.\n\
7078 Numeric ranges may be specified with the form LOW-HIGH (e.g. 1-5).\n\
7079 The special arg \"all\" is recognized to mean all signals except those\n\
7080 used by the debugger, typically SIGTRAP and SIGINT.\n\
7081 Recognized actions include \"stop\", \"nostop\", \"print\", \"noprint\",\n\
7082 \"pass\", \"nopass\", \"ignore\", or \"noignore\".\n\
7083 Stop means reenter debugger if this signal happens (implies print).\n\
7084 Print means print a message if this signal happens.\n\
7085 Pass means let program see this signal; otherwise program doesn't know.\n\
7086 Ignore is a synonym for nopass and noignore is a synonym for pass.\n\
7087 Pass and Stop may be combined."));
7088   if (xdb_commands)
7089     {
7090       add_com ("lz", class_info, signals_info, _("\
7091 What debugger does when program gets various signals.\n\
7092 Specify a signal as argument to print info on that signal only."));
7093       add_com ("z", class_run, xdb_handle_command, _("\
7094 Specify how to handle a signal.\n\
7095 Args are signals and actions to apply to those signals.\n\
7096 Symbolic signals (e.g. SIGSEGV) are recommended but numeric signals\n\
7097 from 1-15 are allowed for compatibility with old versions of GDB.\n\
7098 Numeric ranges may be specified with the form LOW-HIGH (e.g. 1-5).\n\
7099 The special arg \"all\" is recognized to mean all signals except those\n\
7100 used by the debugger, typically SIGTRAP and SIGINT.\n\
7101 Recognized actions include \"s\" (toggles between stop and nostop),\n\
7102 \"r\" (toggles between print and noprint), \"i\" (toggles between pass and \
7103 nopass), \"Q\" (noprint)\n\
7104 Stop means reenter debugger if this signal happens (implies print).\n\
7105 Print means print a message if this signal happens.\n\
7106 Pass means let program see this signal; otherwise program doesn't know.\n\
7107 Ignore is a synonym for nopass and noignore is a synonym for pass.\n\
7108 Pass and Stop may be combined."));
7109     }
7110
7111   if (!dbx_commands)
7112     stop_command = add_cmd ("stop", class_obscure,
7113                             not_just_help_class_command, _("\
7114 There is no `stop' command, but you can set a hook on `stop'.\n\
7115 This allows you to set a list of commands to be run each time execution\n\
7116 of the program stops."), &cmdlist);
7117
7118   add_setshow_zinteger_cmd ("infrun", class_maintenance, &debug_infrun, _("\
7119 Set inferior debugging."), _("\
7120 Show inferior debugging."), _("\
7121 When non-zero, inferior specific debugging is enabled."),
7122                             NULL,
7123                             show_debug_infrun,
7124                             &setdebuglist, &showdebuglist);
7125
7126   add_setshow_boolean_cmd ("displaced", class_maintenance,
7127                            &debug_displaced, _("\
7128 Set displaced stepping debugging."), _("\
7129 Show displaced stepping debugging."), _("\
7130 When non-zero, displaced stepping specific debugging is enabled."),
7131                             NULL,
7132                             show_debug_displaced,
7133                             &setdebuglist, &showdebuglist);
7134
7135   add_setshow_boolean_cmd ("non-stop", no_class,
7136                            &non_stop_1, _("\
7137 Set whether gdb controls the inferior in non-stop mode."), _("\
7138 Show whether gdb controls the inferior in non-stop mode."), _("\
7139 When debugging a multi-threaded program and this setting is\n\
7140 off (the default, also called all-stop mode), when one thread stops\n\
7141 (for a breakpoint, watchpoint, exception, or similar events), GDB stops\n\
7142 all other threads in the program while you interact with the thread of\n\
7143 interest.  When you continue or step a thread, you can allow the other\n\
7144 threads to run, or have them remain stopped, but while you inspect any\n\
7145 thread's state, all threads stop.\n\
7146 \n\
7147 In non-stop mode, when one thread stops, other threads can continue\n\
7148 to run freely.  You'll be able to step each thread independently,\n\
7149 leave it stopped or free to run as needed."),
7150                            set_non_stop,
7151                            show_non_stop,
7152                            &setlist,
7153                            &showlist);
7154
7155   numsigs = (int) GDB_SIGNAL_LAST;
7156   signal_stop = (unsigned char *) xmalloc (sizeof (signal_stop[0]) * numsigs);
7157   signal_print = (unsigned char *)
7158     xmalloc (sizeof (signal_print[0]) * numsigs);
7159   signal_program = (unsigned char *)
7160     xmalloc (sizeof (signal_program[0]) * numsigs);
7161   signal_pass = (unsigned char *)
7162     xmalloc (sizeof (signal_program[0]) * numsigs);
7163   for (i = 0; i < numsigs; i++)
7164     {
7165       signal_stop[i] = 1;
7166       signal_print[i] = 1;
7167       signal_program[i] = 1;
7168     }
7169
7170   /* Signals caused by debugger's own actions
7171      should not be given to the program afterwards.  */
7172   signal_program[GDB_SIGNAL_TRAP] = 0;
7173   signal_program[GDB_SIGNAL_INT] = 0;
7174
7175   /* Signals that are not errors should not normally enter the debugger.  */
7176   signal_stop[GDB_SIGNAL_ALRM] = 0;
7177   signal_print[GDB_SIGNAL_ALRM] = 0;
7178   signal_stop[GDB_SIGNAL_VTALRM] = 0;
7179   signal_print[GDB_SIGNAL_VTALRM] = 0;
7180   signal_stop[GDB_SIGNAL_PROF] = 0;
7181   signal_print[GDB_SIGNAL_PROF] = 0;
7182   signal_stop[GDB_SIGNAL_CHLD] = 0;
7183   signal_print[GDB_SIGNAL_CHLD] = 0;
7184   signal_stop[GDB_SIGNAL_IO] = 0;
7185   signal_print[GDB_SIGNAL_IO] = 0;
7186   signal_stop[GDB_SIGNAL_POLL] = 0;
7187   signal_print[GDB_SIGNAL_POLL] = 0;
7188   signal_stop[GDB_SIGNAL_URG] = 0;
7189   signal_print[GDB_SIGNAL_URG] = 0;
7190   signal_stop[GDB_SIGNAL_WINCH] = 0;
7191   signal_print[GDB_SIGNAL_WINCH] = 0;
7192   signal_stop[GDB_SIGNAL_PRIO] = 0;
7193   signal_print[GDB_SIGNAL_PRIO] = 0;
7194
7195   /* These signals are used internally by user-level thread
7196      implementations.  (See signal(5) on Solaris.)  Like the above
7197      signals, a healthy program receives and handles them as part of
7198      its normal operation.  */
7199   signal_stop[GDB_SIGNAL_LWP] = 0;
7200   signal_print[GDB_SIGNAL_LWP] = 0;
7201   signal_stop[GDB_SIGNAL_WAITING] = 0;
7202   signal_print[GDB_SIGNAL_WAITING] = 0;
7203   signal_stop[GDB_SIGNAL_CANCEL] = 0;
7204   signal_print[GDB_SIGNAL_CANCEL] = 0;
7205
7206   /* Update cached state.  */
7207   signal_cache_update (-1);
7208
7209   add_setshow_zinteger_cmd ("stop-on-solib-events", class_support,
7210                             &stop_on_solib_events, _("\
7211 Set stopping for shared library events."), _("\
7212 Show stopping for shared library events."), _("\
7213 If nonzero, gdb will give control to the user when the dynamic linker\n\
7214 notifies gdb of shared library events.  The most common event of interest\n\
7215 to the user would be loading/unloading of a new library."),
7216                             NULL,
7217                             show_stop_on_solib_events,
7218                             &setlist, &showlist);
7219
7220   add_setshow_enum_cmd ("follow-fork-mode", class_run,
7221                         follow_fork_mode_kind_names,
7222                         &follow_fork_mode_string, _("\
7223 Set debugger response to a program call of fork or vfork."), _("\
7224 Show debugger response to a program call of fork or vfork."), _("\
7225 A fork or vfork creates a new process.  follow-fork-mode can be:\n\
7226   parent  - the original process is debugged after a fork\n\
7227   child   - the new process is debugged after a fork\n\
7228 The unfollowed process will continue to run.\n\
7229 By default, the debugger will follow the parent process."),
7230                         NULL,
7231                         show_follow_fork_mode_string,
7232                         &setlist, &showlist);
7233
7234   add_setshow_enum_cmd ("follow-exec-mode", class_run,
7235                         follow_exec_mode_names,
7236                         &follow_exec_mode_string, _("\
7237 Set debugger response to a program call of exec."), _("\
7238 Show debugger response to a program call of exec."), _("\
7239 An exec call replaces the program image of a process.\n\
7240 \n\
7241 follow-exec-mode can be:\n\
7242 \n\
7243   new - the debugger creates a new inferior and rebinds the process\n\
7244 to this new inferior.  The program the process was running before\n\
7245 the exec call can be restarted afterwards by restarting the original\n\
7246 inferior.\n\
7247 \n\
7248   same - the debugger keeps the process bound to the same inferior.\n\
7249 The new executable image replaces the previous executable loaded in\n\
7250 the inferior.  Restarting the inferior after the exec call restarts\n\
7251 the executable the process was running after the exec call.\n\
7252 \n\
7253 By default, the debugger will use the same inferior."),
7254                         NULL,
7255                         show_follow_exec_mode_string,
7256                         &setlist, &showlist);
7257
7258   add_setshow_enum_cmd ("scheduler-locking", class_run, 
7259                         scheduler_enums, &scheduler_mode, _("\
7260 Set mode for locking scheduler during execution."), _("\
7261 Show mode for locking scheduler during execution."), _("\
7262 off  == no locking (threads may preempt at any time)\n\
7263 on   == full locking (no thread except the current thread may run)\n\
7264 step == scheduler locked during every single-step operation.\n\
7265         In this mode, no other thread may run during a step command.\n\
7266         Other threads may run while stepping over a function call ('next')."), 
7267                         set_schedlock_func,     /* traps on target vector */
7268                         show_scheduler_mode,
7269                         &setlist, &showlist);
7270
7271   add_setshow_boolean_cmd ("schedule-multiple", class_run, &sched_multi, _("\
7272 Set mode for resuming threads of all processes."), _("\
7273 Show mode for resuming threads of all processes."), _("\
7274 When on, execution commands (such as 'continue' or 'next') resume all\n\
7275 threads of all processes.  When off (which is the default), execution\n\
7276 commands only resume the threads of the current process.  The set of\n\
7277 threads that are resumed is further refined by the scheduler-locking\n\
7278 mode (see help set scheduler-locking)."),
7279                            NULL,
7280                            show_schedule_multiple,
7281                            &setlist, &showlist);
7282
7283   add_setshow_boolean_cmd ("step-mode", class_run, &step_stop_if_no_debug, _("\
7284 Set mode of the step operation."), _("\
7285 Show mode of the step operation."), _("\
7286 When set, doing a step over a function without debug line information\n\
7287 will stop at the first instruction of that function. Otherwise, the\n\
7288 function is skipped and the step command stops at a different source line."),
7289                            NULL,
7290                            show_step_stop_if_no_debug,
7291                            &setlist, &showlist);
7292
7293   add_setshow_enum_cmd ("displaced-stepping", class_run,
7294                         can_use_displaced_stepping_enum,
7295                         &can_use_displaced_stepping, _("\
7296 Set debugger's willingness to use displaced stepping."), _("\
7297 Show debugger's willingness to use displaced stepping."), _("\
7298 If on, gdb will use displaced stepping to step over breakpoints if it is\n\
7299 supported by the target architecture.  If off, gdb will not use displaced\n\
7300 stepping to step over breakpoints, even if such is supported by the target\n\
7301 architecture.  If auto (which is the default), gdb will use displaced stepping\n\
7302 if the target architecture supports it and non-stop mode is active, but will not\n\
7303 use it in all-stop mode (see help set non-stop)."),
7304                         NULL,
7305                         show_can_use_displaced_stepping,
7306                         &setlist, &showlist);
7307
7308   add_setshow_enum_cmd ("exec-direction", class_run, exec_direction_names,
7309                         &exec_direction, _("Set direction of execution.\n\
7310 Options are 'forward' or 'reverse'."),
7311                         _("Show direction of execution (forward/reverse)."),
7312                         _("Tells gdb whether to execute forward or backward."),
7313                         set_exec_direction_func, show_exec_direction_func,
7314                         &setlist, &showlist);
7315
7316   /* Set/show detach-on-fork: user-settable mode.  */
7317
7318   add_setshow_boolean_cmd ("detach-on-fork", class_run, &detach_fork, _("\
7319 Set whether gdb will detach the child of a fork."), _("\
7320 Show whether gdb will detach the child of a fork."), _("\
7321 Tells gdb whether to detach the child of a fork."),
7322                            NULL, NULL, &setlist, &showlist);
7323
7324   /* Set/show disable address space randomization mode.  */
7325
7326   add_setshow_boolean_cmd ("disable-randomization", class_support,
7327                            &disable_randomization, _("\
7328 Set disabling of debuggee's virtual address space randomization."), _("\
7329 Show disabling of debuggee's virtual address space randomization."), _("\
7330 When this mode is on (which is the default), randomization of the virtual\n\
7331 address space is disabled.  Standalone programs run with the randomization\n\
7332 enabled by default on some platforms."),
7333                            &set_disable_randomization,
7334                            &show_disable_randomization,
7335                            &setlist, &showlist);
7336
7337   /* ptid initializations */
7338   inferior_ptid = null_ptid;
7339   target_last_wait_ptid = minus_one_ptid;
7340
7341   observer_attach_thread_ptid_changed (infrun_thread_ptid_changed);
7342   observer_attach_thread_stop_requested (infrun_thread_stop_requested);
7343   observer_attach_thread_exit (infrun_thread_thread_exit);
7344   observer_attach_inferior_exit (infrun_inferior_exit);
7345
7346   /* Explicitly create without lookup, since that tries to create a
7347      value with a void typed value, and when we get here, gdbarch
7348      isn't initialized yet.  At this point, we're quite sure there
7349      isn't another convenience variable of the same name.  */
7350   create_internalvar_type_lazy ("_siginfo", &siginfo_funcs, NULL);
7351
7352   add_setshow_boolean_cmd ("observer", no_class,
7353                            &observer_mode_1, _("\
7354 Set whether gdb controls the inferior in observer mode."), _("\
7355 Show whether gdb controls the inferior in observer mode."), _("\
7356 In observer mode, GDB can get data from the inferior, but not\n\
7357 affect its execution.  Registers and memory may not be changed,\n\
7358 breakpoints may not be set, and the program cannot be interrupted\n\
7359 or signalled."),
7360                            set_observer_mode,
7361                            show_observer_mode,
7362                            &setlist,
7363                            &showlist);
7364 }