Add method/format information to =record-started
[deliverable/binutils-gdb.git] / gdb / mipsnbsd-tdep.c
index 6184e586d2b5a61fe1e102fa6a906c6099963d4f..48349957fc68137306169fd08dcd01d0a3248ef3 100644 (file)
@@ -1,7 +1,6 @@
 /* Target-dependent code for NetBSD/mips.
 
-   Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010
-   Free Software Foundation, Inc.
+   Copyright (C) 2002-2016 Free Software Foundation, Inc.
 
    Contributed by Wasabi Systems, Inc.
 
@@ -28,9 +27,6 @@
 #include "value.h"
 #include "osabi.h"
 
-#include "gdb_assert.h"
-#include "gdb_string.h"
-
 #include "nbsd-tdep.h"
 #include "mipsnbsd-tdep.h"
 #include "mips-tdep.h"
@@ -60,7 +56,7 @@ mipsnbsd_supply_fpregset (const struct regset *regset,
                          int regnum, const void *fpregs, size_t len)
 {
   size_t regsize = mips_isa_regsize (get_regcache_arch (regcache));
-  const char *regs = fpregs;
+  const char *regs = (const char *) fpregs;
   int i;
 
   gdb_assert (len >= MIPSNBSD_NUM_FPREGS * regsize);
@@ -83,7 +79,7 @@ mipsnbsd_supply_gregset (const struct regset *regset,
                         const void *gregs, size_t len)
 {
   size_t regsize = mips_isa_regsize (get_regcache_arch (regcache));
-  const char *regs = gregs;
+  const char *regs = (const char *) gregs;
   int i;
 
   gdb_assert (len >= MIPSNBSD_NUM_GREGS * regsize);
@@ -104,36 +100,34 @@ mipsnbsd_supply_gregset (const struct regset *regset,
 
 /* NetBSD/mips register sets.  */
 
-static struct regset mipsnbsd_gregset =
+static const struct regset mipsnbsd_gregset =
 {
   NULL,
-  mipsnbsd_supply_gregset
+  mipsnbsd_supply_gregset,
+  NULL,
+  REGSET_VARIABLE_SIZE
 };
 
-static struct regset mipsnbsd_fpregset =
+static const struct regset mipsnbsd_fpregset =
 {
   NULL,
   mipsnbsd_supply_fpregset
 };
 
-/* Return the appropriate register set for the core section identified
-   by SECT_NAME and SECT_SIZE.  */
+/* Iterate over core file register note sections.  */
 
-static const struct regset *
-mipsnbsd_regset_from_core_section (struct gdbarch *gdbarch,
-                                  const char *sect_name, size_t sect_size)
+static void
+mipsnbsd_iterate_over_regset_sections (struct gdbarch *gdbarch,
+                                      iterate_over_regset_sections_cb *cb,
+                                      void *cb_data,
+                                      const struct regcache *regcache)
 {
   size_t regsize = mips_isa_regsize (gdbarch);
-  
-  if (strcmp (sect_name, ".reg") == 0
-      && sect_size >= MIPSNBSD_NUM_GREGS * regsize)
-    return &mipsnbsd_gregset;
 
-  if (strcmp (sect_name, ".reg2") == 0
-      && sect_size >= MIPSNBSD_NUM_FPREGS * regsize)
-    return &mipsnbsd_fpregset;
-
-  return NULL;
+  cb (".reg", MIPSNBSD_NUM_GREGS * regsize, &mipsnbsd_gregset,
+      NULL, cb_data);
+  cb (".reg2", MIPSNBSD_NUM_FPREGS * regsize, &mipsnbsd_fpregset,
+      NULL, cb_data);
 }
 \f
 
@@ -173,7 +167,8 @@ mipsnbsd_fill_reg (const struct regcache *regcache, char *regs, int regno)
 }
 
 void
-mipsnbsd_supply_fpreg (struct regcache *regcache, const char *fpregs, int regno)
+mipsnbsd_supply_fpreg (struct regcache *regcache,
+                      const char *fpregs, int regno)
 {
   struct gdbarch *gdbarch = get_regcache_arch (regcache);
   int i;
@@ -211,6 +206,8 @@ mipsnbsd_fill_fpreg (const struct regcache *regcache, char *fpregs, int regno)
                              * mips_isa_regsize (gdbarch)));
 }
 
+#if 0
+
 /* Under NetBSD/mips, signal handler invocations can be identified by the
    designated code sequence that is used to return from a signal handler.
    In particular, the return address of a signal handler points to the
@@ -244,6 +241,8 @@ static const unsigned char sigtramp_retcode_mipseb[RETCODE_SIZE] =
   0x00, 0x00, 0x00, 0x0c,      /* syscall */
 };
 
+#endif
+
 /* Figure out where the longjmp will land.  We expect that we have
    just entered longjmp and haven't yet setup the stack frame, so the
    args are still in the argument regs.  MIPS_A0_REGNUM points at the
@@ -262,9 +261,9 @@ mipsnbsd_get_longjmp_target (struct frame_info *frame, CORE_ADDR *pc)
   struct gdbarch *gdbarch = get_frame_arch (frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   CORE_ADDR jb_addr;
-  char *buf;
+  gdb_byte *buf;
 
-  buf = alloca (NBSD_MIPS_JB_ELEMENT_SIZE (gdbarch));
+  buf = (gdb_byte *) alloca (NBSD_MIPS_JB_ELEMENT_SIZE (gdbarch));
 
   jb_addr = get_frame_register_unsigned (frame, MIPS_A0_REGNUM);
 
@@ -357,8 +356,8 @@ static void
 mipsnbsd_init_abi (struct gdbarch_info info,
                    struct gdbarch *gdbarch)
 {
-  set_gdbarch_regset_from_core_section
-    (gdbarch, mipsnbsd_regset_from_core_section);
+  set_gdbarch_iterate_over_regset_sections
+    (gdbarch, mipsnbsd_iterate_over_regset_sections);
 
   set_gdbarch_get_longjmp_target (gdbarch, mipsnbsd_get_longjmp_target);
 
This page took 0.026099 seconds and 4 git commands to generate.