aboutsummaryrefslogtreecommitdiff
path: root/gdb/common
diff options
context:
space:
mode:
authorGary Benson <gbenson@redhat.com>2015-04-09 10:28:05 +0100
committerGary Benson <gbenson@redhat.com>2015-04-09 13:26:32 +0100
commitb88bb45061e0095a0bafce938363f3051a602dd2 (patch)
tree6211b8640d4fdd7ab03a6db48a0e38cf239f9f77 /gdb/common
parent2f2680f33a356115fb31c932d3b983fcae89902f (diff)
downloadgdb-b88bb45061e0095a0bafce938363f3051a602dd2.zip
gdb-b88bb45061e0095a0bafce938363f3051a602dd2.tar.gz
gdb-b88bb45061e0095a0bafce938363f3051a602dd2.tar.bz2
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.
Diffstat (limited to 'gdb/common')
-rw-r--r--gdb/common/common-remote-fileio.c53
-rw-r--r--gdb/common/common-remote-fileio.h5
2 files changed, 58 insertions, 0 deletions
diff --git a/gdb/common/common-remote-fileio.c b/gdb/common/common-remote-fileio.c
index f78b3f7..30c2c6b 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 <sys/stat.h>
+/* 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 27bc585..96e4aa5 100644
--- a/gdb/common/common-remote-fileio.h
+++ b/gdb/common/common-remote-fileio.h
@@ -23,6 +23,11 @@
#include "gdb/fileio.h"
#include <sys/stat.h>
+/* 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. */