Update comment for struct type's length field, introduce type_length_units
[deliverable/binutils-gdb.git] / gdb / mipsnbsd-tdep.c
index 3a7c8570e775e5f20812ebb15acab07f063d7281..d15c88c602a1bf43517d3e2cbd9bd9b4239a99c8 100644 (file)
@@ -1,7 +1,6 @@
 /* Target-dependent code for NetBSD/mips.
 
-   Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011
-   Free Software Foundation, Inc.
+   Copyright (C) 2002-2015 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"
@@ -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
 
@@ -212,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
@@ -245,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
@@ -263,7 +261,7 @@ 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));
 
@@ -358,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.030446 seconds and 4 git commands to generate.