2003-02-02 Andrew Cagney <ac131313@redhat.com>
authorAndrew Cagney <cagney@redhat.com>
Sun, 2 Feb 2003 05:46:14 +0000 (05:46 +0000)
committerAndrew Cagney <cagney@redhat.com>
Sun, 2 Feb 2003 05:46:14 +0000 (05:46 +0000)
* mips-nat.c (zerobuf): Delete.
(fetch_inferior_registers): Alloc local zerobuf.
(fetch_core_registers): Alloc local zerobuf.
* d10v-tdep.c (show_regs): Don't allocate a dynamic array using
MAX_REGISTER_RAW_SIZE or MAX_REGISTER_VIRTUAL_SIZE.
* thread-db.c (thread_db_store_registers): Ditto.
* sh-tdep.c (sh_do_register): Ditto.
* rom68k-rom.c (rom68k_supply_one_register): Ditto.
* remote-sim.c (gdbsim_store_register): Ditto.
* remote-mips.c (mips_wait, mips_fetch_registers): Ditto.
* remote-e7000.c (fetch_regs_from_dump): Ditto.
* monitor.c (monitor_supply_register): Ditto.
* mipsv4-nat.c (supply_gregset, supply_fpregset): Ditto.
* mips-nat.c (fetch_inferior_registers): Ditto.
* m68klinux-nat.c (fetch_register): Ditto.
* lynx-nat.c (fetch_inferior_registers): Ditto.
(fetch_inferior_registers): Ditto.
* irix4-nat.c (supply_gregset, supply_fpregset): Ditto.
* hpux-thread.c (hpux_thread_fetch_registers): Ditto.
(hpux_thread_store_registers): Ditto.
* hppah-nat.c (fetch_register): Ditto.
* hppab-nat.c (fetch_register): Ditto.
* hppa-tdep.c (pa_register_look_aside): Ditto.
(pa_print_fp_reg, pa_strcat_fp_reg): Ditto.
* dve3900-rom.c (fetch_bitmapped_register): Ditto.

19 files changed:
gdb/ChangeLog
gdb/d10v-tdep.c
gdb/dve3900-rom.c
gdb/hppa-tdep.c
gdb/hppab-nat.c
gdb/hppah-nat.c
gdb/hpux-thread.c
gdb/irix4-nat.c
gdb/lynx-nat.c
gdb/m68klinux-nat.c
gdb/mips-nat.c
gdb/mipsv4-nat.c
gdb/monitor.c
gdb/remote-e7000.c
gdb/remote-mips.c
gdb/remote-sim.c
gdb/rom68k-rom.c
gdb/sh-tdep.c
gdb/thread-db.c

index c7b99e30000a75a0d4bdb0957dd6c2fe4828f350..0ecfdec1706cb95cf620bd9ea16faab6b059e64a 100644 (file)
@@ -1,3 +1,31 @@
+2003-02-02  Andrew Cagney  <ac131313@redhat.com>
+
+       * mips-nat.c (zerobuf): Delete.
+       (fetch_inferior_registers): Alloc local zerobuf.
+       (fetch_core_registers): Alloc local zerobuf.
+       * d10v-tdep.c (show_regs): Don't allocate a dynamic array using
+       MAX_REGISTER_RAW_SIZE or MAX_REGISTER_VIRTUAL_SIZE.
+       * thread-db.c (thread_db_store_registers): Ditto.
+       * sh-tdep.c (sh_do_register): Ditto.
+       * rom68k-rom.c (rom68k_supply_one_register): Ditto.
+       * remote-sim.c (gdbsim_store_register): Ditto.
+       * remote-mips.c (mips_wait, mips_fetch_registers): Ditto.
+       * remote-e7000.c (fetch_regs_from_dump): Ditto.
+       * monitor.c (monitor_supply_register): Ditto.
+       * mipsv4-nat.c (supply_gregset, supply_fpregset): Ditto.
+       * mips-nat.c (fetch_inferior_registers): Ditto.
+       * m68klinux-nat.c (fetch_register): Ditto.
+       * lynx-nat.c (fetch_inferior_registers): Ditto.
+       (fetch_inferior_registers): Ditto.
+       * irix4-nat.c (supply_gregset, supply_fpregset): Ditto.
+       * hpux-thread.c (hpux_thread_fetch_registers): Ditto.
+       (hpux_thread_store_registers): Ditto.
+       * hppah-nat.c (fetch_register): Ditto.
+       * hppab-nat.c (fetch_register): Ditto.
+       * hppa-tdep.c (pa_register_look_aside): Ditto.
+       (pa_print_fp_reg, pa_strcat_fp_reg): Ditto.
+       * dve3900-rom.c (fetch_bitmapped_register): Ditto.
+
 2003-02-01  Andrew Cagney  <ac131313@redhat.com>
 
        * gdbarch.sh: Explictly specify all method levels.  When a
