aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdbserver
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2008-02-27 03:27:40 +0000
committerUlrich Weigand <uweigand@de.ibm.com>2008-02-27 03:27:40 +0000
commitd05b4ac3aadc6a37e44f1b80e190fe80cea4d6d7 (patch)
treed4184a0495c2db4589d6eea543ba1da8fac6670d /gdb/gdbserver
parenta5d9d57db1b0a4aaae2df815b405dd6201612a03 (diff)
downloadgdb-d05b4ac3aadc6a37e44f1b80e190fe80cea4d6d7.zip
gdb-d05b4ac3aadc6a37e44f1b80e190fe80cea4d6d7.tar.gz
gdb-d05b4ac3aadc6a37e44f1b80e190fe80cea4d6d7.tar.bz2
gdb/ChangeLog:
* regformats/regdat.sh: Rename init_registers function in generated file to init_registers_${name}. * regformats/reg-crisv32.dat: Set "name" to crisv32. * regformats/reg-ppc64.dat: Set "name" to ppc64. * regformats/reg-s390x.dat: Set "name" to s390x. gdbserver/ChangeLog: * server.h (init_registers): Remove prototype. * linux-low.h (struct linux_target_ops): Add arch_setup field. * linux-low.c (initialize_low): Call the_low_target.arch_setup () instead of init_registers (). * linux-arm-low.c (init_registers_arm): Add prototype. (init_registers_arm_with_iwmmxt): Likewise. (the_low_target): Add initializer for arch_setup field. * linux-cris-low.c (init_registers_cris): Add prototype. (the_low_target): Add initializer for arch_setup field. * linux-crisv32-low.c (init_registers_crisv32): Add prototype. (the_low_target): Add initializer for arch_setup field. * linux-i386-low.c (init_registers_i386_linux): Add prototype. (the_low_target): Add initializer for arch_setup field. * linux-ia64-low.c (init_registers_ia64): Add prototype. (the_low_target): Add initializer for arch_setup field. * linux-m32r-low.c (init_registers_m32r): Add prototype. (the_low_target): Add initializer for arch_setup field. * linux-m68k-low.c (init_registers_m68k): Add prototype. (the_low_target): Add initializer for arch_setup field. * linux-mips-low.c (init_registers_mips_linux): Add prototype. (init_registers_mips64_linux): Likewise. (the_low_target): Add initializer for arch_setup field. * linux-ppc-low.c (init_registers_ppc): Add prototype. (init_registers_powerpc_32, init_registers_powerpc_e500): Likewise. (the_low_target): Add initializer for arch_setup field. * linux-ppc64-low.c (init_registers_ppc64): Add prototype. (init_registers_powerpc_64): Likewise. (the_low_target): Add initializer for arch_setup field. * linux-s390-low.c (init_registers_s390): Add prototype. (init_registers_s390x): Likewise. (the_low_target): Add initializer for arch_setup field. * linux-sh-low.c (init_registers_sh): Add prototype. (the_low_target): Add initializer for arch_setup field. * linux-x86-64-low.c (init_registers_x86_64_linux): Add prototype. (the_low_target): Add initializer for arch_setup field. * linux-xtensa-low.c (init_registers_xtensa): Add prototype. (the_low_target): Add initializer for arch_setup field. * win32-low.h (struct win32_target_ops): Add arch_setup field. * win32-low.c (initialize_low): Call the_low_target.arch_setup () instead of init_registers (). * win32-arm-low.c (init_registers_arm): Add prototype. (the_low_target): Add initializer for arch_setup field. * win32-i386-low.c (init_registers_i386): Add prototype. (the_low_target): Add initializer for arch_setup field. * spu-low.c (init_registers_spu): Add prototype. (initialize_low): Call initialie_registers_spu () instead of initialize_registers ().
Diffstat (limited to 'gdb/gdbserver')
-rw-r--r--gdb/gdbserver/ChangeLog53
-rw-r--r--gdb/gdbserver/linux-arm-low.c10
-rw-r--r--gdb/gdbserver/linux-cris-low.c4
-rw-r--r--gdb/gdbserver/linux-crisv32-low.c4
-rw-r--r--gdb/gdbserver/linux-i386-low.c5
-rw-r--r--gdb/gdbserver/linux-ia64-low.c4
-rw-r--r--gdb/gdbserver/linux-low.c2
-rw-r--r--gdb/gdbserver/linux-low.h3
-rw-r--r--gdb/gdbserver/linux-m32r-low.c4
-rw-r--r--gdb/gdbserver/linux-m68k-low.c4
-rw-r--r--gdb/gdbserver/linux-mips-low.c10
-rw-r--r--gdb/gdbserver/linux-ppc-low.c16
-rw-r--r--gdb/gdbserver/linux-ppc64-low.c10
-rw-r--r--gdb/gdbserver/linux-s390-low.c11
-rw-r--r--gdb/gdbserver/linux-sh-low.c4
-rw-r--r--gdb/gdbserver/linux-x86-64-low.c4
-rw-r--r--gdb/gdbserver/linux-xtensa-low.c4
-rw-r--r--gdb/gdbserver/server.h4
-rw-r--r--gdb/gdbserver/spu-low.c5
-rw-r--r--gdb/gdbserver/win32-arm-low.c5
-rw-r--r--gdb/gdbserver/win32-i386-low.c4
-rw-r--r--gdb/gdbserver/win32-low.c2
-rw-r--r--gdb/gdbserver/win32-low.h3
23 files changed, 168 insertions, 7 deletions
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 855a607..80ea9f9 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,56 @@
+2008-02-27 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * server.h (init_registers): Remove prototype.
+
+ * linux-low.h (struct linux_target_ops): Add arch_setup field.
+ * linux-low.c (initialize_low): Call the_low_target.arch_setup ()
+ instead of init_registers ().
+ * linux-arm-low.c (init_registers_arm): Add prototype.
+ (init_registers_arm_with_iwmmxt): Likewise.
+ (the_low_target): Add initializer for arch_setup field.
+ * linux-cris-low.c (init_registers_cris): Add prototype.
+ (the_low_target): Add initializer for arch_setup field.
+ * linux-crisv32-low.c (init_registers_crisv32): Add prototype.
+ (the_low_target): Add initializer for arch_setup field.
+ * linux-i386-low.c (init_registers_i386_linux): Add prototype.
+ (the_low_target): Add initializer for arch_setup field.
+ * linux-ia64-low.c (init_registers_ia64): Add prototype.
+ (the_low_target): Add initializer for arch_setup field.
+ * linux-m32r-low.c (init_registers_m32r): Add prototype.
+ (the_low_target): Add initializer for arch_setup field.
+ * linux-m68k-low.c (init_registers_m68k): Add prototype.
+ (the_low_target): Add initializer for arch_setup field.
+ * linux-mips-low.c (init_registers_mips_linux): Add prototype.
+ (init_registers_mips64_linux): Likewise.
+ (the_low_target): Add initializer for arch_setup field.
+ * linux-ppc-low.c (init_registers_ppc): Add prototype.
+ (init_registers_powerpc_32, init_registers_powerpc_e500): Likewise.
+ (the_low_target): Add initializer for arch_setup field.
+ * linux-ppc64-low.c (init_registers_ppc64): Add prototype.
+ (init_registers_powerpc_64): Likewise.
+ (the_low_target): Add initializer for arch_setup field.
+ * linux-s390-low.c (init_registers_s390): Add prototype.
+ (init_registers_s390x): Likewise.
+ (the_low_target): Add initializer for arch_setup field.
+ * linux-sh-low.c (init_registers_sh): Add prototype.
+ (the_low_target): Add initializer for arch_setup field.
+ * linux-x86-64-low.c (init_registers_x86_64_linux): Add prototype.
+ (the_low_target): Add initializer for arch_setup field.
+ * linux-xtensa-low.c (init_registers_xtensa): Add prototype.
+ (the_low_target): Add initializer for arch_setup field.
+
+ * win32-low.h (struct win32_target_ops): Add arch_setup field.
+ * win32-low.c (initialize_low): Call the_low_target.arch_setup ()
+ instead of init_registers ().
+ * win32-arm-low.c (init_registers_arm): Add prototype.
+ (the_low_target): Add initializer for arch_setup field.
+ * win32-i386-low.c (init_registers_i386): Add prototype.
+ (the_low_target): Add initializer for arch_setup field.
+
+ * spu-low.c (init_registers_spu): Add prototype.
+ (initialize_low): Call initialie_registers_spu () instead of
+ initialize_registers ().
+
2008-02-19 Pedro Alves <pedro@codesourcery.com>
* server.c (handle_v_requests): When handling the vRun and vAttach
diff --git a/gdb/gdbserver/linux-arm-low.c b/gdb/gdbserver/linux-arm-low.c
index 2f7ab92..d47ecbc 100644
--- a/gdb/gdbserver/linux-arm-low.c
+++ b/gdb/gdbserver/linux-arm-low.c
@@ -24,6 +24,11 @@
#include "gdb_proc_service.h"
+/* Defined in auto-generated file reg-arm.c. */
+void init_registers_arm (void);
+/* Defined in auto-generated file arm-with-iwmmxt.c. */
+void init_registers_arm_with_iwmmxt (void);
+
#ifndef PTRACE_GET_THREAD_AREA
#define PTRACE_GET_THREAD_AREA 22
#endif
@@ -200,6 +205,11 @@ struct regset_info target_regsets[] = {
};
struct linux_target_ops the_low_target = {
+#ifdef __IWMMXT__
+ init_registers_arm_with_iwmmxt,
+#else
+ init_registers_arm,
+#endif
arm_num_regs,
arm_regmap,
arm_cannot_fetch_register,
diff --git a/gdb/gdbserver/linux-cris-low.c b/gdb/gdbserver/linux-cris-low.c
index f1ff46c..e7f47fb 100644
--- a/gdb/gdbserver/linux-cris-low.c
+++ b/gdb/gdbserver/linux-cris-low.c
@@ -21,6 +21,9 @@
#include "linux-low.h"
#include <sys/ptrace.h>
+/* Defined in auto-generated file reg-cris.c. */
+void init_registers_cris (void);
+
/* CRISv10 */
#define cris_num_regs 32
@@ -105,6 +108,7 @@ cris_reinsert_addr (void)
}
struct linux_target_ops the_low_target = {
+ init_registers_cris,
cris_num_regs,
cris_regmap,
cris_cannot_fetch_register,
diff --git a/gdb/gdbserver/linux-crisv32-low.c b/gdb/gdbserver/linux-crisv32-low.c
index 550771d..5136f16 100644
--- a/gdb/gdbserver/linux-crisv32-low.c
+++ b/gdb/gdbserver/linux-crisv32-low.c
@@ -21,6 +21,9 @@
#include "linux-low.h"
#include <sys/ptrace.h>
+/* Defined in auto-generated file reg-crisv32.c. */
+void init_registers_crisv32 (void);
+
/* CRISv32 */
#define cris_num_regs 49
@@ -360,6 +363,7 @@ struct regset_info target_regsets[] = {
};
struct linux_target_ops the_low_target = {
+ init_register_crisv32,
-1,
NULL,
NULL,
diff --git a/gdb/gdbserver/linux-i386-low.c b/gdb/gdbserver/linux-i386-low.c
index 887b17a..433d085 100644
--- a/gdb/gdbserver/linux-i386-low.c
+++ b/gdb/gdbserver/linux-i386-low.c
@@ -33,6 +33,10 @@
#define PTRACE_GET_THREAD_AREA 25
#endif
+/* Defined in auto-generated file reg-i386-linux.c. */
+void init_registers_i386_linux (void);
+
+
/* This module only supports access to the general purpose registers. */
#define i386_num_regs 16
@@ -185,6 +189,7 @@ i386_breakpoint_at (CORE_ADDR pc)
}
struct linux_target_ops the_low_target = {
+ init_registers_i386_linux,
i386_num_regs,
i386_regmap,
i386_cannot_fetch_register,
diff --git a/gdb/gdbserver/linux-ia64-low.c b/gdb/gdbserver/linux-ia64-low.c
index 40524a1..030e8ec 100644
--- a/gdb/gdbserver/linux-ia64-low.c
+++ b/gdb/gdbserver/linux-ia64-low.c
@@ -24,6 +24,9 @@
#include <sys/reg.h>
#endif
+/* Defined in auto-generated file reg-ia64.c. */
+void init_registers_ia64 (void);
+
#define ia64_num_regs 462
#include <asm/ptrace_offsets.h>
@@ -276,6 +279,7 @@ ia64_cannot_fetch_register (int regno)
}
struct linux_target_ops the_low_target = {
+ init_registers_ia64,
ia64_num_regs,
ia64_regmap,
ia64_cannot_fetch_register,
diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
index c2b66c3..d5a8fb4 100644
--- a/gdb/gdbserver/linux-low.c
+++ b/gdb/gdbserver/linux-low.c
@@ -2072,7 +2072,7 @@ initialize_low (void)
set_target_ops (&linux_target_ops);
set_breakpoint_data (the_low_target.breakpoint,
the_low_target.breakpoint_len);
- init_registers ();
+ the_low_target.arch_setup ();
linux_init_signals ();
linux_test_for_tracefork ();
}
diff --git a/gdb/gdbserver/linux-low.h b/gdb/gdbserver/linux-low.h
index 32245f0..698a1b0 100644
--- a/gdb/gdbserver/linux-low.h
+++ b/gdb/gdbserver/linux-low.h
@@ -42,6 +42,9 @@ extern struct regset_info target_regsets[];
struct linux_target_ops
{
+ /* Architecture-specific setup. */
+ void (*arch_setup) (void);
+
int num_regs;
int *regmap;
int (*cannot_fetch_register) (int);
diff --git a/gdb/gdbserver/linux-m32r-low.c b/gdb/gdbserver/linux-m32r-low.c
index 08255e4..b7cf8df 100644
--- a/gdb/gdbserver/linux-m32r-low.c
+++ b/gdb/gdbserver/linux-m32r-low.c
@@ -23,6 +23,9 @@
#include <sys/reg.h>
#endif
+/* Defined in auto-generated file reg-m32r.c. */
+void init_registers_m32r (void);
+
#define m32r_num_regs 25
static int m32r_regmap[] = {
@@ -83,6 +86,7 @@ m32r_breakpoint_at (CORE_ADDR where)
}
struct linux_target_ops the_low_target = {
+ init_registers_m32r,
m32r_num_regs,
m32r_regmap,
m32r_cannot_fetch_register,
diff --git a/gdb/gdbserver/linux-m68k-low.c b/gdb/gdbserver/linux-m68k-low.c
index 01a7fe2..01ac1b8 100644
--- a/gdb/gdbserver/linux-m68k-low.c
+++ b/gdb/gdbserver/linux-m68k-low.c
@@ -20,6 +20,9 @@
#include "server.h"
#include "linux-low.h"
+/* Defined in auto-generated file reg-m68k.c. */
+void init_registers_m68k (void);
+
#ifdef HAVE_SYS_REG_H
#include <sys/reg.h>
#endif
@@ -152,6 +155,7 @@ m68k_breakpoint_at (CORE_ADDR pc)
}
struct linux_target_ops the_low_target = {
+ init_registers_m68k,
m68k_num_regs,
m68k_regmap,
m68k_cannot_fetch_register,
diff --git a/gdb/gdbserver/linux-mips-low.c b/gdb/gdbserver/linux-mips-low.c
index 288ef63..22e18da 100644
--- a/gdb/gdbserver/linux-mips-low.c
+++ b/gdb/gdbserver/linux-mips-low.c
@@ -25,6 +25,11 @@
#include "gdb_proc_service.h"
+/* Defined in auto-generated file mips-linux.c. */
+void init_registers_mips_linux (void);
+/* Defined in auto-generated file mips64-linux.c. */
+void init_registers_mips64_linux (void);
+
#ifndef PTRACE_GET_THREAD_AREA
#define PTRACE_GET_THREAD_AREA 25
#endif
@@ -329,6 +334,11 @@ struct regset_info target_regsets[] = {
};
struct linux_target_ops the_low_target = {
+#ifdef __mips64
+ init_registers_mips64_linux,
+#else
+ init_registers_mips_linux,
+#endif
mips_num_regs,
mips_regmap,
mips_cannot_fetch_register,
diff --git a/gdb/gdbserver/linux-ppc-low.c b/gdb/gdbserver/linux-ppc-low.c
index 54e7e5f..4cc1d4c 100644
--- a/gdb/gdbserver/linux-ppc-low.c
+++ b/gdb/gdbserver/linux-ppc-low.c
@@ -23,6 +23,13 @@
#include <asm/ptrace.h>
+/* Defined in auto-generated file reg-ppc.c. */
+void init_registers_ppc (void);
+/* Defined in auto-generated file powerpc-32.c. */
+void init_registers_powerpc_32 (void);
+/* Defined in auto-generated file powerpc-e500.c. */
+void init_registers_powerpc_e500 (void);
+
#define ppc_num_regs 71
/* Currently, don't check/send MQ. */
@@ -231,6 +238,15 @@ struct regset_info target_regsets[] = {
};
struct linux_target_ops the_low_target = {
+#ifdef __ALTIVEC__
+ init_registers_powerpc_32,
+#else
+#ifdef __SPE__
+ init_registers_powerpc_e500,
+#else
+ init_registers_ppc,
+#endif
+#endif
ppc_num_regs,
ppc_regmap,
ppc_cannot_fetch_register,
diff --git a/gdb/gdbserver/linux-ppc64-low.c b/gdb/gdbserver/linux-ppc64-low.c
index 4b4b869..3897d73b 100644
--- a/gdb/gdbserver/linux-ppc64-low.c
+++ b/gdb/gdbserver/linux-ppc64-low.c
@@ -21,6 +21,11 @@
#include "server.h"
#include "linux-low.h"
+/* Defined in auto-generated file reg-ppc64.c. */
+void init_registers_ppc64 (void);
+/* Defined in auto-generated file powerpc-64.c. */
+void init_registers_powerpc_64 (void);
+
#include <asm/ptrace.h>
#define ppc_num_regs 71
@@ -162,6 +167,11 @@ struct regset_info target_regsets[] = {
};
struct linux_target_ops the_low_target = {
+#ifdef __ALTIVEC__
+ init_registers_powerpc_64,
+#else
+ init_registers_ppc64,
+#endif
ppc_num_regs,
ppc_regmap,
ppc_cannot_fetch_register,
diff --git a/gdb/gdbserver/linux-s390-low.c b/gdb/gdbserver/linux-s390-low.c
index 3482427..6ae1a23 100644
--- a/gdb/gdbserver/linux-s390-low.c
+++ b/gdb/gdbserver/linux-s390-low.c
@@ -25,6 +25,12 @@
#include <asm/ptrace.h>
+/* Defined in auto-generated file reg-s390.c. */
+void init_registers_s390 (void);
+/* Defined in auto-generated file reg-s390x.c. */
+void init_registers_s390x (void);
+
+
#define s390_num_regs 51
static int s390_regmap[] = {
@@ -124,6 +130,11 @@ s390_breakpoint_at (CORE_ADDR pc)
struct linux_target_ops the_low_target = {
+#ifndef __s390x__
+ init_registers_s390,
+#else
+ init_registers_s390x,
+#endif
s390_num_regs,
s390_regmap,
s390_cannot_fetch_register,
diff --git a/gdb/gdbserver/linux-sh-low.c b/gdb/gdbserver/linux-sh-low.c
index d488a52..9e87ffa 100644
--- a/gdb/gdbserver/linux-sh-low.c
+++ b/gdb/gdbserver/linux-sh-low.c
@@ -20,6 +20,9 @@
#include "server.h"
#include "linux-low.h"
+/* Defined in auto-generated file reg-sh.c. */
+void init_registers_sh (void);
+
#ifdef HAVE_SYS_REG_H
#include <sys/reg.h>
#endif
@@ -106,6 +109,7 @@ struct regset_info target_regsets[] = {
};
struct linux_target_ops the_low_target = {
+ init_registers_sh,
sh_num_regs,
sh_regmap,
sh_cannot_fetch_register,
diff --git a/gdb/gdbserver/linux-x86-64-low.c b/gdb/gdbserver/linux-x86-64-low.c
index 56f1a91..80f5c6d 100644
--- a/gdb/gdbserver/linux-x86-64-low.c
+++ b/gdb/gdbserver/linux-x86-64-low.c
@@ -24,6 +24,9 @@
#include "gdb_proc_service.h"
+/* Defined in auto-generated file reg-x86-64-linux.c. */
+void init_registers_x86_64_linux (void);
+
#include <sys/reg.h>
#include <sys/procfs.h>
#include <sys/ptrace.h>
@@ -160,6 +163,7 @@ x86_64_breakpoint_at (CORE_ADDR pc)
}
struct linux_target_ops the_low_target = {
+ init_registers_x86_64_linux,
-1,
NULL,
NULL,
diff --git a/gdb/gdbserver/linux-xtensa-low.c b/gdb/gdbserver/linux-xtensa-low.c
index cbf5a51..256bbcf 100644
--- a/gdb/gdbserver/linux-xtensa-low.c
+++ b/gdb/gdbserver/linux-xtensa-low.c
@@ -20,6 +20,9 @@
#include "server.h"
#include "linux-low.h"
+/* Defined in auto-generated file reg-xtensa.c. */
+void init_registers_xtensa (void);
+
#include <sys/ptrace.h>
#include <xtensa-config.h>
@@ -173,6 +176,7 @@ xtensa_breakpoint_at (CORE_ADDR where)
}
struct linux_target_ops the_low_target = {
+ init_registers_xtensa,
0,
0,
0,
diff --git a/gdb/gdbserver/server.h b/gdb/gdbserver/server.h
index 107813b..9238766 100644
--- a/gdb/gdbserver/server.h
+++ b/gdb/gdbserver/server.h
@@ -221,10 +221,6 @@ void error (const char *string,...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
void fatal (const char *string,...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
void warning (const char *string,...) ATTR_FORMAT (printf, 1, 2);
-/* Functions from the register cache definition. */
-
-void init_registers (void);
-
/* Maximum number of bytes to read/write at once. The value here
is chosen to fill up a packet (the headers account for the 32). */
#define MAXBUFBYTES(N) (((N)-32)/2)
diff --git a/gdb/gdbserver/spu-low.c b/gdb/gdbserver/spu-low.c
index bba7c19..f054fe7 100644
--- a/gdb/gdbserver/spu-low.c
+++ b/gdb/gdbserver/spu-low.c
@@ -57,6 +57,9 @@
/* These are used in remote-utils.c. */
int using_threads = 0;
+/* Defined in auto-generated file reg-spu.c. */
+void init_registers_spu (void);
+
/* Fetch PPU register REGNO. */
static CORE_ADDR
@@ -600,5 +603,5 @@ initialize_low (void)
set_target_ops (&spu_target_ops);
set_breakpoint_data (breakpoint, sizeof breakpoint);
- init_registers ();
+ init_registers_spu ();
}
diff --git a/gdb/gdbserver/win32-arm-low.c b/gdb/gdbserver/win32-arm-low.c
index c5d646f..fb64ec4 100644
--- a/gdb/gdbserver/win32-arm-low.c
+++ b/gdb/gdbserver/win32-arm-low.c
@@ -22,6 +22,10 @@
#define CONTEXT_FLOATING_POINT 0
#endif
+/* Defined in auto-generated file reg-arm.c. */
+void init_registers_arm (void);
+
+
static void
arm_get_thread_context (win32_thread_info *th, DEBUG_EVENT* current_event)
{
@@ -107,6 +111,7 @@ static const unsigned long arm_wince_breakpoint = 0xe6000010;
#define arm_wince_breakpoint_len 4
struct win32_target_ops the_low_target = {
+ init_registers_arm,
sizeof (mappings) / sizeof (mappings[0]),
NULL, /* initial_stuff */
arm_get_thread_context,
diff --git a/gdb/gdbserver/win32-i386-low.c b/gdb/gdbserver/win32-i386-low.c
index 59ac342..c21e884 100644
--- a/gdb/gdbserver/win32-i386-low.c
+++ b/gdb/gdbserver/win32-i386-low.c
@@ -23,6 +23,9 @@
#define FLAG_TRACE_BIT 0x100
+/* Defined in auto-generated file reg-i386.c. */
+void init_registers_i386 (void);
+
static unsigned dr[8];
static int debug_registers_changed = 0;
@@ -191,6 +194,7 @@ i386_store_inferior_register (win32_thread_info *th, int r)
}
struct win32_target_ops the_low_target = {
+ init_registers_i386,
sizeof (mappings) / sizeof (mappings[0]),
i386_initial_stuff,
i386_get_thread_context,
diff --git a/gdb/gdbserver/win32-low.c b/gdb/gdbserver/win32-low.c
index af2e3b6..355a29e 100644
--- a/gdb/gdbserver/win32-low.c
+++ b/gdb/gdbserver/win32-low.c
@@ -1740,5 +1740,5 @@ initialize_low (void)
if (the_low_target.breakpoint != NULL)
set_breakpoint_data (the_low_target.breakpoint,
the_low_target.breakpoint_len);
- init_registers ();
+ the_low_target.arch_setup ();
}
diff --git a/gdb/gdbserver/win32-low.h b/gdb/gdbserver/win32-low.h
index fafdbb9..21c91b5 100644
--- a/gdb/gdbserver/win32-low.h
+++ b/gdb/gdbserver/win32-low.h
@@ -42,6 +42,9 @@ typedef struct win32_thread_info
struct win32_target_ops
{
+ /* Architecture-specific setup. */
+ void (*arch_setup) (void);
+
/* The number of target registers. */
int num_regs;