Introduce new shared function fileio_to_host_openflags
authorGary Benson <gbenson@redhat.com>
Tue, 21 Apr 2015 11:07:54 +0000 (12:07 +0100)
committerGary Benson <gbenson@redhat.com>
Tue, 21 Apr 2015 11:09:24 +0000 (12:09 +0100)
This commit introduces a new shared function to replace identical
functions in GDB and gdbserver.

gdb/ChangeLog
gdb/common/fileio.c
gdb/common/fileio.h
gdb/gdbserver/ChangeLog
gdb/gdbserver/hostio.c
gdb/inf-child.c

index de210981e9fed59385838cc8aae00dc11016cc1a..f5ef884c017620432ed5038a99afb803035985ec 100644 (file)
@@ -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.
index 5d3e6aedf3f5f0337f6318b1c41cd8b8e9c45fa4..28335ecf3c84e79d181d52c0d74247461a2c303c 100644 (file)
@@ -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
index 69a735f9e7c2306812ed7979e81d793b80a17ca1..b0f27abbc6caa384396c5d4c29d44c086e620cfe 100644 (file)
 
 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.  */
index 94834504eb17dc25e83565add9b70bd62ab772cf..10d01c120192fbea7d1664c04dfb0c6931710571 100644 (file)
@@ -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)
index b03b5ad11bf831b4e14445d70ddadd83add11b48..9e858d91b3da31d9c35ab75b3c8b62b618b5ff10 100644 (file)
@@ -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;
index 713c9d43b55945b2b9e3bbefc6728c235b37d8a6..084dfa1572c7e772628771b352debf867616505b 100644 (file)
@@ -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;