From: Gary Benson <gbenson@redhat.com>
To: gdb-patches@sourceware.org
Subject: [PATCH 1/9] Introduce target_fileio_fstat
Date: Fri, 20 Mar 2015 16:48:00 -0000 [thread overview]
Message-ID: <1426870087-32654-2-git-send-email-gbenson@redhat.com> (raw)
In-Reply-To: <1426870087-32654-1-git-send-email-gbenson@redhat.com>
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.
---
gdb/ChangeLog | 9 +++++++++
gdb/inf-child.c | 17 +++++++++++++++++
gdb/remote.c | 1 +
gdb/target.c | 21 +++++++++++++++++++++
gdb/target.h | 11 +++++++++++
5 files changed, 59 insertions(+), 0 deletions(-)
diff --git a/gdb/inf-child.c b/gdb/inf-child.c
index 494f4b8..a0b786c 100644
--- a/gdb/inf-child.c
+++ b/gdb/inf-child.c
@@ -374,6 +374,22 @@ inf_child_fileio_pread (struct target_ops *self,
return ret;
}
+/* Get information about the file opened as FD and put it in SB.
+ Return 0, or -1 if an error occurs (and set *TARGET_ERRNO). */
+
+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 +516,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;
diff --git a/gdb/remote.c b/gdb/remote.c
index dfa68b3..9c6d2e5 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -11844,6 +11844,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;
diff --git a/gdb/target.c b/gdb/target.c
index bb901b5..44ede10 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -2848,6 +2848,27 @@ target_fileio_pread (int fd, gdb_byte *read_buf, int len,
return ret;
}
+/* Get information about the file opened as FD on the target
+ and put it in SB. Return 0, or -1 if an error occurs (and
+ set *TARGET_ERRNO). */
+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
diff --git a/gdb/target.h b/gdb/target.h
index c95e1a4..d2bd152 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -846,6 +846,11 @@ 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, 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 +1938,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, 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);
--
1.7.1
next prev parent reply other threads:[~2015-03-20 16:48 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-20 16:48 [PATCH 0/9] New default sysroot "target:" Gary Benson
2015-03-20 16:48 ` [PATCH 4/9] Convert "remote:" sysroots to "target:" and remove "remote:" Gary Benson
2015-04-01 12:13 ` Pedro Alves
2015-04-01 13:48 ` Gary Benson
2015-03-20 16:48 ` [PATCH 6/9] Strip "target:" prefix in solib_find if accessing local files Gary Benson
2015-04-01 12:14 ` Pedro Alves
2015-03-20 16:48 ` Gary Benson [this message]
2015-04-01 12:11 ` [PATCH 1/9] Introduce target_fileio_fstat Pedro Alves
2015-03-20 16:57 ` [PATCH 9/9] Document "target:" sysroot changes Gary Benson
2015-03-20 17:51 ` Eli Zaretskii
2015-04-01 12:15 ` Pedro Alves
2015-03-20 16:57 ` [PATCH 8/9] Make the default sysroot be "target:" Gary Benson
2015-04-01 12:15 ` Pedro Alves
2015-04-01 14:12 ` Gary Benson
2015-04-01 14:18 ` Pedro Alves
2015-03-20 17:18 ` [PATCH 7/9] Update exec_file_attach to cope with "target:" filenames Gary Benson
2015-04-01 12:14 ` Pedro Alves
2015-04-01 13:55 ` Gary Benson
2015-04-01 14:16 ` Pedro Alves
2015-04-01 15:59 ` Gary Benson
2015-03-20 17:32 ` [PATCH 2/9] Introduce target_filesystem_is_local Gary Benson
2015-04-01 12:11 ` Pedro Alves
2015-03-20 17:46 ` [PATCH 5/9] Rearrange symfile_bfd_open Gary Benson
2015-04-01 12:13 ` Pedro Alves
2015-04-01 15:50 ` Gary Benson
2015-04-01 16:03 ` Pedro Alves
2015-03-20 17:47 ` [PATCH 3/9] Make gdb_bfd_open able to open BFDs using target fileio Gary Benson
2015-04-01 12:13 ` Pedro Alves
2015-04-01 12:17 ` [PATCH 0/9] New default sysroot "target:" Pedro Alves
2015-04-02 13:00 ` Gary Benson
2015-04-01 12:22 ` [PING][PATCH " Gary Benson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1426870087-32654-2-git-send-email-gbenson@redhat.com \
--to=gbenson@redhat.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox