/* Base/prototype target for default child (native) targets.
- Copyright (C) 1988-2015 Free Software Foundation, Inc.
+ Copyright (C) 1988-2018 Free Software Foundation, Inc.
This file is part of GDB.
if (regnum == -1)
{
for (regnum = 0;
- regnum < gdbarch_num_regs (get_regcache_arch (regcache));
+ regnum < gdbarch_num_regs (regcache->arch ());
regnum++)
regcache_raw_supply (regcache, regnum, NULL);
}
return NULL;
}
-/* Open FILENAME on the target, using FLAGS and MODE. Return a
- target file descriptor, or -1 if an error occurs (and set
- *TARGET_ERRNO). */
+/* Implementation of to_fileio_open. */
+
static int
inf_child_fileio_open (struct target_ops *self,
- const char *filename, int flags, int mode,
+ struct inferior *inf, const char *filename,
+ int flags, int mode, int warn_if_slow,
int *target_errno)
{
int nat_flags;
return fd;
}
-/* Write up to LEN bytes from WRITE_BUF to FD on the target.
- Return the number of bytes written, or -1 if an error occurs
- (and set *TARGET_ERRNO). */
+/* Implementation of to_fileio_pwrite. */
+
static int
inf_child_fileio_pwrite (struct target_ops *self,
int fd, const gdb_byte *write_buf, int len,
return ret;
}
-/* Read up to LEN bytes FD on the target into READ_BUF.
- Return the number of bytes read, or -1 if an error occurs
- (and set *TARGET_ERRNO). */
+/* Implementation of to_fileio_pread. */
+
static int
inf_child_fileio_pread (struct target_ops *self,
int fd, gdb_byte *read_buf, int len,
}
/* Implementation of to_fileio_fstat. */
+
static int
inf_child_fileio_fstat (struct target_ops *self, int fd,
struct stat *sb, int *target_errno)
return ret;
}
-/* Close FD on the target. Return 0, or -1 if an error occurs
- (and set *TARGET_ERRNO). */
+/* Implementation of to_fileio_close. */
+
static int
inf_child_fileio_close (struct target_ops *self, int fd, int *target_errno)
{
return ret;
}
-/* Unlink FILENAME on the target. Return 0, or -1 if an error
- occurs (and set *TARGET_ERRNO). */
+/* Implementation of to_fileio_unlink. */
+
static int
inf_child_fileio_unlink (struct target_ops *self,
- const char *filename, int *target_errno)
+ struct inferior *inf, const char *filename,
+ int *target_errno)
{
int ret;
return ret;
}
-/* Read value of symbolic link FILENAME on the target. Return a
- null-terminated string allocated via xmalloc, or NULL if an error
- occurs (and set *TARGET_ERRNO). */
-static char *
+/* Implementation of to_fileio_readlink. */
+
+static gdb::optional<std::string>
inf_child_fileio_readlink (struct target_ops *self,
- const char *filename, int *target_errno)
+ struct inferior *inf, const char *filename,
+ int *target_errno)
{
/* We support readlink only on systems that also provide a compile-time
maximum path length (PATH_MAX), at least for now. */
#if defined (PATH_MAX)
char buf[PATH_MAX];
int len;
- char *ret;
len = readlink (filename, buf, sizeof buf);
if (len < 0)
{
*target_errno = host_to_fileio_error (errno);
- return NULL;
+ return {};
}
- ret = xmalloc (len + 1);
- memcpy (ret, buf, len);
- ret[len] = '\0';
- return ret;
+ return std::string (buf, len);
#else
*target_errno = FILEIO_ENOSYS;
- return NULL;
+ return {};
#endif
}
t->to_remove_breakpoint = memory_remove_breakpoint;
t->to_terminal_init = child_terminal_init;
t->to_terminal_inferior = child_terminal_inferior;
+ t->to_terminal_save_inferior = child_terminal_save_inferior;
t->to_terminal_ours_for_output = child_terminal_ours_for_output;
t->to_terminal_ours = child_terminal_ours;
t->to_terminal_info = child_terminal_info;
+ t->to_pass_ctrlc = child_pass_ctrlc;
+ t->to_interrupt = child_interrupt;
t->to_post_startup_inferior = inf_child_post_startup_inferior;
t->to_follow_fork = inf_child_follow_fork;
t->to_can_run = inf_child_can_run;