2002-04-09 Daniel Jacobowitz <drow@mvista.com>
authorDaniel Jacobowitz <drow@false.org>
Tue, 9 Apr 2002 22:44:43 +0000 (22:44 +0000)
committerDaniel Jacobowitz <drow@false.org>
Tue, 9 Apr 2002 22:44:43 +0000 (22:44 +0000)
* linux-low.h: Remove obsolete prototypes.
(struct linux_target_ops): New.
(extern the_low_target): New.
* linux-low.c (num_regs, regmap): Remove declarations.
(register_addr): Use the_low_target explicitly.
(fetch_register): Likewise.
(usr_fetch_inferior_registers): Likewise.
(usr_store_inferior_registers): Likewise.
* linux-arm-low.c (num_regs): Remove.
(arm_num_regs): Define.
(arm_regmap): Renamed from regmap, made static.
(arm_cannot_fetch_register): Renamed from cannot_fetch_register,
made static.
(arm_cannot_store_register): Renamed from cannot_store_register,
made static.
(the_low_target): New.
* linux-i386-low.c (num_regs): Remove.
(i386_num_regs): Define.
(i386_regmap): Renamed from regmap, made static.
(i386_cannot_fetch_register): Renamed from cannot_fetch_register,
made static.
(i386_cannot_store_register): Renamed from cannot_store_register,
made static.
(the_low_target): New.
* linux-ia64-low.c (num_regs): Remove.
(ia64_num_regs): Define.
(ia64_regmap): Renamed from regmap, made static.
(ia64_cannot_fetch_register): Renamed from cannot_fetch_register,
made static.
(ia64_cannot_store_register): Renamed from cannot_store_register,
made static.
(the_low_target): New.
* linux-m68k-low.c (num_regs): Remove.
(m68k_num_regs): Define.
(m68k_regmap): Renamed from regmap, made static.
(m68k_cannot_fetch_register): Renamed from cannot_fetch_register,
made static.
(m68k_cannot_store_register): Renamed from cannot_store_register,
made static.
(the_low_target): New.
* linux-mips-low.c (num_regs): Remove.
(mips_num_regs): Define.
(mips_regmap): Renamed from regmap, made static.
(mips_cannot_fetch_register): Renamed from cannot_fetch_register,
made static.
(mips_cannot_store_register): Renamed from cannot_store_register,
made static.
(the_low_target): New.
* linux-ppc-low.c (num_regs): Remove.
(ppc_num_regs): Define.
(ppc_regmap): Renamed from regmap, made static.
(ppc_cannot_fetch_register): Renamed from cannot_fetch_register,
made static.
(ppc_cannot_store_register): Renamed from cannot_store_register,
made static.
(the_low_target): New.
* linux-s390-low.c (num_regs): Remove.
(s390_num_regs): Define.
(s390_regmap): Renamed from regmap, made static.
(s390_cannot_fetch_register): Renamed from cannot_fetch_register,
made static.
(s390_cannot_store_register): Renamed from cannot_store_register,
made static.
(the_low_target): New.
* linux-sh-low.c (num_regs): Remove.
(sh_num_regs): Define.
(sh_regmap): Renamed from regmap, made static.
(sh_cannot_fetch_register): Renamed from cannot_fetch_register,
made static.
(sh_cannot_store_register): Renamed from cannot_store_register,
made static.
(the_low_target): New.
* linux-x86-64-low.c (x86_64_regmap): Renamed from regmap.
(the_low_target): New.

12 files changed:
gdb/ChangeLog
gdb/gdbserver/linux-arm-low.c
gdb/gdbserver/linux-i386-low.c
gdb/gdbserver/linux-ia64-low.c
gdb/gdbserver/linux-low.c
gdb/gdbserver/linux-low.h
gdb/gdbserver/linux-m68k-low.c
gdb/gdbserver/linux-mips-low.c
gdb/gdbserver/linux-ppc-low.c
gdb/gdbserver/linux-s390-low.c
gdb/gdbserver/linux-sh-low.c
gdb/gdbserver/linux-x86-64-low.c

