33#include "gdbsupport/fileio.h"
34#include "gdbsupport/agent.h"
35#include "gdbsupport/gdb_wait.h"
36#include "gdbsupport/filestuff.h"
45 N_(
"Native process (started by the \"run\" command).")
59 if (WIFEXITED (hoststatus))
61 else if (!WIFSTOPPED (hoststatus))
63 (gdb_signal_from_host (WTERMSIG (hoststatus)));
66 (gdb_signal_from_host (WSTOPSIG (hoststatus)));
164 gdb_printf (
"Done. Use the \"run\" command to start a process.\n");
173 error (_(
"Argument given to \"disconnect\"."));
235 int flags,
int mode,
int warn_if_slow,
236 fileio_error *target_errno)
242 if (fileio_to_host_openflags (
flags, &nat_flags) == -1
243 || fileio_to_host_mode (mode, &nat_mode) == -1)
245 *target_errno = FILEIO_EINVAL;
249 fd = gdb_open_cloexec (filename, nat_flags, nat_mode).release ();
251 *target_errno = host_to_fileio_error (errno);
260 ULONGEST offset, fileio_error *target_errno)
265 ret = pwrite (fd, write_buf, len, (
long) offset);
272 ret = lseek (fd, (
long) offset,
SEEK_SET);
274 ret = write (fd, write_buf, len);
278 *target_errno = host_to_fileio_error (errno);
287 ULONGEST offset, fileio_error *target_errno)
292 ret = pread (fd, read_buf, len, (
long) offset);
299 ret = lseek (fd, (
long) offset,
SEEK_SET);
301 ret =
read (fd, read_buf, len);
305 *target_errno = host_to_fileio_error (errno);
317 ret = fstat (fd, sb);
319 *target_errno = host_to_fileio_error (errno);
333 *target_errno = host_to_fileio_error (errno);
342 fileio_error *target_errno)
346 ret = unlink (filename);
348 *target_errno = host_to_fileio_error (errno);
355gdb::optional<std::string>
357 fileio_error *target_errno)
361#if defined (PATH_MAX)
365 len = readlink (filename, buf,
sizeof buf);
368 *target_errno = host_to_fileio_error (errno);
372 return std::string (buf, len);
374 *target_errno = FILEIO_ENOSYS;
382 if (agent_loaded_p ())
394 return agent_loaded_p ();
399 const char *execd_pathname)
405 if (orig_inf != follow_inf)
bool can_use_agent() override
void pass_ctrlc() override
void prepare_to_store(struct regcache *) override
void mourn_inferior() override
bool can_attach() override
void disconnect(const char *, int) override
bool supports_terminal_ours() override
int fileio_close(int fd, fileio_error *target_errno) override
void post_attach(int) override
void terminal_info(const char *, int) override
int fileio_open(struct inferior *inf, const char *filename, int flags, int mode, int warn_if_slow, fileio_error *target_errno) override
void follow_exec(inferior *follow_inf, ptid_t ptid, const char *execd_pathname) override
void terminal_init() override
void maybe_unpush_target()
void terminal_ours_for_output() override
const target_info & info() const override
int fileio_pread(int fd, gdb_byte *read_buf, int len, ULONGEST offset, fileio_error *target_errno) override
void interrupt() override
int fileio_fstat(int fd, struct stat *sb, fileio_error *target_errno) override
void terminal_save_inferior() override
bool can_create_inferior() override
const char * pid_to_exec_file(int pid) override
int fileio_unlink(struct inferior *inf, const char *filename, fileio_error *target_errno) override
~inf_child_target() override=0
void terminal_ours() override
gdb::optional< std::string > fileio_readlink(struct inferior *inf, const char *filename, fileio_error *target_errno) override
bool use_agent(bool use) override
int fileio_pwrite(int fd, const gdb_byte *write_buf, int len, ULONGEST offset, fileio_error *target_errno) override
void terminal_inferior() override
int unpush_target(struct target_ops *t)
void push_target(struct target_ops *t)
void follow_exec(inferior *follow_inf, ptid_t ptid, const char *execd_pathname) override
ssize_t read(int fd, void *buf, size_t count)
mach_port_t kern_return_t mach_port_t mach_msg_type_name_t msgportsPoly mach_port_t kern_return_t pid_t pid mach_port_t kern_return_t mach_port_t task mach_port_t kern_return_t int flags
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int int rusage_t pid_t pid
target_waitstatus host_status_to_waitstatus(int hoststatus)
void add_inf_child_target(inf_child_target *target)
void inf_child_open_target(const char *arg, int from_tty)
static const target_info inf_child_target_info
static int inf_child_explicitly_opened
struct inferior * current_inferior(void)
void switch_to_inferior_no_thread(inferior *inf)
void child_terminal_ours(struct target_ops *self)
void child_terminal_init(struct target_ops *self)
void child_terminal_info(struct target_ops *self, const char *, int)
void child_pass_ctrlc(struct target_ops *self)
void child_terminal_ours_for_output(struct target_ops *self)
void child_interrupt(struct target_ops *self)
void generic_mourn_inferior(void)
void child_terminal_inferior(struct target_ops *self)
void child_terminal_save_inferior(struct target_ops *self)
target_waitstatus & set_exited(int exit_status)
target_waitstatus & set_signalled(gdb_signal sig)
target_waitstatus & set_stopped(gdb_signal sig)
target_ops * get_native_target()
void add_target(const target_info &t, target_open_ftype *func, completer_ftype *completer)
void set_native_target(target_ops *target)
void target_preopen(int from_tty)
void gdb_printf(struct ui_file *stream, const char *format,...)