This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH] Reset errno before PTRACE_PEEKUSER for MIPS DSP_CONTROL
- From: James Hogan <james dot hogan at imgtec dot com>
- To: <gdb-patches at sourceware dot org>
- Cc: James Hogan <james dot hogan at imgtec dot com>
- Date: Mon, 1 Sep 2014 17:29:56 +0100
- Subject: [PATCH] Reset errno before PTRACE_PEEKUSER for MIPS DSP_CONTROL
- Authentication-results: sourceware.org; auth=none
PTRACE_PEEKUSER can return -1, which is usually used to determine whether a
system call has reported an error, so errno must be used alone to determine
whether an error occurred. However errno isn't modified by a successful system
call so it must be reset to a known value (0) before the syscall call.
Add the missing errno reset when reading the DSP_CONTROL register in the native
MIPS Linux backend and the MIPS gdbserver backend.
gdb/:
* mips-linux-nat.c (mips_linux_read_description): Reset errno to 0 prior
to reading DSP_CONTROL with PTRACE_PEEKUSER ptrace call.
gdb/gdbserver/:
* linux-mips-low.c (mips_read_description): Reset errno to 0 prior to
reading DSP_CONTROL with PTRACE_PEEKUSER ptrace call.
---
gdb/ChangeLog | 5 +++++
gdb/gdbserver/ChangeLog | 5 +++++
gdb/gdbserver/linux-mips-low.c | 1 +
gdb/mips-linux-nat.c | 1 +
4 files changed, 12 insertions(+)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 8963878eb8ca..e4004d96cac8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2014-09-01 James Hogan <james.hogan@imgtec.com>
+
+ * mips-linux-nat.c (mips_linux_read_description): Reset errno to 0 prior
+ to reading DSP_CONTROL with PTRACE_PEEKUSER ptrace call.
+
2014-09-01 Maciej W. Rozycki <macro@codesourcery.com>
* varobj.c (_initialize_varobj): Move to the end of file.
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index caa243da5d7d..2d292b92875f 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,8 @@
+2014-09-01 James Hogan <james.hogan@imgtec.com>
+
+ * linux-mips-low.c (mips_read_description): Reset errno to 0 prior to
+ reading DSP_CONTROL with PTRACE_PEEKUSER ptrace call.
+
2014-08-29 Gary Benson <gbenson@redhat.com>
* server.h (setjmp.h): Do not include.
diff --git a/gdb/gdbserver/linux-mips-low.c b/gdb/gdbserver/linux-mips-low.c
index 1b2160b35371..377284be5422 100644
--- a/gdb/gdbserver/linux-mips-low.c
+++ b/gdb/gdbserver/linux-mips-low.c
@@ -128,6 +128,7 @@ mips_read_description (void)
{
int pid = lwpid_of (current_inferior);
+ errno = 0;
ptrace (PTRACE_PEEKUSER, pid, DSP_CONTROL, 0);
switch (errno)
{
diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c
index 88faa1edf692..ffc8411ca3bc 100644
--- a/gdb/mips-linux-nat.c
+++ b/gdb/mips-linux-nat.c
@@ -439,6 +439,7 @@ mips_linux_read_description (struct target_ops *ops)
if (tid == 0)
tid = ptid_get_pid (inferior_ptid);
+ errno = 0;
ptrace (PTRACE_PEEKUSER, tid, DSP_CONTROL, 0);
switch (errno)
{
--
1.8.5.5