index d4eb5de41cd54acac2790b9a589a486ac486a4d1..a712c107c118200bb1c725c173c90eb4d7075497 100644 (file)
@@ -1,3 +1,80 @@
+2002-04-09  Daniel Jacobowitz  <drow@mvista.com>
+
+       * linux-low.h: Remove obsolete prototypes.
+       (struct linux_target_ops): New.
+       (extern the_low_target): New.
+       * linux-low.c (num_regs, regmap): Remove declarations.
+       (register_addr): Use the_low_target explicitly.
+       (fetch_register): Likewise.
+       (usr_fetch_inferior_registers): Likewise.
+       (usr_store_inferior_registers): Likewise.
+       * linux-arm-low.c (num_regs): Remove.
+       (arm_num_regs): Define.
+       (arm_regmap): Renamed from regmap, made static.
+       (arm_cannot_fetch_register): Renamed from cannot_fetch_register,
+       made static.
+       (arm_cannot_store_register): Renamed from cannot_store_register,
+       made static.
+       (the_low_target): New.
+       * linux-i386-low.c (num_regs): Remove.
+       (i386_num_regs): Define.
+       (i386_regmap): Renamed from regmap, made static.
+       (i386_cannot_fetch_register): Renamed from cannot_fetch_register,
+       made static.
+       (i386_cannot_store_register): Renamed from cannot_store_register,
+       made static.
+       (the_low_target): New.
+       * linux-ia64-low.c (num_regs): Remove.
+       (ia64_num_regs): Define.
+       (ia64_regmap): Renamed from regmap, made static.
+       (ia64_cannot_fetch_register): Renamed from cannot_fetch_register,
+       made static.
+       (ia64_cannot_store_register): Renamed from cannot_store_register,
+       made static.
+       (the_low_target): New.
+       * linux-m68k-low.c (num_regs): Remove.
+       (m68k_num_regs): Define.
+       (m68k_regmap): Renamed from regmap, made static.
+       (m68k_cannot_fetch_register): Renamed from cannot_fetch_register,
+       made static.
+       (m68k_cannot_store_register): Renamed from cannot_store_register,
+       made static.
+       (the_low_target): New.
+       * linux-mips-low.c (num_regs): Remove.
+       (mips_num_regs): Define.
+       (mips_regmap): Renamed from regmap, made static.
+       (mips_cannot_fetch_register): Renamed from cannot_fetch_register,
+       made static.
+       (mips_cannot_store_register): Renamed from cannot_store_register,
+       made static.
+       (the_low_target): New.
+       * linux-ppc-low.c (num_regs): Remove.
+       (ppc_num_regs): Define.
+       (ppc_regmap): Renamed from regmap, made static.
+       (ppc_cannot_fetch_register): Renamed from cannot_fetch_register,
+       made static.
+       (ppc_cannot_store_register): Renamed from cannot_store_register,
+       made static.
+       (the_low_target): New.
+       * linux-s390-low.c (num_regs): Remove.
+       (s390_num_regs): Define.
+       (s390_regmap): Renamed from regmap, made static.
+       (s390_cannot_fetch_register): Renamed from cannot_fetch_register,
+       made static.
+       (s390_cannot_store_register): Renamed from cannot_store_register,
+       made static.
+       (the_low_target): New.
+       * linux-sh-low.c (num_regs): Remove.
+       (sh_num_regs): Define.
+       (sh_regmap): Renamed from regmap, made static.
+       (sh_cannot_fetch_register): Renamed from cannot_fetch_register,
+       made static.
+       (sh_cannot_store_register): Renamed from cannot_store_register,
+       made static.
+       (the_low_target): New.
+       * linux-x86-64-low.c (x86_64_regmap): Renamed from regmap.
+       (the_low_target): New.
+
 2002-04-09  Andrew Cagney  <ac131313@redhat.com>
 
        * frame.c (read_relative_register_raw_bytes_for_frame): Do not
index f873b071a812c8e73b0d425312c8ef5b13d0b1e0..2958fdf312938cc4640657f930716e59aa0b5dd8 100644 (file)
 #include <sys/reg.h>
 #endif
 
