Introduce target_fileio_fstat
This commit introduces a new target method target_fileio_fstat which can be used to retrieve information about files opened with target_fileio_open. gdb/ChangeLog: * target.h (struct target_ops) <to_fileio_fstat>: New field. (target_fileio_fstat): New declaration. * target.c (target_fileio_fstat): New function. * inf-child.c (inf_child_fileio_fstat): Likewise. (inf_child_target): Initialize to_fileio_fstat. * remote.c (init_remote_ops): Likewise.
This commit is contained in:
parent
3d5ff6205b
commit
9b15c1f041
|
@ -1,3 +1,12 @@
|
|||
2015-04-02 Gary Benson <gbenson@redhat.com>
|
||||
|
||||
* target.h (struct target_ops) <to_fileio_fstat>: New field.
|
||||
(target_fileio_fstat): New declaration.
|
||||
* target.c (target_fileio_fstat): New function.
|
||||
* inf-child.c (inf_child_fileio_fstat): Likewise.
|
||||
(inf_child_target): Initialize to_fileio_fstat.
|
||||
* remote.c (init_remote_ops): Likewise.
|
||||
|
||||
2015-04-01 Sasha Smundak <asmundak@google.com>
|
||||
|
||||
* Makefile.in (SUBDIR_PYTHON_OBJS): Add py-unwind.o.
|
||||
|
|
|
@ -374,6 +374,20 @@ inf_child_fileio_pread (struct target_ops *self,
|
|||
return ret;
|
||||
}
|
||||
|
||||
/* Implementation of to_fileio_fstat. */
|
||||
static int
|
||||
inf_child_fileio_fstat (struct target_ops *self, int fd,
|
||||
struct stat *sb, int *target_errno)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = fstat (fd, sb);
|
||||
if (ret == -1)
|
||||
*target_errno = inf_child_errno_to_fileio_error (errno);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Close FD on the target. Return 0, or -1 if an error occurs
|
||||
(and set *TARGET_ERRNO). */
|
||||
static int
|
||||
|
@ -500,6 +514,7 @@ inf_child_target (void)
|
|||
t->to_fileio_open = inf_child_fileio_open;
|
||||
t->to_fileio_pwrite = inf_child_fileio_pwrite;
|
||||
t->to_fileio_pread = inf_child_fileio_pread;
|
||||
t->to_fileio_fstat = inf_child_fileio_fstat;
|
||||
t->to_fileio_close = inf_child_fileio_close;
|
||||
t->to_fileio_unlink = inf_child_fileio_unlink;
|
||||
t->to_fileio_readlink = inf_child_fileio_readlink;
|
||||
|
|
|
@ -11817,6 +11817,7 @@ Specify the serial device it is connected to\n\
|
|||
remote_ops.to_fileio_open = remote_hostio_open;
|
||||
remote_ops.to_fileio_pwrite = remote_hostio_pwrite;
|
||||
remote_ops.to_fileio_pread = remote_hostio_pread;
|
||||
remote_ops.to_fileio_fstat = remote_hostio_fstat;
|
||||
remote_ops.to_fileio_close = remote_hostio_close;
|
||||
remote_ops.to_fileio_unlink = remote_hostio_unlink;
|
||||
remote_ops.to_fileio_readlink = remote_hostio_readlink;
|
||||
|
|
19
gdb/target.c
19
gdb/target.c
|
@ -2839,6 +2839,25 @@ target_fileio_pread (int fd, gdb_byte *read_buf, int len,
|
|||
return ret;
|
||||
}
|
||||
|
||||
/* See target.h. */
|
||||
int
|
||||
target_fileio_fstat (int fd, struct stat *sb, int *target_errno)
|
||||
{
|
||||
fileio_fh_t *fh = fileio_fd_to_fh (fd);
|
||||
int ret = -1;
|
||||
|
||||
if (is_closed_fileio_fh (fh->fd))
|
||||
*target_errno = EBADF;
|
||||
else
|
||||
ret = fh->t->to_fileio_fstat (fh->t, fh->fd, sb, target_errno);
|
||||
|
||||
if (targetdebug)
|
||||
fprintf_unfiltered (gdb_stdlog,
|
||||
"target_fileio_fstat (%d) = %d (%d)\n",
|
||||
fd, ret, ret != -1 ? 0 : *target_errno);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Close FD on the target. Return 0, or -1 if an error occurs
|
||||
(and set *TARGET_ERRNO). */
|
||||
int
|
||||
|
|
12
gdb/target.h
12
gdb/target.h
|
@ -846,6 +846,12 @@ struct target_ops
|
|||
int fd, gdb_byte *read_buf, int len,
|
||||
ULONGEST offset, int *target_errno);
|
||||
|
||||
/* Get information about the file opened as FD and put it in
|
||||
SB. Return 0 on success, or -1 if an error occurs (and set
|
||||
*TARGET_ERRNO). */
|
||||
int (*to_fileio_fstat) (struct target_ops *,
|
||||
int fd, struct stat *sb, int *target_errno);
|
||||
|
||||
/* Close FD on the target. Return 0, or -1 if an error occurs
|
||||
(and set *TARGET_ERRNO). */
|
||||
int (*to_fileio_close) (struct target_ops *, int fd, int *target_errno);
|
||||
|
@ -1933,6 +1939,12 @@ extern int target_fileio_pwrite (int fd, const gdb_byte *write_buf, int len,
|
|||
extern int target_fileio_pread (int fd, gdb_byte *read_buf, int len,
|
||||
ULONGEST offset, int *target_errno);
|
||||
|
||||
/* Get information about the file opened as FD on the target
|
||||
and put it in SB. Return 0 on success, or -1 if an error
|
||||
occurs (and set *TARGET_ERRNO). */
|
||||
extern int target_fileio_fstat (int fd, struct stat *sb,
|
||||
int *target_errno);
|
||||
|
||||
/* Close FD on the target. Return 0, or -1 if an error occurs
|
||||
(and set *TARGET_ERRNO). */
|
||||
extern int target_fileio_close (int fd, int *target_errno);
|
||||
|
|
Loading…
Reference in New Issue