index a627645da9b1018fcb9dfaf3a4f810e87f856558..4cd3c6300f3f04ad8f391d0795673e23acf78856 100644 (file)
@@ -864,17 +864,19 @@ show_regs (char *args, int from_tty)
       printf_filtered ("\n");
     }
   printf_filtered ("A0-A%d", NR_A_REGS - 1);
-  for (a = A0_REGNUM; a < A0_REGNUM + NR_A_REGS; a++)
-    {
-      char num[MAX_REGISTER_RAW_SIZE];
-      int i;
-      printf_filtered ("  ");
-      deprecated_read_register_gen (a, (char *) &num);
-      for (i = 0; i < MAX_REGISTER_RAW_SIZE; i++)
-       {
-         printf_filtered ("%02x", (num[i] & 0xff));
-       }
-    }
+  {
+    char *num = alloca (max_register_size (current_gdbarch));
+    for (a = A0_REGNUM; a < A0_REGNUM + NR_A_REGS; a++)
+      {
+       int i;
+       printf_filtered ("  ");
+       deprecated_read_register_gen (a, (char *) &num);
+       for (i = 0; i < MAX_REGISTER_RAW_SIZE; i++)
+         {
+           printf_filtered ("%02x", (num[i] & 0xff));
+         }
+      }
+  }
   printf_filtered ("\n");
 }
 
