Where it is, why it stopped, and how to step it.
Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
- 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008
+ 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of GDB.
/* For struct frame_id. */
#include "frame.h"
-/* Structure in which to save the status of the inferior. Create/Save
- through "save_inferior_status", restore through
- "restore_inferior_status".
+/* Two structures are used to record inferior state.
- This pair of routines should be called around any transfer of
- control to the inferior which you don't want showing up in your
- control variables. */
+ inferior_thread_state contains state about the program itself like its
+ registers and any signal it received when it last stopped.
+ This state must be restored regardless of how the inferior function call
+ ends (either successfully, or after it hits a breakpoint or signal)
+ if the program is to properly continue where it left off.
+ inferior_status contains state regarding gdb's control of the inferior
+ itself like stepping control. It also contains session state like the
+ user's currently selected frame.
+
+ Call these routines around hand called functions, including function calls
+ in conditional breakpoints for example. */
+
+struct inferior_thread_state;
struct inferior_status;
-extern struct inferior_status *save_inferior_status (int);
+extern struct inferior_thread_state *save_inferior_thread_state (void);
+extern struct inferior_status *save_inferior_status (void);
+extern void restore_inferior_thread_state (struct inferior_thread_state *);
extern void restore_inferior_status (struct inferior_status *);
+extern struct cleanup *make_cleanup_restore_inferior_thread_state (struct inferior_thread_state *);
extern struct cleanup *make_cleanup_restore_inferior_status (struct inferior_status *);
+extern void discard_inferior_thread_state (struct inferior_thread_state *);
extern void discard_inferior_status (struct inferior_status *);
+extern struct regcache *get_inferior_thread_state_regcache (struct inferior_thread_state *);
+
/* The -1 ptid, often used to indicate either an error condition
or a "don't care" condition, i.e, "run all threads." */
extern ptid_t minus_one_ptid;
extern void clear_sigint_trap (void);
-extern void set_sigio_trap (void);
-
-extern void clear_sigio_trap (void);
-
/* Set/get file name for default use for standard in/out in the inferior. */
extern void set_inferior_io_terminal (const char *terminal_name);
extern void interrupt_target_1 (int all_threads);
-/* Address at which inferior stopped. */
+extern void detach_command (char *, int);
-extern CORE_ADDR stop_pc;
+extern void notice_new_inferior (ptid_t, int, int);
-/* Flag indicating that a command has proceeded the inferior past the
- current breakpoint. */
+/* Address at which inferior stopped. */
-extern int breakpoint_proceeded;
+extern CORE_ADDR stop_pc;
/* Nonzero if stopped due to completion of a stack dummy routine. */
extern enum exec_direction_kind execution_direction;
-/* Nonzero if proceed is being used for a "finish" command or a similar
- situation when stop_registers should be saved. */
-
-extern int proceed_to_finish;
-
-/* Save register contents here when about to pop a stack dummy frame,
- if-and-only-if proceed_to_finish is set.
+/* Save register contents here when executing a "finish" command or are
+ about to pop a stack dummy frame, if-and-only-if proceed_to_finish is set.
Thus this contains the return value from the called function (assuming
values are returned in a register). */
void displaced_step_dump_bytes (struct ui_file *file,
const gdb_byte *buf, size_t len);
-
-/* When set, normal_stop will not call the normal_stop observer. */
-extern int suppress_stop_observer;
-
-/* When set, no calls to target_resumed observer will be made. */
-extern int suppress_resume_observer;
-
\f
/* Possible values for gdbarch_call_dummy_location. */
#define ON_STACK 1
/* Boolean test for an already-known inferior id (GDB's homegrown id,
not the system's). */
-extern int valid_inferior_id (int num);
+extern int valid_gdb_inferior_id (int num);
/* Search function to lookup a inferior by target 'pid'. */
extern struct inferior *find_inferior_pid (int pid);