-int num_regs = 16;
+#define arm_num_regs 16
 
-int regmap[] = {
+static int arm_regmap[] = {
   0, 4, 8, 12, 16, 20, 24, 28,
   32, 36, 40, 44, 48, 52, 56, 60,
 };
 
-int
-cannot_store_register (int regno)
+static int
+arm_cannot_store_register (int regno)
 {
-  return (regno >= num_regs);
+  return (regno >= arm_num_regs);
 }
 
-int
-cannot_fetch_register (int regno)
+static int
+arm_cannot_fetch_register (int regno)
 {
-  return (regno >= num_regs);
+  return (regno >= arm_num_regs);
 }
 
+struct linux_target_ops the_low_target = {
+  arm_num_regs,
+  arm_regmap,
+  arm_cannot_fetch_register,
+  arm_cannot_store_register,
+};
index 2a66efaa70ead11150af388204a290cdd453f2af..2a398d75510fcc0647122c25e3d72b702ee5ac87 100644 (file)
 
 /* This module only supports access to the general purpose registers.  */
 
-int num_regs = 16;
+#define i386_num_regs 16
 
 /* This stuff comes from i386-linux-nat.c.  */
 
 /* Mapping between the general-purpose registers in `struct user'
    format and GDB's register array layout.  */
-int regmap[] = 
+static int i386_regmap[] = 
 {
   EAX * 4, ECX * 4, EDX * 4, EBX * 4,
   UESP * 4, EBP * 4, ESI * 4, EDI * 4,
@@ -43,16 +43,16 @@ int regmap[] =
   DS * 4, ES * 4, FS * 4, GS * 4
 };
 
-int
-cannot_store_register (int regno)
+static int
+i386_cannot_store_register (int regno)
 {
-  return (regno >= num_regs);
+  return (regno >= i386_num_regs);
 }
 
-int
-cannot_fetch_register (int regno)
+static int
+i386_cannot_fetch_register (int regno)
 {
-  return (regno >= num_regs);
+  return (regno >= i386_num_regs);
 }
 
 
@@ -65,8 +65,8 @@ i386_fill_gregset (void *buf)
 {
   int i;
 
-  for (i = 0; i < num_regs; i++)
-    collect_register (i, ((char *) buf) + regmap[i]);
+  for (i = 0; i < i386_num_regs; i++)
+    collect_register (i, ((char *) buf) + i386_regmap[i]);
 
   collect_register_by_name ("orig_eax", ((char *) buf) + ORIG_EAX * 4);
 }
@@ -76,8 +76,8 @@ i386_store_gregset (void *buf)
 {
   int i;
 
-  for (i = 0; i < num_regs; i++)
-    supply_register (i, ((char *) buf) + regmap[i]);
+  for (i = 0; i < i386_num_regs; i++)
+    supply_register (i, ((char *) buf) + i386_regmap[i]);
 
   supply_register_by_name ("orig_eax", ((char *) buf) + ORIG_EAX * 4);
 }
@@ -121,3 +121,9 @@ struct regset_info target_regsets[] = {
 
 #endif /* HAVE_LINUX_REGSETS */
 
+struct linux_target_ops the_low_target = {
+  i386_num_regs,
+  i386_regmap,
+  i386_cannot_fetch_register,
+  i386_cannot_store_register,
+};
index f0f238f9320de273682bc455984b58de4e66d1b6..9407e6cbcf7d3432c524511330987140b899e601 100644 (file)
 #include <sys/reg.h>
 #endif
 
-int num_regs = 590;
+#define ia64_num_regs 590
 
 #include <asm/ptrace_offsets.h>
 
-int regmap[] =
+static int ia64_regmap[] =
   {
     /* general registers */
     -1,                /* gr0 not available; i.e, it's always zero */
@@ -283,15 +283,21 @@ int regmap[] =
     -1, -1, -1, -1, -1, -1, -1, -1,
   };
 
-int
-cannot_store_register (int regno)
+static int
+ia64_cannot_store_register (int regno)
 {
   return 0;
 }
 
-int
-cannot_fetch_register (int regno)
+static int
+ia64_cannot_fetch_register (int regno)
 {
   return 0;
 }
 
+struct linux_target_ops the_low_target = {
+  ia64_num_regs,
+  ia64_regmap,
+  ia64_cannot_fetch_register,
+  ia64_cannot_store_register,
+};
index 7964f8232484b42a5fe84c8867dedecb402b17bd..307fab21a13697056fd5c8a4018f46059d0cb331 100644 (file)
@@ -44,11 +44,6 @@ static int use_regsets_p = 1;
 
 extern int errno;
 
-#ifdef HAVE_LINUX_USRREGS
-extern int num_regs;
-extern int regmap[];
-#endif
-
 static int inferior_pid;
 
 /* Start an inferior process and returns its pid.
@@ -175,10 +170,10 @@ register_addr (int regnum)
 {
   int addr;
 
-  if (regnum < 0 || regnum >= num_regs)
+  if (regnum < 0 || regnum >= the_low_target.num_regs)
     error ("Invalid register number %d.", regnum);
 
-  addr = regmap[regnum];
+  addr = the_low_target.regmap[regnum];
   if (addr == -1)
     addr = 0;
 
@@ -192,9 +187,9 @@ fetch_register (int regno)
   CORE_ADDR regaddr;
   register int i;
 
-  if (regno >= num_regs)
+  if (regno >= the_low_target.num_regs)
     return;
-  if (cannot_fetch_register (regno))
+  if ((*the_low_target.cannot_fetch_register) (regno))
     return;
 
   regaddr = register_addr (regno);
@@ -225,7 +220,7 @@ static void
 usr_fetch_inferior_registers (int regno)
 {
   if (regno == -1 || regno == 0)
-    for (regno = 0; regno < num_regs; regno++)
+    for (regno = 0; regno < the_low_target.num_regs; regno++)
       fetch_register (regno);
   else
     fetch_register (regno);
@@ -242,10 +237,10 @@ usr_store_inferior_registers (int regno)
 
   if (regno >= 0)
     {
-      if (regno >= num_regs)
+      if (regno >= the_low_target.num_regs)
        return;
 
-      if (cannot_store_register (regno))
+      if ((*the_low_target.cannot_store_register) (regno))
        return;
 
       regaddr = register_addr (regno);
@@ -272,7 +267,7 @@ usr_store_inferior_registers (int regno)
        }
     }
   else
-    for (regno = 0; regno < num_regs; regno++)
+    for (regno = 0; regno < the_low_target.num_regs; regno++)
       store_inferior_registers (regno);
 }
 #endif /* HAVE_LINUX_USRREGS */
index 5f06db14eb8b44bbf74736e60d8f273a34bb2a57..0d0050dcd587b7138917b646a27a60a2bd5e9b6d 100644 (file)
    Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifdef HAVE_LINUX_USRREGS
-extern int regmap[];
-extern int num_regs;
-int cannot_fetch_register (int regno);
-int cannot_store_register (int regno);
-#endif
-
 #ifdef HAVE_LINUX_REGSETS
 typedef void (*regset_func) (void *);
 struct regset_info
@@ -35,3 +28,13 @@ struct regset_info
 };
 extern struct regset_info target_regsets[];
 #endif
+
+struct linux_target_ops
+{
+  int num_regs;
+  int *regmap;
+  int (*cannot_fetch_register) (int);
+  int (*cannot_store_register) (int);
+};
+
+extern struct linux_target_ops the_low_target;
index 9e59fbdeee930ca46506ae9a646585e6c9e22865..760de6e05352854040b05aa051bdf59729e7db90 100644 (file)
 #include <sys/reg.h>
 #endif
 
-int num_regs = 31;
+#define m68k_num_regs 31
 
 /* This table must line up with REGISTER_NAMES in tm-m68k.h */
-int regmap[] =
+static int m68k_regmap[] =
 {
 #ifdef PT_D0
   PT_D0 * 4, PT_D1 * 4, PT_D2 * 4, PT_D3 * 4,
@@ -52,14 +52,21 @@ int regmap[] =
 #endif
 };
 
-int
-cannot_store_register (int regno)
+static int
+m68k_cannot_store_register (int regno)
 {
-  return (regno >= num_regs);
+  return (regno >= m68k_num_regs);
 }
 
-int
-cannot_fetch_register (int regno)
+static int
+m68k_cannot_fetch_register (int regno)
 {
-  return (regno >= num_regs);
+  return (regno >= m68k_num_regs);
 }
+
+struct linux_target_ops the_low_target = {
+  m68k_num_regs,
+  m68k_regmap,
+  m68k_cannot_fetch_register,
+  m68k_cannot_store_register,
+};
index a9114d3fb6496ef6b41604954ea9c8955d9f6863..f721ec94eebe9d1969e99997710d842cfd27231c 100644 (file)
 #include <sys/reg.h>
 #endif
 
-int num_regs = 90;
+#define mips_num_regs 90
 
 #include <asm/ptrace.h>
 
 /* Return the ptrace ``address'' of register REGNO. */
 
 /* Matches mips_generic32_regs */
-int regmap[] = {
+static int mips_regmap[] = {
   0,  1,  2,  3,  4,  5,  6,  7,
   8,  9,  10, 11, 12, 13, 14, 15,
   16, 17, 18, 19, 20, 21, 22, 23,
@@ -63,10 +63,10 @@ int regmap[] = {
    ZERO_REGNUM.  We also can not set BADVADDR, CAUSE, or FCRIR via
    ptrace().  */
 
-int
-cannot_fetch_register (int regno)
+static int
+mips_cannot_fetch_register (int regno)
 {
-  if (regmap[regno] == -1)
+  if (mips_regmap[regno] == -1)
     return 1;
 
   if (find_regno ("zero") == regno)
@@ -75,10 +75,10 @@ cannot_fetch_register (int regno)
   return 0;
 }
 
-int
-cannot_store_register (int regno)
+static int
+mips_cannot_store_register (int regno)
 {
-  if (regmap[regno] == -1)
+  if (mips_regmap[regno] == -1)
     return 1;
 
   if (find_regno ("zero") == regno)
@@ -95,3 +95,10 @@ cannot_store_register (int regno)
 
   return 0;
 }
+
+struct linux_target_ops the_low_target = {
+  mips_num_regs,
+  mips_regmap,
+  mips_cannot_fetch_register,
+  mips_cannot_store_register,
+};
index dcefa59a677daa584a372bfa0449d68c83500eed..e626eab3cbc2b07251e61b1b07096891f27e2143 100644 (file)
 
 #include <asm/ptrace.h>
 
-int num_regs = 71;
+#define ppc_num_regs 71
 
 /* Currently, don't check/send MQ.  */
-int regmap[] =
+static int ppc_regmap[] =
  {PT_R0 * 4,     PT_R1 * 4,     PT_R2 * 4,     PT_R3 * 4,
   PT_R4 * 4,     PT_R5 * 4,     PT_R6 * 4,     PT_R7 * 4,
   PT_R8 * 4,     PT_R9 * 4,     PT_R10 * 4,    PT_R11 * 4,
@@ -48,15 +48,21 @@ int regmap[] =
   PT_NIP * 4,    PT_MSR * 4,    PT_CCR * 4,    PT_LNK * 4,
   PT_CTR * 4,    PT_XER * 4,    -1, };
 
-int
-cannot_store_register (int regno)
+static int
+ppc_cannot_store_register (int regno)
 {
   return 0;
 }
 
-int
-cannot_fetch_register (int regno)
+static int
+ppc_cannot_fetch_register (int regno)
 {
   return 0;
 }
 
+struct linux_target_ops the_low_target = {
+  ppc_num_regs,
+  ppc_regmap,
+  ppc_cannot_fetch_register,
+  ppc_cannot_store_register,
+};
index 1920b9c7ad4460f7f69ef38dd79715feadd6db00..8d800ae8b5f9ff0147f990f3401ca0dd2a0c780f 100644 (file)
@@ -27,9 +27,9 @@
 
 #include <asm/ptrace.h>
 
-int num_regs = 67;
+#define s390_num_regs 67
 
-int regmap[] = {
+static int s390_regmap[] = {
   PT_PSWMASK, PT_PSWADDR,
 
   PT_GPR0, PT_GPR1, PT_GPR2, PT_GPR3,
@@ -62,20 +62,27 @@ int regmap[] = {
 #endif
 };
 
-int
-cannot_fetch_register (int regno)
+static int
+s390_cannot_fetch_register (int regno)
 {
-  if (regmap[regno] == -1)
+  if (s390_regmap[regno] == -1)
     return 1;
 
   return 0;
 }
 
-int
-cannot_store_register (int regno)
+static int
+s390_cannot_store_register (int regno)
 {
-  if (regmap[regno] == -1)
+  if (s390_regmap[regno] == -1)
     return 1;
 
   return 0;
 }
+
+struct linux_target_ops the_low_target = {
+  s390_num_regs,
+  s390_regmap,
+  s390_cannot_fetch_register,
+  s390_cannot_store_register,
+};
index f763339e3d27280252199fb49e9fc0a357db6767..cdc390d2332bf7827e9ba27da134a24ea2070724 100644 (file)
 
 #include <asm/ptrace.h>
 
-int num_regs = 41;
+#define sh_num_regs 41
 
 /* Currently, don't check/send MQ.  */
-int regmap[] = {
+static int sh_regmap[] = {
  0,    4,      8,      12,     16,     20,     24,     28,
  32,   36,     40,     44,     48,     52,     56,     60,
 
@@ -45,15 +45,21 @@ int regmap[] = {
  REG_FPREG0+48,  REG_FPREG0+52,  REG_FPREG0+56,  REG_FPREG0+60,
 };
 
-int
-cannot_store_register (int regno)
+static int
+sh_cannot_store_register (int regno)
 {
   return 0;
 }
 
-int
-cannot_fetch_register (int regno)
+static int
+sh_cannot_fetch_register (int regno)
 {
   return 0;
 }
 
+struct linux_target_ops the_low_target = {
+  sh_num_regs,
+  sh_regmap,
+  sh_cannot_fetch_register,
+  sh_cannot_store_register,
+};
index d69b22ab361566c1acccbf85082da1f6f511a800..e1248904aba779edb07559929354b90af170e643 100644 (file)
@@ -30,7 +30,7 @@
 
 #define        X86_64_NUM_GREGS 22
 
-static int regmap[X86_64_NUM_GREGS] = {
+static int x86_64_regmap[X86_64_NUM_GREGS] = {
   RAX, RBX, RCX, RDX,
   RSI, RDI, RBP, RSP,
   R8, R9, R10, R11,
@@ -45,7 +45,7 @@ x86_64_fill_gregset (void *buf)
   int i;
 
   for (i = 0; i < X86_64_NUM_GREGS; i++)
-    collect_register (i, ((char *) buf) + regmap[i]);
+    collect_register (i, ((char *) buf) + x86_64_regmap[i]);
 }
 
 static void
@@ -54,7 +54,7 @@ x86_64_store_gregset (void *buf)
   int i;
 
   for (i = 0; i < X86_64_NUM_GREGS; i++)
-    supply_register (i, ((char *) buf) + regmap[i]);
+    supply_register (i, ((char *) buf) + x86_64_regmap[i]);
 }
 
 static void
@@ -69,7 +69,6 @@ x86_64_store_fpregset (void *buf)
   i387_fxsave_to_cache (buf);
 }
 
-
 struct regset_info target_regsets[] = {
   { PTRACE_GETREGS, PTRACE_SETREGS, sizeof (elf_gregset_t),
     x86_64_fill_gregset, x86_64_store_gregset },
@@ -77,3 +76,10 @@ struct regset_info target_regsets[] = {
     x86_64_fill_fpregset, x86_64_store_fpregset },
   { 0, 0, -1, NULL, NULL }
 };
+
+struct linux_target_ops the_low_target = {
+  -1,
+  NULL,
+  NULL,
+  NULL,
+};