This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH v2] 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: "Maciej W. Rozycki" <macro at codesourcery dot com>, James Hogan <james dot hogan at imgtec dot com>
- Date: Mon, 1 Sep 2014 22:48:40 +0100
- Subject: [PATCH v2] 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.
---
Changes in v2:
- Wrap ChangeLog entries to 74 columns (Maciej W. Rozycki).
---
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..e9e3f9e734e6 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..2fa9ec74c08a 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