+2015-04-02 Gary Benson <gbenson@redhat.com>
+
+ * target.h (struct target_ops) <to_filesystem_is_local>:
+ New field.
+ (target_filesystem_is_local): New macro.
+ * target-delegates.c: Regenerate.
+ * remote.c (remote_filesystem_is_local): New function.
+ (init_remote_ops): Initialize to_filesystem_is_local.
+
2015-04-02 Gary Benson <gbenson@redhat.com>
* target.h (struct target_ops) <to_fileio_fstat>: New field.
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). */
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;
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)
{
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)
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;
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;
/* 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). */
/* Target file operations. */
+/* Return 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). */