/* Variables that describe the inferior process running under GDB:
Where it is, why it stopped, and how to step it.
- Copyright (C) 1986, 1988-1996, 1998-2001, 2003-2012 Free Software
- Foundation, Inc.
+ Copyright (C) 1986-2013 Free Software Foundation, Inc.
This file is part of GDB.
struct regcache;
struct ui_out;
struct terminal_info;
+struct target_desc_info;
#include "ptid.h"
#include "frame.h"
#include "progspace.h"
+#include "registry.h"
struct infcall_suspend_state;
struct infcall_control_state;
extern const char *get_inferior_io_terminal (void);
/* Collected pid, tid, etc. of the debugged inferior. When there's
- no inferior, PIDGET (inferior_ptid) will be 0. */
+ no inferior, ptid_get_pid (inferior_ptid) will be 0. */
extern ptid_t inferior_ptid;
are kept running freely. */
extern int non_stop;
-/* If set (default), when following a fork, GDB will detach from one
- the fork branches, child or parent. Exactly which branch is
- detached depends on 'set follow-fork-mode' setting. */
-extern int detach_fork;
-
/* When set (default), the target should attempt to disable the operating
system's address space randomization feature when starting an inferior. */
extern int disable_randomization;
struct frame_info *frame,
int regnum, int all);
-extern void child_terminal_info (char *, int);
+extern void child_terminal_info (const char *, int);
extern void term_info (char *, int);
/* From infrun.c */
-extern int debug_infrun;
+extern unsigned int debug_infrun;
extern int stop_on_solib_events;
extern void follow_inferior_reset_breakpoints (void);
-/* Throw an error indicating the current thread is running. */
-extern void error_is_running (void);
+void set_step_info (struct frame_info *frame, struct symtab_and_line sal);
-/* Calls error_is_running if the current thread is running. */
-extern void ensure_not_running (void);
+/* Clear the convenience variables associated with the exit of the
+ inferior. Currently, those variables are $_exitcode and
+ $_exitsignal. */
-void set_step_info (struct frame_info *frame, struct symtab_and_line sal);
+extern void clear_exit_convenience_vars (void);
/* From infcmd.c */
extern void registers_info (char *, int);
-extern void nexti_command (char *, int);
-
-extern void stepi_command (char *, int);
-
extern void continue_1 (int all_threads);
-extern void continue_command (char *, int);
-
-extern void interrupt_target_command (char *args, int from_tty);
-
extern void interrupt_target_1 (int all_threads);
extern void delete_longjmp_breakpoint_cleanup (void *arg);
Inferior thread counterpart is `struct thread_suspend_state'. */
+#if 0 /* Currently unused and empty structures are not valid C. */
struct inferior_suspend_state
{
};
+#endif
/* GDB represents the state of each program execution with an object
called an inferior. An inferior typically corresponds to a process
/* State of inferior process to restore after GDB is done with an inferior
call. See `struct inferior_suspend_state'. */
+#if 0 /* Currently unused and empty structures are not valid C. */
struct inferior_suspend_state suspend;
+#endif
/* True if this was an auto-created inferior, e.g. created from
following a fork; false, if this inferior was manually added by
from enum symfile_add_flags. */
int symfile_flags;
+ /* Info about an inferior's target description (if it's fetched; the
+ user supplied description's filename, if any; etc.). */
+ struct target_desc_info *tdesc_info;
+
+ /* The architecture associated with the inferior through the
+ connection to the target.
+
+ The architecture vector provides some information that is really
+ a property of the inferior, accessed through a particular target:
+ ptrace operations; the layout of certain RSP packets; the
+ solib_ops vector; etc. To differentiate architecture accesses to
+ per-inferior/target properties from
+ per-thread/per-frame/per-objfile properties, accesses to
+ per-inferior/target properties should be made through
+ this gdbarch. */
+ struct gdbarch *gdbarch;
+
/* Per inferior data-pointers required by other GDB modules. */
- void **data;
- unsigned num_data;
+ REGISTRY_FIELDS;
};
/* Keep a registry of per-inferior data-pointers required by other GDB
modules. */
-extern const struct inferior_data *register_inferior_data (void);
-extern const struct inferior_data *register_inferior_data_with_cleanup
- (void (*cleanup) (struct inferior *, void *));
-extern void clear_inferior_data (struct inferior *inf);
-extern void set_inferior_data (struct inferior *inf,
- const struct inferior_data *data, void *value);
-extern void *inferior_data (struct inferior *inf,
- const struct inferior_data *data);
+DECLARE_REGISTRY (inferior);
/* Create an empty inferior list, or empty the existing one. */
extern void init_inferior_list (void);
extern void update_signals_program_target (void);
+extern void signal_catch_update (const unsigned int *);
+
/* In some circumstances we allow a command to specify a numeric
signal. The idea is to keep these circumstances limited so that
users (and scripts) develop portable habits. For comparison,