#if !defined (INFERIOR_H)
#define INFERIOR_H 1
+#include <exception>
+
struct target_waitstatus;
struct frame_info;
struct ui_file;
#include "symfile-add-flags.h"
#include "gdbsupport/refcounted-object.h"
#include "gdbsupport/forward-scope-exit.h"
+#include "gdbsupport/gdb_unique_ptr.h"
#include "gdbsupport/common-inferior.h"
#include "gdbthread.h"
/* If we are restoring the inferior state due to an exception,
some error message will be printed. So, only warn the user
when we cannot restore during normal execution. */
- if (!std::uncaught_exception ())
+ bool unwinding;
+#if __cpp_lib_uncaught_exceptions
+ unwinding = std::uncaught_exceptions () > 0;
+#else
+ unwinding = std::uncaught_exception ();
+#endif
+ if (!unwinding)
warning (_("Failed to restore inferior state: %s"), e.what ());
}
}
extern void clear_sigint_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 const char *get_inferior_io_terminal (void);
-
/* Collected pid, tid, etc. of the debugged inferior. When there's
no inferior, inferior_ptid.pid () will be 0. */
STARTUP_INFERIOR. */
extern ptid_t gdb_startup_inferior (pid_t pid, int num_traps);
-extern char *construct_inferior_arguments (int, char **);
-
/* From infcmd.c */
/* Initial inferior setup. Determines the exec file is not yet known,
{ return m_target_stack.at (stratum); }
bool has_execution ()
- { return target_has_execution_1 (this); }
+ { return target_has_execution (this); }
/* Pointer to next inferior in singly-linked list of inferiors. */
struct inferior *next = NULL;
inline safe_inf_threads_range threads_safe ()
{ return safe_inf_threads_range (this->thread_list); }
+ /* Set/get file name for default use for standard in/out in the
+ inferior. On Unix systems, we try to make TERMINAL_NAME the
+ inferior's controlling terminal. If TERMINAL_NAME is nullptr or
+ the empty string, then the inferior inherits GDB's terminal (or
+ GDBserver's if spawning a remote process). */
+ void set_tty (const char *terminal_name);
+ const char *tty ();
+
/* Convenient handle (GDB inferior id). Unique across all
inferiors. */
int num = 0;
this inferior. */
gdb::unique_xmalloc_ptr<char> cwd;
- /* The name of terminal device to use for I/O. */
- char *terminal = NULL;
-
/* The terminal state as set by the last target_terminal::terminal_*
call. */
target_terminal_state terminal_state = target_terminal_state::is_ours;
private:
/* The inferior's target stack. */
target_stack m_target_stack;
+
+ /* The name of terminal device to use for I/O. */
+ gdb::unique_xmalloc_ptr<char> m_terminal;
};
/* Keep a registry of per-inferior data-pointers required by other GDB
extern struct inferior *
find_inferior_for_program_space (struct program_space *pspace);
-/* Inferior iterator function.
-
- Calls a callback function once for each inferior, so long as the
- callback function returns false. If the callback function returns
- true, the iteration will end and the current inferior will be
- returned. This can be useful for implementing a search for a
- inferior with arbitrary attributes, or for applying some operation
- to every inferior.
-
- It is safe to delete the iterated inferior from the callback. */
-extern struct inferior *iterate_over_inferiors (int (*) (struct inferior *,
- void *),
- void *);
-
/* Returns true if the inferior list is not empty. */
extern int have_inferiors (void);