aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/config/powerpc/nbsd.mh5
-rw-r--r--gdb/config/powerpc/nbsd.mt3
-rw-r--r--gdb/config/powerpc/nm-nbsd.h29
-rw-r--r--gdb/config/powerpc/tm-nbsd.h27
-rw-r--r--gdb/config/powerpc/xm-nbsd.h22
-rw-r--r--gdb/configure.host1
-rw-r--r--gdb/configure.tgt1
-rw-r--r--gdb/ppcnbsd-nat.c135
9 files changed, 230 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 1994c25..efc6037 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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
index 0000000..e79f84a
--- /dev/null
+++ b/gdb/config/powerpc/nbsd.mh
@@ -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
index 0000000..12a6339
--- /dev/null
+++ b/gdb/config/powerpc/nbsd.mt
@@ -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
index 0000000..a07e14f
--- /dev/null
+++ b/gdb/config/powerpc/nm-nbsd.h
@@ -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
index 0000000..ae3418f
--- /dev/null
+++ b/gdb/config/powerpc/tm-nbsd.h
@@ -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
index 0000000..36ae321
--- /dev/null
+++ b/gdb/config/powerpc/xm-nbsd.h
@@ -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"
diff --git a/gdb/configure.host b/gdb/configure.host
index 2fab335..d489a3f 100644
--- a/gdb/configure.host
+++ b/gdb/configure.host
@@ -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 ;;
diff --git a/gdb/configure.tgt b/gdb/configure.tgt
index 00efd4d..88e45cf 100644
--- a/gdb/configure.tgt
+++ b/gdb/configure.tgt
@@ -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
index 0000000..b754fa7
--- /dev/null
+++ b/gdb/ppcnbsd-nat.c
@@ -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);
+}