Introduce new shared function fileio_to_host_openflags
This commit introduces a new shared function to replace identical functions in GDB and gdbserver.
This commit is contained in:
parent
43236bb255
commit
819843c702
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue