This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 2/5] Include asm/ptrace.h in mips-linux-nat.c
- From: Yao Qi <yao at codesourcery dot com>
- To: <gdb-patches at sourceware dot org>
- Date: Sat, 29 Jun 2013 11:10:24 +0800
- Subject: [PATCH 2/5] Include asm/ptrace.h in mips-linux-nat.c
- References: <1369881867-11372-1-git-send-email-yao at codesourcery dot com> <1372475427-24862-1-git-send-email-yao at codesourcery dot com>
Hi,
This patch is to include asm/ptrace.h in mips-linux-nat.c and wrap
some structures by "ifndef PTRACE_GET_WATCH_REGS" and "#endif" as a
fallback if watchpoint-related structures are not defined in kernel
header.
gdb:
2013-06-29 Yao Qi <yao@codesourcery.com>
* mips-linux-nat.c (MAX_DEBUG_REGISTER): Move it earlier in
the code.
(enum pt_watch_style): Remove.
(struct mips32_watch_regs, struct mips64_watch_regs): Remove.
(struct pt_watch_regs): Likewise.
[!PTRACE_GET_WATCH_REGS] (enum pt_watch_style): New.
[!PTRACE_GET_WATCH_REGS] (struct mips32_watch_regs): New.
[!PTRACE_GET_WATCH_REGS] (struct mips64_watch_regs): New.
[!PTRACE_GET_WATCH_REGS] (struct pt_watch_regs): New.
---
gdb/mips-linux-nat.c | 39 ++++++++++++++++++++++-----------------
1 files changed, 22 insertions(+), 17 deletions(-)
diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c
index d323a82..44d23a6 100644
--- a/gdb/mips-linux-nat.c
+++ b/gdb/mips-linux-nat.c
@@ -34,6 +34,7 @@
#include <sgidefs.h>
#include <sys/ptrace.h>
+#include <asm/ptrace.h>
#include "features/mips-linux.c"
#include "features/mips-dsp-linux.c"
@@ -460,31 +461,19 @@ mips_linux_read_description (struct target_ops *ops)
return have_dsp ? tdesc_mips64_dsp_linux : tdesc_mips64_linux;
}
-#ifndef PTRACE_GET_WATCH_REGS
-# define PTRACE_GET_WATCH_REGS 0xd0
-#endif
-
-#ifndef PTRACE_SET_WATCH_REGS
-# define PTRACE_SET_WATCH_REGS 0xd1
-#endif
-
-#define W_BIT 0
-#define R_BIT 1
-#define I_BIT 2
+#define MAX_DEBUG_REGISTER 8
-#define W_MASK (1 << W_BIT)
-#define R_MASK (1 << R_BIT)
-#define I_MASK (1 << I_BIT)
+/* If macro PTRACE_GET_WATCH_REGS is not defined, kernel header doesn't
+ have hardware watchpoint-related structures. Define them below. */
-#define IRW_MASK (I_MASK | R_MASK | W_MASK)
+#ifndef PTRACE_GET_WATCH_REGS
+# define PTRACE_GET_WATCH_REGS 0xd0
enum pt_watch_style {
pt_watch_style_mips32,
pt_watch_style_mips64
};
-#define MAX_DEBUG_REGISTER 8
-
/* A value of zero in a watchlo indicates that it is available. */
struct mips32_watch_regs
@@ -524,6 +513,22 @@ struct pt_watch_regs
};
};
+#endif
+
+#ifndef PTRACE_SET_WATCH_REGS
+# define PTRACE_SET_WATCH_REGS 0xd1
+#endif
+
+#define W_BIT 0
+#define R_BIT 1
+#define I_BIT 2
+
+#define W_MASK (1 << W_BIT)
+#define R_MASK (1 << R_BIT)
+#define I_MASK (1 << I_BIT)
+
+#define IRW_MASK (I_MASK | R_MASK | W_MASK)
+
/* -1 if the kernel and/or CPU do not support watch registers.
1 if watch_readback is valid and we can read style, num_valid
and the masks.
--
1.7.7.6