index 96f45010f61d455748af792eb485432f459a87a5..e7329f8988a7ef0cc57c734021151c0a5e4d57dd 100644 (file)
@@ -455,7 +455,7 @@ static void
 fetch_bitmapped_register (int regno, struct bit_field *bf)
 {
   unsigned long val;
-  unsigned char regbuf[MAX_REGISTER_RAW_SIZE];
+  unsigned char *regbuf = alloca (max_register_size (current_gdbarch));
   char *regname = NULL;
 
   if (regno >= sizeof (r3900_regnames) / sizeof (r3900_regnames[0]))
index 6c0093407141cd9e7b14eeff39284cd84c16692d..db497efdeefa448215ef37e58ecffd6f0d615a7c 100644 (file)
@@ -2636,7 +2636,7 @@ pa_register_look_aside (char *raw_regs, int regnum, long *raw_val)
   int start;
 
 
-  char buf[MAX_REGISTER_RAW_SIZE];
+  char *buf = alloca (max_register_size (current_gdbarch));
   long long reg_val;
 
   if (!know_which)
@@ -2833,8 +2833,8 @@ pa_strcat_registers (char *raw_regs, int regnum, int fpregs,
 static void
 pa_print_fp_reg (int i)
 {
-  char raw_buffer[MAX_REGISTER_RAW_SIZE];
-  char virtual_buffer[MAX_REGISTER_VIRTUAL_SIZE];
+  char *raw_buffer = alloca (max_register_size (current_gdbarch));
+  char *virtual_buffer = alloca (max_register_size (current_gdbarch));
 
   /* Get 32bits of data.  */
   frame_register_read (deprecated_selected_frame, i, raw_buffer);
@@ -2876,8 +2876,8 @@ pa_print_fp_reg (int i)
 static void
 pa_strcat_fp_reg (int i, struct ui_file *stream, enum precision_type precision)
 {
-  char raw_buffer[MAX_REGISTER_RAW_SIZE];
-  char virtual_buffer[MAX_REGISTER_VIRTUAL_SIZE];
+  char *raw_buffer = alloca (max_register_size (current_gdbarch));
+  char *virtual_buffer = alloca (max_register_size (current_gdbarch));
 
   fputs_filtered (REGISTER_NAME (i), stream);
   print_spaces_filtered (8 - strlen (REGISTER_NAME (i)), stream);
@@ -2891,7 +2891,7 @@ pa_strcat_fp_reg (int i, struct ui_file *stream, enum precision_type precision)
   if (precision == double_precision && (i % 2) == 0)
     {
 
-      char raw_buf[MAX_REGISTER_RAW_SIZE];
+      char *raw_buf = alloca (max_register_size (current_gdbarch));
 
       /* Get the data in raw format for the 2nd half.  */
       frame_register_read (deprecated_selected_frame, i + 1, raw_buf);
index d8595875c90e545fbf53cd4aa55dc6c9e71421cb..3ec3a57e9acaf0bd9fb57363a29c27ca2afa60f0 100644 (file)
@@ -55,7 +55,7 @@ static void
 fetch_register (int regno)
 {
   register unsigned int regaddr;
-  char buf[MAX_REGISTER_RAW_SIZE];
+  char *buf = alloca (max_register_size (current_gdbarch));
   register int i;
 
   /* Offset of registers within the u area.  */
index ce60fa31ffd71a1d0e507fda7db56a535c5fbc44..51b74fc7ba0bd1d3daba010adb3876c42bcf48db 100644 (file)
@@ -189,7 +189,7 @@ store_inferior_registers (int regno)
 static void
 fetch_register (int regno)
 {
-  char buf[MAX_REGISTER_RAW_SIZE];
+  char *buf = alloca (max_register_size (current_gdbarch));
   unsigned int addr, len, offset;
   int i;
 
index 26d57ba258641b3edc187e6cee34cc7307dea411..29dce0b436794386e433c80777c582d9eb8680e7 100644 (file)
@@ -285,7 +285,7 @@ hpux_thread_fetch_registers (int regno)
        child_ops.to_fetch_registers (regno);
       else
        {
-         unsigned char buf[MAX_REGISTER_RAW_SIZE];
+         unsigned char *buf = alloca (max_register_size (current_gdbarch));
          CORE_ADDR sp;
 
          sp = (CORE_ADDR) tcb_ptr->static_ctx.sp - 160;
@@ -347,7 +347,7 @@ hpux_thread_store_registers (int regno)
        child_ops.to_store_registers (regno);
       else
        {
-         unsigned char buf[MAX_REGISTER_RAW_SIZE];
+         unsigned char *buf = alloca (max_register_size (current_gdbarch));
          CORE_ADDR sp;
 
          sp = (CORE_ADDR) tcb_ptr->static_ctx.sp - 160;
index 2283887a6f9de31b731c7e9e97ce1c3127cbdf1b..b44c5bbba497ea231df3a02f8d3f88e24e447cbf 100644 (file)
@@ -51,8 +51,8 @@ supply_gregset (gregset_t *gregsetp)
 {
   register int regi;
   register greg_t *regp = (greg_t *) (gregsetp->gp_regs);
-  static char zerobuf[MAX_REGISTER_RAW_SIZE] =
-  {0};
+  char *zerobuf = alloca (max_register_size (current_gdbarch));
+  memset (zerobuf, 0, max_register_size (current_gdbarch));
 
   /* FIXME: somewhere, there should be a #define for the meaning
      of this magic number 32; we should use that. */
@@ -104,8 +104,8 @@ void
 supply_fpregset (fpregset_t *fpregsetp)
 {
   register int regi;
-  static char zerobuf[MAX_REGISTER_RAW_SIZE] =
-  {0};
+  char *zerobuf = alloca (max_register_size (current_gdbarch));
+  memset (zerobuf, 0, max_register_size (current_gdbarch));
 
   for (regi = 0; regi < 32; regi++)
     supply_register (FP0_REGNUM + regi,
index 37edc2bcb5cc3a7fb55f5f772cc4cdfcca3c2554..b5cb29a630ac56d88d952702f08d57d8c3f08aa0 100644 (file)
@@ -282,7 +282,7 @@ fetch_inferior_registers (int regno)
   if (whatregs & WHATREGS_GEN)
     {
       struct econtext ec;      /* general regs */
-      char buf[MAX_REGISTER_RAW_SIZE];
+      char *buf = alloca (max_register_size (current_gdbarch));
       int retval;
       int i;
 
@@ -510,29 +510,31 @@ fetch_inferior_registers (int regno)
 
   ecp = registers_addr (PIDGET (inferior_ptid));
 
-  for (regno = reglo; regno <= reghi; regno++)
-    {
-      char buf[MAX_REGISTER_RAW_SIZE];
-      int ptrace_fun = PTRACE_PEEKTHREAD;
-
+  {
+    char *buf = alloca (max_register_size (current_gdbarch));
+    for (regno = reglo; regno <= reghi; regno++)
+      {
+       int ptrace_fun = PTRACE_PEEKTHREAD;
+       
 #ifdef M68K
-      ptrace_fun = regno == SP_REGNUM ? PTRACE_PEEKUSP : PTRACE_PEEKTHREAD;
+       ptrace_fun = regno == SP_REGNUM ? PTRACE_PEEKUSP : PTRACE_PEEKTHREAD;
 #endif
-
-      for (i = 0; i < REGISTER_RAW_SIZE (regno); i += sizeof (int))
-       {
-         unsigned int reg;
-
-         errno = 0;
-         reg = ptrace (ptrace_fun, PIDGET (inferior_ptid),
-                       (PTRACE_ARG3_TYPE) (ecp + regmap[regno] + i), 0);
-         if (errno)
-           perror_with_name ("ptrace(PTRACE_PEEKUSP)");
-
-         *(int *) &buf[i] = reg;
-       }
-      supply_register (regno, buf);
-    }
+       
+       for (i = 0; i < REGISTER_RAW_SIZE (regno); i += sizeof (int))
+         {
+           unsigned int reg;
+           
+           errno = 0;
+           reg = ptrace (ptrace_fun, PIDGET (inferior_ptid),
+                         (PTRACE_ARG3_TYPE) (ecp + regmap[regno] + i), 0);
+           if (errno)
+             perror_with_name ("ptrace(PTRACE_PEEKUSP)");
+           
+           *(int *) &buf[i] = reg;
+         }
+       supply_register (regno, buf);
+      }
+  }
 }
 
 /* Store our register values back into the inferior.
index cf47dd1dd0d5d88b3aa3b9c0423860ae58236dc3..0f0a7d102415f1c45401ba86b28d747997c50135 100644 (file)
@@ -135,7 +135,7 @@ fetch_register (int regno)
   char mess[128];              /* For messages */
   register int i;
   unsigned int offset;         /* Offset of registers within the u area.  */
-  char buf[MAX_REGISTER_RAW_SIZE];
+  char *buf = alloca (max_register_size (current_gdbarch));
   int tid;
 
   if (CANNOT_FETCH_REGISTER (regno))
index 16009c2e545173c7a91b7743f2004abc28e4ffd6..f893e339c2ea1b98c41b952838f9f68831f604f5 100644 (file)
@@ -62,9 +62,6 @@
   : regno >= FP0_REGNUM ?      FPR_BASE + (regno - FP0_REGNUM) \
   : 0)
 
-static char zerobuf[MAX_REGISTER_RAW_SIZE] =
-{0};
-
 static void fetch_core_registers (char *, unsigned, int, CORE_ADDR);
 
 /* Get all registers from the inferior */
@@ -73,8 +70,10 @@ void
 fetch_inferior_registers (int regno)
 {
   register unsigned int regaddr;
-  char buf[MAX_REGISTER_RAW_SIZE];
+  char *buf = alloca (max_register_size (current_gdbarch));
   register int i;
+  char *zerobuf = alloca (max_register_size (current_gdbarch));
+  memset (zerobuf, 0, max_register_size (current_gdbarch));
 
   deprecated_registers_fetched ();
 
@@ -175,6 +174,10 @@ fetch_core_registers (char *core_reg_sect, unsigned core_reg_size, int which,
   int bad_reg = -1;
   register reg_ptr = -reg_addr;        /* Original u.u_ar0 is -reg_addr. */
 
+  char *zerobuf = alloca (max_register_size (current_gdbarch));
+  memset (zerobuf, 0, max_register_size (current_gdbarch));
+
+
   /* If u.u_ar0 was an absolute address in the core file, relativize it now,
      so we can use it as an offset into core_reg_sect.  When we're done,
      "register 0" will be at core_reg_sect+reg_ptr, and we can use
index ec46df60826ebaf54975811a8c6bf30885aadbad..2695f1f8dbf728a2d9d6e5d63f29b7ed8d77f10d 100644 (file)
@@ -47,8 +47,8 @@ supply_gregset (gregset_t *gregsetp)
 {
   register int regi;
   register greg_t *regp = &(*gregsetp)[0];
-  static char zerobuf[MAX_REGISTER_RAW_SIZE] =
-  {0};
+  char *zerobuf = alloca (max_register_size (current_gdbarch));
+  memset (zerobuf, 0, max_register_size (current_gdbarch));
 
   for (regi = 0; regi <= CXT_RA; regi++)
     supply_register (regi, (char *) (regp + regi));
@@ -102,8 +102,8 @@ void
 supply_fpregset (fpregset_t *fpregsetp)
 {
   register int regi;
-  static char zerobuf[MAX_REGISTER_RAW_SIZE] =
-  {0};
+  char *zerobuf = alloca (max_register_size (current_gdbarch));
+  memset (zerobuf, 0, max_register_size (current_gdbarch));
 
   for (regi = 0; regi < 32; regi++)
     supply_register (FP0_REGNUM + regi,
index 5a9bb60f988c86fa82ad0ab47612c1b9f957cdae..8f1450069b7f74cb6c39f2c636cdfbfc73d4e15a 100644 (file)
@@ -894,7 +894,7 @@ char *
 monitor_supply_register (int regno, char *valstr)
 {
   ULONGEST val;
-  unsigned char regbuf[MAX_REGISTER_RAW_SIZE];
+  unsigned char *regbuf = alloca (max_register_size (current_gdbarch));
   char *p;
 
   val = 0;
index 49909b104b15313a8d4eba2e04addfc767f74907..efacde3149421b655396ecf6c02f686076a2df0f 100644 (file)
@@ -785,7 +785,7 @@ void
 fetch_regs_from_dump (int (*nextchar) (), char *want)
 {
   int regno;
-  char buf[MAX_REGISTER_RAW_SIZE];
+  char *buf = alloca (max_register_size (current_gdbarch));
 
   int thischar = nextchar ();
 
index fc1cf7aa05559f530c7cc36af2ebe602e70415f7..a23f72d4606629f59f970fc002142113808e5cda 100644 (file)
@@ -1791,7 +1791,7 @@ mips_wait (ptid_t ptid, struct target_waitstatus *status)
                    &rpc, &rfp, &rsp, flags);
   if (nfields >= 3)
     {
-      char buf[MAX_REGISTER_RAW_SIZE];
+      char *buf = alloca (max_register_size (current_gdbarch));
 
       store_unsigned_integer (buf, REGISTER_RAW_SIZE (PC_REGNUM), rpc);
       supply_register (PC_REGNUM, buf);
@@ -1972,7 +1972,7 @@ mips_fetch_registers (int regno)
     }
 
   {
-    char buf[MAX_REGISTER_RAW_SIZE];
+    char *buf = alloca (max_register_size (current_gdbarch));
 
     /* We got the number the register holds, but gdb expects to see a
        value in the target byte ordering.  */
index 3e2a7cdd5053bdfe3ea344c00da6f6e3a6f54ac1..cc2164939244789de35c7558967c4fb00f42c3e7 100644 (file)
@@ -359,7 +359,7 @@ gdbsim_store_register (int regno)
     }
   else if (REGISTER_SIM_REGNO (regno) >= 0)
     {
-      char tmp[MAX_REGISTER_RAW_SIZE];
+      char *tmp = alloca (max_register_size (current_gdbarch));
       int nr_bytes;
       deprecated_read_register_gen (regno, tmp);
       nr_bytes = sim_store_register (gdbsim_desc,
index c065a87a7c120d6b3f413160387b1783007154e2..57c0a182327c7fd58391b52940a0df87395db10d 100644 (file)
@@ -88,7 +88,7 @@ static char *
 rom68k_supply_one_register (int regno, unsigned char *hex)
 {
   ULONGEST value;
-  unsigned char regbuf[MAX_REGISTER_RAW_SIZE];
+  unsigned char *regbuf = alloca (max_register_size (current_gdbarch));
 
   value = 0;
   while (*hex != '\0')
index fc1049b0255d7e5a38ca3059efc9abd68c40ee86..1f044d054a6d284df5c65cd4258b830a872ff127 100644 (file)
@@ -4009,7 +4009,7 @@ sh64_do_pseudo_register (int regnum)
 static void
 sh_do_register (int regnum)
 {
-  char raw_buffer[MAX_REGISTER_RAW_SIZE];
+  char *raw_buffer = alloca (max_register_size (current_gdbarch));
 
   fputs_filtered (REGISTER_NAME (regnum), gdb_stdout);
   print_spaces_filtered (15 - strlen (REGISTER_NAME (regnum)), gdb_stdout);
index fbb018b5b4c743bf17b76ba8b3ac7d0ce7b9357c..808c29570f697057ee6980cc1f326a1cc117f1c1 100644 (file)
@@ -941,7 +941,7 @@ thread_db_store_registers (int regno)
 
   if (regno != -1)
     {
-      char raw[MAX_REGISTER_RAW_SIZE];
+      char *raw = alloca (max_register_size (current_gdbarch));
 
       deprecated_read_register_gen (regno, raw);
       thread_db_fetch_registers (-1);