ChangeLog:
authorUlrich Weigand <uweigand@de.ibm.com>
Thu, 2 Aug 2012 15:52:27 +0000 (15:52 +0000)
committerUlrich Weigand <uweigand@de.ibm.com>
Thu, 2 Aug 2012 15:52:27 +0000 (15:52 +0000)
* inf-child.c (inf_child_fileio_pwrite): If pwrite fails, fall back
to attempting lseek/write.
(inf_child_fileio_pread): Likewise for pread.

gdbserver/ChangeLog:

* hostio.c (handle_pread): If pread fails, fall back to attempting
lseek/read.
(handle_pwrite): Likewise for pwrite.

gdb/ChangeLog
gdb/gdbserver/ChangeLog
gdb/gdbserver/hostio.c
gdb/inf-child.c

index f284746a283fa39fd8f47b936a287e0bcac5c77f..b4c15458011731597c1c07784cdb4677d3e39527 100644 (file)
@@ -1,3 +1,9 @@
+2012-08-02  Ulrich Weigand  <ulrich.weigand@linaro.org>
+
+       * inf-child.c (inf_child_fileio_pwrite): If pwrite fails, fall back
+       to attempting lseek/write.
+       (inf_child_fileio_pread): Likewise for pread.
+
 2012-08-02  Yao Qi  <yao@codesourcery.com>
 
        * dwarf2loc.c (entry_values_debug): Add 'unsigned'.
index 6a1259b0889156d7b597712c437cdedbeb64b66e..d446361fa7e0c5dda885f9c16efd005315a7b8d1 100644 (file)
@@ -1,3 +1,9 @@
+2012-08-02  Ulrich Weigand  <ulrich.weigand@linaro.org>
+
+       * hostio.c (handle_pread): If pread fails, fall back to attempting
+       lseek/read.
+       (handle_pwrite): Likewise for pwrite.
+
 2012-08-01  Ulrich Weigand  <ulrich.weigand@linaro.org>
 
        * linux-arm-low.c (arm_linux_hw_point_initialize): Distinguish
index 03aab587d982de967b2c9ec31391842d3bb6e5bf..72e334c414ce19ec5f042dda95575090d469c971 100644 (file)
@@ -328,10 +328,15 @@ handle_pread (char *own_buf, int *new_packet_len)
 #ifdef HAVE_PREAD
   ret = pread (fd, data, len, offset);
 #else
-  ret = lseek (fd, offset, SEEK_SET);
-  if (ret != -1)
-    ret = read (fd, data, len);
+  ret = -1;
 #endif
+  /* If we have no pread or it failed for this file, use lseek/read.  */
+  if (ret == -1)
+    {
+      ret = lseek (fd, offset, SEEK_SET);
+      if (ret != -1)
+       ret = read (fd, data, len);
+    }
 
   if (ret == -1)
     {
@@ -376,10 +381,15 @@ handle_pwrite (char *own_buf, int packet_len)
 #ifdef HAVE_PWRITE
   ret = pwrite (fd, data, len, offset);
 #else
-  ret = lseek (fd, offset, SEEK_SET);
-  if (ret != -1)
-    ret = write (fd, data, len);
+  ret = -1;
 #endif
+  /* If we have no pwrite or it failed for this file, use lseek/write.  */
+  if (ret == -1)
+    {
+      ret = lseek (fd, offset, SEEK_SET);
+      if (ret != -1)
+       ret = write (fd, data, len);
+    }
 
   if (ret == -1)
     {
index 54e65c5fbaef55c4743edabad0dfd73f2654fdb5..ae2dd1e10128165ed92e1ec2107da0dd455c491f 100644 (file)
@@ -265,10 +265,15 @@ inf_child_fileio_pwrite (int fd, const gdb_byte *write_buf, int len,
 #ifdef HAVE_PWRITE
   ret = pwrite (fd, write_buf, len, (long) offset);
 #else
-  ret = lseek (fd, (long) offset, SEEK_SET);
-  if (ret != -1)
-    ret = write (fd, write_buf, len);
+  ret = -1;
 #endif
+  /* If we have no pwrite or it failed for this file, use lseek/write.  */
+  if (ret == -1)
+    {
+      ret = lseek (fd, (long) offset, SEEK_SET);
+      if (ret != -1)
+       ret = write (fd, write_buf, len);
+    }
 
   if (ret == -1)
     *target_errno = inf_child_errno_to_fileio_error (errno);
@@ -288,10 +293,15 @@ inf_child_fileio_pread (int fd, gdb_byte *read_buf, int len,
 #ifdef HAVE_PREAD
   ret = pread (fd, read_buf, len, (long) offset);
 #else
-  ret = lseek (fd, (long) offset, SEEK_SET);
-  if (ret != -1)
-    ret = read (fd, read_buf, len);
+  ret = -1;
 #endif
+  /* If we have no pread or it failed for this file, use lseek/read.  */
+  if (ret == -1)
+    {
+      ret = lseek (fd, (long) offset, SEEK_SET);
+      if (ret != -1)
+       ret = read (fd, read_buf, len);
+    }
 
   if (ret == -1)
     *target_errno = inf_child_errno_to_fileio_error (errno);