From: Gary Benson <gbenson@redhat.com>
To: gdb-patches@sourceware.org
Subject: [PATCH 2/9] Introduce target_filesystem_is_local
Date: Fri, 20 Mar 2015 17:32:00 -0000 [thread overview]
Message-ID: <1426870087-32654-3-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_filesystem_is_local
which can be used to determine whether or not the filesystem accessed
by the target_fileio_* methods is the local filesystem.
gdb/ChangeLog:
* target.h (struct target_ops) <to_filesystem_is_local>:
New field.
(target_filesystem_is_local): New definition.
* target-delegates.c: Regenerate.
* remote.c (remote_filesystem_is_local): New function.
(init_remote_ops): Initialize to_filesystem_is_local.
---
gdb/ChangeLog | 9 +++++++++
gdb/remote.c | 10 ++++++++++
gdb/target-delegates.c | 31 +++++++++++++++++++++++++++++++
gdb/target.h | 11 +++++++++++
4 files changed, 61 insertions(+), 0 deletions(-)
diff --git a/gdb/remote.c b/gdb/remote.c
index 9c6d2e5..c0fab92 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -9890,6 +9890,15 @@ remote_hostio_send_command (int command_bytes, int which_packet,
return ret;
}
+/* Return nonzero if the filesystem accessed by the target_fileio_*
+ methods is the local filesystem, zero otherwise. */
+
+static int
+remote_filesystem_is_local (struct target_ops *self)
+{
+ return 0;
+}
+
/* Open FILENAME on the remote target, using FLAGS and MODE. Return a
remote file descriptor, or -1 if an error occurs (and set
*REMOTE_ERRNO). */
@@ -11841,6 +11850,7 @@ Specify the serial device it is connected to\n\
remote_ops.to_supports_multi_process = remote_supports_multi_process;
remote_ops.to_supports_disable_randomization
= remote_supports_disable_randomization;
+ remote_ops.to_filesystem_is_local = remote_filesystem_is_local;
remote_ops.to_fileio_open = remote_hostio_open;
remote_ops.to_fileio_pwrite = remote_hostio_pwrite;
remote_ops.to_fileio_pread = remote_hostio_pread;
diff --git a/gdb/target-delegates.c b/gdb/target-delegates.c
index 0c1309a..20ad257 100644
--- a/gdb/target-delegates.c
+++ b/gdb/target-delegates.c
@@ -2345,6 +2345,33 @@ debug_thread_address_space (struct target_ops *self, ptid_t arg1)
return result;
}
+static int
+delegate_filesystem_is_local (struct target_ops *self)
+{
+ self = self->beneath;
+ return self->to_filesystem_is_local (self);
+}
+
+static int
+tdefault_filesystem_is_local (struct target_ops *self)
+{
+ return 1;
+}
+
+static int
+debug_filesystem_is_local (struct target_ops *self)
+{
+ int result;
+ fprintf_unfiltered (gdb_stdlog, "-> %s->to_filesystem_is_local (...)\n", debug_target.to_shortname);
+ result = debug_target.to_filesystem_is_local (&debug_target);
+ fprintf_unfiltered (gdb_stdlog, "<- %s->to_filesystem_is_local (", debug_target.to_shortname);
+ target_debug_print_struct_target_ops_p (&debug_target);
+ fputs_unfiltered (") = ", gdb_stdlog);
+ target_debug_print_int (result);
+ fputs_unfiltered ("\n", gdb_stdlog);
+ return result;
+}
+
static void
delegate_trace_init (struct target_ops *self)
{
@@ -4024,6 +4051,8 @@ install_delegators (struct target_ops *ops)
ops->to_thread_architecture = delegate_thread_architecture;
if (ops->to_thread_address_space == NULL)
ops->to_thread_address_space = delegate_thread_address_space;
+ if (ops->to_filesystem_is_local == NULL)
+ ops->to_filesystem_is_local = delegate_filesystem_is_local;
if (ops->to_trace_init == NULL)
ops->to_trace_init = delegate_trace_init;
if (ops->to_download_tracepoint == NULL)
@@ -4227,6 +4256,7 @@ install_dummy_methods (struct target_ops *ops)
ops->to_can_run_breakpoint_commands = tdefault_can_run_breakpoint_commands;
ops->to_thread_architecture = default_thread_architecture;
ops->to_thread_address_space = default_thread_address_space;
+ ops->to_filesystem_is_local = tdefault_filesystem_is_local;
ops->to_trace_init = tdefault_trace_init;
ops->to_download_tracepoint = tdefault_download_tracepoint;
ops->to_can_download_tracepoint = tdefault_can_download_tracepoint;
@@ -4374,6 +4404,7 @@ init_debug_target (struct target_ops *ops)
ops->to_can_run_breakpoint_commands = debug_can_run_breakpoint_commands;
ops->to_thread_architecture = debug_thread_architecture;
ops->to_thread_address_space = debug_thread_address_space;
+ ops->to_filesystem_is_local = debug_filesystem_is_local;
ops->to_trace_init = debug_trace_init;
ops->to_download_tracepoint = debug_download_tracepoint;
ops->to_can_download_tracepoint = debug_can_download_tracepoint;
diff --git a/gdb/target.h b/gdb/target.h
index d2bd152..925abeb 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -825,6 +825,12 @@ struct target_ops
/* Target file operations. */
+ /* Return nonzero if the filesystem accessed by the
+ target_fileio_* methods is the local filesystem,
+ zero otherwise. */
+ int (*to_filesystem_is_local) (struct target_ops *)
+ TARGET_DEFAULT_RETURN (1);
+
/* Open FILENAME on the target, using FLAGS and MODE. Return a
target file descriptor, or -1 if an error occurs (and set
*TARGET_ERRNO). */
@@ -1920,6 +1926,11 @@ extern int target_search_memory (CORE_ADDR start_addr,
/* Target file operations. */
+/* Nonzero if the filesystem accessed by the target_fileio_*
+ methods is the local filesystem, zero otherwise. */
+#define target_filesystem_is_local \
+ current_target.to_filesystem_is_local (¤t_target)
+
/* Open FILENAME on the target, using FLAGS and MODE. Return a
target file descriptor, or -1 if an error occurs (and set
*TARGET_ERRNO). */
--
1.7.1
next prev parent reply other threads:[~2015-03-20 17:32 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 ` [PATCH 1/9] Introduce target_fileio_fstat Gary Benson
2015-04-01 12:11 ` 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 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 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 ` Gary Benson [this message]
2015-04-01 12:11 ` [PATCH 2/9] Introduce target_filesystem_is_local 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-3-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