* target.c (debug_print_register): New function. Handle oversize
authorAndrew Cagney <cagney@redhat.com>
Sat, 4 May 2002 14:19:21 +0000 (14:19 +0000)
committerAndrew Cagney <cagney@redhat.com>
Sat, 4 May 2002 14:19:21 +0000 (14:19 +0000)
registers.
(debug_to_fetch_registers): Call.
(debug_to_store_registers): Call.

gdb/ChangeLog
gdb/target.c

index d7582011ab56873381e31849e84bc8e88f4c2904..de25269d73471d8229eb98008ff29122e05eba48 100644 (file)
@@ -1,3 +1,10 @@
+2002-05-04  Andrew Cagney  <ac131313@redhat.com>
+
+       * target.c (debug_print_register): New function.  Handle oversize
+       registers.
+       (debug_to_fetch_registers): Call.
+       (debug_to_store_registers): Call.
+
 2002-05-03  Jim Blandy  <jimb@redhat.com>
 
        * stabsread.c (cleanup_undefined_types): Use replace_type, not memcpy.
index ddc012c4f831c6059206882f50c0661e853dcf0e..2cd492809f45d954b709d7b2b24e5d15652ca1c0 100644 (file)
@@ -1652,32 +1652,48 @@ debug_to_post_wait (ptid_t ptid, int status)
                      PIDGET (ptid), status);
 }
 
+static void
+debug_print_register (const char * func, int regno)
+{
+  fprintf_unfiltered (gdb_stdlog, "%s ", func);
+  if (regno >= 0 && regno < NUM_REGS + NUM_PSEUDO_REGS
+      && REGISTER_NAME (regno) != NULL && REGISTER_NAME (regno)[0] != '\0')
+    fprintf_unfiltered (gdb_stdlog, "(%s)", REGISTER_NAME (regno));
+  else
+    fprintf_unfiltered (gdb_stdlog, "(%d)", regno);
+  if (regno >= 0)
+    {
+      int i;
+      unsigned char *buf = alloca (MAX_REGISTER_RAW_SIZE);
+      read_register_gen (regno, buf);
+      fprintf_unfiltered (gdb_stdlog, " = ");
+      for (i = 0; i < REGISTER_RAW_SIZE (regno); i++)
+       {
+         fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
+       }
+      if (REGISTER_RAW_SIZE (regno) <= sizeof (LONGEST))
+       {
+         fprintf_unfiltered (gdb_stdlog, " 0x%s %s",
+                             paddr_nz (read_register (regno)),
+                             paddr_d (read_register (regno)));
+       }
+    }
+  fprintf_unfiltered (gdb_stdlog, "\n");
+}
+
 static void
 debug_to_fetch_registers (int regno)
 {
   debug_target.to_fetch_registers (regno);
-
-  fprintf_unfiltered (gdb_stdlog, "target_fetch_registers (%s)",
-                     regno != -1 ? REGISTER_NAME (regno) : "-1");
-  if (regno != -1)
-    fprintf_unfiltered (gdb_stdlog, " = 0x%lx %ld",
-                       (unsigned long) read_register (regno),
-                       (unsigned long) read_register (regno));
-  fprintf_unfiltered (gdb_stdlog, "\n");
+  debug_print_register ("target_fetch_registers", regno);
 }
 
 static void
 debug_to_store_registers (int regno)
 {
   debug_target.to_store_registers (regno);
-
-  if (regno >= 0 && regno < NUM_REGS)
-    fprintf_unfiltered (gdb_stdlog, "target_store_registers (%s) = 0x%lx %ld\n",
-                       REGISTER_NAME (regno),
-                       (unsigned long) read_register (regno),
-                       (unsigned long) read_register (regno));
-  else
-    fprintf_unfiltered (gdb_stdlog, "target_store_registers (%d)\n", regno);
+  debug_print_register ("target_store_registers", regno);
+  fprintf_unfiltered (gdb_stdlog, "\n");
 }
 
 static void