* configure.host, configure.tgt (powerpc-*-netbsd*): New entry.
authorJ.T. Conklin <jtc@acorntoolworks.com>
Thu, 18 May 2000 23:43:58 +0000 (23:43 +0000)
committerJ.T. Conklin <jtc@acorntoolworks.com>
Thu, 18 May 2000 23:43:58 +0000 (23:43 +0000)
* config/powerpc/nbsd.mh, config/powerpc/nbsd.mt,
config/powerpc/tm-nbsd.h, config/powerpc/nm-nbsd.h,
config/powerpc/xm-nbsd.h: New files.

gdb/ChangeLog
gdb/config/powerpc/nbsd.mh [new file with mode: 0644]
gdb/config/powerpc/nbsd.mt [new file with mode: 0644]
gdb/config/powerpc/nm-nbsd.h [new file with mode: 0644]
gdb/config/powerpc/tm-nbsd.h [new file with mode: 0644]
gdb/config/powerpc/xm-nbsd.h [new file with mode: 0644]
gdb/configure.host
gdb/configure.tgt
gdb/ppcnbsd-nat.c [new file with mode: 0644]

index 1994c25..efc6037 100644 (file)
@@ -1,3 +1,10 @@
+2000-05-18  J.T. Conklin  <jtc@redback.com>
+
+       * configure.host, configure.tgt (powerpc-*-netbsd*): New entry.
+       * config/powerpc/nbsd.mh, config/powerpc/nbsd.mt,
+       config/powerpc/tm-nbsd.h, config/powerpc/nm-nbsd.h,
+       config/powerpc/xm-nbsd.h: New files.
+
 2000-05-17  Eli Zaretskii  <eliz@is.elta.co.il>
 
        * gdb/config/djgpp/README: Fine-tune installation instructions
diff --git a/gdb/config/powerpc/nbsd.mh b/gdb/config/powerpc/nbsd.mh
new file mode 100644 (file)
index 0000000..e79f84a
--- /dev/null
@@ -0,0 +1,5 @@
+# Host: PowerPC, running NetBSD
+XDEPFILES= ser-tcp.o
+NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o solib.o ppcnbsd-nat.o
+XM_FILE= xm-nbsd.h
+NAT_FILE= nm-nbsd.h
diff --git a/gdb/config/powerpc/nbsd.mt b/gdb/config/powerpc/nbsd.mt
new file mode 100644 (file)
index 0000000..12a6339
--- /dev/null
@@ -0,0 +1,3 @@
+# Target: Sun 4 or Sparcstation, running NetBSD
+TDEPFILES= rs6000-tdep.o # ppcnbsd-tdep.o
+TM_FILE= tm-nbsd.h
diff --git a/gdb/config/powerpc/nm-nbsd.h b/gdb/config/powerpc/nm-nbsd.h
new file mode 100644 (file)
index 0000000..a07e14f
--- /dev/null
@@ -0,0 +1,29 @@
+/* Native-dependent definitions for PowerPC running NetBSD ELF, for GDB.
+   Copyright (C) 2000, Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef NM_NBSD_H
+#define NM_NBSD_H
+
+#define SVR4_SHARED_LIBS
+
+/* Get generic NetBSD native definitions. */
+#include "nm-nbsd.h"
+
+#endif
diff --git a/gdb/config/powerpc/tm-nbsd.h b/gdb/config/powerpc/tm-nbsd.h
new file mode 100644 (file)
index 0000000..ae3418f
--- /dev/null
@@ -0,0 +1,27 @@
+/* Macro definitions for PowerPC running under NetBSD.
+   Copyright 2000 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef TM_NBSD_H
+#define TM_NBSD_H
+
+#include "powerpc/tm-ppc-eabi.h"
+#include "tm-nbsd.h"
+
+#endif /* TM_NBSD_H */
diff --git a/gdb/config/powerpc/xm-nbsd.h b/gdb/config/powerpc/xm-nbsd.h
new file mode 100644 (file)
index 0000000..36ae321
--- /dev/null
@@ -0,0 +1,22 @@
+/* Parameters for execution on a PowerPC running NetBSD, for GDB.
+   Copyright 2000 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* Get generic NetBSD host definitions. */
+#include "xm-nbsd.h"
index 2fab335..d489a3f 100644 (file)
@@ -135,6 +135,7 @@ powerpc-*-aix*)             gdb_host=aix ;;
 powerpcle-*-cygwin*)   gdb_host=cygwin ;;
 powerpcle-*-solaris*)  gdb_host=solaris ;;
 powerpc-*-linux*)      gdb_host=linux ;;
+powerpc-*-netbsd*)     gdb_host=nbsd ;;
 
 # OBSOLETE pn-*-*)             gdb_host=pn ;;
 
index 00efd4d..88e45cf 100644 (file)
@@ -217,6 +217,7 @@ ns32k-utek-sysv*)   gdb_target=merlin ;;
 ns32k-utek-*)          gdb_target=umax ;;
 
 powerpc-*-macos*)      gdb_target=macos ;;
