aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdbserver/hostio.c
diff options
context:
space:
mode:
authorGary Benson <gbenson@redhat.com>2015-06-09 10:00:15 +0100
committerGary Benson <gbenson@redhat.com>2015-06-09 13:24:46 +0100
commit3ac2e371a1abd1279f66477aa4fc68039da1872e (patch)
tree5571999b6a42fbfb6249c98fcf86a790b117d594 /gdb/gdbserver/hostio.c
parentecef18c564bd609aa7640564747b807bfe1632c6 (diff)
downloadgdb-3ac2e371a1abd1279f66477aa4fc68039da1872e.zip
gdb-3ac2e371a1abd1279f66477aa4fc68039da1872e.tar.gz
gdb-3ac2e371a1abd1279f66477aa4fc68039da1872e.tar.bz2
Don't assume File-I/O mode bits match the host's format
inf_child_fileio_open and its gdbserver equivalent both assume that the mode_t bits defined in gdb/fileio.h are the same as those used by the open system call, but there is no mechanism to ensure this is the case. This commit adds a conversion function to handle systems where the File-I/O definitions do not align with the host's. gdb/ChangeLog: * common/fileio.h (fileio_to_host_mode): New declaration. * common/fileio.c (fileio_to_host_mode): New Function. * inf-child.c (inf_child_fileio_open): Process mode argument with fileio_to_host_mode. gdb/gdbserver/ChangeLog: * hostio.c (handle_open): Process mode argument with fileio_to_host_mode.
Diffstat (limited to 'gdb/gdbserver/hostio.c')
-rw-r--r--gdb/gdbserver/hostio.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gdb/gdbserver/hostio.c b/gdb/gdbserver/hostio.c
index 9e858d9..811f958 100644
--- a/gdb/gdbserver/hostio.c
+++ b/gdb/gdbserver/hostio.c
@@ -248,7 +248,8 @@ handle_open (char *own_buf)
{
char filename[HOSTIO_PATH_MAX];
char *p;
- int fileio_flags, mode, flags, fd;
+ int fileio_flags, fileio_mode, flags, fd;
+ mode_t mode;
struct fd_list *new_fd;
p = own_buf + strlen ("vFile:open:");
@@ -257,9 +258,10 @@ handle_open (char *own_buf)
|| require_comma (&p)
|| require_int (&p, &fileio_flags)
|| require_comma (&p)
- || require_int (&p, &mode)
+ || require_int (&p, &fileio_mode)
|| require_end (p)
- || fileio_to_host_openflags (fileio_flags, &flags))
+ || fileio_to_host_openflags (fileio_flags, &flags)
+ || fileio_to_host_mode (fileio_mode, &mode))
{
hostio_packet_error (own_buf);
return;