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