+powerpc-*-netbsd*)     gdb_target=nbsd ;;
 powerpc-*-netware*)    gdb_target=ppc-nw
                        configdirs="${configdirs} nlm" ;;
 
diff --git a/gdb/ppcnbsd-nat.c b/gdb/ppcnbsd-nat.c
new file mode 100644 (file)
index 0000000..b754fa7
--- /dev/null
@@ -0,0 +1,135 @@
+/* Native-dependent code for PowerPC's running NetBSD, for GDB.
+   Copyright 1988, 1989, 1991, 1992, 1994, 1996, 2000 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <sys/types.h>
+#include <sys/ptrace.h>
+#include <machine/reg.h>
+#include <machine/frame.h>
+
+#include "defs.h"
+#include "inferior.h"
+#include "gdbcore.h"
+
+#define RF(dst, src) \
+        memcpy(&registers[REGISTER_BYTE(dst)], &src, sizeof(src))
+   
+#define RS(src, dst) \
+        memcpy(&dst, &registers[REGISTER_BYTE(src)], sizeof(dst))
+
+void
+fetch_inferior_registers (regno)
+     int regno;
+{
+  struct reg inferior_registers;
+  struct fpreg inferior_fp_registers;
+  int i;
+
+  ptrace (PT_GETREGS, inferior_pid,
+         (PTRACE_ARG3_TYPE) & inferior_registers, 0);
+  for (i = 0; i < 32; i++)
+    RF (i, inferior_registers.fixreg[i]);
+  RF (LR_REGNUM, inferior_registers.lr);
+  RF (CR_REGNUM, inferior_registers.cr);
+  RF (XER_REGNUM, inferior_registers.xer);
+  RF (CTR_REGNUM, inferior_registers.ctr);
+  RF (PC_REGNUM, inferior_registers.pc);
+
+  ptrace (PT_GETFPREGS, inferior_pid,
+         (PTRACE_ARG3_TYPE) & inferior_fp_registers, 0);
+  for (i = 0; i < 32; i++)
+    RF (FP0_REGNUM + i, inferior_fp_registers.r_regs[i]);
+
+  registers_fetched ();
+}
+
+void
+store_inferior_registers (regno)
+     int regno;
+{
+  struct reg inferior_registers;
+  struct fpreg inferior_fp_registers;
+  int i;
+
+  for (i = 0; i < 32; i++)
+    RS (i, inferior_registers.fixreg[i]);
+  RS (LR_REGNUM, inferior_registers.lr);
+  RS (CR_REGNUM, inferior_registers.cr);
+  RS (XER_REGNUM, inferior_registers.xer);
+  RS (CTR_REGNUM, inferior_registers.ctr);
+  RS (PC_REGNUM, inferior_registers.pc);
+
+  ptrace (PT_SETREGS, inferior_pid,
+         (PTRACE_ARG3_TYPE) & inferior_registers, 0);
+
+  for (i = 0; i < 32; i++)
+    RS (FP0_REGNUM + i, inferior_fp_registers.r_regs[i]);
+  ptrace (PT_SETFPREGS, inferior_pid,
+         (PTRACE_ARG3_TYPE) & inferior_fp_registers, 0);
+}
+
+struct md_core
+{
+  struct reg intreg;
+  struct fpreg freg;
+};
+
+void
+fetch_core_registers (core_reg_sect, core_reg_size, which, ignore)
+     char *core_reg_sect;
+     unsigned core_reg_size;
+     int which;
+     CORE_ADDR ignore;
+{
+  struct md_core *core_reg = (struct md_core *) core_reg_sect;
+  int i;
+
+  /* Integer registers */
+  for (i = 0; i < 32; i++)
+    RF (i, core_reg->intreg.fixreg[i]);
+  RF (LR_REGNUM, core_reg->intreg.lr);
+  RF (CR_REGNUM, core_reg->intreg.cr);
+  RF (XER_REGNUM, core_reg->intreg.xer);
+  RF (CTR_REGNUM, core_reg->intreg.ctr);
+  RF (PC_REGNUM, core_reg->intreg.pc);
+
+  /* Floating point registers */
+  for (i = 0; i < 32; i++)
+    RF (FP0_REGNUM + i, core_reg->freg.r_regs[i]);
+
+  registers_fetched ();
+}
+
+/* Register that we are able to handle ppcnbsd core file formats.
+   FIXME: is this really bfd_target_unknown_flavour? */
+
+static struct core_fns ppcnbsd_core_fns =
+{
+  bfd_target_unknown_flavour,          /* core_flavour */
+  default_check_format,                        /* check_format */
+  default_core_sniffer,                        /* core_sniffer */
+  fetch_core_registers,                        /* core_read_registers */
+  NULL                                 /* next */
+};
+
+void
+_initialize_ppcnbsd_nat ()
+{
+  add_core_fns (&ppcnbsd_core_fns);
+}