diff options
author | Maciej W. Rozycki <macro@linux-mips.org> | 2012-05-22 23:17:51 +0000 |
---|---|---|
committer | Maciej W. Rozycki <macro@linux-mips.org> | 2012-05-22 23:17:51 +0000 |
commit | 8d409d16dd8660cfca6c32f3feed3eca36d55c20 (patch) | |
tree | 6f02aea28ed1b3e46221345e2551fbcf534107c6 /gdb | |
parent | 5d196efc83e0651db7ca34b4713aa6a17a11472b (diff) | |
download | gdb-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/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/gdbserver/linux-low.c | 13 |
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; } |