This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[PATCH] Use `unsigned long' for Linux/x86 debug registers
- To: gdb-patches at sources dot redhat dot com
- Subject: [PATCH] Use `unsigned long' for Linux/x86 debug registers
- From: Mark Kettenis <kettenis at wins dot uva dot nl>
- Date: Sun, 1 Apr 2001 12:50:38 +0200
It just occurred to me that Linux/x86 should really be using `unsigned
long' instead of `long' as the type for debug register values.
Checked in.
Mark
Index: ChangeLog
from Mark Kettenis <kettenis@gnu.org>
* i386-linux-nat.c (i386_linux_dr_get): Change type of return
value to `unsigned long'. Change type of `value' to `unsigned
long'.
(i386_linux_dr_set): Change type of second argument to `unsigned
long'.
(i386_linux_dr_set_control): Change type of first argument to
`unsigned long'.
(i386_linux_dr_get_status): Change type of return value to
unsigned long.
* config/i386/nm-linux.h (i386_linux_dr_set_control,
i386_linux_dr_get_status): Adjust prototypes accordingly.
Index: i386-linux-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/i386-linux-nat.c,v
retrieving revision 1.25
diff -u -p -r1.25 i386-linux-nat.c
--- i386-linux-nat.c 2001/03/28 08:35:14 1.25
+++ i386-linux-nat.c 2001/04/01 10:47:28
@@ -701,11 +701,11 @@ store_inferior_registers (int regno)
}
-static long
+static unsigned long
i386_linux_dr_get (int regnum)
{
int tid;
- long value;
+ unsigned long value;
/* FIXME: kettenis/2001-01-29: It's not clear what we should do with
multi-threaded processes here. For now, pretend there is just
@@ -731,7 +731,7 @@ i386_linux_dr_get (int regnum)
}
static void
-i386_linux_dr_set (int regnum, long value)
+i386_linux_dr_set (int regnum, unsigned long value)
{
int tid;
@@ -748,7 +748,7 @@ i386_linux_dr_set (int regnum, long valu
}
void
-i386_linux_dr_set_control (long control)
+i386_linux_dr_set_control (unsigned long control)
{
i386_linux_dr_set (DR_CONTROL, control);
}
@@ -769,7 +769,7 @@ i386_linux_dr_reset_addr (int regnum)
i386_linux_dr_set (DR_FIRSTADDR + regnum, 0L);
}
-long
+unsigned long
i386_linux_dr_get_status (void)
{
return i386_linux_dr_get (DR_STATUS);
@@ -916,7 +916,7 @@ child_resume (int pid, int step, enum ta
CORE_ADDR sp = read_register (SP_REGNUM);
CORE_ADDR addr = sp;
unsigned long int eflags;
-
+
if (syscall == SYS_rt_sigreturn)
addr = read_memory_integer (sp + 8, 4) + 20;
Index: config/i386/nm-linux.h
===================================================================
RCS file: /cvs/src/src/gdb/config/i386/nm-linux.h,v
retrieving revision 1.9
diff -u -p -r1.9 nm-linux.h
--- config/i386/nm-linux.h 2001/03/21 21:22:49 1.9
+++ config/i386/nm-linux.h 2001/04/01 10:47:29
@@ -43,7 +43,7 @@ extern CORE_ADDR register_u_addr (CORE_A
/* Provide access to the i386 hardware debugging registers. */
-extern void i386_linux_dr_set_control (long control);
+extern void i386_linux_dr_set_control (unsigned long control);
#define I386_DR_LOW_SET_CONTROL(control) \
i386_linux_dr_set_control (control)
@@ -55,7 +55,7 @@ extern void i386_linux_dr_reset_addr (in
#define I386_DR_LOW_RESET_ADDR(regnum) \
i386_linux_dr_reset_addr (regnum)
-extern long i386_linux_dr_get_status (void);
+extern unsigned long i386_linux_dr_get_status (void);
#define I386_DR_LOW_GET_STATUS() \
i386_linux_dr_get_status ()