* sparcnbsd-tdep.c (sparc32nbsd_supply_gregset): Also sipply the
authorMark Kettenis <kettenis@gnu.org>
Sun, 25 Jan 2004 12:03:36 +0000 (12:03 +0000)
committerMark Kettenis <kettenis@gnu.org>
Sun, 25 Jan 2004 12:03:36 +0000 (12:03 +0000)
floating-point registers for traditional NetBSD core files.
(sparc32nbsd_init_abi): Initialize TDEP->sizeof_gregset and
TDEP->sizeof_fpregset here.

gdb/ChangeLog
gdb/sparcnbsd-tdep.c

index 0c9cc01e8135a34edc70c132b6a49d6e510b41a3..9aa51000fe6c25938ffa944c8c8a0f2ef4df83f6 100644 (file)
@@ -1,3 +1,10 @@
+2004-01-25  Mark Kettenis  <kettenis@gnu.org>
+
+       * sparcnbsd-tdep.c (sparc32nbsd_supply_gregset): Also sipply the
+       floating-point registers for traditional NetBSD core files.
+       (sparc32nbsd_init_abi): Initialize TDEP->sizeof_gregset and
+       TDEP->sizeof_fpregset here.
+
 2004-01-25  Mark Kettenis  <kettenis@gnu.org>
 
        * sparc-tdep.h (sparc32nbsd_sigcontext_saved_regs): New prototype.
index 21b3aca8c65b01962198ff9228d093f59b1739db..7a23ff3134cda7e631675a45a916226c70cb0a28 100644 (file)
@@ -50,16 +50,18 @@ const struct sparc_gregset sparc32nbsd_gregset =
   -1                           /* %l0 */
 };
 
-/* Unlike other NetBSD implementations, the SPARC port historically
-   used .reg and .reg2 (see bfd/netbsd-core.c), and as such, we can
-   share one routine for a.out and ELF core files.  */
-
 static void
 sparc32nbsd_supply_gregset (const struct regset *regset,
                            struct regcache *regcache,
                            int regnum, const void *gregs, size_t len)
 {
   sparc32_supply_gregset (regset->descr, regcache, regnum, gregs);
+
+  /* Traditional NetBSD core files don't use multiple register sets.
+     Instead, the general-purpose and floating-point registers are
+     lumped together in a single section.  */
+  if (len >= 212)
+    sparc32_supply_fpregset (regcache, regnum, (const char *) gregs + 80);
 }
 
 static void
@@ -261,9 +263,11 @@ sparc32nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
   tdep->gregset = XMALLOC (struct regset);
   tdep->gregset->descr = &sparc32nbsd_gregset;
   tdep->gregset->supply_regset = sparc32nbsd_supply_gregset;
+  tdep->sizeof_gregset = 20 * 4;
 
   tdep->fpregset = XMALLOC (struct regset);
   tdep->fpregset->supply_regset = sparc32nbsd_supply_fpregset;
+  tdep->sizeof_fpregset = 33 * 4;
 
   set_gdbarch_pc_in_sigtramp (gdbarch, sparc32nbsd_pc_in_sigtramp);
   frame_unwind_append_sniffer (gdbarch, sparc32nbsd_sigtramp_frame_sniffer);