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