diff options
Diffstat (limited to 'gdb/remote.c')
-rw-r--r-- | gdb/remote.c | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/gdb/remote.c b/gdb/remote.c index 43f3165..69a67a8 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -10180,113 +10180,6 @@ remote_hostio_close_cleanup (void *opaque) remote_hostio_close (find_target_at (process_stratum), fd, &remote_errno); } - -static void * -remote_bfd_iovec_open (struct bfd *abfd, void *open_closure) -{ - const char *filename = bfd_get_filename (abfd); - int fd, remote_errno; - int *stream; - - gdb_assert (remote_filename_p (filename)); - - fd = remote_hostio_open (find_target_at (process_stratum), - filename + 7, FILEIO_O_RDONLY, 0, &remote_errno); - if (fd == -1) - { - errno = remote_fileio_errno_to_host (remote_errno); - bfd_set_error (bfd_error_system_call); - return NULL; - } - - stream = xmalloc (sizeof (int)); - *stream = fd; - return stream; -} - -static int -remote_bfd_iovec_close (struct bfd *abfd, void *stream) -{ - int fd = *(int *)stream; - int remote_errno; - - xfree (stream); - - /* Ignore errors on close; these may happen if the remote - connection was already torn down. */ - remote_hostio_close (find_target_at (process_stratum), fd, &remote_errno); - - /* Zero means success. */ - return 0; -} - -static file_ptr -remote_bfd_iovec_pread (struct bfd *abfd, void *stream, void *buf, - file_ptr nbytes, file_ptr offset) -{ - int fd = *(int *)stream; - int remote_errno; - file_ptr pos, bytes; - - pos = 0; - while (nbytes > pos) - { - bytes = remote_hostio_pread (find_target_at (process_stratum), - fd, (gdb_byte *) buf + pos, nbytes - pos, - offset + pos, &remote_errno); - if (bytes == 0) - /* Success, but no bytes, means end-of-file. */ - break; - if (bytes == -1) - { - errno = remote_fileio_errno_to_host (remote_errno); - bfd_set_error (bfd_error_system_call); - return -1; - } - - pos += bytes; - } - - return pos; -} - -static int -remote_bfd_iovec_stat (struct bfd *abfd, void *stream, struct stat *sb) -{ - int fd = *(int *) stream; - int remote_errno; - int result; - - result = remote_hostio_fstat (find_target_at (process_stratum), - fd, sb, &remote_errno); - - if (result == -1) - { - errno = remote_fileio_errno_to_host (remote_errno); - bfd_set_error (bfd_error_system_call); - } - - return result; -} - -int -remote_filename_p (const char *filename) -{ - return startswith (filename, REMOTE_SYSROOT_PREFIX); -} - -bfd * -remote_bfd_open (const char *remote_file, const char *target) -{ - bfd *abfd = gdb_bfd_openr_iovec (remote_file, target, - remote_bfd_iovec_open, NULL, - remote_bfd_iovec_pread, - remote_bfd_iovec_close, - remote_bfd_iovec_stat); - - return abfd; -} - void remote_file_put (const char *local_file, const char *remote_file, int from_tty) { |