summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGary Benson <gbenson@redhat.com>2015-04-21 12:07:54 +0100
committerGary Benson <gbenson@redhat.com>2015-04-21 12:09:24 +0100
commit819843c7029916120aa2929f80e0d7276177a7fb (patch)
treef00b335b1e3b2af0368862d09736e8e135f2da27
parent43236bb2551a9783ff0de5e95bf75f905300eb06 (diff)
downloadbinutils-gdb-819843c7029916120aa2929f80e0d7276177a7fb.tar.gz
Introduce new shared function fileio_to_host_openflags
This commit introduces a new shared function to replace identical functions in GDB and gdbserver.
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/common/fileio.c35
-rw-r--r--gdb/common/fileio.h5
-rw-r--r--gdb/gdbserver/ChangeLog6
-rw-r--r--gdb/gdbserver/hostio.c34
-rw-r--r--gdb/inf-child.c37
6 files changed, 56 insertions, 69 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index de210981e9f..f5ef884c017 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2015-04-21 Gary Benson <gbenson@redhat.com>
+
+ * common/fileio.h (fileio_to_host_openflags): New declaration.
+ * common/fileio.c (fcntl.h): New include.
+ (fileio_to_host_openflags): New function, factored out from...
+ * inf-child.c (inf_child_fileio_open_flags_to_host): ...here.
+ Single use updated.
+
2015-04-21 Kevin Buettner <kevinb@redhat.com>
* rl78-tdep.c (RL78_SP_ADDR): Define.
diff --git a/gdb/common/fileio.c b/gdb/common/fileio.c
index 5d3e6aedf3f..28335ecf3c8 100644
--- a/gdb/common/fileio.c
+++ b/gdb/common/fileio.c
@@ -20,6 +20,7 @@
#include "common-defs.h"
#include "fileio.h"
#include <sys/stat.h>
+#include <fcntl.h>
/* See fileio.h. */
@@ -74,6 +75,40 @@ host_to_fileio_error (int error)
return FILEIO_EUNKNOWN;
}
+/* See fileio.h. */
+
+int
+fileio_to_host_openflags (int fileio_open_flags, int *open_flags_p)
+{
+ int open_flags = 0;
+
+ if (fileio_open_flags & ~FILEIO_O_SUPPORTED)
+ return -1;
+
+ if (fileio_open_flags & FILEIO_O_CREAT)
+ open_flags |= O_CREAT;
+ if (fileio_open_flags & FILEIO_O_EXCL)
+ open_flags |= O_EXCL;
+ if (fileio_open_flags & FILEIO_O_TRUNC)
+ open_flags |= O_TRUNC;
+ if (fileio_open_flags & FILEIO_O_APPEND)
+ open_flags |= O_APPEND;
+ if (fileio_open_flags & FILEIO_O_RDONLY)
+ open_flags |= O_RDONLY;
+ if (fileio_open_flags & FILEIO_O_WRONLY)
+ open_flags |= O_WRONLY;
+ if (fileio_open_flags & FILEIO_O_RDWR)
+ open_flags |= O_RDWR;
+ /* On systems supporting binary and text mode, always open files
+ in binary mode. */
+#ifdef O_BINARY
+ open_flags |= O_BINARY;
+#endif
+
+ *open_flags_p = open_flags;
+ return 0;
+}
+
/* Convert a host-format mode_t into a bitmask of File-I/O flags. */
static LONGEST
diff --git a/gdb/common/fileio.h b/gdb/common/fileio.h
index 69a735f9e7c..b0f27abbc6c 100644
--- a/gdb/common/fileio.h
+++ b/gdb/common/fileio.h
@@ -27,6 +27,11 @@
extern int host_to_fileio_error (int error);
+/* Convert File-I/O open flags FFLAGS to host format, storing
+ the result in *FLAGS. Return 0 on success, -1 on error. */
+
+extern int fileio_to_host_openflags (int fflags, int *flags);
+
/* Pack a host-format integer into a byte buffer in big-endian
format. BYTES specifies the size of the integer to pack in
bytes. */
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 94834504eb1..10d01c12019 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,9 @@
+2015-04-21 Gary Benson <gbenson@redhat.com>
+
+ * hostio.c (fileio_open_flags_to_host): Factored out to
+ fileio_to_host_openflags in common/fileio.c. Single use
+ updated.
+
2015-04-17 Max Filippov <jcmvbkbc@gmail.com>
* linux-xtensa-low.c (xtensa_fill_gregset)
diff --git a/gdb/gdbserver/hostio.c b/gdb/gdbserver/hostio.c
index b03b5ad11bf..9e858d91b3d 100644
--- a/gdb/gdbserver/hostio.c
+++ b/gdb/gdbserver/hostio.c
@@ -243,38 +243,6 @@ hostio_reply_with_data (char *own_buf, char *buffer, int len,
return input_index;
}
-static int
-fileio_open_flags_to_host (int fileio_open_flags, int *open_flags_p)
-{
- int open_flags = 0;
-
- if (fileio_open_flags & ~FILEIO_O_SUPPORTED)
- return -1;
-
- if (fileio_open_flags & FILEIO_O_CREAT)
- open_flags |= O_CREAT;
- if (fileio_open_flags & FILEIO_O_EXCL)
- open_flags |= O_EXCL;
- if (fileio_open_flags & FILEIO_O_TRUNC)
- open_flags |= O_TRUNC;
- if (fileio_open_flags & FILEIO_O_APPEND)
- open_flags |= O_APPEND;
- if (fileio_open_flags & FILEIO_O_RDONLY)
- open_flags |= O_RDONLY;
- if (fileio_open_flags & FILEIO_O_WRONLY)
- open_flags |= O_WRONLY;
- if (fileio_open_flags & FILEIO_O_RDWR)
- open_flags |= O_RDWR;
-/* On systems supporting binary and text mode, always open files in
- binary mode. */
-#ifdef O_BINARY
- open_flags |= O_BINARY;
-#endif
-
- *open_flags_p = open_flags;
- return 0;
-}
-
static void
handle_open (char *own_buf)
{
@@ -291,7 +259,7 @@ handle_open (char *own_buf)
|| require_comma (&p)
|| require_int (&p, &mode)
|| require_end (p)
- || fileio_open_flags_to_host (fileio_flags, &flags))
+ || fileio_to_host_openflags (fileio_flags, &flags))
{
hostio_packet_error (own_buf);
return;
diff --git a/gdb/inf-child.c b/gdb/inf-child.c
index 713c9d43b55..084dfa1572c 100644
--- a/gdb/inf-child.c
+++ b/gdb/inf-child.c
@@ -204,41 +204,6 @@ inf_child_pid_to_exec_file (struct target_ops *self, int pid)
return NULL;
}
-
-/* Target file operations. */
-
-static int
-inf_child_fileio_open_flags_to_host (int fileio_open_flags, int *open_flags_p)
-{
- int open_flags = 0;
-
- if (fileio_open_flags & ~FILEIO_O_SUPPORTED)
- return -1;
-
- if (fileio_open_flags & FILEIO_O_CREAT)
- open_flags |= O_CREAT;
- if (fileio_open_flags & FILEIO_O_EXCL)
- open_flags |= O_EXCL;
- if (fileio_open_flags & FILEIO_O_TRUNC)
- open_flags |= O_TRUNC;
- if (fileio_open_flags & FILEIO_O_APPEND)
- open_flags |= O_APPEND;
- if (fileio_open_flags & FILEIO_O_RDONLY)
- open_flags |= O_RDONLY;
- if (fileio_open_flags & FILEIO_O_WRONLY)
- open_flags |= O_WRONLY;
- if (fileio_open_flags & FILEIO_O_RDWR)
- open_flags |= O_RDWR;
-/* On systems supporting binary and text mode, always open files in
- binary mode. */
-#ifdef O_BINARY
- open_flags |= O_BINARY;
-#endif
-
- *open_flags_p = open_flags;
- return 0;
-}
-
/* Open FILENAME on the target, using FLAGS and MODE. Return a
target file descriptor, or -1 if an error occurs (and set
*TARGET_ERRNO). */
@@ -250,7 +215,7 @@ inf_child_fileio_open (struct target_ops *self,
int nat_flags;
int fd;
- if (inf_child_fileio_open_flags_to_host (flags, &nat_flags) == -1)
+ if (fileio_to_host_openflags (flags, &nat_flags) == -1)
{
*target_errno = FILEIO_EINVAL;
return -1;