From b88bb45061e0095a0bafce938363f3051a602dd2 Mon Sep 17 00:00:00 2001 From: Gary Benson Date: Thu, 9 Apr 2015 10:28:05 +0100 Subject: [PATCH] Introduce new shared function remote_fileio_to_fio_error This commit introduces a new shared function to replace three identical functions in various places in the codebase. gdb/ChangeLog: * common/common-remote-fileio.h (remote_fileio_to_fio_error): New declaration. * common/common-remote-fileio.c (remote_fileio_to_fio_error): New function, factored out the named functions below. * inf-child.c (gdb/fileio.h): Remove include. (common-remote-fileio.h): New include. (inf_child_errno_to_fileio_error): Remove function. Update all callers to use remote_fileio_to_fio_error. * remote-fileio.c (remote_fileio_errno_to_target): Likewise. gdb/gdbserver/ChangeLog: * hostio-errno.c (errno_to_fileio_error): Remove function. Update caller to use remote_fileio_to_fio_error. --- gdb/ChangeLog | 12 ++++++ gdb/common/common-remote-fileio.c | 53 ++++++++++++++++++++++++ gdb/common/common-remote-fileio.h | 5 +++ gdb/gdbserver/ChangeLog | 5 +++ gdb/gdbserver/hostio-errno.c | 56 +------------------------- gdb/inf-child.c | 67 ++++--------------------------- gdb/remote-fileio.c | 53 +----------------------- 7 files changed, 86 insertions(+), 165 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e299ec358f..e535767ee4 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,15 @@ +2015-04-09 Gary Benson + + * common/common-remote-fileio.h (remote_fileio_to_fio_error): + New declaration. + * common/common-remote-fileio.c (remote_fileio_to_fio_error): + New function, factored out the named functions below. + * inf-child.c (gdb/fileio.h): Remove include. + (common-remote-fileio.h): New include. + (inf_child_errno_to_fileio_error): Remove function. Update + all callers to use remote_fileio_to_fio_error. + * remote-fileio.c (remote_fileio_errno_to_target): Likewise. + 2015-04-09 Andy Wingo * MAINTAINERS (Write After Approval): Add Andy Wingo. diff --git a/gdb/common/common-remote-fileio.c b/gdb/common/common-remote-fileio.c index f78b3f7308..30c2c6b55d 100644 --- a/gdb/common/common-remote-fileio.c +++ b/gdb/common/common-remote-fileio.c @@ -21,6 +21,59 @@ #include "common-remote-fileio.h" #include +/* See common-remote-fileio.h. */ + +int +remote_fileio_to_fio_error (int error) +{ + switch (error) + { + case EPERM: + return FILEIO_EPERM; + case ENOENT: + return FILEIO_ENOENT; + case EINTR: + return FILEIO_EINTR; + case EIO: + return FILEIO_EIO; + case EBADF: + return FILEIO_EBADF; + case EACCES: + return FILEIO_EACCES; + case EFAULT: + return FILEIO_EFAULT; + case EBUSY: + return FILEIO_EBUSY; + case EEXIST: + return FILEIO_EEXIST; + case ENODEV: + return FILEIO_ENODEV; + case ENOTDIR: + return FILEIO_ENOTDIR; + case EISDIR: + return FILEIO_EISDIR; + case EINVAL: + return FILEIO_EINVAL; + case ENFILE: + return FILEIO_ENFILE; + case EMFILE: + return FILEIO_EMFILE; + case EFBIG: + return FILEIO_EFBIG; + case ENOSPC: + return FILEIO_ENOSPC; + case ESPIPE: + return FILEIO_ESPIPE; + case EROFS: + return FILEIO_EROFS; + case ENOSYS: + return FILEIO_ENOSYS; + case ENAMETOOLONG: + return FILEIO_ENAMETOOLONG; + } + return FILEIO_EUNKNOWN; +} + /* Convert a host-format mode_t into a bitmask of File-I/O flags. */ static LONGEST diff --git a/gdb/common/common-remote-fileio.h b/gdb/common/common-remote-fileio.h index 27bc585c88..96e4aa5eb9 100644 --- a/gdb/common/common-remote-fileio.h +++ b/gdb/common/common-remote-fileio.h @@ -23,6 +23,11 @@ #include "gdb/fileio.h" #include +/* Convert a errno error number to a File-I/O error number for + transmission over the remote protocol. */ + +extern int remote_fileio_to_fio_error (int error); + /* Pack a host-format integer into a byte buffer in big-endian format ready for transmission over the remote protocol. BYTES specifies the size of the integer to pack in bytes. */ diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index 9bdc0de612..332a5161ec 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,8 @@ +2015-04-09 Gary Benson + + * hostio-errno.c (errno_to_fileio_error): Remove function. + Update caller to use remote_fileio_to_fio_error. + 2015-04-09 Yao Qi * linux-low.c (linux_insert_point): Call diff --git a/gdb/gdbserver/hostio-errno.c b/gdb/gdbserver/hostio-errno.c index b7a031ee99..01d4b32cba 100644 --- a/gdb/gdbserver/hostio-errno.c +++ b/gdb/gdbserver/hostio-errno.c @@ -22,64 +22,12 @@ on top of errno. */ #include "server.h" -#include "gdb/fileio.h" - -static int -errno_to_fileio_error (int error) -{ - switch (error) - { - case EPERM: - return FILEIO_EPERM; - case ENOENT: - return FILEIO_ENOENT; - case EINTR: - return FILEIO_EINTR; - case EIO: - return FILEIO_EIO; - case EBADF: - return FILEIO_EBADF; - case EACCES: - return FILEIO_EACCES; - case EFAULT: - return FILEIO_EFAULT; - case EBUSY: - return FILEIO_EBUSY; - case EEXIST: - return FILEIO_EEXIST; - case ENODEV: - return FILEIO_ENODEV; - case ENOTDIR: - return FILEIO_ENOTDIR; - case EISDIR: - return FILEIO_EISDIR; - case EINVAL: - return FILEIO_EINVAL; - case ENFILE: - return FILEIO_ENFILE; - case EMFILE: - return FILEIO_EMFILE; - case EFBIG: - return FILEIO_EFBIG; - case ENOSPC: - return FILEIO_ENOSPC; - case ESPIPE: - return FILEIO_ESPIPE; - case EROFS: - return FILEIO_EROFS; - case ENOSYS: - return FILEIO_ENOSYS; - case ENAMETOOLONG: - return FILEIO_ENAMETOOLONG; - } - - return FILEIO_EUNKNOWN; -} +#include "common-remote-fileio.h" void hostio_last_error_from_errno (char *buf) { int error = errno; - int fileio_error = errno_to_fileio_error (error); + int fileio_error = remote_fileio_to_fio_error (error); sprintf (buf, "F-1,%x", fileio_error); } diff --git a/gdb/inf-child.c b/gdb/inf-child.c index b7161ab307..5e5763bda5 100644 --- a/gdb/inf-child.c +++ b/gdb/inf-child.c @@ -30,7 +30,7 @@ #include "inferior.h" #include #include "inf-child.h" -#include "gdb/fileio.h" +#include "common-remote-fileio.h" #include "agent.h" #include "gdb_wait.h" #include "filestuff.h" @@ -239,57 +239,6 @@ inf_child_fileio_open_flags_to_host (int fileio_open_flags, int *open_flags_p) return 0; } -static int -inf_child_errno_to_fileio_error (int errnum) -{ - switch (errnum) - { - case EPERM: - return FILEIO_EPERM; - case ENOENT: - return FILEIO_ENOENT; - case EINTR: - return FILEIO_EINTR; - case EIO: - return FILEIO_EIO; - case EBADF: - return FILEIO_EBADF; - case EACCES: - return FILEIO_EACCES; - case EFAULT: - return FILEIO_EFAULT; - case EBUSY: - return FILEIO_EBUSY; - case EEXIST: - return FILEIO_EEXIST; - case ENODEV: - return FILEIO_ENODEV; - case ENOTDIR: - return FILEIO_ENOTDIR; - case EISDIR: - return FILEIO_EISDIR; - case EINVAL: - return FILEIO_EINVAL; - case ENFILE: - return FILEIO_ENFILE; - case EMFILE: - return FILEIO_EMFILE; - case EFBIG: - return FILEIO_EFBIG; - case ENOSPC: - return FILEIO_ENOSPC; - case ESPIPE: - return FILEIO_ESPIPE; - case EROFS: - return FILEIO_EROFS; - case ENOSYS: - return FILEIO_ENOSYS; - case ENAMETOOLONG: - return FILEIO_ENAMETOOLONG; - } - return FILEIO_EUNKNOWN; -} - /* Open FILENAME on the target, using FLAGS and MODE. Return a target file descriptor, or -1 if an error occurs (and set *TARGET_ERRNO). */ @@ -311,7 +260,7 @@ inf_child_fileio_open (struct target_ops *self, the standard values. */ fd = gdb_open_cloexec (filename, nat_flags, mode); if (fd == -1) - *target_errno = inf_child_errno_to_fileio_error (errno); + *target_errno = remote_fileio_to_fio_error (errno); return fd; } @@ -340,7 +289,7 @@ inf_child_fileio_pwrite (struct target_ops *self, } if (ret == -1) - *target_errno = inf_child_errno_to_fileio_error (errno); + *target_errno = remote_fileio_to_fio_error (errno); return ret; } @@ -369,7 +318,7 @@ inf_child_fileio_pread (struct target_ops *self, } if (ret == -1) - *target_errno = inf_child_errno_to_fileio_error (errno); + *target_errno = remote_fileio_to_fio_error (errno); return ret; } @@ -383,7 +332,7 @@ inf_child_fileio_fstat (struct target_ops *self, int fd, ret = fstat (fd, sb); if (ret == -1) - *target_errno = inf_child_errno_to_fileio_error (errno); + *target_errno = remote_fileio_to_fio_error (errno); return ret; } @@ -397,7 +346,7 @@ inf_child_fileio_close (struct target_ops *self, int fd, int *target_errno) ret = close (fd); if (ret == -1) - *target_errno = inf_child_errno_to_fileio_error (errno); + *target_errno = remote_fileio_to_fio_error (errno); return ret; } @@ -412,7 +361,7 @@ inf_child_fileio_unlink (struct target_ops *self, ret = unlink (filename); if (ret == -1) - *target_errno = inf_child_errno_to_fileio_error (errno); + *target_errno = remote_fileio_to_fio_error (errno); return ret; } @@ -434,7 +383,7 @@ inf_child_fileio_readlink (struct target_ops *self, len = readlink (filename, buf, sizeof buf); if (len < 0) { - *target_errno = inf_child_errno_to_fileio_error (errno); + *target_errno = remote_fileio_to_fio_error (errno); return NULL; } diff --git a/gdb/remote-fileio.c b/gdb/remote-fileio.c index 3882321cdb..36c3849e2c 100644 --- a/gdb/remote-fileio.c +++ b/gdb/remote-fileio.c @@ -193,57 +193,6 @@ remote_fileio_mode_to_host (long mode, int open_call) return hmode; } -static int -remote_fileio_errno_to_target (int error) -{ - switch (error) - { - case EPERM: - return FILEIO_EPERM; - case ENOENT: - return FILEIO_ENOENT; - case EINTR: - return FILEIO_EINTR; - case EIO: - return FILEIO_EIO; - case EBADF: - return FILEIO_EBADF; - case EACCES: - return FILEIO_EACCES; - case EFAULT: - return FILEIO_EFAULT; - case EBUSY: - return FILEIO_EBUSY; - case EEXIST: - return FILEIO_EEXIST; - case ENODEV: - return FILEIO_ENODEV; - case ENOTDIR: - return FILEIO_ENOTDIR; - case EISDIR: - return FILEIO_EISDIR; - case EINVAL: - return FILEIO_EINVAL; - case ENFILE: - return FILEIO_ENFILE; - case EMFILE: - return FILEIO_EMFILE; - case EFBIG: - return FILEIO_EFBIG; - case ENOSPC: - return FILEIO_ENOSPC; - case ESPIPE: - return FILEIO_ESPIPE; - case EROFS: - return FILEIO_EROFS; - case ENOSYS: - return FILEIO_ENOSYS; - case ENAMETOOLONG: - return FILEIO_ENAMETOOLONG; - } - return FILEIO_EUNKNOWN; -} - static int remote_fileio_seek_flag_to_host (long num, int *flag) { @@ -459,7 +408,7 @@ static void remote_fileio_return_errno (int retcode) { remote_fileio_reply (retcode, retcode < 0 - ? remote_fileio_errno_to_target (errno) : 0); + ? remote_fileio_to_fio_error (errno) : 0); } static void -- 2.34.1