aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@linux-mips.org>2012-05-22 23:17:51 +0000
committerMaciej W. Rozycki <macro@linux-mips.org>2012-05-22 23:17:51 +0000
commit8d409d16dd8660cfca6c32f3feed3eca36d55c20 (patch)
tree6f02aea28ed1b3e46221345e2551fbcf534107c6 /gdb
parent5d196efc83e0651db7ca34b4713aa6a17a11472b (diff)
downloadgdb-8d409d16dd8660cfca6c32f3feed3eca36d55c20.zip
gdb-8d409d16dd8660cfca6c32f3feed3eca36d55c20.tar.gz
gdb-8d409d16dd8660cfca6c32f3feed3eca36d55c20.tar.bz2
* linux-low.c (linux_store_registers): Avoid the copying sequence
when no data has been retrieved by ptrace.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/gdbserver/ChangeLog5
-rw-r--r--gdb/gdbserver/linux-low.c13
2 files changed, 13 insertions, 5 deletions
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 5017bc6..1976a42 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,8 @@
+2012-05-22 Maciej W. Rozycki <macro@codesourcery.com>
+
+ * linux-low.c (linux_store_registers): Avoid the copying sequence
+ when no data has been retrieved by ptrace.
+
2012-05-22 Will Deacon <will.deacon@arm.com>
* linux-low (__UCLIBC__ && !(__UCLIBC_HAS_MMU__ || __ARCH_HAS_MMU__)):
diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
index 19f7be6..5fe19fd 100644
--- a/gdb/gdbserver/linux-low.c
+++ b/gdb/gdbserver/linux-low.c
@@ -4449,11 +4449,14 @@ linux_read_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
ret = errno;
/* Copy appropriate bytes out of the buffer. */
- i *= sizeof (PTRACE_XFER_TYPE);
- i -= memaddr & (sizeof (PTRACE_XFER_TYPE) - 1);
- memcpy (myaddr,
- (char *) buffer + (memaddr & (sizeof (PTRACE_XFER_TYPE) - 1)),
- i < len ? i : len);
+ if (i > 0)
+ {
+ i *= sizeof (PTRACE_XFER_TYPE);
+ i -= memaddr & (sizeof (PTRACE_XFER_TYPE) - 1);
+ memcpy (myaddr,
+ (char *) buffer + (memaddr & (sizeof (PTRACE_XFER_TYPE) - 1)),
+ i < len ? i : len);
+ }
return ret;
}