* solib-svr4.c (LM_ADDR_CHECK): Relax prelink recognition heuristic.
[deliverable/binutils-gdb.git] / gdb / shnbsd-nat.c
index 8a2ded3735215d264669e512e5951a73b62439a9..3236bb7b1cfbc1bbc0c98d3b2a2da3000cb6560c 100644 (file)
@@ -1,6 +1,7 @@
-/* Native-dependent code for SuperH running NetBSD, for GDB.
+/* Native-dependent code for NetBSD/sh.
+
+   Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
 
-   Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
    Contributed by Wasabi Systems, Inc.
 
    This file is part of GDB.
    Foundation, Inc., 51 Franklin Street, Fifth Floor,
    Boston, MA 02110-1301, USA.  */
 
+#include "defs.h"
+#include "inferior.h"
+
 #include <sys/types.h>
 #include <sys/ptrace.h>
 #include <machine/reg.h>
 
-#include "defs.h"
-#include "inferior.h"
-
 #include "sh-tdep.h"
 #include "shnbsd-tdep.h"
+#include "inf-ptrace.h"
+#include "regcache.h"
+
 
 /* Determine if PT_GETREGS fetches this register. */
 #define GETREGS_SUPPLIES(regno) \
   (((regno) >= R0_REGNUM && (regno) <= (R0_REGNUM + 15)) \
-|| (regno) == PC_REGNUM || (regno) == PR_REGNUM \
+|| (regno) == gdbarch_pc_regnum (current_gdbarch) || (regno) == PR_REGNUM \
 || (regno) == MACH_REGNUM || (regno) == MACL_REGNUM \
 || (regno) == SR_REGNUM)
 
-void
-fetch_inferior_registers (int regno)
+static void
+shnbsd_fetch_inferior_registers (struct regcache *regcache, int regno)
 {
   if (regno == -1 || GETREGS_SUPPLIES (regno))
     {
@@ -48,15 +52,15 @@ fetch_inferior_registers (int regno)
                  (PTRACE_TYPE_ARG3) &inferior_registers, 0) == -1)
        perror_with_name (_("Couldn't get registers"));
 
-      shnbsd_supply_reg ((char *) &inferior_registers, regno);
+      shnbsd_supply_reg (regcache, (char *) &inferior_registers, regno);
 
       if (regno != -1)
        return;
     }
 }
 
-void
-store_inferior_registers (int regno)
+static void
+shnbsd_store_inferior_registers (struct regcache *regcache, int regno)
 {
   if (regno == -1 || GETREGS_SUPPLIES (regno))
     {
@@ -66,7 +70,7 @@ store_inferior_registers (int regno)
                  (PTRACE_TYPE_ARG3) &inferior_registers, 0) == -1)
        perror_with_name (_("Couldn't get registers"));
 
-      shnbsd_fill_reg ((char *) &inferior_registers, regno);
+      shnbsd_fill_reg (regcache, (char *) &inferior_registers, regno);
 
       if (ptrace (PT_SETREGS, PIDGET (inferior_ptid),
                  (PTRACE_TYPE_ARG3) &inferior_registers, 0) == -1)
@@ -76,3 +80,17 @@ store_inferior_registers (int regno)
        return;
     }
 }
+
+/* Provide a prototype to silence -Wmissing-prototypes.  */
+void _initialize_shnbsd_nat (void);
+
+void
+_initialize_shnbsd_nat (void)
+{
+  struct target_ops *t;
+
+  t = inf_ptrace_target ();
+  t->to_fetch_registers = shnbsd_fetch_inferior_registers;
+  t->to_store_registers = shnbsd_store_inferior_registers;
+  add_target (t);
+}
This page took 0.024449 seconds and 4 git commands to generate.