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