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