* frame.c (frame_pop, frame_observer_target_changed): Call
[external/binutils.git] / gdb / infrun.c
1 /* Target-struct-independent code to start (run) and stop an inferior
2    process.
3
4    Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
5    1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
6    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 2 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, write to the Free Software
22    Foundation, Inc., 51 Franklin Street, Fifth Floor,
23    Boston, MA 02110-1301, USA.  */
24
25 #include "defs.h"
26 #include "gdb_string.h"
27 #include <ctype.h>
28 #include "symtab.h"
29 #include "frame.h"
30 #include "inferior.h"
31 #include "exceptions.h"
32 #include "breakpoint.h"
33 #include "gdb_wait.h"
34 #include "gdbcore.h"
35 #include "gdbcmd.h"
36 #include "cli/cli-script.h"
37 #include "target.h"
38 #include "gdbthread.h"
39 #include "annotate.h"
40 #include "symfile.h"
41 #include "top.h"
42 #include <signal.h>
43 #include "inf-loop.h"
44 #include "regcache.h"
45 #include "value.h"
46 #include "observer.h"
47 #include "language.h"
48 #include "solib.h"
49 #include "main.h"
50
51 #include "gdb_assert.h"
52 #include "mi/mi-common.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 struct execution_control_state;
78
79 static int currently_stepping (struct execution_control_state *ecs);
80
81 static void xdb_handle_command (char *args, int from_tty);
82
83 static int prepare_to_proceed (void);
84
85 void _initialize_infrun (void);
86
87 int inferior_ignoring_startup_exec_events = 0;
88 int inferior_ignoring_leading_exec_events = 0;
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 /* This is true for configurations that may follow through execl() and
112    similar functions.  At present this is only true for HP-UX native.  */
113
114 #ifndef MAY_FOLLOW_EXEC
115 #define MAY_FOLLOW_EXEC (0)
116 #endif
117
118 static int may_follow_exec = MAY_FOLLOW_EXEC;
119
120 static int debug_infrun = 0;
121 static void
122 show_debug_infrun (struct ui_file *file, int from_tty,
123                    struct cmd_list_element *c, const char *value)
124 {
125   fprintf_filtered (file, _("Inferior debugging is %s.\n"), value);
126 }
127
128 /* If the program uses ELF-style shared libraries, then calls to
129    functions in shared libraries go through stubs, which live in a
130    table called the PLT (Procedure Linkage Table).  The first time the
131    function is called, the stub sends control to the dynamic linker,
132    which looks up the function's real address, patches the stub so
133    that future calls will go directly to the function, and then passes
134    control to the function.
135
136    If we are stepping at the source level, we don't want to see any of
137    this --- we just want to skip over the stub and the dynamic linker.
138    The simple approach is to single-step until control leaves the
139    dynamic linker.
140
141    However, on some systems (e.g., Red Hat's 5.2 distribution) the
142    dynamic linker calls functions in the shared C library, so you
143    can't tell from the PC alone whether the dynamic linker is still
144    running.  In this case, we use a step-resume breakpoint to get us
145    past the dynamic linker, as if we were using "next" to step over a
146    function call.
147
148    IN_SOLIB_DYNSYM_RESOLVE_CODE says whether we're in the dynamic
149    linker code or not.  Normally, this means we single-step.  However,
150    if SKIP_SOLIB_RESOLVER then returns non-zero, then its value is an
151    address where we can place a step-resume breakpoint to get past the
152    linker's symbol resolution function.
153
154    IN_SOLIB_DYNSYM_RESOLVE_CODE can generally be implemented in a
155    pretty portable way, by comparing the PC against the address ranges
156    of the dynamic linker's sections.
157
158    SKIP_SOLIB_RESOLVER is generally going to be system-specific, since
159    it depends on internal details of the dynamic linker.  It's usually
160    not too hard to figure out where to put a breakpoint, but it
161    certainly isn't portable.  SKIP_SOLIB_RESOLVER should do plenty of
162    sanity checking.  If it can't figure things out, returning zero and
163    getting the (possibly confusing) stepping behavior is better than
164    signalling an error, which will obscure the change in the
165    inferior's state.  */
166
167 /* This function returns TRUE if pc is the address of an instruction
168    that lies within the dynamic linker (such as the event hook, or the
169    dld itself).
170
171    This function must be used only when a dynamic linker event has
172    been caught, and the inferior is being stepped out of the hook, or
173    undefined results are guaranteed.  */
174
175 #ifndef SOLIB_IN_DYNAMIC_LINKER
176 #define SOLIB_IN_DYNAMIC_LINKER(pid,pc) 0
177 #endif
178
179 /* We can't step off a permanent breakpoint in the ordinary way, because we
180    can't remove it.  Instead, we have to advance the PC to the next
181    instruction.  This macro should expand to a pointer to a function that
182    does that, or zero if we have no such function.  If we don't have a
183    definition for it, we have to report an error.  */
184 #ifndef SKIP_PERMANENT_BREAKPOINT
185 #define SKIP_PERMANENT_BREAKPOINT (default_skip_permanent_breakpoint)
186 static void
187 default_skip_permanent_breakpoint (void)
188 {
189   error (_("\
190 The program is stopped at a permanent breakpoint, but GDB does not know\n\
191 how to step past a permanent breakpoint on this architecture.  Try using\n\
192 a command like `return' or `jump' to continue execution."));
193 }
194 #endif
195
196
197 /* Convert the #defines into values.  This is temporary until wfi control
198    flow is completely sorted out.  */
199
200 #ifndef HAVE_STEPPABLE_WATCHPOINT
201 #define HAVE_STEPPABLE_WATCHPOINT 0
202 #else
203 #undef  HAVE_STEPPABLE_WATCHPOINT
204 #define HAVE_STEPPABLE_WATCHPOINT 1
205 #endif
206
207 #ifndef CANNOT_STEP_HW_WATCHPOINTS
208 #define CANNOT_STEP_HW_WATCHPOINTS 0
209 #else
210 #undef  CANNOT_STEP_HW_WATCHPOINTS
211 #define CANNOT_STEP_HW_WATCHPOINTS 1
212 #endif
213
214 /* Tables of how to react to signals; the user sets them.  */
215
216 static unsigned char *signal_stop;
217 static unsigned char *signal_print;
218 static unsigned char *signal_program;
219
220 #define SET_SIGS(nsigs,sigs,flags) \
221   do { \
222     int signum = (nsigs); \
223     while (signum-- > 0) \
224       if ((sigs)[signum]) \
225         (flags)[signum] = 1; \
226   } while (0)
227
228 #define UNSET_SIGS(nsigs,sigs,flags) \
229   do { \
230     int signum = (nsigs); \
231     while (signum-- > 0) \
232       if ((sigs)[signum]) \
233         (flags)[signum] = 0; \
234   } while (0)
235
236 /* Value to pass to target_resume() to cause all threads to resume */
237
238 #define RESUME_ALL (pid_to_ptid (-1))
239
240 /* Command list pointer for the "stop" placeholder.  */
241
242 static struct cmd_list_element *stop_command;
243
244 /* Nonzero if breakpoints are now inserted in the inferior.  */
245
246 static int breakpoints_inserted;
247
248 /* Function inferior was in as of last step command.  */
249
250 static struct symbol *step_start_function;
251
252 /* Nonzero if we are expecting a trace trap and should proceed from it.  */
253
254 static int trap_expected;
255
256 /* Nonzero if we want to give control to the user when we're notified
257    of shared library events by the dynamic linker.  */
258 static int stop_on_solib_events;
259 static void
260 show_stop_on_solib_events (struct ui_file *file, int from_tty,
261                            struct cmd_list_element *c, const char *value)
262 {
263   fprintf_filtered (file, _("Stopping for shared library events is %s.\n"),
264                     value);
265 }
266
267 /* Nonzero means expecting a trace trap
268    and should stop the inferior and return silently when it happens.  */
269
270 int stop_after_trap;
271
272 /* Nonzero means expecting a trap and caller will handle it themselves.
273    It is used after attach, due to attaching to a process;
274    when running in the shell before the child program has been exec'd;
275    and when running some kinds of remote stuff (FIXME?).  */
276
277 enum stop_kind stop_soon;
278
279 /* Nonzero if proceed is being used for a "finish" command or a similar
280    situation when stop_registers should be saved.  */
281
282 int proceed_to_finish;
283
284 /* Save register contents here when about to pop a stack dummy frame,
285    if-and-only-if proceed_to_finish is set.
286    Thus this contains the return value from the called function (assuming
287    values are returned in a register).  */
288
289 struct regcache *stop_registers;
290
291 /* Nonzero if program stopped due to error trying to insert breakpoints.  */
292
293 static int breakpoints_failed;
294
295 /* Nonzero after stop if current stack frame should be printed.  */
296
297 static int stop_print_frame;
298
299 static struct breakpoint *step_resume_breakpoint = NULL;
300
301 /* This is a cached copy of the pid/waitstatus of the last event
302    returned by target_wait()/deprecated_target_wait_hook().  This
303    information is returned by get_last_target_status().  */
304 static ptid_t target_last_wait_ptid;
305 static struct target_waitstatus target_last_waitstatus;
306
307 /* This is used to remember when a fork, vfork or exec event
308    was caught by a catchpoint, and thus the event is to be
309    followed at the next resume of the inferior, and not
310    immediately. */
311 static struct
312 {
313   enum target_waitkind kind;
314   struct
315   {
316     int parent_pid;
317     int child_pid;
318   }
319   fork_event;
320   char *execd_pathname;
321 }
322 pending_follow;
323
324 static const char follow_fork_mode_child[] = "child";
325 static const char follow_fork_mode_parent[] = "parent";
326
327 static const char *follow_fork_mode_kind_names[] = {
328   follow_fork_mode_child,
329   follow_fork_mode_parent,
330   NULL
331 };
332
333 static const char *follow_fork_mode_string = follow_fork_mode_parent;
334 static void
335 show_follow_fork_mode_string (struct ui_file *file, int from_tty,
336                               struct cmd_list_element *c, const char *value)
337 {
338   fprintf_filtered (file, _("\
339 Debugger response to a program call of fork or vfork is \"%s\".\n"),
340                     value);
341 }
342 \f
343
344 static int
345 follow_fork (void)
346 {
347   int follow_child = (follow_fork_mode_string == follow_fork_mode_child);
348
349   return target_follow_fork (follow_child);
350 }
351
352 void
353 follow_inferior_reset_breakpoints (void)
354 {
355   /* Was there a step_resume breakpoint?  (There was if the user
356      did a "next" at the fork() call.)  If so, explicitly reset its
357      thread number.
358
359      step_resumes are a form of bp that are made to be per-thread.
360      Since we created the step_resume bp when the parent process
361      was being debugged, and now are switching to the child process,
362      from the breakpoint package's viewpoint, that's a switch of
363      "threads".  We must update the bp's notion of which thread
364      it is for, or it'll be ignored when it triggers.  */
365
366   if (step_resume_breakpoint)
367     breakpoint_re_set_thread (step_resume_breakpoint);
368
369   /* Reinsert all breakpoints in the child.  The user may have set
370      breakpoints after catching the fork, in which case those
371      were never set in the child, but only in the parent.  This makes
372      sure the inserted breakpoints match the breakpoint list.  */
373
374   breakpoint_re_set ();
375   insert_breakpoints ();
376 }
377
378 /* EXECD_PATHNAME is assumed to be non-NULL. */
379
380 static void
381 follow_exec (int pid, char *execd_pathname)
382 {
383   int saved_pid = pid;
384   struct target_ops *tgt;
385
386   if (!may_follow_exec)
387     return;
388
389   /* This is an exec event that we actually wish to pay attention to.
390      Refresh our symbol table to the newly exec'd program, remove any
391      momentary bp's, etc.
392
393      If there are breakpoints, they aren't really inserted now,
394      since the exec() transformed our inferior into a fresh set
395      of instructions.
396
397      We want to preserve symbolic breakpoints on the list, since
398      we have hopes that they can be reset after the new a.out's
399      symbol table is read.
400
401      However, any "raw" breakpoints must be removed from the list
402      (e.g., the solib bp's), since their address is probably invalid
403      now.
404
405      And, we DON'T want to call delete_breakpoints() here, since
406      that may write the bp's "shadow contents" (the instruction
407      value that was overwritten witha TRAP instruction).  Since
408      we now have a new a.out, those shadow contents aren't valid. */
409   update_breakpoints_after_exec ();
410
411   /* If there was one, it's gone now.  We cannot truly step-to-next
412      statement through an exec(). */
413   step_resume_breakpoint = NULL;
414   step_range_start = 0;
415   step_range_end = 0;
416
417   /* What is this a.out's name? */
418   printf_unfiltered (_("Executing new program: %s\n"), execd_pathname);
419
420   /* We've followed the inferior through an exec.  Therefore, the
421      inferior has essentially been killed & reborn. */
422
423   /* First collect the run target in effect.  */
424   tgt = find_run_target ();
425   /* If we can't find one, things are in a very strange state...  */
426   if (tgt == NULL)
427     error (_("Could find run target to save before following exec"));
428
429   gdb_flush (gdb_stdout);
430   target_mourn_inferior ();
431   inferior_ptid = pid_to_ptid (saved_pid);
432   /* Because mourn_inferior resets inferior_ptid. */
433   push_target (tgt);
434
435   /* That a.out is now the one to use. */
436   exec_file_attach (execd_pathname, 0);
437
438   /* And also is where symbols can be found. */
439   symbol_file_add_main (execd_pathname, 0);
440
441   /* Reset the shared library package.  This ensures that we get
442      a shlib event when the child reaches "_start", at which point
443      the dld will have had a chance to initialize the child. */
444 #if defined(SOLIB_RESTART)
445   SOLIB_RESTART ();
446 #endif
447 #ifdef SOLIB_CREATE_INFERIOR_HOOK
448   SOLIB_CREATE_INFERIOR_HOOK (PIDGET (inferior_ptid));
449 #else
450   solib_create_inferior_hook ();
451 #endif
452
453   /* Reinsert all breakpoints.  (Those which were symbolic have
454      been reset to the proper address in the new a.out, thanks
455      to symbol_file_command...) */
456   insert_breakpoints ();
457
458   /* The next resume of this inferior should bring it to the shlib
459      startup breakpoints.  (If the user had also set bp's on
460      "main" from the old (parent) process, then they'll auto-
461      matically get reset there in the new process.) */
462 }
463
464 /* Non-zero if we just simulating a single-step.  This is needed
465    because we cannot remove the breakpoints in the inferior process
466    until after the `wait' in `wait_for_inferior'.  */
467 static int singlestep_breakpoints_inserted_p = 0;
468
469 /* The thread we inserted single-step breakpoints for.  */
470 static ptid_t singlestep_ptid;
471
472 /* PC when we started this single-step.  */
473 static CORE_ADDR singlestep_pc;
474
475 /* If another thread hit the singlestep breakpoint, we save the original
476    thread here so that we can resume single-stepping it later.  */
477 static ptid_t saved_singlestep_ptid;
478 static int stepping_past_singlestep_breakpoint;
479 \f
480
481 /* Things to clean up if we QUIT out of resume ().  */
482 static void
483 resume_cleanups (void *ignore)
484 {
485   normal_stop ();
486 }
487
488 static const char schedlock_off[] = "off";
489 static const char schedlock_on[] = "on";
490 static const char schedlock_step[] = "step";
491 static const char *scheduler_enums[] = {
492   schedlock_off,
493   schedlock_on,
494   schedlock_step,
495   NULL
496 };
497 static const char *scheduler_mode = schedlock_off;
498 static void
499 show_scheduler_mode (struct ui_file *file, int from_tty,
500                      struct cmd_list_element *c, const char *value)
501 {
502   fprintf_filtered (file, _("\
503 Mode for locking scheduler during execution is \"%s\".\n"),
504                     value);
505 }
506
507 static void
508 set_schedlock_func (char *args, int from_tty, struct cmd_list_element *c)
509 {
510   if (!target_can_lock_scheduler)
511     {
512       scheduler_mode = schedlock_off;
513       error (_("Target '%s' cannot support this command."), target_shortname);
514     }
515 }
516
517
518 /* Resume the inferior, but allow a QUIT.  This is useful if the user
519    wants to interrupt some lengthy single-stepping operation
520    (for child processes, the SIGINT goes to the inferior, and so
521    we get a SIGINT random_signal, but for remote debugging and perhaps
522    other targets, that's not true).
523
524    STEP nonzero if we should step (zero to continue instead).
525    SIG is the signal to give the inferior (zero for none).  */
526 void
527 resume (int step, enum target_signal sig)
528 {
529   int should_resume = 1;
530   struct cleanup *old_cleanups = make_cleanup (resume_cleanups, 0);
531   QUIT;
532
533   if (debug_infrun)
534     fprintf_unfiltered (gdb_stdlog, "infrun: resume (step=%d, signal=%d)\n",
535                         step, sig);
536
537   /* FIXME: calling breakpoint_here_p (read_pc ()) three times! */
538
539
540   /* Some targets (e.g. Solaris x86) have a kernel bug when stepping
541      over an instruction that causes a page fault without triggering
542      a hardware watchpoint. The kernel properly notices that it shouldn't
543      stop, because the hardware watchpoint is not triggered, but it forgets
544      the step request and continues the program normally.
545      Work around the problem by removing hardware watchpoints if a step is
546      requested, GDB will check for a hardware watchpoint trigger after the
547      step anyway.  */
548   if (CANNOT_STEP_HW_WATCHPOINTS && step && breakpoints_inserted)
549     remove_hw_watchpoints ();
550
551
552   /* Normally, by the time we reach `resume', the breakpoints are either
553      removed or inserted, as appropriate.  The exception is if we're sitting
554      at a permanent breakpoint; we need to step over it, but permanent
555      breakpoints can't be removed.  So we have to test for it here.  */
556   if (breakpoint_here_p (read_pc ()) == permanent_breakpoint_here)
557     SKIP_PERMANENT_BREAKPOINT ();
558
559   if (SOFTWARE_SINGLE_STEP_P () && step)
560     {
561       /* Do it the hard way, w/temp breakpoints */
562       SOFTWARE_SINGLE_STEP (sig, 1 /*insert-breakpoints */ );
563       /* ...and don't ask hardware to do it.  */
564       step = 0;
565       /* and do not pull these breakpoints until after a `wait' in
566          `wait_for_inferior' */
567       singlestep_breakpoints_inserted_p = 1;
568       singlestep_ptid = inferior_ptid;
569       singlestep_pc = read_pc ();
570     }
571
572   /* If there were any forks/vforks/execs that were caught and are
573      now to be followed, then do so.  */
574   switch (pending_follow.kind)
575     {
576     case TARGET_WAITKIND_FORKED:
577     case TARGET_WAITKIND_VFORKED:
578       pending_follow.kind = TARGET_WAITKIND_SPURIOUS;
579       if (follow_fork ())
580         should_resume = 0;
581       break;
582
583     case TARGET_WAITKIND_EXECD:
584       /* follow_exec is called as soon as the exec event is seen. */
585       pending_follow.kind = TARGET_WAITKIND_SPURIOUS;
586       break;
587
588     default:
589       break;
590     }
591
592   /* Install inferior's terminal modes.  */
593   target_terminal_inferior ();
594
595   if (should_resume)
596     {
597       ptid_t resume_ptid;
598
599       resume_ptid = RESUME_ALL; /* Default */
600
601       if ((step || singlestep_breakpoints_inserted_p)
602           && (stepping_past_singlestep_breakpoint
603               || (!breakpoints_inserted && breakpoint_here_p (read_pc ()))))
604         {
605           /* Stepping past a breakpoint without inserting breakpoints.
606              Make sure only the current thread gets to step, so that
607              other threads don't sneak past breakpoints while they are
608              not inserted. */
609
610           resume_ptid = inferior_ptid;
611         }
612
613       if ((scheduler_mode == schedlock_on)
614           || (scheduler_mode == schedlock_step
615               && (step || singlestep_breakpoints_inserted_p)))
616         {
617           /* User-settable 'scheduler' mode requires solo thread resume. */
618           resume_ptid = inferior_ptid;
619         }
620
621       if (CANNOT_STEP_BREAKPOINT)
622         {
623           /* Most targets can step a breakpoint instruction, thus
624              executing it normally.  But if this one cannot, just
625              continue and we will hit it anyway.  */
626           if (step && breakpoints_inserted && breakpoint_here_p (read_pc ()))
627             step = 0;
628         }
629       target_resume (resume_ptid, step, sig);
630     }
631
632   discard_cleanups (old_cleanups);
633 }
634 \f
635
636 /* Clear out all variables saying what to do when inferior is continued.
637    First do this, then set the ones you want, then call `proceed'.  */
638
639 void
640 clear_proceed_status (void)
641 {
642   trap_expected = 0;
643   step_range_start = 0;
644   step_range_end = 0;
645   step_frame_id = null_frame_id;
646   step_over_calls = STEP_OVER_UNDEBUGGABLE;
647   stop_after_trap = 0;
648   stop_soon = NO_STOP_QUIETLY;
649   proceed_to_finish = 0;
650   breakpoint_proceeded = 1;     /* We're about to proceed... */
651
652   /* Discard any remaining commands or status from previous stop.  */
653   bpstat_clear (&stop_bpstat);
654 }
655
656 /* This should be suitable for any targets that support threads. */
657
658 static int
659 prepare_to_proceed (void)
660 {
661   ptid_t wait_ptid;
662   struct target_waitstatus wait_status;
663
664   /* Get the last target status returned by target_wait().  */
665   get_last_target_status (&wait_ptid, &wait_status);
666
667   /* Make sure we were stopped either at a breakpoint, or because
668      of a Ctrl-C.  */
669   if (wait_status.kind != TARGET_WAITKIND_STOPPED
670       || (wait_status.value.sig != TARGET_SIGNAL_TRAP
671           && wait_status.value.sig != TARGET_SIGNAL_INT))
672     {
673       return 0;
674     }
675
676   if (!ptid_equal (wait_ptid, minus_one_ptid)
677       && !ptid_equal (inferior_ptid, wait_ptid))
678     {
679       /* Switched over from WAIT_PID.  */
680       CORE_ADDR wait_pc = read_pc_pid (wait_ptid);
681
682       if (wait_pc != read_pc ())
683         {
684           /* Switch back to WAIT_PID thread.  */
685           inferior_ptid = wait_ptid;
686
687           /* FIXME: This stuff came from switch_to_thread() in
688              thread.c (which should probably be a public function).  */
689           reinit_frame_cache ();
690           registers_changed ();
691           stop_pc = wait_pc;
692         }
693
694       /* We return 1 to indicate that there is a breakpoint here,
695          so we need to step over it before continuing to avoid
696          hitting it straight away. */
697       if (breakpoint_here_p (wait_pc))
698         return 1;
699     }
700
701   return 0;
702
703 }
704
705 /* Record the pc of the program the last time it stopped.  This is
706    just used internally by wait_for_inferior, but need to be preserved
707    over calls to it and cleared when the inferior is started.  */
708 static CORE_ADDR prev_pc;
709
710 /* Basic routine for continuing the program in various fashions.
711
712    ADDR is the address to resume at, or -1 for resume where stopped.
713    SIGGNAL is the signal to give it, or 0 for none,
714    or -1 for act according to how it stopped.
715    STEP is nonzero if should trap after one instruction.
716    -1 means return after that and print nothing.
717    You should probably set various step_... variables
718    before calling here, if you are stepping.
719
720    You should call clear_proceed_status before calling proceed.  */
721
722 void
723 proceed (CORE_ADDR addr, enum target_signal siggnal, int step)
724 {
725   int oneproc = 0;
726
727   if (step > 0)
728     step_start_function = find_pc_function (read_pc ());
729   if (step < 0)
730     stop_after_trap = 1;
731
732   if (addr == (CORE_ADDR) -1)
733     {
734       if (read_pc () == stop_pc && breakpoint_here_p (read_pc ()))
735         /* There is a breakpoint at the address we will resume at,
736            step one instruction before inserting breakpoints so that
737            we do not stop right away (and report a second hit at this
738            breakpoint).  */
739         oneproc = 1;
740       else if (gdbarch_single_step_through_delay_p (current_gdbarch)
741               && gdbarch_single_step_through_delay (current_gdbarch,
742                                                     get_current_frame ()))
743         /* We stepped onto an instruction that needs to be stepped
744            again before re-inserting the breakpoint, do so.  */
745         oneproc = 1;
746     }
747   else
748     {
749       write_pc (addr);
750     }
751
752   if (debug_infrun)
753     fprintf_unfiltered (gdb_stdlog,
754                         "infrun: proceed (addr=0x%s, signal=%d, step=%d)\n",
755                         paddr_nz (addr), siggnal, step);
756
757   /* In a multi-threaded task we may select another thread
758      and then continue or step.
759
760      But if the old thread was stopped at a breakpoint, it
761      will immediately cause another breakpoint stop without
762      any execution (i.e. it will report a breakpoint hit
763      incorrectly).  So we must step over it first.
764
765      prepare_to_proceed checks the current thread against the thread
766      that reported the most recent event.  If a step-over is required
767      it returns TRUE and sets the current thread to the old thread. */
768   if (prepare_to_proceed () && breakpoint_here_p (read_pc ()))
769     oneproc = 1;
770
771   if (oneproc)
772     /* We will get a trace trap after one instruction.
773        Continue it automatically and insert breakpoints then.  */
774     trap_expected = 1;
775   else
776     {
777       insert_breakpoints ();
778       /* If we get here there was no call to error() in 
779          insert breakpoints -- so they were inserted.  */
780       breakpoints_inserted = 1;
781     }
782
783   if (siggnal != TARGET_SIGNAL_DEFAULT)
784     stop_signal = siggnal;
785   /* If this signal should not be seen by program,
786      give it zero.  Used for debugging signals.  */
787   else if (!signal_program[stop_signal])
788     stop_signal = TARGET_SIGNAL_0;
789
790   annotate_starting ();
791
792   /* Make sure that output from GDB appears before output from the
793      inferior.  */
794   gdb_flush (gdb_stdout);
795
796   /* Refresh prev_pc value just prior to resuming.  This used to be
797      done in stop_stepping, however, setting prev_pc there did not handle
798      scenarios such as inferior function calls or returning from
799      a function via the return command.  In those cases, the prev_pc
800      value was not set properly for subsequent commands.  The prev_pc value 
801      is used to initialize the starting line number in the ecs.  With an 
802      invalid value, the gdb next command ends up stopping at the position
803      represented by the next line table entry past our start position.
804      On platforms that generate one line table entry per line, this
805      is not a problem.  However, on the ia64, the compiler generates
806      extraneous line table entries that do not increase the line number.
807      When we issue the gdb next command on the ia64 after an inferior call
808      or a return command, we often end up a few instructions forward, still 
809      within the original line we started.
810
811      An attempt was made to have init_execution_control_state () refresh
812      the prev_pc value before calculating the line number.  This approach
813      did not work because on platforms that use ptrace, the pc register
814      cannot be read unless the inferior is stopped.  At that point, we
815      are not guaranteed the inferior is stopped and so the read_pc ()
816      call can fail.  Setting the prev_pc value here ensures the value is 
817      updated correctly when the inferior is stopped.  */
818   prev_pc = read_pc ();
819
820   /* Resume inferior.  */
821   resume (oneproc || step || bpstat_should_step (), stop_signal);
822
823   /* Wait for it to stop (if not standalone)
824      and in any case decode why it stopped, and act accordingly.  */
825   /* Do this only if we are not using the event loop, or if the target
826      does not support asynchronous execution. */
827   if (!target_can_async_p ())
828     {
829       wait_for_inferior ();
830       normal_stop ();
831     }
832 }
833 \f
834
835 /* Start remote-debugging of a machine over a serial link.  */
836
837 void
838 start_remote (int from_tty)
839 {
840   init_thread_list ();
841   init_wait_for_inferior ();
842   stop_soon = STOP_QUIETLY;
843   trap_expected = 0;
844
845   /* Always go on waiting for the target, regardless of the mode. */
846   /* FIXME: cagney/1999-09-23: At present it isn't possible to
847      indicate to wait_for_inferior that a target should timeout if
848      nothing is returned (instead of just blocking).  Because of this,
849      targets expecting an immediate response need to, internally, set
850      things up so that the target_wait() is forced to eventually
851      timeout. */
852   /* FIXME: cagney/1999-09-24: It isn't possible for target_open() to
853      differentiate to its caller what the state of the target is after
854      the initial open has been performed.  Here we're assuming that
855      the target has stopped.  It should be possible to eventually have
856      target_open() return to the caller an indication that the target
857      is currently running and GDB state should be set to the same as
858      for an async run. */
859   wait_for_inferior ();
860
861   /* Now that the inferior has stopped, do any bookkeeping like
862      loading shared libraries.  We want to do this before normal_stop,
863      so that the displayed frame is up to date.  */
864   post_create_inferior (&current_target, from_tty);
865
866   normal_stop ();
867 }
868
869 /* Initialize static vars when a new inferior begins.  */
870
871 void
872 init_wait_for_inferior (void)
873 {
874   /* These are meaningless until the first time through wait_for_inferior.  */
875   prev_pc = 0;
876
877   breakpoints_inserted = 0;
878   breakpoint_init_inferior (inf_starting);
879
880   /* Don't confuse first call to proceed(). */
881   stop_signal = TARGET_SIGNAL_0;
882
883   /* The first resume is not following a fork/vfork/exec. */
884   pending_follow.kind = TARGET_WAITKIND_SPURIOUS;       /* I.e., none. */
885
886   clear_proceed_status ();
887
888   stepping_past_singlestep_breakpoint = 0;
889 }
890 \f
891 /* This enum encodes possible reasons for doing a target_wait, so that
892    wfi can call target_wait in one place.  (Ultimately the call will be
893    moved out of the infinite loop entirely.) */
894
895 enum infwait_states
896 {
897   infwait_normal_state,
898   infwait_thread_hop_state,
899   infwait_nonstep_watch_state
900 };
901
902 /* Why did the inferior stop? Used to print the appropriate messages
903    to the interface from within handle_inferior_event(). */
904 enum inferior_stop_reason
905 {
906   /* Step, next, nexti, stepi finished. */
907   END_STEPPING_RANGE,
908   /* Inferior terminated by signal. */
909   SIGNAL_EXITED,
910   /* Inferior exited. */
911   EXITED,
912   /* Inferior received signal, and user asked to be notified. */
913   SIGNAL_RECEIVED
914 };
915
916 /* This structure contains what used to be local variables in
917    wait_for_inferior.  Probably many of them can return to being
918    locals in handle_inferior_event.  */
919
920 struct execution_control_state
921 {
922   struct target_waitstatus ws;
923   struct target_waitstatus *wp;
924   int another_trap;
925   int random_signal;
926   CORE_ADDR stop_func_start;
927   CORE_ADDR stop_func_end;
928   char *stop_func_name;
929   struct symtab_and_line sal;
930   int current_line;
931   struct symtab *current_symtab;
932   int handling_longjmp;         /* FIXME */
933   ptid_t ptid;
934   ptid_t saved_inferior_ptid;
935   int step_after_step_resume_breakpoint;
936   int stepping_through_solib_after_catch;
937   bpstat stepping_through_solib_catchpoints;
938   int new_thread_event;
939   struct target_waitstatus tmpstatus;
940   enum infwait_states infwait_state;
941   ptid_t waiton_ptid;
942   int wait_some_more;
943 };
944
945 void init_execution_control_state (struct execution_control_state *ecs);
946
947 void handle_inferior_event (struct execution_control_state *ecs);
948
949 static void step_into_function (struct execution_control_state *ecs);
950 static void insert_step_resume_breakpoint_at_frame (struct frame_info *step_frame);
951 static void insert_step_resume_breakpoint_at_caller (struct frame_info *);
952 static void insert_step_resume_breakpoint_at_sal (struct symtab_and_line sr_sal,
953                                                   struct frame_id sr_id);
954 static void stop_stepping (struct execution_control_state *ecs);
955 static void prepare_to_wait (struct execution_control_state *ecs);
956 static void keep_going (struct execution_control_state *ecs);
957 static void print_stop_reason (enum inferior_stop_reason stop_reason,
958                                int stop_info);
959
960 /* Wait for control to return from inferior to debugger.
961    If inferior gets a signal, we may decide to start it up again
962    instead of returning.  That is why there is a loop in this function.
963    When this function actually returns it means the inferior
964    should be left stopped and GDB should read more commands.  */
965
966 void
967 wait_for_inferior (void)
968 {
969   struct cleanup *old_cleanups;
970   struct execution_control_state ecss;
971   struct execution_control_state *ecs;
972
973   if (debug_infrun)
974     fprintf_unfiltered (gdb_stdlog, "infrun: wait_for_inferior\n");
975
976   old_cleanups = make_cleanup (delete_step_resume_breakpoint,
977                                &step_resume_breakpoint);
978
979   /* wfi still stays in a loop, so it's OK just to take the address of
980      a local to get the ecs pointer.  */
981   ecs = &ecss;
982
983   /* Fill in with reasonable starting values.  */
984   init_execution_control_state (ecs);
985
986   /* We'll update this if & when we switch to a new thread. */
987   previous_inferior_ptid = inferior_ptid;
988
989   overlay_cache_invalid = 1;
990
991   /* We have to invalidate the registers BEFORE calling target_wait
992      because they can be loaded from the target while in target_wait.
993      This makes remote debugging a bit more efficient for those
994      targets that provide critical registers as part of their normal
995      status mechanism. */
996
997   registers_changed ();
998
999   while (1)
1000     {
1001       if (deprecated_target_wait_hook)
1002         ecs->ptid = deprecated_target_wait_hook (ecs->waiton_ptid, ecs->wp);
1003       else
1004         ecs->ptid = target_wait (ecs->waiton_ptid, ecs->wp);
1005
1006       /* Now figure out what to do with the result of the result.  */
1007       handle_inferior_event (ecs);
1008
1009       if (!ecs->wait_some_more)
1010         break;
1011     }
1012   do_cleanups (old_cleanups);
1013 }
1014
1015 /* Asynchronous version of wait_for_inferior. It is called by the
1016    event loop whenever a change of state is detected on the file
1017    descriptor corresponding to the target. It can be called more than
1018    once to complete a single execution command. In such cases we need
1019    to keep the state in a global variable ASYNC_ECSS. If it is the
1020    last time that this function is called for a single execution
1021    command, then report to the user that the inferior has stopped, and
1022    do the necessary cleanups. */
1023
1024 struct execution_control_state async_ecss;
1025 struct execution_control_state *async_ecs;
1026
1027 void
1028 fetch_inferior_event (void *client_data)
1029 {
1030   static struct cleanup *old_cleanups;
1031
1032   async_ecs = &async_ecss;
1033
1034   if (!async_ecs->wait_some_more)
1035     {
1036       old_cleanups = make_exec_cleanup (delete_step_resume_breakpoint,
1037                                         &step_resume_breakpoint);
1038
1039       /* Fill in with reasonable starting values.  */
1040       init_execution_control_state (async_ecs);
1041
1042       /* We'll update this if & when we switch to a new thread. */
1043       previous_inferior_ptid = inferior_ptid;
1044
1045       overlay_cache_invalid = 1;
1046
1047       /* We have to invalidate the registers BEFORE calling target_wait
1048          because they can be loaded from the target while in target_wait.
1049          This makes remote debugging a bit more efficient for those
1050          targets that provide critical registers as part of their normal
1051          status mechanism. */
1052
1053       registers_changed ();
1054     }
1055
1056   if (deprecated_target_wait_hook)
1057     async_ecs->ptid =
1058       deprecated_target_wait_hook (async_ecs->waiton_ptid, async_ecs->wp);
1059   else
1060     async_ecs->ptid = target_wait (async_ecs->waiton_ptid, async_ecs->wp);
1061
1062   /* Now figure out what to do with the result of the result.  */
1063   handle_inferior_event (async_ecs);
1064
1065   if (!async_ecs->wait_some_more)
1066     {
1067       /* Do only the cleanups that have been added by this
1068          function. Let the continuations for the commands do the rest,
1069          if there are any. */
1070       do_exec_cleanups (old_cleanups);
1071       normal_stop ();
1072       if (step_multi && stop_step)
1073         inferior_event_handler (INF_EXEC_CONTINUE, NULL);
1074       else
1075         inferior_event_handler (INF_EXEC_COMPLETE, NULL);
1076     }
1077 }
1078
1079 /* Prepare an execution control state for looping through a
1080    wait_for_inferior-type loop.  */
1081
1082 void
1083 init_execution_control_state (struct execution_control_state *ecs)
1084 {
1085   ecs->another_trap = 0;
1086   ecs->random_signal = 0;
1087   ecs->step_after_step_resume_breakpoint = 0;
1088   ecs->handling_longjmp = 0;    /* FIXME */
1089   ecs->stepping_through_solib_after_catch = 0;
1090   ecs->stepping_through_solib_catchpoints = NULL;
1091   ecs->sal = find_pc_line (prev_pc, 0);
1092   ecs->current_line = ecs->sal.line;
1093   ecs->current_symtab = ecs->sal.symtab;
1094   ecs->infwait_state = infwait_normal_state;
1095   ecs->waiton_ptid = pid_to_ptid (-1);
1096   ecs->wp = &(ecs->ws);
1097 }
1098
1099 /* Return the cached copy of the last pid/waitstatus returned by
1100    target_wait()/deprecated_target_wait_hook().  The data is actually
1101    cached by handle_inferior_event(), which gets called immediately
1102    after target_wait()/deprecated_target_wait_hook().  */
1103
1104 void
1105 get_last_target_status (ptid_t *ptidp, struct target_waitstatus *status)
1106 {
1107   *ptidp = target_last_wait_ptid;
1108   *status = target_last_waitstatus;
1109 }
1110
1111 void
1112 nullify_last_target_wait_ptid (void)
1113 {
1114   target_last_wait_ptid = minus_one_ptid;
1115 }
1116
1117 /* Switch thread contexts, maintaining "infrun state". */
1118
1119 static void
1120 context_switch (struct execution_control_state *ecs)
1121 {
1122   /* Caution: it may happen that the new thread (or the old one!)
1123      is not in the thread list.  In this case we must not attempt
1124      to "switch context", or we run the risk that our context may
1125      be lost.  This may happen as a result of the target module
1126      mishandling thread creation.  */
1127
1128   if (debug_infrun)
1129     {
1130       fprintf_unfiltered (gdb_stdlog, "infrun: Switching context from %s ",
1131                           target_pid_to_str (inferior_ptid));
1132       fprintf_unfiltered (gdb_stdlog, "to %s\n",
1133                           target_pid_to_str (ecs->ptid));
1134     }
1135
1136   if (in_thread_list (inferior_ptid) && in_thread_list (ecs->ptid))
1137     {                           /* Perform infrun state context switch: */
1138       /* Save infrun state for the old thread.  */
1139       save_infrun_state (inferior_ptid, prev_pc,
1140                          trap_expected, step_resume_breakpoint,
1141                          step_range_start,
1142                          step_range_end, &step_frame_id,
1143                          ecs->handling_longjmp, ecs->another_trap,
1144                          ecs->stepping_through_solib_after_catch,
1145                          ecs->stepping_through_solib_catchpoints,
1146                          ecs->current_line, ecs->current_symtab);
1147
1148       /* Load infrun state for the new thread.  */
1149       load_infrun_state (ecs->ptid, &prev_pc,
1150                          &trap_expected, &step_resume_breakpoint,
1151                          &step_range_start,
1152                          &step_range_end, &step_frame_id,
1153                          &ecs->handling_longjmp, &ecs->another_trap,
1154                          &ecs->stepping_through_solib_after_catch,
1155                          &ecs->stepping_through_solib_catchpoints,
1156                          &ecs->current_line, &ecs->current_symtab);
1157     }
1158   inferior_ptid = ecs->ptid;
1159   reinit_frame_cache ();
1160 }
1161
1162 static void
1163 adjust_pc_after_break (struct execution_control_state *ecs)
1164 {
1165   CORE_ADDR breakpoint_pc;
1166
1167   /* If this target does not decrement the PC after breakpoints, then
1168      we have nothing to do.  */
1169   if (DECR_PC_AFTER_BREAK == 0)
1170     return;
1171
1172   /* If we've hit a breakpoint, we'll normally be stopped with SIGTRAP.  If
1173      we aren't, just return.
1174
1175      We assume that waitkinds other than TARGET_WAITKIND_STOPPED are not
1176      affected by DECR_PC_AFTER_BREAK.  Other waitkinds which are implemented
1177      by software breakpoints should be handled through the normal breakpoint
1178      layer.
1179
1180      NOTE drow/2004-01-31: On some targets, breakpoints may generate
1181      different signals (SIGILL or SIGEMT for instance), but it is less
1182      clear where the PC is pointing afterwards.  It may not match
1183      DECR_PC_AFTER_BREAK.  I don't know any specific target that generates
1184      these signals at breakpoints (the code has been in GDB since at least
1185      1992) so I can not guess how to handle them here.
1186
1187      In earlier versions of GDB, a target with HAVE_NONSTEPPABLE_WATCHPOINTS
1188      would have the PC after hitting a watchpoint affected by
1189      DECR_PC_AFTER_BREAK.  I haven't found any target with both of these set
1190      in GDB history, and it seems unlikely to be correct, so
1191      HAVE_NONSTEPPABLE_WATCHPOINTS is not checked here.  */
1192
1193   if (ecs->ws.kind != TARGET_WAITKIND_STOPPED)
1194     return;
1195
1196   if (ecs->ws.value.sig != TARGET_SIGNAL_TRAP)
1197     return;
1198
1199   /* Find the location where (if we've hit a breakpoint) the
1200      breakpoint would be.  */
1201   breakpoint_pc = read_pc_pid (ecs->ptid) - DECR_PC_AFTER_BREAK;
1202
1203   if (SOFTWARE_SINGLE_STEP_P ())
1204     {
1205       /* When using software single-step, a SIGTRAP can only indicate
1206          an inserted breakpoint.  This actually makes things
1207          easier.  */
1208       if (singlestep_breakpoints_inserted_p)
1209         /* When software single stepping, the instruction at [prev_pc]
1210            is never a breakpoint, but the instruction following
1211            [prev_pc] (in program execution order) always is.  Assume
1212            that following instruction was reached and hence a software
1213            breakpoint was hit.  */
1214         write_pc_pid (breakpoint_pc, ecs->ptid);
1215       else if (software_breakpoint_inserted_here_p (breakpoint_pc))
1216         /* The inferior was free running (i.e., no single-step
1217            breakpoints inserted) and it hit a software breakpoint.  */
1218         write_pc_pid (breakpoint_pc, ecs->ptid);
1219     }
1220   else
1221     {
1222       /* When using hardware single-step, a SIGTRAP is reported for
1223          both a completed single-step and a software breakpoint.  Need
1224          to differentiate between the two as the latter needs
1225          adjusting but the former does not.
1226
1227          When the thread to be examined does not match the current thread
1228          context we can't use currently_stepping, so assume no
1229          single-stepping in this case.  */
1230       if (ptid_equal (ecs->ptid, inferior_ptid) && currently_stepping (ecs))
1231         {
1232           if (prev_pc == breakpoint_pc
1233               && software_breakpoint_inserted_here_p (breakpoint_pc))
1234             /* Hardware single-stepped a software breakpoint (as
1235                occures when the inferior is resumed with PC pointing
1236                at not-yet-hit software breakpoint).  Since the
1237                breakpoint really is executed, the inferior needs to be
1238                backed up to the breakpoint address.  */
1239             write_pc_pid (breakpoint_pc, ecs->ptid);
1240         }
1241       else
1242         {
1243           if (software_breakpoint_inserted_here_p (breakpoint_pc))
1244             /* The inferior was free running (i.e., no hardware
1245                single-step and no possibility of a false SIGTRAP) and
1246                hit a software breakpoint.  */
1247             write_pc_pid (breakpoint_pc, ecs->ptid);
1248         }
1249     }
1250 }
1251
1252 /* Given an execution control state that has been freshly filled in
1253    by an event from the inferior, figure out what it means and take
1254    appropriate action.  */
1255
1256 int stepped_after_stopped_by_watchpoint;
1257
1258 void
1259 handle_inferior_event (struct execution_control_state *ecs)
1260 {
1261   /* NOTE: bje/2005-05-02: If you're looking at this code and thinking
1262      that the variable stepped_after_stopped_by_watchpoint isn't used,
1263      then you're wrong!  See remote.c:remote_stopped_data_address.  */
1264
1265   int sw_single_step_trap_p = 0;
1266   int stopped_by_watchpoint = -1;       /* Mark as unknown.  */
1267
1268   /* Cache the last pid/waitstatus. */
1269   target_last_wait_ptid = ecs->ptid;
1270   target_last_waitstatus = *ecs->wp;
1271
1272   adjust_pc_after_break (ecs);
1273
1274   switch (ecs->infwait_state)
1275     {
1276     case infwait_thread_hop_state:
1277       if (debug_infrun)
1278         fprintf_unfiltered (gdb_stdlog, "infrun: infwait_thread_hop_state\n");
1279       /* Cancel the waiton_ptid. */
1280       ecs->waiton_ptid = pid_to_ptid (-1);
1281       break;
1282
1283     case infwait_normal_state:
1284       if (debug_infrun)
1285         fprintf_unfiltered (gdb_stdlog, "infrun: infwait_normal_state\n");
1286       stepped_after_stopped_by_watchpoint = 0;
1287       break;
1288
1289     case infwait_nonstep_watch_state:
1290       if (debug_infrun)
1291         fprintf_unfiltered (gdb_stdlog,
1292                             "infrun: infwait_nonstep_watch_state\n");
1293       insert_breakpoints ();
1294
1295       /* FIXME-maybe: is this cleaner than setting a flag?  Does it
1296          handle things like signals arriving and other things happening
1297          in combination correctly?  */
1298       stepped_after_stopped_by_watchpoint = 1;
1299       break;
1300
1301     default:
1302       internal_error (__FILE__, __LINE__, _("bad switch"));
1303     }
1304   ecs->infwait_state = infwait_normal_state;
1305
1306   reinit_frame_cache ();
1307
1308   /* If it's a new process, add it to the thread database */
1309
1310   ecs->new_thread_event = (!ptid_equal (ecs->ptid, inferior_ptid)
1311                            && !ptid_equal (ecs->ptid, minus_one_ptid)
1312                            && !in_thread_list (ecs->ptid));
1313
1314   if (ecs->ws.kind != TARGET_WAITKIND_EXITED
1315       && ecs->ws.kind != TARGET_WAITKIND_SIGNALLED && ecs->new_thread_event)
1316     {
1317       add_thread (ecs->ptid);
1318
1319       ui_out_text (uiout, "[New ");
1320       ui_out_text (uiout, target_pid_or_tid_to_str (ecs->ptid));
1321       ui_out_text (uiout, "]\n");
1322     }
1323
1324   switch (ecs->ws.kind)
1325     {
1326     case TARGET_WAITKIND_LOADED:
1327       if (debug_infrun)
1328         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_LOADED\n");
1329       /* Ignore gracefully during startup of the inferior, as it
1330          might be the shell which has just loaded some objects,
1331          otherwise add the symbols for the newly loaded objects.  */
1332 #ifdef SOLIB_ADD
1333       if (stop_soon == NO_STOP_QUIETLY)
1334         {
1335           /* Remove breakpoints, SOLIB_ADD might adjust
1336              breakpoint addresses via breakpoint_re_set.  */
1337           if (breakpoints_inserted)
1338             remove_breakpoints ();
1339
1340           /* Check for any newly added shared libraries if we're
1341              supposed to be adding them automatically.  Switch
1342              terminal for any messages produced by
1343              breakpoint_re_set.  */
1344           target_terminal_ours_for_output ();
1345           /* NOTE: cagney/2003-11-25: Make certain that the target
1346              stack's section table is kept up-to-date.  Architectures,
1347              (e.g., PPC64), use the section table to perform
1348              operations such as address => section name and hence
1349              require the table to contain all sections (including
1350              those found in shared libraries).  */
1351           /* NOTE: cagney/2003-11-25: Pass current_target and not
1352              exec_ops to SOLIB_ADD.  This is because current GDB is
1353              only tooled to propagate section_table changes out from
1354              the "current_target" (see target_resize_to_sections), and
1355              not up from the exec stratum.  This, of course, isn't
1356              right.  "infrun.c" should only interact with the
1357              exec/process stratum, instead relying on the target stack
1358              to propagate relevant changes (stop, section table
1359              changed, ...) up to other layers.  */
1360           SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
1361           target_terminal_inferior ();
1362
1363           /* Reinsert breakpoints and continue.  */
1364           if (breakpoints_inserted)
1365             insert_breakpoints ();
1366         }
1367 #endif
1368       resume (0, TARGET_SIGNAL_0);
1369       prepare_to_wait (ecs);
1370       return;
1371
1372     case TARGET_WAITKIND_SPURIOUS:
1373       if (debug_infrun)
1374         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_SPURIOUS\n");
1375       resume (0, TARGET_SIGNAL_0);
1376       prepare_to_wait (ecs);
1377       return;
1378
1379     case TARGET_WAITKIND_EXITED:
1380       if (debug_infrun)
1381         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_EXITED\n");
1382       target_terminal_ours ();  /* Must do this before mourn anyway */
1383       print_stop_reason (EXITED, ecs->ws.value.integer);
1384
1385       /* Record the exit code in the convenience variable $_exitcode, so
1386          that the user can inspect this again later.  */
1387       set_internalvar (lookup_internalvar ("_exitcode"),
1388                        value_from_longest (builtin_type_int,
1389                                            (LONGEST) ecs->ws.value.integer));
1390       gdb_flush (gdb_stdout);
1391       target_mourn_inferior ();
1392       singlestep_breakpoints_inserted_p = 0;    /*SOFTWARE_SINGLE_STEP_P() */
1393       stop_print_frame = 0;
1394       stop_stepping (ecs);
1395       return;
1396
1397     case TARGET_WAITKIND_SIGNALLED:
1398       if (debug_infrun)
1399         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_SIGNALLED\n");
1400       stop_print_frame = 0;
1401       stop_signal = ecs->ws.value.sig;
1402       target_terminal_ours ();  /* Must do this before mourn anyway */
1403
1404       /* Note: By definition of TARGET_WAITKIND_SIGNALLED, we shouldn't
1405          reach here unless the inferior is dead.  However, for years
1406          target_kill() was called here, which hints that fatal signals aren't
1407          really fatal on some systems.  If that's true, then some changes
1408          may be needed. */
1409       target_mourn_inferior ();
1410
1411       print_stop_reason (SIGNAL_EXITED, stop_signal);
1412       singlestep_breakpoints_inserted_p = 0;    /*SOFTWARE_SINGLE_STEP_P() */
1413       stop_stepping (ecs);
1414       return;
1415
1416       /* The following are the only cases in which we keep going;
1417          the above cases end in a continue or goto. */
1418     case TARGET_WAITKIND_FORKED:
1419     case TARGET_WAITKIND_VFORKED:
1420       if (debug_infrun)
1421         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_FORKED\n");
1422       stop_signal = TARGET_SIGNAL_TRAP;
1423       pending_follow.kind = ecs->ws.kind;
1424
1425       pending_follow.fork_event.parent_pid = PIDGET (ecs->ptid);
1426       pending_follow.fork_event.child_pid = ecs->ws.value.related_pid;
1427
1428       if (!ptid_equal (ecs->ptid, inferior_ptid))
1429         {
1430           context_switch (ecs);
1431           reinit_frame_cache ();
1432         }
1433
1434       stop_pc = read_pc ();
1435
1436       stop_bpstat = bpstat_stop_status (stop_pc, ecs->ptid, 0);
1437
1438       ecs->random_signal = !bpstat_explains_signal (stop_bpstat);
1439
1440       /* If no catchpoint triggered for this, then keep going.  */
1441       if (ecs->random_signal)
1442         {
1443           stop_signal = TARGET_SIGNAL_0;
1444           keep_going (ecs);
1445           return;
1446         }
1447       goto process_event_stop_test;
1448
1449     case TARGET_WAITKIND_EXECD:
1450       if (debug_infrun)
1451         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_EXECD\n");
1452       stop_signal = TARGET_SIGNAL_TRAP;
1453
1454       /* NOTE drow/2002-12-05: This code should be pushed down into the
1455          target_wait function.  Until then following vfork on HP/UX 10.20
1456          is probably broken by this.  Of course, it's broken anyway.  */
1457       /* Is this a target which reports multiple exec events per actual
1458          call to exec()?  (HP-UX using ptrace does, for example.)  If so,
1459          ignore all but the last one.  Just resume the exec'r, and wait
1460          for the next exec event. */
1461       if (inferior_ignoring_leading_exec_events)
1462         {
1463           inferior_ignoring_leading_exec_events--;
1464           target_resume (ecs->ptid, 0, TARGET_SIGNAL_0);
1465           prepare_to_wait (ecs);
1466           return;
1467         }
1468       inferior_ignoring_leading_exec_events =
1469         target_reported_exec_events_per_exec_call () - 1;
1470
1471       pending_follow.execd_pathname =
1472         savestring (ecs->ws.value.execd_pathname,
1473                     strlen (ecs->ws.value.execd_pathname));
1474
1475       /* This causes the eventpoints and symbol table to be reset.  Must
1476          do this now, before trying to determine whether to stop. */
1477       follow_exec (PIDGET (inferior_ptid), pending_follow.execd_pathname);
1478       xfree (pending_follow.execd_pathname);
1479
1480       stop_pc = read_pc_pid (ecs->ptid);
1481       ecs->saved_inferior_ptid = inferior_ptid;
1482       inferior_ptid = ecs->ptid;
1483
1484       stop_bpstat = bpstat_stop_status (stop_pc, ecs->ptid, 0);
1485
1486       ecs->random_signal = !bpstat_explains_signal (stop_bpstat);
1487       inferior_ptid = ecs->saved_inferior_ptid;
1488
1489       if (!ptid_equal (ecs->ptid, inferior_ptid))
1490         {
1491           context_switch (ecs);
1492           reinit_frame_cache ();
1493         }
1494
1495       /* If no catchpoint triggered for this, then keep going.  */
1496       if (ecs->random_signal)
1497         {
1498           stop_signal = TARGET_SIGNAL_0;
1499           keep_going (ecs);
1500           return;
1501         }
1502       goto process_event_stop_test;
1503
1504       /* Be careful not to try to gather much state about a thread
1505          that's in a syscall.  It's frequently a losing proposition.  */
1506     case TARGET_WAITKIND_SYSCALL_ENTRY:
1507       if (debug_infrun)
1508         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_SYSCALL_ENTRY\n");
1509       resume (0, TARGET_SIGNAL_0);
1510       prepare_to_wait (ecs);
1511       return;
1512
1513       /* Before examining the threads further, step this thread to
1514          get it entirely out of the syscall.  (We get notice of the
1515          event when the thread is just on the verge of exiting a
1516          syscall.  Stepping one instruction seems to get it back
1517          into user code.)  */
1518     case TARGET_WAITKIND_SYSCALL_RETURN:
1519       if (debug_infrun)
1520         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_SYSCALL_RETURN\n");
1521       target_resume (ecs->ptid, 1, TARGET_SIGNAL_0);
1522       prepare_to_wait (ecs);
1523       return;
1524
1525     case TARGET_WAITKIND_STOPPED:
1526       if (debug_infrun)
1527         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_STOPPED\n");
1528       stop_signal = ecs->ws.value.sig;
1529       break;
1530
1531       /* We had an event in the inferior, but we are not interested
1532          in handling it at this level. The lower layers have already
1533          done what needs to be done, if anything.
1534
1535          One of the possible circumstances for this is when the
1536          inferior produces output for the console. The inferior has
1537          not stopped, and we are ignoring the event.  Another possible
1538          circumstance is any event which the lower level knows will be
1539          reported multiple times without an intervening resume.  */
1540     case TARGET_WAITKIND_IGNORE:
1541       if (debug_infrun)
1542         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_IGNORE\n");
1543       prepare_to_wait (ecs);
1544       return;
1545     }
1546
1547   /* We may want to consider not doing a resume here in order to give
1548      the user a chance to play with the new thread.  It might be good
1549      to make that a user-settable option.  */
1550
1551   /* At this point, all threads are stopped (happens automatically in
1552      either the OS or the native code).  Therefore we need to continue
1553      all threads in order to make progress.  */
1554   if (ecs->new_thread_event)
1555     {
1556       target_resume (RESUME_ALL, 0, TARGET_SIGNAL_0);
1557       prepare_to_wait (ecs);
1558       return;
1559     }
1560
1561   stop_pc = read_pc_pid (ecs->ptid);
1562
1563   if (debug_infrun)
1564     fprintf_unfiltered (gdb_stdlog, "infrun: stop_pc = 0x%s\n", paddr_nz (stop_pc));
1565
1566   if (stepping_past_singlestep_breakpoint)
1567     {
1568       gdb_assert (SOFTWARE_SINGLE_STEP_P ()
1569                   && singlestep_breakpoints_inserted_p);
1570       gdb_assert (ptid_equal (singlestep_ptid, ecs->ptid));
1571       gdb_assert (!ptid_equal (singlestep_ptid, saved_singlestep_ptid));
1572
1573       stepping_past_singlestep_breakpoint = 0;
1574
1575       /* We've either finished single-stepping past the single-step
1576          breakpoint, or stopped for some other reason.  It would be nice if
1577          we could tell, but we can't reliably.  */
1578       if (stop_signal == TARGET_SIGNAL_TRAP)
1579         {
1580           if (debug_infrun)
1581             fprintf_unfiltered (gdb_stdlog, "infrun: stepping_past_singlestep_breakpoint\n");
1582           /* Pull the single step breakpoints out of the target.  */
1583           SOFTWARE_SINGLE_STEP (0, 0);
1584           singlestep_breakpoints_inserted_p = 0;
1585
1586           ecs->random_signal = 0;
1587
1588           ecs->ptid = saved_singlestep_ptid;
1589           context_switch (ecs);
1590           if (deprecated_context_hook)
1591             deprecated_context_hook (pid_to_thread_id (ecs->ptid));
1592
1593           resume (1, TARGET_SIGNAL_0);
1594           prepare_to_wait (ecs);
1595           return;
1596         }
1597     }
1598
1599   stepping_past_singlestep_breakpoint = 0;
1600
1601   /* See if a thread hit a thread-specific breakpoint that was meant for
1602      another thread.  If so, then step that thread past the breakpoint,
1603      and continue it.  */
1604
1605   if (stop_signal == TARGET_SIGNAL_TRAP)
1606     {
1607       int thread_hop_needed = 0;
1608
1609       /* Check if a regular breakpoint has been hit before checking
1610          for a potential single step breakpoint. Otherwise, GDB will
1611          not see this breakpoint hit when stepping onto breakpoints.  */
1612       if (breakpoints_inserted && breakpoint_here_p (stop_pc))
1613         {
1614           ecs->random_signal = 0;
1615           if (!breakpoint_thread_match (stop_pc, ecs->ptid))
1616             thread_hop_needed = 1;
1617         }
1618       else if (SOFTWARE_SINGLE_STEP_P () && singlestep_breakpoints_inserted_p)
1619         {
1620           /* We have not context switched yet, so this should be true
1621              no matter which thread hit the singlestep breakpoint.  */
1622           gdb_assert (ptid_equal (inferior_ptid, singlestep_ptid));
1623           if (debug_infrun)
1624             fprintf_unfiltered (gdb_stdlog, "infrun: software single step "
1625                                 "trap for %s\n",
1626                                 target_pid_to_str (ecs->ptid));
1627
1628           ecs->random_signal = 0;
1629           /* The call to in_thread_list is necessary because PTIDs sometimes
1630              change when we go from single-threaded to multi-threaded.  If
1631              the singlestep_ptid is still in the list, assume that it is
1632              really different from ecs->ptid.  */
1633           if (!ptid_equal (singlestep_ptid, ecs->ptid)
1634               && in_thread_list (singlestep_ptid))
1635             {
1636               /* If the PC of the thread we were trying to single-step
1637                  has changed, discard this event (which we were going
1638                  to ignore anyway), and pretend we saw that thread
1639                  trap.  This prevents us continuously moving the
1640                  single-step breakpoint forward, one instruction at a
1641                  time.  If the PC has changed, then the thread we were
1642                  trying to single-step has trapped or been signalled,
1643                  but the event has not been reported to GDB yet.
1644
1645                  There might be some cases where this loses signal
1646                  information, if a signal has arrived at exactly the
1647                  same time that the PC changed, but this is the best
1648                  we can do with the information available.  Perhaps we
1649                  should arrange to report all events for all threads
1650                  when they stop, or to re-poll the remote looking for
1651                  this particular thread (i.e. temporarily enable
1652                  schedlock).  */
1653              if (read_pc_pid (singlestep_ptid) != singlestep_pc)
1654                {
1655                  if (debug_infrun)
1656                    fprintf_unfiltered (gdb_stdlog, "infrun: unexpected thread,"
1657                                        " but expected thread advanced also\n");
1658
1659                  /* The current context still belongs to
1660                     singlestep_ptid.  Don't swap here, since that's
1661                     the context we want to use.  Just fudge our
1662                     state and continue.  */
1663                  ecs->ptid = singlestep_ptid;
1664                  stop_pc = read_pc_pid (ecs->ptid);
1665                }
1666              else
1667                {
1668                  if (debug_infrun)
1669                    fprintf_unfiltered (gdb_stdlog,
1670                                        "infrun: unexpected thread\n");
1671
1672                  thread_hop_needed = 1;
1673                  stepping_past_singlestep_breakpoint = 1;
1674                  saved_singlestep_ptid = singlestep_ptid;
1675                }
1676             }
1677         }
1678
1679       if (thread_hop_needed)
1680         {
1681           int remove_status;
1682
1683           if (debug_infrun)
1684             fprintf_unfiltered (gdb_stdlog, "infrun: thread_hop_needed\n");
1685
1686           /* Saw a breakpoint, but it was hit by the wrong thread.
1687              Just continue. */
1688
1689           if (SOFTWARE_SINGLE_STEP_P () && singlestep_breakpoints_inserted_p)
1690             {
1691               /* Pull the single step breakpoints out of the target. */
1692               SOFTWARE_SINGLE_STEP (0, 0);
1693               singlestep_breakpoints_inserted_p = 0;
1694             }
1695
1696           remove_status = remove_breakpoints ();
1697           /* Did we fail to remove breakpoints?  If so, try
1698              to set the PC past the bp.  (There's at least
1699              one situation in which we can fail to remove
1700              the bp's: On HP-UX's that use ttrace, we can't
1701              change the address space of a vforking child
1702              process until the child exits (well, okay, not
1703              then either :-) or execs. */
1704           if (remove_status != 0)
1705             {
1706               /* FIXME!  This is obviously non-portable! */
1707               write_pc_pid (stop_pc + 4, ecs->ptid);
1708               /* We need to restart all the threads now,
1709                * unles we're running in scheduler-locked mode. 
1710                * Use currently_stepping to determine whether to 
1711                * step or continue.
1712                */
1713               /* FIXME MVS: is there any reason not to call resume()? */
1714               if (scheduler_mode == schedlock_on)
1715                 target_resume (ecs->ptid,
1716                                currently_stepping (ecs), TARGET_SIGNAL_0);
1717               else
1718                 target_resume (RESUME_ALL,
1719                                currently_stepping (ecs), TARGET_SIGNAL_0);
1720               prepare_to_wait (ecs);
1721               return;
1722             }
1723           else
1724             {                   /* Single step */
1725               breakpoints_inserted = 0;
1726               if (!ptid_equal (inferior_ptid, ecs->ptid))
1727                 context_switch (ecs);
1728               ecs->waiton_ptid = ecs->ptid;
1729               ecs->wp = &(ecs->ws);
1730               ecs->another_trap = 1;
1731
1732               ecs->infwait_state = infwait_thread_hop_state;
1733               keep_going (ecs);
1734               registers_changed ();
1735               return;
1736             }
1737         }
1738       else if (SOFTWARE_SINGLE_STEP_P () && singlestep_breakpoints_inserted_p)
1739         {
1740           sw_single_step_trap_p = 1;
1741           ecs->random_signal = 0;
1742         }
1743     }
1744   else
1745     ecs->random_signal = 1;
1746
1747   /* See if something interesting happened to the non-current thread.  If
1748      so, then switch to that thread.  */
1749   if (!ptid_equal (ecs->ptid, inferior_ptid))
1750     {
1751       if (debug_infrun)
1752         fprintf_unfiltered (gdb_stdlog, "infrun: context switch\n");
1753
1754       context_switch (ecs);
1755
1756       if (deprecated_context_hook)
1757         deprecated_context_hook (pid_to_thread_id (ecs->ptid));
1758     }
1759
1760   if (SOFTWARE_SINGLE_STEP_P () && singlestep_breakpoints_inserted_p)
1761     {
1762       /* Pull the single step breakpoints out of the target. */
1763       SOFTWARE_SINGLE_STEP (0, 0);
1764       singlestep_breakpoints_inserted_p = 0;
1765     }
1766
1767   /* It may not be necessary to disable the watchpoint to stop over
1768      it.  For example, the PA can (with some kernel cooperation)
1769      single step over a watchpoint without disabling the watchpoint.  */
1770   if (HAVE_STEPPABLE_WATCHPOINT && STOPPED_BY_WATCHPOINT (ecs->ws))
1771     {
1772       if (debug_infrun)
1773         fprintf_unfiltered (gdb_stdlog, "infrun: STOPPED_BY_WATCHPOINT\n");
1774       resume (1, 0);
1775       prepare_to_wait (ecs);
1776       return;
1777     }
1778
1779   /* It is far more common to need to disable a watchpoint to step
1780      the inferior over it.  FIXME.  What else might a debug
1781      register or page protection watchpoint scheme need here?  */
1782   if (HAVE_NONSTEPPABLE_WATCHPOINT && STOPPED_BY_WATCHPOINT (ecs->ws))
1783     {
1784       /* At this point, we are stopped at an instruction which has
1785          attempted to write to a piece of memory under control of
1786          a watchpoint.  The instruction hasn't actually executed
1787          yet.  If we were to evaluate the watchpoint expression
1788          now, we would get the old value, and therefore no change
1789          would seem to have occurred.
1790
1791          In order to make watchpoints work `right', we really need
1792          to complete the memory write, and then evaluate the
1793          watchpoint expression.  The following code does that by
1794          removing the watchpoint (actually, all watchpoints and
1795          breakpoints), single-stepping the target, re-inserting
1796          watchpoints, and then falling through to let normal
1797          single-step processing handle proceed.  Since this
1798          includes evaluating watchpoints, things will come to a
1799          stop in the correct manner.  */
1800
1801       if (debug_infrun)
1802         fprintf_unfiltered (gdb_stdlog, "infrun: STOPPED_BY_WATCHPOINT\n");
1803       remove_breakpoints ();
1804       registers_changed ();
1805       target_resume (ecs->ptid, 1, TARGET_SIGNAL_0);    /* Single step */
1806
1807       ecs->waiton_ptid = ecs->ptid;
1808       ecs->wp = &(ecs->ws);
1809       ecs->infwait_state = infwait_nonstep_watch_state;
1810       prepare_to_wait (ecs);
1811       return;
1812     }
1813
1814   /* It may be possible to simply continue after a watchpoint.  */
1815   if (HAVE_CONTINUABLE_WATCHPOINT)
1816     stopped_by_watchpoint = STOPPED_BY_WATCHPOINT (ecs->ws);
1817
1818   ecs->stop_func_start = 0;
1819   ecs->stop_func_end = 0;
1820   ecs->stop_func_name = 0;
1821   /* Don't care about return value; stop_func_start and stop_func_name
1822      will both be 0 if it doesn't work.  */
1823   find_pc_partial_function (stop_pc, &ecs->stop_func_name,
1824                             &ecs->stop_func_start, &ecs->stop_func_end);
1825   ecs->stop_func_start += DEPRECATED_FUNCTION_START_OFFSET;
1826   ecs->another_trap = 0;
1827   bpstat_clear (&stop_bpstat);
1828   stop_step = 0;
1829   stop_stack_dummy = 0;
1830   stop_print_frame = 1;
1831   ecs->random_signal = 0;
1832   stopped_by_random_signal = 0;
1833   breakpoints_failed = 0;
1834
1835   if (stop_signal == TARGET_SIGNAL_TRAP
1836       && trap_expected
1837       && gdbarch_single_step_through_delay_p (current_gdbarch)
1838       && currently_stepping (ecs))
1839     {
1840       /* We're trying to step of a breakpoint.  Turns out that we're
1841          also on an instruction that needs to be stepped multiple
1842          times before it's been fully executing. E.g., architectures
1843          with a delay slot.  It needs to be stepped twice, once for
1844          the instruction and once for the delay slot.  */
1845       int step_through_delay
1846         = gdbarch_single_step_through_delay (current_gdbarch,
1847                                              get_current_frame ());
1848       if (debug_infrun && step_through_delay)
1849         fprintf_unfiltered (gdb_stdlog, "infrun: step through delay\n");
1850       if (step_range_end == 0 && step_through_delay)
1851         {
1852           /* The user issued a continue when stopped at a breakpoint.
1853              Set up for another trap and get out of here.  */
1854          ecs->another_trap = 1;
1855          keep_going (ecs);
1856          return;
1857         }
1858       else if (step_through_delay)
1859         {
1860           /* The user issued a step when stopped at a breakpoint.
1861              Maybe we should stop, maybe we should not - the delay
1862              slot *might* correspond to a line of source.  In any
1863              case, don't decide that here, just set ecs->another_trap,
1864              making sure we single-step again before breakpoints are
1865              re-inserted.  */
1866           ecs->another_trap = 1;
1867         }
1868     }
1869
1870   /* Look at the cause of the stop, and decide what to do.
1871      The alternatives are:
1872      1) break; to really stop and return to the debugger,
1873      2) drop through to start up again
1874      (set ecs->another_trap to 1 to single step once)
1875      3) set ecs->random_signal to 1, and the decision between 1 and 2
1876      will be made according to the signal handling tables.  */
1877
1878   /* First, distinguish signals caused by the debugger from signals
1879      that have to do with the program's own actions.  Note that
1880      breakpoint insns may cause SIGTRAP or SIGILL or SIGEMT, depending
1881      on the operating system version.  Here we detect when a SIGILL or
1882      SIGEMT is really a breakpoint and change it to SIGTRAP.  We do
1883      something similar for SIGSEGV, since a SIGSEGV will be generated
1884      when we're trying to execute a breakpoint instruction on a
1885      non-executable stack.  This happens for call dummy breakpoints
1886      for architectures like SPARC that place call dummies on the
1887      stack.  */
1888
1889   if (stop_signal == TARGET_SIGNAL_TRAP
1890       || (breakpoints_inserted
1891           && (stop_signal == TARGET_SIGNAL_ILL
1892               || stop_signal == TARGET_SIGNAL_SEGV
1893               || stop_signal == TARGET_SIGNAL_EMT))
1894       || stop_soon == STOP_QUIETLY || stop_soon == STOP_QUIETLY_NO_SIGSTOP)
1895     {
1896       if (stop_signal == TARGET_SIGNAL_TRAP && stop_after_trap)
1897         {
1898           if (debug_infrun)
1899             fprintf_unfiltered (gdb_stdlog, "infrun: stopped\n");
1900           stop_print_frame = 0;
1901           stop_stepping (ecs);
1902           return;
1903         }
1904
1905       /* This is originated from start_remote(), start_inferior() and
1906          shared libraries hook functions.  */
1907       if (stop_soon == STOP_QUIETLY)
1908         {
1909           if (debug_infrun)
1910             fprintf_unfiltered (gdb_stdlog, "infrun: quietly stopped\n");
1911           stop_stepping (ecs);
1912           return;
1913         }
1914
1915       /* This originates from attach_command().  We need to overwrite
1916          the stop_signal here, because some kernels don't ignore a
1917          SIGSTOP in a subsequent ptrace(PTRACE_SONT,SOGSTOP) call.
1918          See more comments in inferior.h.  */
1919       if (stop_soon == STOP_QUIETLY_NO_SIGSTOP)
1920         {
1921           stop_stepping (ecs);
1922           if (stop_signal == TARGET_SIGNAL_STOP)
1923             stop_signal = TARGET_SIGNAL_0;
1924           return;
1925         }
1926
1927       /* Don't even think about breakpoints if just proceeded over a
1928          breakpoint.  */
1929       if (stop_signal == TARGET_SIGNAL_TRAP && trap_expected)
1930         {
1931           if (debug_infrun)
1932             fprintf_unfiltered (gdb_stdlog, "infrun: trap expected\n");
1933           bpstat_clear (&stop_bpstat);
1934         }
1935       else
1936         {
1937           /* See if there is a breakpoint at the current PC.  */
1938           stop_bpstat = bpstat_stop_status (stop_pc, ecs->ptid,
1939                                             stopped_by_watchpoint);
1940
1941           /* Following in case break condition called a
1942              function.  */
1943           stop_print_frame = 1;
1944         }
1945
1946       /* NOTE: cagney/2003-03-29: These two checks for a random signal
1947          at one stage in the past included checks for an inferior
1948          function call's call dummy's return breakpoint.  The original
1949          comment, that went with the test, read:
1950
1951          ``End of a stack dummy.  Some systems (e.g. Sony news) give
1952          another signal besides SIGTRAP, so check here as well as
1953          above.''
1954
1955          If someone ever tries to get get call dummys on a
1956          non-executable stack to work (where the target would stop
1957          with something like a SIGSEGV), then those tests might need
1958          to be re-instated.  Given, however, that the tests were only
1959          enabled when momentary breakpoints were not being used, I
1960          suspect that it won't be the case.
1961
1962          NOTE: kettenis/2004-02-05: Indeed such checks don't seem to
1963          be necessary for call dummies on a non-executable stack on
1964          SPARC.  */
1965
1966       if (stop_signal == TARGET_SIGNAL_TRAP)
1967         ecs->random_signal
1968           = !(bpstat_explains_signal (stop_bpstat)
1969               || trap_expected
1970               || (step_range_end && step_resume_breakpoint == NULL));
1971       else
1972         {
1973           ecs->random_signal = !bpstat_explains_signal (stop_bpstat);
1974           if (!ecs->random_signal)
1975             stop_signal = TARGET_SIGNAL_TRAP;
1976         }
1977     }
1978
1979   /* When we reach this point, we've pretty much decided
1980      that the reason for stopping must've been a random
1981      (unexpected) signal. */
1982
1983   else
1984     ecs->random_signal = 1;
1985
1986 process_event_stop_test:
1987   /* For the program's own signals, act according to
1988      the signal handling tables.  */
1989
1990   if (ecs->random_signal)
1991     {
1992       /* Signal not for debugging purposes.  */
1993       int printed = 0;
1994
1995       if (debug_infrun)
1996          fprintf_unfiltered (gdb_stdlog, "infrun: random signal %d\n", stop_signal);
1997
1998       stopped_by_random_signal = 1;
1999
2000       if (signal_print[stop_signal])
2001         {
2002           printed = 1;
2003           target_terminal_ours_for_output ();
2004           print_stop_reason (SIGNAL_RECEIVED, stop_signal);
2005         }
2006       if (signal_stop[stop_signal])
2007         {
2008           stop_stepping (ecs);
2009           return;
2010         }
2011       /* If not going to stop, give terminal back
2012          if we took it away.  */
2013       else if (printed)
2014         target_terminal_inferior ();
2015
2016       /* Clear the signal if it should not be passed.  */
2017       if (signal_program[stop_signal] == 0)
2018         stop_signal = TARGET_SIGNAL_0;
2019
2020       if (prev_pc == read_pc ()
2021           && !breakpoints_inserted
2022           && breakpoint_here_p (read_pc ())
2023           && step_resume_breakpoint == NULL)
2024         {
2025           /* We were just starting a new sequence, attempting to
2026              single-step off of a breakpoint and expecting a SIGTRAP.
2027              Intead this signal arrives.  This signal will take us out
2028              of the stepping range so GDB needs to remember to, when
2029              the signal handler returns, resume stepping off that
2030              breakpoint.  */
2031           /* To simplify things, "continue" is forced to use the same
2032              code paths as single-step - set a breakpoint at the
2033              signal return address and then, once hit, step off that
2034              breakpoint.  */
2035           insert_step_resume_breakpoint_at_frame (get_current_frame ());
2036           ecs->step_after_step_resume_breakpoint = 1;
2037           keep_going (ecs);
2038           return;
2039         }
2040
2041       if (step_range_end != 0
2042           && stop_signal != TARGET_SIGNAL_0
2043           && stop_pc >= step_range_start && stop_pc < step_range_end
2044           && frame_id_eq (get_frame_id (get_current_frame ()),
2045                           step_frame_id)
2046           && step_resume_breakpoint == NULL)
2047         {
2048           /* The inferior is about to take a signal that will take it
2049              out of the single step range.  Set a breakpoint at the
2050              current PC (which is presumably where the signal handler
2051              will eventually return) and then allow the inferior to
2052              run free.
2053
2054              Note that this is only needed for a signal delivered
2055              while in the single-step range.  Nested signals aren't a
2056              problem as they eventually all return.  */
2057           insert_step_resume_breakpoint_at_frame (get_current_frame ());
2058           keep_going (ecs);
2059           return;
2060         }
2061
2062       /* Note: step_resume_breakpoint may be non-NULL.  This occures
2063          when either there's a nested signal, or when there's a
2064          pending signal enabled just as the signal handler returns
2065          (leaving the inferior at the step-resume-breakpoint without
2066          actually executing it).  Either way continue until the
2067          breakpoint is really hit.  */
2068       keep_going (ecs);
2069       return;
2070     }
2071
2072   /* Handle cases caused by hitting a breakpoint.  */
2073   {
2074     CORE_ADDR jmp_buf_pc;
2075     struct bpstat_what what;
2076
2077     what = bpstat_what (stop_bpstat);
2078
2079     if (what.call_dummy)
2080       {
2081         stop_stack_dummy = 1;
2082       }
2083
2084     switch (what.main_action)
2085       {
2086       case BPSTAT_WHAT_SET_LONGJMP_RESUME:
2087         /* If we hit the breakpoint at longjmp, disable it for the
2088            duration of this command.  Then, install a temporary
2089            breakpoint at the target of the jmp_buf. */
2090         if (debug_infrun)
2091           fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME\n");
2092         disable_longjmp_breakpoint ();
2093         remove_breakpoints ();
2094         breakpoints_inserted = 0;
2095         if (!GET_LONGJMP_TARGET_P () || !GET_LONGJMP_TARGET (&jmp_buf_pc))
2096           {
2097             keep_going (ecs);
2098             return;
2099           }
2100
2101         /* Need to blow away step-resume breakpoint, as it
2102            interferes with us */
2103         if (step_resume_breakpoint != NULL)
2104           {
2105             delete_step_resume_breakpoint (&step_resume_breakpoint);
2106           }
2107
2108         set_longjmp_resume_breakpoint (jmp_buf_pc, null_frame_id);
2109         ecs->handling_longjmp = 1;      /* FIXME */
2110         keep_going (ecs);
2111         return;
2112
2113       case BPSTAT_WHAT_CLEAR_LONGJMP_RESUME:
2114       case BPSTAT_WHAT_CLEAR_LONGJMP_RESUME_SINGLE:
2115         if (debug_infrun)
2116           fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_CLEAR_LONGJMP_RESUME\n");
2117         remove_breakpoints ();
2118         breakpoints_inserted = 0;
2119         disable_longjmp_breakpoint ();
2120         ecs->handling_longjmp = 0;      /* FIXME */
2121         if (what.main_action == BPSTAT_WHAT_CLEAR_LONGJMP_RESUME)
2122           break;
2123         /* else fallthrough */
2124
2125       case BPSTAT_WHAT_SINGLE:
2126         if (debug_infrun)
2127           fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_SINGLE\n");
2128         if (breakpoints_inserted)
2129           {
2130             remove_breakpoints ();
2131           }
2132         breakpoints_inserted = 0;
2133         ecs->another_trap = 1;
2134         /* Still need to check other stuff, at least the case
2135            where we are stepping and step out of the right range.  */
2136         break;
2137
2138       case BPSTAT_WHAT_STOP_NOISY:
2139         if (debug_infrun)
2140           fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_STOP_NOISY\n");
2141         stop_print_frame = 1;
2142
2143         /* We are about to nuke the step_resume_breakpointt via the
2144            cleanup chain, so no need to worry about it here.  */
2145
2146         stop_stepping (ecs);
2147         return;
2148
2149       case BPSTAT_WHAT_STOP_SILENT:
2150         if (debug_infrun)
2151           fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_STOP_SILENT\n");
2152         stop_print_frame = 0;
2153
2154         /* We are about to nuke the step_resume_breakpoin via the
2155            cleanup chain, so no need to worry about it here.  */
2156
2157         stop_stepping (ecs);
2158         return;
2159
2160       case BPSTAT_WHAT_STEP_RESUME:
2161         /* This proably demands a more elegant solution, but, yeah
2162            right...
2163
2164            This function's use of the simple variable
2165            step_resume_breakpoint doesn't seem to accomodate
2166            simultaneously active step-resume bp's, although the
2167            breakpoint list certainly can.
2168
2169            If we reach here and step_resume_breakpoint is already
2170            NULL, then apparently we have multiple active
2171            step-resume bp's.  We'll just delete the breakpoint we
2172            stopped at, and carry on.  
2173
2174            Correction: what the code currently does is delete a
2175            step-resume bp, but it makes no effort to ensure that
2176            the one deleted is the one currently stopped at.  MVS  */
2177
2178         if (debug_infrun)
2179           fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_STEP_RESUME\n");
2180
2181         if (step_resume_breakpoint == NULL)
2182           {
2183             step_resume_breakpoint =
2184               bpstat_find_step_resume_breakpoint (stop_bpstat);
2185           }
2186         delete_step_resume_breakpoint (&step_resume_breakpoint);
2187         if (ecs->step_after_step_resume_breakpoint)
2188           {
2189             /* Back when the step-resume breakpoint was inserted, we
2190                were trying to single-step off a breakpoint.  Go back
2191                to doing that.  */
2192             ecs->step_after_step_resume_breakpoint = 0;
2193             remove_breakpoints ();
2194             breakpoints_inserted = 0;
2195             ecs->another_trap = 1;
2196             keep_going (ecs);
2197             return;
2198           }
2199         break;
2200
2201       case BPSTAT_WHAT_THROUGH_SIGTRAMP:
2202         if (debug_infrun)
2203           fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_THROUGH_SIGTRAMP\n");
2204         /* If were waiting for a trap, hitting the step_resume_break
2205            doesn't count as getting it.  */
2206         if (trap_expected)
2207           ecs->another_trap = 1;
2208         break;
2209
2210       case BPSTAT_WHAT_CHECK_SHLIBS:
2211       case BPSTAT_WHAT_CHECK_SHLIBS_RESUME_FROM_HOOK:
2212         {
2213           if (debug_infrun)
2214             fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_CHECK_SHLIBS\n");
2215           /* Remove breakpoints, we eventually want to step over the
2216              shlib event breakpoint, and SOLIB_ADD might adjust
2217              breakpoint addresses via breakpoint_re_set.  */
2218           if (breakpoints_inserted)
2219             remove_breakpoints ();
2220           breakpoints_inserted = 0;
2221
2222           /* Check for any newly added shared libraries if we're
2223              supposed to be adding them automatically.  Switch
2224              terminal for any messages produced by
2225              breakpoint_re_set.  */
2226           target_terminal_ours_for_output ();
2227           /* NOTE: cagney/2003-11-25: Make certain that the target
2228              stack's section table is kept up-to-date.  Architectures,
2229              (e.g., PPC64), use the section table to perform
2230              operations such as address => section name and hence
2231              require the table to contain all sections (including
2232              those found in shared libraries).  */
2233           /* NOTE: cagney/2003-11-25: Pass current_target and not
2234              exec_ops to SOLIB_ADD.  This is because current GDB is
2235              only tooled to propagate section_table changes out from
2236              the "current_target" (see target_resize_to_sections), and
2237              not up from the exec stratum.  This, of course, isn't
2238              right.  "infrun.c" should only interact with the
2239              exec/process stratum, instead relying on the target stack
2240              to propagate relevant changes (stop, section table
2241              changed, ...) up to other layers.  */
2242 #ifdef SOLIB_ADD
2243           SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
2244 #else
2245           solib_add (NULL, 0, &current_target, auto_solib_add);
2246 #endif
2247           target_terminal_inferior ();
2248
2249           /* Try to reenable shared library breakpoints, additional
2250              code segments in shared libraries might be mapped in now. */
2251           re_enable_breakpoints_in_shlibs ();
2252
2253           /* If requested, stop when the dynamic linker notifies
2254              gdb of events.  This allows the user to get control
2255              and place breakpoints in initializer routines for
2256              dynamically loaded objects (among other things).  */
2257           if (stop_on_solib_events || stop_stack_dummy)
2258             {
2259               stop_stepping (ecs);
2260               return;
2261             }
2262
2263           /* If we stopped due to an explicit catchpoint, then the
2264              (see above) call to SOLIB_ADD pulled in any symbols
2265              from a newly-loaded library, if appropriate.
2266
2267              We do want the inferior to stop, but not where it is
2268              now, which is in the dynamic linker callback.  Rather,
2269              we would like it stop in the user's program, just after
2270              the call that caused this catchpoint to trigger.  That
2271              gives the user a more useful vantage from which to
2272              examine their program's state. */
2273           else if (what.main_action
2274                    == BPSTAT_WHAT_CHECK_SHLIBS_RESUME_FROM_HOOK)
2275             {
2276               /* ??rehrauer: If I could figure out how to get the
2277                  right return PC from here, we could just set a temp
2278                  breakpoint and resume.  I'm not sure we can without
2279                  cracking open the dld's shared libraries and sniffing
2280                  their unwind tables and text/data ranges, and that's
2281                  not a terribly portable notion.
2282
2283                  Until that time, we must step the inferior out of the
2284                  dld callback, and also out of the dld itself (and any
2285                  code or stubs in libdld.sl, such as "shl_load" and
2286                  friends) until we reach non-dld code.  At that point,
2287                  we can stop stepping. */
2288               bpstat_get_triggered_catchpoints (stop_bpstat,
2289                                                 &ecs->
2290                                                 stepping_through_solib_catchpoints);
2291               ecs->stepping_through_solib_after_catch = 1;
2292
2293               /* Be sure to lift all breakpoints, so the inferior does
2294                  actually step past this point... */
2295               ecs->another_trap = 1;
2296               break;
2297             }
2298           else
2299             {
2300               /* We want to step over this breakpoint, then keep going.  */
2301               ecs->another_trap = 1;
2302               break;
2303             }
2304         }
2305         break;
2306
2307       case BPSTAT_WHAT_LAST:
2308         /* Not a real code, but listed here to shut up gcc -Wall.  */
2309
2310       case BPSTAT_WHAT_KEEP_CHECKING:
2311         break;
2312       }
2313   }
2314
2315   /* We come here if we hit a breakpoint but should not
2316      stop for it.  Possibly we also were stepping
2317      and should stop for that.  So fall through and
2318      test for stepping.  But, if not stepping,
2319      do not stop.  */
2320
2321   /* Are we stepping to get the inferior out of the dynamic linker's
2322      hook (and possibly the dld itself) after catching a shlib
2323      event?  */
2324   if (ecs->stepping_through_solib_after_catch)
2325     {
2326 #if defined(SOLIB_ADD)
2327       /* Have we reached our destination?  If not, keep going. */
2328       if (SOLIB_IN_DYNAMIC_LINKER (PIDGET (ecs->ptid), stop_pc))
2329         {
2330           if (debug_infrun)
2331             fprintf_unfiltered (gdb_stdlog, "infrun: stepping in dynamic linker\n");
2332           ecs->another_trap = 1;
2333           keep_going (ecs);
2334           return;
2335         }
2336 #endif
2337       if (debug_infrun)
2338          fprintf_unfiltered (gdb_stdlog, "infrun: step past dynamic linker\n");
2339       /* Else, stop and report the catchpoint(s) whose triggering
2340          caused us to begin stepping. */
2341       ecs->stepping_through_solib_after_catch = 0;
2342       bpstat_clear (&stop_bpstat);
2343       stop_bpstat = bpstat_copy (ecs->stepping_through_solib_catchpoints);
2344       bpstat_clear (&ecs->stepping_through_solib_catchpoints);
2345       stop_print_frame = 1;
2346       stop_stepping (ecs);
2347       return;
2348     }
2349
2350   if (step_resume_breakpoint)
2351     {
2352       if (debug_infrun)
2353          fprintf_unfiltered (gdb_stdlog, "infrun: step-resume breakpoint\n");
2354
2355       /* Having a step-resume breakpoint overrides anything
2356          else having to do with stepping commands until
2357          that breakpoint is reached.  */
2358       keep_going (ecs);
2359       return;
2360     }
2361
2362   if (step_range_end == 0)
2363     {
2364       if (debug_infrun)
2365          fprintf_unfiltered (gdb_stdlog, "infrun: no stepping, continue\n");
2366       /* Likewise if we aren't even stepping.  */
2367       keep_going (ecs);
2368       return;
2369     }
2370
2371   /* If stepping through a line, keep going if still within it.
2372
2373      Note that step_range_end is the address of the first instruction
2374      beyond the step range, and NOT the address of the last instruction
2375      within it! */
2376   if (stop_pc >= step_range_start && stop_pc < step_range_end)
2377     {
2378       if (debug_infrun)
2379          fprintf_unfiltered (gdb_stdlog, "infrun: stepping inside range [0x%s-0x%s]\n",
2380                             paddr_nz (step_range_start),
2381                             paddr_nz (step_range_end));
2382       keep_going (ecs);
2383       return;
2384     }
2385
2386   /* We stepped out of the stepping range.  */
2387
2388   /* If we are stepping at the source level and entered the runtime
2389      loader dynamic symbol resolution code, we keep on single stepping
2390      until we exit the run time loader code and reach the callee's
2391      address.  */
2392   if (step_over_calls == STEP_OVER_UNDEBUGGABLE
2393 #ifdef IN_SOLIB_DYNSYM_RESOLVE_CODE
2394       && IN_SOLIB_DYNSYM_RESOLVE_CODE (stop_pc)
2395 #else
2396       && in_solib_dynsym_resolve_code (stop_pc)
2397 #endif
2398       )
2399     {
2400       CORE_ADDR pc_after_resolver =
2401         gdbarch_skip_solib_resolver (current_gdbarch, stop_pc);
2402
2403       if (debug_infrun)
2404          fprintf_unfiltered (gdb_stdlog, "infrun: stepped into dynsym resolve code\n");
2405
2406       if (pc_after_resolver)
2407         {
2408           /* Set up a step-resume breakpoint at the address
2409              indicated by SKIP_SOLIB_RESOLVER.  */
2410           struct symtab_and_line sr_sal;
2411           init_sal (&sr_sal);
2412           sr_sal.pc = pc_after_resolver;
2413
2414           insert_step_resume_breakpoint_at_sal (sr_sal, null_frame_id);
2415         }
2416
2417       keep_going (ecs);
2418       return;
2419     }
2420
2421   if (step_range_end != 1
2422       && (step_over_calls == STEP_OVER_UNDEBUGGABLE
2423           || step_over_calls == STEP_OVER_ALL)
2424       && get_frame_type (get_current_frame ()) == SIGTRAMP_FRAME)
2425     {
2426       if (debug_infrun)
2427          fprintf_unfiltered (gdb_stdlog, "infrun: stepped into signal trampoline\n");
2428       /* The inferior, while doing a "step" or "next", has ended up in
2429          a signal trampoline (either by a signal being delivered or by
2430          the signal handler returning).  Just single-step until the
2431          inferior leaves the trampoline (either by calling the handler
2432          or returning).  */
2433       keep_going (ecs);
2434       return;
2435     }
2436
2437   /* Check for subroutine calls.  The check for the current frame
2438      equalling the step ID is not necessary - the check of the
2439      previous frame's ID is sufficient - but it is a common case and
2440      cheaper than checking the previous frame's ID.
2441
2442      NOTE: frame_id_eq will never report two invalid frame IDs as
2443      being equal, so to get into this block, both the current and
2444      previous frame must have valid frame IDs.  */
2445   if (!frame_id_eq (get_frame_id (get_current_frame ()), step_frame_id)
2446       && frame_id_eq (frame_unwind_id (get_current_frame ()), step_frame_id))
2447     {
2448       CORE_ADDR real_stop_pc;
2449
2450       if (debug_infrun)
2451          fprintf_unfiltered (gdb_stdlog, "infrun: stepped into subroutine\n");
2452
2453       if ((step_over_calls == STEP_OVER_NONE)
2454           || ((step_range_end == 1)
2455               && in_prologue (prev_pc, ecs->stop_func_start)))
2456         {
2457           /* I presume that step_over_calls is only 0 when we're
2458              supposed to be stepping at the assembly language level
2459              ("stepi").  Just stop.  */
2460           /* Also, maybe we just did a "nexti" inside a prolog, so we
2461              thought it was a subroutine call but it was not.  Stop as
2462              well.  FENN */
2463           stop_step = 1;
2464           print_stop_reason (END_STEPPING_RANGE, 0);
2465           stop_stepping (ecs);
2466           return;
2467         }
2468
2469       if (step_over_calls == STEP_OVER_ALL)
2470         {
2471           /* We're doing a "next", set a breakpoint at callee's return
2472              address (the address at which the caller will
2473              resume).  */
2474           insert_step_resume_breakpoint_at_caller (get_current_frame ());
2475           keep_going (ecs);
2476           return;
2477         }
2478
2479       /* If we are in a function call trampoline (a stub between the
2480          calling routine and the real function), locate the real
2481          function.  That's what tells us (a) whether we want to step
2482          into it at all, and (b) what prologue we want to run to the
2483          end of, if we do step into it.  */
2484       real_stop_pc = skip_language_trampoline (stop_pc);
2485       if (real_stop_pc == 0)
2486         real_stop_pc = SKIP_TRAMPOLINE_CODE (stop_pc);
2487       if (real_stop_pc != 0)
2488         ecs->stop_func_start = real_stop_pc;
2489
2490       if (
2491 #ifdef IN_SOLIB_DYNSYM_RESOLVE_CODE
2492           IN_SOLIB_DYNSYM_RESOLVE_CODE (ecs->stop_func_start)
2493 #else
2494           in_solib_dynsym_resolve_code (ecs->stop_func_start)
2495 #endif
2496 )
2497         {
2498           struct symtab_and_line sr_sal;
2499           init_sal (&sr_sal);
2500           sr_sal.pc = ecs->stop_func_start;
2501
2502           insert_step_resume_breakpoint_at_sal (sr_sal, null_frame_id);
2503           keep_going (ecs);
2504           return;
2505         }
2506
2507       /* If we have line number information for the function we are
2508          thinking of stepping into, step into it.
2509
2510          If there are several symtabs at that PC (e.g. with include
2511          files), just want to know whether *any* of them have line
2512          numbers.  find_pc_line handles this.  */
2513       {
2514         struct symtab_and_line tmp_sal;
2515
2516         tmp_sal = find_pc_line (ecs->stop_func_start, 0);
2517         if (tmp_sal.line != 0)
2518           {
2519             step_into_function (ecs);
2520             return;
2521           }
2522       }
2523
2524       /* If we have no line number and the step-stop-if-no-debug is
2525          set, we stop the step so that the user has a chance to switch
2526          in assembly mode.  */
2527       if (step_over_calls == STEP_OVER_UNDEBUGGABLE && step_stop_if_no_debug)
2528         {
2529           stop_step = 1;
2530           print_stop_reason (END_STEPPING_RANGE, 0);
2531           stop_stepping (ecs);
2532           return;
2533         }
2534
2535       /* Set a breakpoint at callee's return address (the address at
2536          which the caller will resume).  */
2537       insert_step_resume_breakpoint_at_caller (get_current_frame ());
2538       keep_going (ecs);
2539       return;
2540     }
2541
2542   /* If we're in the return path from a shared library trampoline,
2543      we want to proceed through the trampoline when stepping.  */
2544   if (IN_SOLIB_RETURN_TRAMPOLINE (stop_pc, ecs->stop_func_name))
2545     {
2546       /* Determine where this trampoline returns.  */
2547       CORE_ADDR real_stop_pc = SKIP_TRAMPOLINE_CODE (stop_pc);
2548
2549       if (debug_infrun)
2550          fprintf_unfiltered (gdb_stdlog, "infrun: stepped into solib return tramp\n");
2551
2552       /* Only proceed through if we know where it's going.  */
2553       if (real_stop_pc)
2554         {
2555           /* And put the step-breakpoint there and go until there. */
2556           struct symtab_and_line sr_sal;
2557
2558           init_sal (&sr_sal);   /* initialize to zeroes */
2559           sr_sal.pc = real_stop_pc;
2560           sr_sal.section = find_pc_overlay (sr_sal.pc);
2561
2562           /* Do not specify what the fp should be when we stop since
2563              on some machines the prologue is where the new fp value
2564              is established.  */
2565           insert_step_resume_breakpoint_at_sal (sr_sal, null_frame_id);
2566
2567           /* Restart without fiddling with the step ranges or
2568              other state.  */
2569           keep_going (ecs);
2570           return;
2571         }
2572     }
2573
2574   ecs->sal = find_pc_line (stop_pc, 0);
2575
2576   /* NOTE: tausq/2004-05-24: This if block used to be done before all
2577      the trampoline processing logic, however, there are some trampolines 
2578      that have no names, so we should do trampoline handling first.  */
2579   if (step_over_calls == STEP_OVER_UNDEBUGGABLE
2580       && ecs->stop_func_name == NULL
2581       && ecs->sal.line == 0)
2582     {
2583       if (debug_infrun)
2584          fprintf_unfiltered (gdb_stdlog, "infrun: stepped into undebuggable function\n");
2585
2586       /* The inferior just stepped into, or returned to, an
2587          undebuggable function (where there is no debugging information
2588          and no line number corresponding to the address where the
2589          inferior stopped).  Since we want to skip this kind of code,
2590          we keep going until the inferior returns from this
2591          function - unless the user has asked us not to (via
2592          set step-mode) or we no longer know how to get back
2593          to the call site.  */
2594       if (step_stop_if_no_debug
2595           || !frame_id_p (frame_unwind_id (get_current_frame ())))
2596         {
2597           /* If we have no line number and the step-stop-if-no-debug
2598              is set, we stop the step so that the user has a chance to
2599              switch in assembly mode.  */
2600           stop_step = 1;
2601           print_stop_reason (END_STEPPING_RANGE, 0);
2602           stop_stepping (ecs);
2603           return;
2604         }
2605       else
2606         {
2607           /* Set a breakpoint at callee's return address (the address
2608              at which the caller will resume).  */
2609           insert_step_resume_breakpoint_at_caller (get_current_frame ());
2610           keep_going (ecs);
2611           return;
2612         }
2613     }
2614
2615   if (step_range_end == 1)
2616     {
2617       /* It is stepi or nexti.  We always want to stop stepping after
2618          one instruction.  */
2619       if (debug_infrun)
2620          fprintf_unfiltered (gdb_stdlog, "infrun: stepi/nexti\n");
2621       stop_step = 1;
2622       print_stop_reason (END_STEPPING_RANGE, 0);
2623       stop_stepping (ecs);
2624       return;
2625     }
2626
2627   if (ecs->sal.line == 0)
2628     {
2629       /* We have no line number information.  That means to stop
2630          stepping (does this always happen right after one instruction,
2631          when we do "s" in a function with no line numbers,
2632          or can this happen as a result of a return or longjmp?).  */
2633       if (debug_infrun)
2634          fprintf_unfiltered (gdb_stdlog, "infrun: no line number info\n");
2635       stop_step = 1;
2636       print_stop_reason (END_STEPPING_RANGE, 0);
2637       stop_stepping (ecs);
2638       return;
2639     }
2640
2641   if ((stop_pc == ecs->sal.pc)
2642       && (ecs->current_line != ecs->sal.line
2643           || ecs->current_symtab != ecs->sal.symtab))
2644     {
2645       /* We are at the start of a different line.  So stop.  Note that
2646          we don't stop if we step into the middle of a different line.
2647          That is said to make things like for (;;) statements work
2648          better.  */
2649       if (debug_infrun)
2650          fprintf_unfiltered (gdb_stdlog, "infrun: stepped to a different line\n");
2651       stop_step = 1;
2652       print_stop_reason (END_STEPPING_RANGE, 0);
2653       stop_stepping (ecs);
2654       return;
2655     }
2656
2657   /* We aren't done stepping.
2658
2659      Optimize by setting the stepping range to the line.
2660      (We might not be in the original line, but if we entered a
2661      new line in mid-statement, we continue stepping.  This makes
2662      things like for(;;) statements work better.)  */
2663
2664   if (ecs->stop_func_end && ecs->sal.end >= ecs->stop_func_end)
2665     {
2666       /* If this is the last line of the function, don't keep stepping
2667          (it would probably step us out of the function).
2668          This is particularly necessary for a one-line function,
2669          in which after skipping the prologue we better stop even though
2670          we will be in mid-line.  */
2671       if (debug_infrun)
2672          fprintf_unfiltered (gdb_stdlog, "infrun: stepped to a different function\n");
2673       stop_step = 1;
2674       print_stop_reason (END_STEPPING_RANGE, 0);
2675       stop_stepping (ecs);
2676       return;
2677     }
2678   step_range_start = ecs->sal.pc;
2679   step_range_end = ecs->sal.end;
2680   step_frame_id = get_frame_id (get_current_frame ());
2681   ecs->current_line = ecs->sal.line;
2682   ecs->current_symtab = ecs->sal.symtab;
2683
2684   /* In the case where we just stepped out of a function into the
2685      middle of a line of the caller, continue stepping, but
2686      step_frame_id must be modified to current frame */
2687 #if 0
2688   /* NOTE: cagney/2003-10-16: I think this frame ID inner test is too
2689      generous.  It will trigger on things like a step into a frameless
2690      stackless leaf function.  I think the logic should instead look
2691      at the unwound frame ID has that should give a more robust
2692      indication of what happened.  */
2693   if (step - ID == current - ID)
2694     still stepping in same function;
2695   else if (step - ID == unwind (current - ID))
2696     stepped into a function;
2697   else
2698     stepped out of a function;
2699   /* Of course this assumes that the frame ID unwind code is robust
2700      and we're willing to introduce frame unwind logic into this
2701      function.  Fortunately, those days are nearly upon us.  */
2702 #endif
2703   {
2704     struct frame_id current_frame = get_frame_id (get_current_frame ());
2705     if (!(frame_id_inner (current_frame, step_frame_id)))
2706       step_frame_id = current_frame;
2707   }
2708
2709   if (debug_infrun)
2710      fprintf_unfiltered (gdb_stdlog, "infrun: keep going\n");
2711   keep_going (ecs);
2712 }
2713
2714 /* Are we in the middle of stepping?  */
2715
2716 static int
2717 currently_stepping (struct execution_control_state *ecs)
2718 {
2719   return ((!ecs->handling_longjmp
2720            && ((step_range_end && step_resume_breakpoint == NULL)
2721                || trap_expected))
2722           || ecs->stepping_through_solib_after_catch
2723           || bpstat_should_step ());
2724 }
2725
2726 /* Subroutine call with source code we should not step over.  Do step
2727    to the first line of code in it.  */
2728
2729 static void
2730 step_into_function (struct execution_control_state *ecs)
2731 {
2732   struct symtab *s;
2733   struct symtab_and_line sr_sal;
2734
2735   s = find_pc_symtab (stop_pc);
2736   if (s && s->language != language_asm)
2737     ecs->stop_func_start = SKIP_PROLOGUE (ecs->stop_func_start);
2738
2739   ecs->sal = find_pc_line (ecs->stop_func_start, 0);
2740   /* Use the step_resume_break to step until the end of the prologue,
2741      even if that involves jumps (as it seems to on the vax under
2742      4.2).  */
2743   /* If the prologue ends in the middle of a source line, continue to
2744      the end of that source line (if it is still within the function).
2745      Otherwise, just go to end of prologue.  */
2746   if (ecs->sal.end
2747       && ecs->sal.pc != ecs->stop_func_start
2748       && ecs->sal.end < ecs->stop_func_end)
2749     ecs->stop_func_start = ecs->sal.end;
2750
2751   /* Architectures which require breakpoint adjustment might not be able
2752      to place a breakpoint at the computed address.  If so, the test
2753      ``ecs->stop_func_start == stop_pc'' will never succeed.  Adjust
2754      ecs->stop_func_start to an address at which a breakpoint may be
2755      legitimately placed.
2756
2757      Note:  kevinb/2004-01-19:  On FR-V, if this adjustment is not
2758      made, GDB will enter an infinite loop when stepping through
2759      optimized code consisting of VLIW instructions which contain
2760      subinstructions corresponding to different source lines.  On
2761      FR-V, it's not permitted to place a breakpoint on any but the
2762      first subinstruction of a VLIW instruction.  When a breakpoint is
2763      set, GDB will adjust the breakpoint address to the beginning of
2764      the VLIW instruction.  Thus, we need to make the corresponding
2765      adjustment here when computing the stop address.  */
2766
2767   if (gdbarch_adjust_breakpoint_address_p (current_gdbarch))
2768     {
2769       ecs->stop_func_start
2770         = gdbarch_adjust_breakpoint_address (current_gdbarch,
2771                                              ecs->stop_func_start);
2772     }
2773
2774   if (ecs->stop_func_start == stop_pc)
2775     {
2776       /* We are already there: stop now.  */
2777       stop_step = 1;
2778       print_stop_reason (END_STEPPING_RANGE, 0);
2779       stop_stepping (ecs);
2780       return;
2781     }
2782   else
2783     {
2784       /* Put the step-breakpoint there and go until there.  */
2785       init_sal (&sr_sal);       /* initialize to zeroes */
2786       sr_sal.pc = ecs->stop_func_start;
2787       sr_sal.section = find_pc_overlay (ecs->stop_func_start);
2788
2789       /* Do not specify what the fp should be when we stop since on
2790          some machines the prologue is where the new fp value is
2791          established.  */
2792       insert_step_resume_breakpoint_at_sal (sr_sal, null_frame_id);
2793
2794       /* And make sure stepping stops right away then.  */
2795       step_range_end = step_range_start;
2796     }
2797   keep_going (ecs);
2798 }
2799
2800 /* Insert a "step resume breakpoint" at SR_SAL with frame ID SR_ID.
2801    This is used to both functions and to skip over code.  */
2802
2803 static void
2804 insert_step_resume_breakpoint_at_sal (struct symtab_and_line sr_sal,
2805                                       struct frame_id sr_id)
2806 {
2807   /* There should never be more than one step-resume breakpoint per
2808      thread, so we should never be setting a new
2809      step_resume_breakpoint when one is already active.  */
2810   gdb_assert (step_resume_breakpoint == NULL);
2811   step_resume_breakpoint = set_momentary_breakpoint (sr_sal, sr_id,
2812                                                      bp_step_resume);
2813   if (breakpoints_inserted)
2814     insert_breakpoints ();
2815 }
2816
2817 /* Insert a "step resume breakpoint" at RETURN_FRAME.pc.  This is used
2818    to skip a potential signal handler.
2819
2820    This is called with the interrupted function's frame.  The signal
2821    handler, when it returns, will resume the interrupted function at
2822    RETURN_FRAME.pc.  */
2823
2824 static void
2825 insert_step_resume_breakpoint_at_frame (struct frame_info *return_frame)
2826 {
2827   struct symtab_and_line sr_sal;
2828
2829   init_sal (&sr_sal);           /* initialize to zeros */
2830
2831   sr_sal.pc = ADDR_BITS_REMOVE (get_frame_pc (return_frame));
2832   sr_sal.section = find_pc_overlay (sr_sal.pc);
2833
2834   insert_step_resume_breakpoint_at_sal (sr_sal, get_frame_id (return_frame));
2835 }
2836
2837 /* Similar to insert_step_resume_breakpoint_at_frame, except
2838    but a breakpoint at the previous frame's PC.  This is used to
2839    skip a function after stepping into it (for "next" or if the called
2840    function has no debugging information).
2841
2842    The current function has almost always been reached by single
2843    stepping a call or return instruction.  NEXT_FRAME belongs to the
2844    current function, and the breakpoint will be set at the caller's
2845    resume address.
2846
2847    This is a separate function rather than reusing
2848    insert_step_resume_breakpoint_at_frame in order to avoid
2849    get_prev_frame, which may stop prematurely (see the implementation
2850    of frame_unwind_id for an example).  */
2851
2852 static void
2853 insert_step_resume_breakpoint_at_caller (struct frame_info *next_frame)
2854 {
2855   struct symtab_and_line sr_sal;
2856
2857   /* We shouldn't have gotten here if we don't know where the call site
2858      is.  */
2859   gdb_assert (frame_id_p (frame_unwind_id (next_frame)));
2860
2861   init_sal (&sr_sal);           /* initialize to zeros */
2862
2863   sr_sal.pc = ADDR_BITS_REMOVE (frame_pc_unwind (next_frame));
2864   sr_sal.section = find_pc_overlay (sr_sal.pc);
2865
2866   insert_step_resume_breakpoint_at_sal (sr_sal, frame_unwind_id (next_frame));
2867 }
2868
2869 static void
2870 stop_stepping (struct execution_control_state *ecs)
2871 {
2872   if (debug_infrun)
2873     fprintf_unfiltered (gdb_stdlog, "infrun: stop_stepping\n");
2874
2875   /* Let callers know we don't want to wait for the inferior anymore.  */
2876   ecs->wait_some_more = 0;
2877 }
2878
2879 /* This function handles various cases where we need to continue
2880    waiting for the inferior.  */
2881 /* (Used to be the keep_going: label in the old wait_for_inferior) */
2882
2883 static void
2884 keep_going (struct execution_control_state *ecs)
2885 {
2886   /* Save the pc before execution, to compare with pc after stop.  */
2887   prev_pc = read_pc ();         /* Might have been DECR_AFTER_BREAK */
2888
2889   /* If we did not do break;, it means we should keep running the
2890      inferior and not return to debugger.  */
2891
2892   if (trap_expected && stop_signal != TARGET_SIGNAL_TRAP)
2893     {
2894       /* We took a signal (which we are supposed to pass through to
2895          the inferior, else we'd have done a break above) and we
2896          haven't yet gotten our trap.  Simply continue.  */
2897       resume (currently_stepping (ecs), stop_signal);
2898     }
2899   else
2900     {
2901       /* Either the trap was not expected, but we are continuing
2902          anyway (the user asked that this signal be passed to the
2903          child)
2904          -- or --
2905          The signal was SIGTRAP, e.g. it was our signal, but we
2906          decided we should resume from it.
2907
2908          We're going to run this baby now!  */
2909
2910       if (!breakpoints_inserted && !ecs->another_trap)
2911         {
2912           breakpoints_failed = insert_breakpoints ();
2913           if (breakpoints_failed)
2914             {
2915               stop_stepping (ecs);
2916               return;
2917             }
2918           breakpoints_inserted = 1;
2919         }
2920
2921       trap_expected = ecs->another_trap;
2922
2923       /* Do not deliver SIGNAL_TRAP (except when the user explicitly
2924          specifies that such a signal should be delivered to the
2925          target program).
2926
2927          Typically, this would occure when a user is debugging a
2928          target monitor on a simulator: the target monitor sets a
2929          breakpoint; the simulator encounters this break-point and
2930          halts the simulation handing control to GDB; GDB, noteing
2931          that the break-point isn't valid, returns control back to the
2932          simulator; the simulator then delivers the hardware
2933          equivalent of a SIGNAL_TRAP to the program being debugged. */
2934
2935       if (stop_signal == TARGET_SIGNAL_TRAP && !signal_program[stop_signal])
2936         stop_signal = TARGET_SIGNAL_0;
2937
2938
2939       resume (currently_stepping (ecs), stop_signal);
2940     }
2941
2942   prepare_to_wait (ecs);
2943 }
2944
2945 /* This function normally comes after a resume, before
2946    handle_inferior_event exits.  It takes care of any last bits of
2947    housekeeping, and sets the all-important wait_some_more flag.  */
2948
2949 static void
2950 prepare_to_wait (struct execution_control_state *ecs)
2951 {
2952   if (debug_infrun)
2953     fprintf_unfiltered (gdb_stdlog, "infrun: prepare_to_wait\n");
2954   if (ecs->infwait_state == infwait_normal_state)
2955     {
2956       overlay_cache_invalid = 1;
2957
2958       /* We have to invalidate the registers BEFORE calling
2959          target_wait because they can be loaded from the target while
2960          in target_wait.  This makes remote debugging a bit more
2961          efficient for those targets that provide critical registers
2962          as part of their normal status mechanism. */
2963
2964       registers_changed ();
2965       ecs->waiton_ptid = pid_to_ptid (-1);
2966       ecs->wp = &(ecs->ws);
2967     }
2968   /* This is the old end of the while loop.  Let everybody know we
2969      want to wait for the inferior some more and get called again
2970      soon.  */
2971   ecs->wait_some_more = 1;
2972 }
2973
2974 /* Print why the inferior has stopped. We always print something when
2975    the inferior exits, or receives a signal. The rest of the cases are
2976    dealt with later on in normal_stop() and print_it_typical().  Ideally
2977    there should be a call to this function from handle_inferior_event()
2978    each time stop_stepping() is called.*/
2979 static void
2980 print_stop_reason (enum inferior_stop_reason stop_reason, int stop_info)
2981 {
2982   switch (stop_reason)
2983     {
2984     case END_STEPPING_RANGE:
2985       /* We are done with a step/next/si/ni command. */
2986       /* For now print nothing. */
2987       /* Print a message only if not in the middle of doing a "step n"
2988          operation for n > 1 */
2989       if (!step_multi || !stop_step)
2990         if (ui_out_is_mi_like_p (uiout))
2991           ui_out_field_string
2992             (uiout, "reason",
2993              async_reason_lookup (EXEC_ASYNC_END_STEPPING_RANGE));
2994       break;
2995     case SIGNAL_EXITED:
2996       /* The inferior was terminated by a signal. */
2997       annotate_signalled ();
2998       if (ui_out_is_mi_like_p (uiout))
2999         ui_out_field_string
3000           (uiout, "reason",
3001            async_reason_lookup (EXEC_ASYNC_EXITED_SIGNALLED));
3002       ui_out_text (uiout, "\nProgram terminated with signal ");
3003       annotate_signal_name ();
3004       ui_out_field_string (uiout, "signal-name",
3005                            target_signal_to_name (stop_info));
3006       annotate_signal_name_end ();
3007       ui_out_text (uiout, ", ");
3008       annotate_signal_string ();
3009       ui_out_field_string (uiout, "signal-meaning",
3010                            target_signal_to_string (stop_info));
3011       annotate_signal_string_end ();
3012       ui_out_text (uiout, ".\n");
3013       ui_out_text (uiout, "The program no longer exists.\n");
3014       break;
3015     case EXITED:
3016       /* The inferior program is finished. */
3017       annotate_exited (stop_info);
3018       if (stop_info)
3019         {
3020           if (ui_out_is_mi_like_p (uiout))
3021             ui_out_field_string (uiout, "reason", 
3022                                  async_reason_lookup (EXEC_ASYNC_EXITED));
3023           ui_out_text (uiout, "\nProgram exited with code ");
3024           ui_out_field_fmt (uiout, "exit-code", "0%o",
3025                             (unsigned int) stop_info);
3026           ui_out_text (uiout, ".\n");
3027         }
3028       else
3029         {
3030           if (ui_out_is_mi_like_p (uiout))
3031             ui_out_field_string
3032               (uiout, "reason",
3033                async_reason_lookup (EXEC_ASYNC_EXITED_NORMALLY));
3034           ui_out_text (uiout, "\nProgram exited normally.\n");
3035         }
3036       /* Support the --return-child-result option.  */
3037       return_child_result_value = stop_info;
3038       break;
3039     case SIGNAL_RECEIVED:
3040       /* Signal received. The signal table tells us to print about
3041          it. */
3042       annotate_signal ();
3043       ui_out_text (uiout, "\nProgram received signal ");
3044       annotate_signal_name ();
3045       if (ui_out_is_mi_like_p (uiout))
3046         ui_out_field_string
3047           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_SIGNAL_RECEIVED));
3048       ui_out_field_string (uiout, "signal-name",
3049                            target_signal_to_name (stop_info));
3050       annotate_signal_name_end ();
3051       ui_out_text (uiout, ", ");
3052       annotate_signal_string ();
3053       ui_out_field_string (uiout, "signal-meaning",
3054                            target_signal_to_string (stop_info));
3055       annotate_signal_string_end ();
3056       ui_out_text (uiout, ".\n");
3057       break;
3058     default:
3059       internal_error (__FILE__, __LINE__,
3060                       _("print_stop_reason: unrecognized enum value"));
3061       break;
3062     }
3063 }
3064 \f
3065
3066 /* Here to return control to GDB when the inferior stops for real.
3067    Print appropriate messages, remove breakpoints, give terminal our modes.
3068
3069    STOP_PRINT_FRAME nonzero means print the executing frame
3070    (pc, function, args, file, line number and line text).
3071    BREAKPOINTS_FAILED nonzero means stop was due to error
3072    attempting to insert breakpoints.  */
3073
3074 void
3075 normal_stop (void)
3076 {
3077   struct target_waitstatus last;
3078   ptid_t last_ptid;
3079
3080   get_last_target_status (&last_ptid, &last);
3081
3082   /* As with the notification of thread events, we want to delay
3083      notifying the user that we've switched thread context until
3084      the inferior actually stops.
3085
3086      There's no point in saying anything if the inferior has exited.
3087      Note that SIGNALLED here means "exited with a signal", not
3088      "received a signal".  */
3089   if (!ptid_equal (previous_inferior_ptid, inferior_ptid)
3090       && target_has_execution
3091       && last.kind != TARGET_WAITKIND_SIGNALLED
3092       && last.kind != TARGET_WAITKIND_EXITED)
3093     {
3094       target_terminal_ours_for_output ();
3095       printf_filtered (_("[Switching to %s]\n"),
3096                        target_pid_or_tid_to_str (inferior_ptid));
3097       previous_inferior_ptid = inferior_ptid;
3098     }
3099
3100   /* NOTE drow/2004-01-17: Is this still necessary?  */
3101   /* Make sure that the current_frame's pc is correct.  This
3102      is a correction for setting up the frame info before doing
3103      DECR_PC_AFTER_BREAK */
3104   if (target_has_execution)
3105     /* FIXME: cagney/2002-12-06: Has the PC changed?  Thanks to
3106        DECR_PC_AFTER_BREAK, the program counter can change.  Ask the
3107        frame code to check for this and sort out any resultant mess.
3108        DECR_PC_AFTER_BREAK needs to just go away.  */
3109     deprecated_update_frame_pc_hack (get_current_frame (), read_pc ());
3110
3111   if (target_has_execution && breakpoints_inserted)
3112     {
3113       if (remove_breakpoints ())
3114         {
3115           target_terminal_ours_for_output ();
3116           printf_filtered (_("\
3117 Cannot remove breakpoints because program is no longer writable.\n\
3118 It might be running in another process.\n\
3119 Further execution is probably impossible.\n"));
3120         }
3121     }
3122   breakpoints_inserted = 0;
3123
3124   /* Delete the breakpoint we stopped at, if it wants to be deleted.
3125      Delete any breakpoint that is to be deleted at the next stop.  */
3126
3127   breakpoint_auto_delete (stop_bpstat);
3128
3129   /* If an auto-display called a function and that got a signal,
3130      delete that auto-display to avoid an infinite recursion.  */
3131
3132   if (stopped_by_random_signal)
3133     disable_current_display ();
3134
3135   /* Don't print a message if in the middle of doing a "step n"
3136      operation for n > 1 */
3137   if (step_multi && stop_step)
3138     goto done;
3139
3140   target_terminal_ours ();
3141
3142   /* Set the current source location.  This will also happen if we
3143      display the frame below, but the current SAL will be incorrect
3144      during a user hook-stop function.  */
3145   if (target_has_stack && !stop_stack_dummy)
3146     set_current_sal_from_frame (get_current_frame (), 1);
3147
3148   /* Look up the hook_stop and run it (CLI internally handles problem
3149      of stop_command's pre-hook not existing).  */
3150   if (stop_command)
3151     catch_errors (hook_stop_stub, stop_command,
3152                   "Error while running hook_stop:\n", RETURN_MASK_ALL);
3153
3154   if (!target_has_stack)
3155     {
3156
3157       goto done;
3158     }
3159
3160   /* Select innermost stack frame - i.e., current frame is frame 0,
3161      and current location is based on that.
3162      Don't do this on return from a stack dummy routine,
3163      or if the program has exited. */
3164
3165   if (!stop_stack_dummy)
3166     {
3167       select_frame (get_current_frame ());
3168
3169       /* Print current location without a level number, if
3170          we have changed functions or hit a breakpoint.
3171          Print source line if we have one.
3172          bpstat_print() contains the logic deciding in detail
3173          what to print, based on the event(s) that just occurred. */
3174
3175       if (stop_print_frame)
3176         {
3177           int bpstat_ret;
3178           int source_flag;
3179           int do_frame_printing = 1;
3180
3181           bpstat_ret = bpstat_print (stop_bpstat);
3182           switch (bpstat_ret)
3183             {
3184             case PRINT_UNKNOWN:
3185               /* FIXME: cagney/2002-12-01: Given that a frame ID does
3186                  (or should) carry around the function and does (or
3187                  should) use that when doing a frame comparison.  */
3188               if (stop_step
3189                   && frame_id_eq (step_frame_id,
3190                                   get_frame_id (get_current_frame ()))
3191                   && step_start_function == find_pc_function (stop_pc))
3192                 source_flag = SRC_LINE; /* finished step, just print source line */
3193               else
3194                 source_flag = SRC_AND_LOC;      /* print location and source line */
3195               break;
3196             case PRINT_SRC_AND_LOC:
3197               source_flag = SRC_AND_LOC;        /* print location and source line */
3198               break;
3199             case PRINT_SRC_ONLY:
3200               source_flag = SRC_LINE;
3201               break;
3202             case PRINT_NOTHING:
3203               source_flag = SRC_LINE;   /* something bogus */
3204               do_frame_printing = 0;
3205               break;
3206             default:
3207               internal_error (__FILE__, __LINE__, _("Unknown value."));
3208             }
3209           /* For mi, have the same behavior every time we stop:
3210              print everything but the source line. */
3211           if (ui_out_is_mi_like_p (uiout))
3212             source_flag = LOC_AND_ADDRESS;
3213
3214           if (ui_out_is_mi_like_p (uiout))
3215             ui_out_field_int (uiout, "thread-id",
3216                               pid_to_thread_id (inferior_ptid));
3217           /* The behavior of this routine with respect to the source
3218              flag is:
3219              SRC_LINE: Print only source line
3220              LOCATION: Print only location
3221              SRC_AND_LOC: Print location and source line */
3222           if (do_frame_printing)
3223             print_stack_frame (get_selected_frame (NULL), 0, source_flag);
3224
3225           /* Display the auto-display expressions.  */
3226           do_displays ();
3227         }
3228     }
3229
3230   /* Save the function value return registers, if we care.
3231      We might be about to restore their previous contents.  */
3232   if (proceed_to_finish)
3233     /* NB: The copy goes through to the target picking up the value of
3234        all the registers.  */
3235     regcache_cpy (stop_registers, current_regcache);
3236
3237   if (stop_stack_dummy)
3238     {
3239       /* Pop the empty frame that contains the stack dummy.  POP_FRAME
3240          ends with a setting of the current frame, so we can use that
3241          next. */
3242       frame_pop (get_current_frame ());
3243       /* Set stop_pc to what it was before we called the function.
3244          Can't rely on restore_inferior_status because that only gets
3245          called if we don't stop in the called function.  */
3246       stop_pc = read_pc ();
3247       select_frame (get_current_frame ());
3248     }
3249
3250 done:
3251   annotate_stopped ();
3252   observer_notify_normal_stop (stop_bpstat);
3253 }
3254
3255 static int
3256 hook_stop_stub (void *cmd)
3257 {
3258   execute_cmd_pre_hook ((struct cmd_list_element *) cmd);
3259   return (0);
3260 }
3261 \f
3262 int
3263 signal_stop_state (int signo)
3264 {
3265   return signal_stop[signo];
3266 }
3267
3268 int
3269 signal_print_state (int signo)
3270 {
3271   return signal_print[signo];
3272 }
3273
3274 int
3275 signal_pass_state (int signo)
3276 {
3277   return signal_program[signo];
3278 }
3279
3280 int
3281 signal_stop_update (int signo, int state)
3282 {
3283   int ret = signal_stop[signo];
3284   signal_stop[signo] = state;
3285   return ret;
3286 }
3287
3288 int
3289 signal_print_update (int signo, int state)
3290 {
3291   int ret = signal_print[signo];
3292   signal_print[signo] = state;
3293   return ret;
3294 }
3295
3296 int
3297 signal_pass_update (int signo, int state)
3298 {
3299   int ret = signal_program[signo];
3300   signal_program[signo] = state;
3301   return ret;
3302 }
3303
3304 static void
3305 sig_print_header (void)
3306 {
3307   printf_filtered (_("\
3308 Signal        Stop\tPrint\tPass to program\tDescription\n"));
3309 }
3310
3311 static void
3312 sig_print_info (enum target_signal oursig)
3313 {
3314   char *name = target_signal_to_name (oursig);
3315   int name_padding = 13 - strlen (name);
3316
3317   if (name_padding <= 0)
3318     name_padding = 0;
3319
3320   printf_filtered ("%s", name);
3321   printf_filtered ("%*.*s ", name_padding, name_padding, "                 ");
3322   printf_filtered ("%s\t", signal_stop[oursig] ? "Yes" : "No");
3323   printf_filtered ("%s\t", signal_print[oursig] ? "Yes" : "No");
3324   printf_filtered ("%s\t\t", signal_program[oursig] ? "Yes" : "No");
3325   printf_filtered ("%s\n", target_signal_to_string (oursig));
3326 }
3327
3328 /* Specify how various signals in the inferior should be handled.  */
3329
3330 static void
3331 handle_command (char *args, int from_tty)
3332 {
3333   char **argv;
3334   int digits, wordlen;
3335   int sigfirst, signum, siglast;
3336   enum target_signal oursig;
3337   int allsigs;
3338   int nsigs;
3339   unsigned char *sigs;
3340   struct cleanup *old_chain;
3341
3342   if (args == NULL)
3343     {
3344       error_no_arg (_("signal to handle"));
3345     }
3346
3347   /* Allocate and zero an array of flags for which signals to handle. */
3348
3349   nsigs = (int) TARGET_SIGNAL_LAST;
3350   sigs = (unsigned char *) alloca (nsigs);
3351   memset (sigs, 0, nsigs);
3352
3353   /* Break the command line up into args. */
3354
3355   argv = buildargv (args);
3356   if (argv == NULL)
3357     {
3358       nomem (0);
3359     }
3360   old_chain = make_cleanup_freeargv (argv);
3361
3362   /* Walk through the args, looking for signal oursigs, signal names, and
3363      actions.  Signal numbers and signal names may be interspersed with
3364      actions, with the actions being performed for all signals cumulatively
3365      specified.  Signal ranges can be specified as <LOW>-<HIGH>. */
3366
3367   while (*argv != NULL)
3368     {
3369       wordlen = strlen (*argv);
3370       for (digits = 0; isdigit ((*argv)[digits]); digits++)
3371         {;
3372         }
3373       allsigs = 0;
3374       sigfirst = siglast = -1;
3375
3376       if (wordlen >= 1 && !strncmp (*argv, "all", wordlen))
3377         {
3378           /* Apply action to all signals except those used by the
3379              debugger.  Silently skip those. */
3380           allsigs = 1;
3381           sigfirst = 0;
3382           siglast = nsigs - 1;
3383         }
3384       else if (wordlen >= 1 && !strncmp (*argv, "stop", wordlen))
3385         {
3386           SET_SIGS (nsigs, sigs, signal_stop);
3387           SET_SIGS (nsigs, sigs, signal_print);
3388         }
3389       else if (wordlen >= 1 && !strncmp (*argv, "ignore", wordlen))
3390         {
3391           UNSET_SIGS (nsigs, sigs, signal_program);
3392         }
3393       else if (wordlen >= 2 && !strncmp (*argv, "print", wordlen))
3394         {
3395           SET_SIGS (nsigs, sigs, signal_print);
3396         }
3397       else if (wordlen >= 2 && !strncmp (*argv, "pass", wordlen))
3398         {
3399           SET_SIGS (nsigs, sigs, signal_program);
3400         }
3401       else if (wordlen >= 3 && !strncmp (*argv, "nostop", wordlen))
3402         {
3403           UNSET_SIGS (nsigs, sigs, signal_stop);
3404         }
3405       else if (wordlen >= 3 && !strncmp (*argv, "noignore", wordlen))
3406         {
3407           SET_SIGS (nsigs, sigs, signal_program);
3408         }
3409       else if (wordlen >= 4 && !strncmp (*argv, "noprint", wordlen))
3410         {
3411           UNSET_SIGS (nsigs, sigs, signal_print);
3412           UNSET_SIGS (nsigs, sigs, signal_stop);
3413         }
3414       else if (wordlen >= 4 && !strncmp (*argv, "nopass", wordlen))
3415         {
3416           UNSET_SIGS (nsigs, sigs, signal_program);
3417         }
3418       else if (digits > 0)
3419         {
3420           /* It is numeric.  The numeric signal refers to our own
3421              internal signal numbering from target.h, not to host/target
3422              signal  number.  This is a feature; users really should be
3423              using symbolic names anyway, and the common ones like
3424              SIGHUP, SIGINT, SIGALRM, etc. will work right anyway.  */
3425
3426           sigfirst = siglast = (int)
3427             target_signal_from_command (atoi (*argv));
3428           if ((*argv)[digits] == '-')
3429             {
3430               siglast = (int)
3431                 target_signal_from_command (atoi ((*argv) + digits + 1));
3432             }
3433           if (sigfirst > siglast)
3434             {
3435               /* Bet he didn't figure we'd think of this case... */
3436               signum = sigfirst;
3437               sigfirst = siglast;
3438               siglast = signum;
3439             }
3440         }
3441       else
3442         {
3443           oursig = target_signal_from_name (*argv);
3444           if (oursig != TARGET_SIGNAL_UNKNOWN)
3445             {
3446               sigfirst = siglast = (int) oursig;
3447             }
3448           else
3449             {
3450               /* Not a number and not a recognized flag word => complain.  */
3451               error (_("Unrecognized or ambiguous flag word: \"%s\"."), *argv);
3452             }
3453         }
3454
3455       /* If any signal numbers or symbol names were found, set flags for
3456          which signals to apply actions to. */
3457
3458       for (signum = sigfirst; signum >= 0 && signum <= siglast; signum++)
3459         {
3460           switch ((enum target_signal) signum)
3461             {
3462             case TARGET_SIGNAL_TRAP:
3463             case TARGET_SIGNAL_INT:
3464               if (!allsigs && !sigs[signum])
3465                 {
3466                   if (query ("%s is used by the debugger.\n\
3467 Are you sure you want to change it? ", target_signal_to_name ((enum target_signal) signum)))
3468                     {
3469                       sigs[signum] = 1;
3470                     }
3471                   else
3472                     {
3473                       printf_unfiltered (_("Not confirmed, unchanged.\n"));
3474                       gdb_flush (gdb_stdout);
3475                     }
3476                 }
3477               break;
3478             case TARGET_SIGNAL_0:
3479             case TARGET_SIGNAL_DEFAULT:
3480             case TARGET_SIGNAL_UNKNOWN:
3481               /* Make sure that "all" doesn't print these.  */
3482               break;
3483             default:
3484               sigs[signum] = 1;
3485               break;
3486             }
3487         }
3488
3489       argv++;
3490     }
3491
3492   target_notice_signals (inferior_ptid);
3493
3494   if (from_tty)
3495     {
3496       /* Show the results.  */
3497       sig_print_header ();
3498       for (signum = 0; signum < nsigs; signum++)
3499         {
3500           if (sigs[signum])
3501             {
3502               sig_print_info (signum);
3503             }
3504         }
3505     }
3506
3507   do_cleanups (old_chain);
3508 }
3509
3510 static void
3511 xdb_handle_command (char *args, int from_tty)
3512 {
3513   char **argv;
3514   struct cleanup *old_chain;
3515
3516   /* Break the command line up into args. */
3517
3518   argv = buildargv (args);
3519   if (argv == NULL)
3520     {
3521       nomem (0);
3522     }
3523   old_chain = make_cleanup_freeargv (argv);
3524   if (argv[1] != (char *) NULL)
3525     {
3526       char *argBuf;
3527       int bufLen;
3528
3529       bufLen = strlen (argv[0]) + 20;
3530       argBuf = (char *) xmalloc (bufLen);
3531       if (argBuf)
3532         {
3533           int validFlag = 1;
3534           enum target_signal oursig;
3535
3536           oursig = target_signal_from_name (argv[0]);
3537           memset (argBuf, 0, bufLen);
3538           if (strcmp (argv[1], "Q") == 0)
3539             sprintf (argBuf, "%s %s", argv[0], "noprint");
3540           else
3541             {
3542               if (strcmp (argv[1], "s") == 0)
3543                 {
3544                   if (!signal_stop[oursig])
3545                     sprintf (argBuf, "%s %s", argv[0], "stop");
3546                   else
3547                     sprintf (argBuf, "%s %s", argv[0], "nostop");
3548                 }
3549               else if (strcmp (argv[1], "i") == 0)
3550                 {
3551                   if (!signal_program[oursig])
3552                     sprintf (argBuf, "%s %s", argv[0], "pass");
3553                   else
3554                     sprintf (argBuf, "%s %s", argv[0], "nopass");
3555                 }
3556               else if (strcmp (argv[1], "r") == 0)
3557                 {
3558                   if (!signal_print[oursig])
3559                     sprintf (argBuf, "%s %s", argv[0], "print");
3560                   else
3561                     sprintf (argBuf, "%s %s", argv[0], "noprint");
3562                 }
3563               else
3564                 validFlag = 0;
3565             }
3566           if (validFlag)
3567             handle_command (argBuf, from_tty);
3568           else
3569             printf_filtered (_("Invalid signal handling flag.\n"));
3570           if (argBuf)
3571             xfree (argBuf);
3572         }
3573     }
3574   do_cleanups (old_chain);
3575 }
3576
3577 /* Print current contents of the tables set by the handle command.
3578    It is possible we should just be printing signals actually used
3579    by the current target (but for things to work right when switching
3580    targets, all signals should be in the signal tables).  */
3581
3582 static void
3583 signals_info (char *signum_exp, int from_tty)
3584 {
3585   enum target_signal oursig;
3586   sig_print_header ();
3587
3588   if (signum_exp)
3589     {
3590       /* First see if this is a symbol name.  */
3591       oursig = target_signal_from_name (signum_exp);
3592       if (oursig == TARGET_SIGNAL_UNKNOWN)
3593         {
3594           /* No, try numeric.  */
3595           oursig =
3596             target_signal_from_command (parse_and_eval_long (signum_exp));
3597         }
3598       sig_print_info (oursig);
3599       return;
3600     }
3601
3602   printf_filtered ("\n");
3603   /* These ugly casts brought to you by the native VAX compiler.  */
3604   for (oursig = TARGET_SIGNAL_FIRST;
3605        (int) oursig < (int) TARGET_SIGNAL_LAST;
3606        oursig = (enum target_signal) ((int) oursig + 1))
3607     {
3608       QUIT;
3609
3610       if (oursig != TARGET_SIGNAL_UNKNOWN
3611           && oursig != TARGET_SIGNAL_DEFAULT && oursig != TARGET_SIGNAL_0)
3612         sig_print_info (oursig);
3613     }
3614
3615   printf_filtered (_("\nUse the \"handle\" command to change these tables.\n"));
3616 }
3617 \f
3618 struct inferior_status
3619 {
3620   enum target_signal stop_signal;
3621   CORE_ADDR stop_pc;
3622   bpstat stop_bpstat;
3623   int stop_step;
3624   int stop_stack_dummy;
3625   int stopped_by_random_signal;
3626   int trap_expected;
3627   CORE_ADDR step_range_start;
3628   CORE_ADDR step_range_end;
3629   struct frame_id step_frame_id;
3630   enum step_over_calls_kind step_over_calls;
3631   CORE_ADDR step_resume_break_address;
3632   int stop_after_trap;
3633   int stop_soon;
3634   struct regcache *stop_registers;
3635
3636   /* These are here because if call_function_by_hand has written some
3637      registers and then decides to call error(), we better not have changed
3638      any registers.  */
3639   struct regcache *registers;
3640
3641   /* A frame unique identifier.  */
3642   struct frame_id selected_frame_id;
3643
3644   int breakpoint_proceeded;
3645   int restore_stack_info;
3646   int proceed_to_finish;
3647 };
3648
3649 void
3650 write_inferior_status_register (struct inferior_status *inf_status, int regno,
3651                                 LONGEST val)
3652 {
3653   int size = register_size (current_gdbarch, regno);
3654   void *buf = alloca (size);
3655   store_signed_integer (buf, size, val);
3656   regcache_raw_write (inf_status->registers, regno, buf);
3657 }
3658
3659 /* Save all of the information associated with the inferior<==>gdb
3660    connection.  INF_STATUS is a pointer to a "struct inferior_status"
3661    (defined in inferior.h).  */
3662
3663 struct inferior_status *
3664 save_inferior_status (int restore_stack_info)
3665 {
3666   struct inferior_status *inf_status = XMALLOC (struct inferior_status);
3667
3668   inf_status->stop_signal = stop_signal;
3669   inf_status->stop_pc = stop_pc;
3670   inf_status->stop_step = stop_step;
3671   inf_status->stop_stack_dummy = stop_stack_dummy;
3672   inf_status->stopped_by_random_signal = stopped_by_random_signal;
3673   inf_status->trap_expected = trap_expected;
3674   inf_status->step_range_start = step_range_start;
3675   inf_status->step_range_end = step_range_end;
3676   inf_status->step_frame_id = step_frame_id;
3677   inf_status->step_over_calls = step_over_calls;
3678   inf_status->stop_after_trap = stop_after_trap;
3679   inf_status->stop_soon = stop_soon;
3680   /* Save original bpstat chain here; replace it with copy of chain.
3681      If caller's caller is walking the chain, they'll be happier if we
3682      hand them back the original chain when restore_inferior_status is
3683      called.  */
3684   inf_status->stop_bpstat = stop_bpstat;
3685   stop_bpstat = bpstat_copy (stop_bpstat);
3686   inf_status->breakpoint_proceeded = breakpoint_proceeded;
3687   inf_status->restore_stack_info = restore_stack_info;
3688   inf_status->proceed_to_finish = proceed_to_finish;
3689
3690   inf_status->stop_registers = regcache_dup_no_passthrough (stop_registers);
3691
3692   inf_status->registers = regcache_dup (current_regcache);
3693
3694   inf_status->selected_frame_id = get_frame_id (get_selected_frame (NULL));
3695   return inf_status;
3696 }
3697
3698 static int
3699 restore_selected_frame (void *args)
3700 {
3701   struct frame_id *fid = (struct frame_id *) args;
3702   struct frame_info *frame;
3703
3704   frame = frame_find_by_id (*fid);
3705
3706   /* If inf_status->selected_frame_id is NULL, there was no previously
3707      selected frame.  */
3708   if (frame == NULL)
3709     {
3710       warning (_("Unable to restore previously selected frame."));
3711       return 0;
3712     }
3713
3714   select_frame (frame);
3715
3716   return (1);
3717 }
3718
3719 void
3720 restore_inferior_status (struct inferior_status *inf_status)
3721 {
3722   stop_signal = inf_status->stop_signal;
3723   stop_pc = inf_status->stop_pc;
3724   stop_step = inf_status->stop_step;
3725   stop_stack_dummy = inf_status->stop_stack_dummy;
3726   stopped_by_random_signal = inf_status->stopped_by_random_signal;
3727   trap_expected = inf_status->trap_expected;
3728   step_range_start = inf_status->step_range_start;
3729   step_range_end = inf_status->step_range_end;
3730   step_frame_id = inf_status->step_frame_id;
3731   step_over_calls = inf_status->step_over_calls;
3732   stop_after_trap = inf_status->stop_after_trap;
3733   stop_soon = inf_status->stop_soon;
3734   bpstat_clear (&stop_bpstat);
3735   stop_bpstat = inf_status->stop_bpstat;
3736   breakpoint_proceeded = inf_status->breakpoint_proceeded;
3737   proceed_to_finish = inf_status->proceed_to_finish;
3738
3739   /* FIXME: Is the restore of stop_registers always needed. */
3740   regcache_xfree (stop_registers);
3741   stop_registers = inf_status->stop_registers;
3742
3743   /* The inferior can be gone if the user types "print exit(0)"
3744      (and perhaps other times).  */
3745   if (target_has_execution)
3746     /* NB: The register write goes through to the target.  */
3747     regcache_cpy (current_regcache, inf_status->registers);
3748   regcache_xfree (inf_status->registers);
3749
3750   /* FIXME: If we are being called after stopping in a function which
3751      is called from gdb, we should not be trying to restore the
3752      selected frame; it just prints a spurious error message (The
3753      message is useful, however, in detecting bugs in gdb (like if gdb
3754      clobbers the stack)).  In fact, should we be restoring the
3755      inferior status at all in that case?  .  */
3756
3757   if (target_has_stack && inf_status->restore_stack_info)
3758     {
3759       /* The point of catch_errors is that if the stack is clobbered,
3760          walking the stack might encounter a garbage pointer and
3761          error() trying to dereference it.  */
3762       if (catch_errors
3763           (restore_selected_frame, &inf_status->selected_frame_id,
3764            "Unable to restore previously selected frame:\n",
3765            RETURN_MASK_ERROR) == 0)
3766         /* Error in restoring the selected frame.  Select the innermost
3767            frame.  */
3768         select_frame (get_current_frame ());
3769
3770     }
3771
3772   xfree (inf_status);
3773 }
3774
3775 static void
3776 do_restore_inferior_status_cleanup (void *sts)
3777 {
3778   restore_inferior_status (sts);
3779 }
3780
3781 struct cleanup *
3782 make_cleanup_restore_inferior_status (struct inferior_status *inf_status)
3783 {
3784   return make_cleanup (do_restore_inferior_status_cleanup, inf_status);
3785 }
3786
3787 void
3788 discard_inferior_status (struct inferior_status *inf_status)
3789 {
3790   /* See save_inferior_status for info on stop_bpstat. */
3791   bpstat_clear (&inf_status->stop_bpstat);
3792   regcache_xfree (inf_status->registers);
3793   regcache_xfree (inf_status->stop_registers);
3794   xfree (inf_status);
3795 }
3796
3797 int
3798 inferior_has_forked (int pid, int *child_pid)
3799 {
3800   struct target_waitstatus last;
3801   ptid_t last_ptid;
3802
3803   get_last_target_status (&last_ptid, &last);
3804
3805   if (last.kind != TARGET_WAITKIND_FORKED)
3806     return 0;
3807
3808   if (ptid_get_pid (last_ptid) != pid)
3809     return 0;
3810
3811   *child_pid = last.value.related_pid;
3812   return 1;
3813 }
3814
3815 int
3816 inferior_has_vforked (int pid, int *child_pid)
3817 {
3818   struct target_waitstatus last;
3819   ptid_t last_ptid;
3820
3821   get_last_target_status (&last_ptid, &last);
3822
3823   if (last.kind != TARGET_WAITKIND_VFORKED)
3824     return 0;
3825
3826   if (ptid_get_pid (last_ptid) != pid)
3827     return 0;
3828
3829   *child_pid = last.value.related_pid;
3830   return 1;
3831 }
3832
3833 int
3834 inferior_has_execd (int pid, char **execd_pathname)
3835 {
3836   struct target_waitstatus last;
3837   ptid_t last_ptid;
3838
3839   get_last_target_status (&last_ptid, &last);
3840
3841   if (last.kind != TARGET_WAITKIND_EXECD)
3842     return 0;
3843
3844   if (ptid_get_pid (last_ptid) != pid)
3845     return 0;
3846
3847   *execd_pathname = xstrdup (last.value.execd_pathname);
3848   return 1;
3849 }
3850
3851 /* Oft used ptids */
3852 ptid_t null_ptid;
3853 ptid_t minus_one_ptid;
3854
3855 /* Create a ptid given the necessary PID, LWP, and TID components.  */
3856
3857 ptid_t
3858 ptid_build (int pid, long lwp, long tid)
3859 {
3860   ptid_t ptid;
3861
3862   ptid.pid = pid;
3863   ptid.lwp = lwp;
3864   ptid.tid = tid;
3865   return ptid;
3866 }
3867
3868 /* Create a ptid from just a pid.  */
3869
3870 ptid_t
3871 pid_to_ptid (int pid)
3872 {
3873   return ptid_build (pid, 0, 0);
3874 }
3875
3876 /* Fetch the pid (process id) component from a ptid.  */
3877
3878 int
3879 ptid_get_pid (ptid_t ptid)
3880 {
3881   return ptid.pid;
3882 }
3883
3884 /* Fetch the lwp (lightweight process) component from a ptid.  */
3885
3886 long
3887 ptid_get_lwp (ptid_t ptid)
3888 {
3889   return ptid.lwp;
3890 }
3891
3892 /* Fetch the tid (thread id) component from a ptid.  */
3893
3894 long
3895 ptid_get_tid (ptid_t ptid)
3896 {
3897   return ptid.tid;
3898 }
3899
3900 /* ptid_equal() is used to test equality of two ptids.  */
3901
3902 int
3903 ptid_equal (ptid_t ptid1, ptid_t ptid2)
3904 {
3905   return (ptid1.pid == ptid2.pid && ptid1.lwp == ptid2.lwp
3906           && ptid1.tid == ptid2.tid);
3907 }
3908
3909 /* restore_inferior_ptid() will be used by the cleanup machinery
3910    to restore the inferior_ptid value saved in a call to
3911    save_inferior_ptid().  */
3912
3913 static void
3914 restore_inferior_ptid (void *arg)
3915 {
3916   ptid_t *saved_ptid_ptr = arg;
3917   inferior_ptid = *saved_ptid_ptr;
3918   xfree (arg);
3919 }
3920
3921 /* Save the value of inferior_ptid so that it may be restored by a
3922    later call to do_cleanups().  Returns the struct cleanup pointer
3923    needed for later doing the cleanup.  */
3924
3925 struct cleanup *
3926 save_inferior_ptid (void)
3927 {
3928   ptid_t *saved_ptid_ptr;
3929
3930   saved_ptid_ptr = xmalloc (sizeof (ptid_t));
3931   *saved_ptid_ptr = inferior_ptid;
3932   return make_cleanup (restore_inferior_ptid, saved_ptid_ptr);
3933 }
3934 \f
3935
3936 static void
3937 build_infrun (void)
3938 {
3939   stop_registers = regcache_xmalloc (current_gdbarch);
3940 }
3941
3942 void
3943 _initialize_infrun (void)
3944 {
3945   int i;
3946   int numsigs;
3947   struct cmd_list_element *c;
3948
3949   DEPRECATED_REGISTER_GDBARCH_SWAP (stop_registers);
3950   deprecated_register_gdbarch_swap (NULL, 0, build_infrun);
3951
3952   add_info ("signals", signals_info, _("\
3953 What debugger does when program gets various signals.\n\
3954 Specify a signal as argument to print info on that signal only."));
3955   add_info_alias ("handle", "signals", 0);
3956
3957   add_com ("handle", class_run, handle_command, _("\
3958 Specify how to handle a signal.\n\
3959 Args are signals and actions to apply to those signals.\n\
3960 Symbolic signals (e.g. SIGSEGV) are recommended but numeric signals\n\
3961 from 1-15 are allowed for compatibility with old versions of GDB.\n\
3962 Numeric ranges may be specified with the form LOW-HIGH (e.g. 1-5).\n\
3963 The special arg \"all\" is recognized to mean all signals except those\n\
3964 used by the debugger, typically SIGTRAP and SIGINT.\n\
3965 Recognized actions include \"stop\", \"nostop\", \"print\", \"noprint\",\n\
3966 \"pass\", \"nopass\", \"ignore\", or \"noignore\".\n\
3967 Stop means reenter debugger if this signal happens (implies print).\n\
3968 Print means print a message if this signal happens.\n\
3969 Pass means let program see this signal; otherwise program doesn't know.\n\
3970 Ignore is a synonym for nopass and noignore is a synonym for pass.\n\
3971 Pass and Stop may be combined."));
3972   if (xdb_commands)
3973     {
3974       add_com ("lz", class_info, signals_info, _("\
3975 What debugger does when program gets various signals.\n\
3976 Specify a signal as argument to print info on that signal only."));
3977       add_com ("z", class_run, xdb_handle_command, _("\
3978 Specify how to handle a signal.\n\
3979 Args are signals and actions to apply to those signals.\n\
3980 Symbolic signals (e.g. SIGSEGV) are recommended but numeric signals\n\
3981 from 1-15 are allowed for compatibility with old versions of GDB.\n\
3982 Numeric ranges may be specified with the form LOW-HIGH (e.g. 1-5).\n\
3983 The special arg \"all\" is recognized to mean all signals except those\n\
3984 used by the debugger, typically SIGTRAP and SIGINT.\n\
3985 Recognized actions include \"s\" (toggles between stop and nostop), \n\
3986 \"r\" (toggles between print and noprint), \"i\" (toggles between pass and \
3987 nopass), \"Q\" (noprint)\n\
3988 Stop means reenter debugger if this signal happens (implies print).\n\
3989 Print means print a message if this signal happens.\n\
3990 Pass means let program see this signal; otherwise program doesn't know.\n\
3991 Ignore is a synonym for nopass and noignore is a synonym for pass.\n\
3992 Pass and Stop may be combined."));
3993     }
3994
3995   if (!dbx_commands)
3996     stop_command = add_cmd ("stop", class_obscure,
3997                             not_just_help_class_command, _("\
3998 There is no `stop' command, but you can set a hook on `stop'.\n\
3999 This allows you to set a list of commands to be run each time execution\n\
4000 of the program stops."), &cmdlist);
4001
4002   add_setshow_zinteger_cmd ("infrun", class_maintenance, &debug_infrun, _("\
4003 Set inferior debugging."), _("\
4004 Show inferior debugging."), _("\
4005 When non-zero, inferior specific debugging is enabled."),
4006                             NULL,
4007                             show_debug_infrun,
4008                             &setdebuglist, &showdebuglist);
4009
4010   numsigs = (int) TARGET_SIGNAL_LAST;
4011   signal_stop = (unsigned char *) xmalloc (sizeof (signal_stop[0]) * numsigs);
4012   signal_print = (unsigned char *)
4013     xmalloc (sizeof (signal_print[0]) * numsigs);
4014   signal_program = (unsigned char *)
4015     xmalloc (sizeof (signal_program[0]) * numsigs);
4016   for (i = 0; i < numsigs; i++)
4017     {
4018       signal_stop[i] = 1;
4019       signal_print[i] = 1;
4020       signal_program[i] = 1;
4021     }
4022
4023   /* Signals caused by debugger's own actions
4024      should not be given to the program afterwards.  */
4025   signal_program[TARGET_SIGNAL_TRAP] = 0;
4026   signal_program[TARGET_SIGNAL_INT] = 0;
4027
4028   /* Signals that are not errors should not normally enter the debugger.  */
4029   signal_stop[TARGET_SIGNAL_ALRM] = 0;
4030   signal_print[TARGET_SIGNAL_ALRM] = 0;
4031   signal_stop[TARGET_SIGNAL_VTALRM] = 0;
4032   signal_print[TARGET_SIGNAL_VTALRM] = 0;
4033   signal_stop[TARGET_SIGNAL_PROF] = 0;
4034   signal_print[TARGET_SIGNAL_PROF] = 0;
4035   signal_stop[TARGET_SIGNAL_CHLD] = 0;
4036   signal_print[TARGET_SIGNAL_CHLD] = 0;
4037   signal_stop[TARGET_SIGNAL_IO] = 0;
4038   signal_print[TARGET_SIGNAL_IO] = 0;
4039   signal_stop[TARGET_SIGNAL_POLL] = 0;
4040   signal_print[TARGET_SIGNAL_POLL] = 0;
4041   signal_stop[TARGET_SIGNAL_URG] = 0;
4042   signal_print[TARGET_SIGNAL_URG] = 0;
4043   signal_stop[TARGET_SIGNAL_WINCH] = 0;
4044   signal_print[TARGET_SIGNAL_WINCH] = 0;
4045
4046   /* These signals are used internally by user-level thread
4047      implementations.  (See signal(5) on Solaris.)  Like the above
4048      signals, a healthy program receives and handles them as part of
4049      its normal operation.  */
4050   signal_stop[TARGET_SIGNAL_LWP] = 0;
4051   signal_print[TARGET_SIGNAL_LWP] = 0;
4052   signal_stop[TARGET_SIGNAL_WAITING] = 0;
4053   signal_print[TARGET_SIGNAL_WAITING] = 0;
4054   signal_stop[TARGET_SIGNAL_CANCEL] = 0;
4055   signal_print[TARGET_SIGNAL_CANCEL] = 0;
4056
4057   add_setshow_zinteger_cmd ("stop-on-solib-events", class_support,
4058                             &stop_on_solib_events, _("\
4059 Set stopping for shared library events."), _("\
4060 Show stopping for shared library events."), _("\
4061 If nonzero, gdb will give control to the user when the dynamic linker\n\
4062 notifies gdb of shared library events.  The most common event of interest\n\
4063 to the user would be loading/unloading of a new library."),
4064                             NULL,
4065                             show_stop_on_solib_events,
4066                             &setlist, &showlist);
4067
4068   add_setshow_enum_cmd ("follow-fork-mode", class_run,
4069                         follow_fork_mode_kind_names,
4070                         &follow_fork_mode_string, _("\
4071 Set debugger response to a program call of fork or vfork."), _("\
4072 Show debugger response to a program call of fork or vfork."), _("\
4073 A fork or vfork creates a new process.  follow-fork-mode can be:\n\
4074   parent  - the original process is debugged after a fork\n\
4075   child   - the new process is debugged after a fork\n\
4076 The unfollowed process will continue to run.\n\
4077 By default, the debugger will follow the parent process."),
4078                         NULL,
4079                         show_follow_fork_mode_string,
4080                         &setlist, &showlist);
4081
4082   add_setshow_enum_cmd ("scheduler-locking", class_run, 
4083                         scheduler_enums, &scheduler_mode, _("\
4084 Set mode for locking scheduler during execution."), _("\
4085 Show mode for locking scheduler during execution."), _("\
4086 off  == no locking (threads may preempt at any time)\n\
4087 on   == full locking (no thread except the current thread may run)\n\
4088 step == scheduler locked during every single-step operation.\n\
4089         In this mode, no other thread may run during a step command.\n\
4090         Other threads may run while stepping over a function call ('next')."), 
4091                         set_schedlock_func,     /* traps on target vector */
4092                         show_scheduler_mode,
4093                         &setlist, &showlist);
4094
4095   add_setshow_boolean_cmd ("step-mode", class_run, &step_stop_if_no_debug, _("\
4096 Set mode of the step operation."), _("\
4097 Show mode of the step operation."), _("\
4098 When set, doing a step over a function without debug line information\n\
4099 will stop at the first instruction of that function. Otherwise, the\n\
4100 function is skipped and the step command stops at a different source line."),
4101                            NULL,
4102                            show_step_stop_if_no_debug,
4103                            &setlist, &showlist);
4104
4105   /* ptid initializations */
4106   null_ptid = ptid_build (0, 0, 0);
4107   minus_one_ptid = ptid_build (-1, 0, 0);
4108   inferior_ptid = null_ptid;
4109   target_last_wait_ptid = minus_one_ptid;
4110 }