diff options
Diffstat (limited to 'devel/gdb/files/commit-b268007c68')
-rw-r--r-- | devel/gdb/files/commit-b268007c68 | 191 |
1 files changed, 0 insertions, 191 deletions
diff --git a/devel/gdb/files/commit-b268007c68 b/devel/gdb/files/commit-b268007c68 index ea8891cf3b2b..86eb3c8971a8 100644 --- a/devel/gdb/files/commit-b268007c68 +++ b/devel/gdb/files/commit-b268007c68 @@ -189,194 +189,3 @@ index 0000000000..0472df88f4 + t->to_store_registers = mips_fbsd_store_inferior_registers; + fbsd_nat_add_target (t); +} -commit acde9e8dc95a053909e137c1fcda94c719eb8cc1 -Author: John Baldwin <jhb@FreeBSD.org> -Date: Wed Jan 4 09:41:58 2017 -0800 - - Add native target for FreeBSD/mips. - - This supports the o32 and n64 ABIs. - - gdb/ChangeLog: - - * Makefile.in (ALLDEPFILES): Add mips-fbsd-nat.c. - * NEWS: Mention new FreeBSD/mips native configuration. - * config/mips/fbsd.mh: New file. - * configure.host: Add mips*-*-freebsd*. - * mips-fbsd-nat.c: New file. - -diff --git gdb/Makefile.in gdb/Makefile.in -index 300c2cb702..433dd1203a 100644 ---- gdb/Makefile.in -+++ gdb/Makefile.in -@@ -1725,6 +1725,7 @@ ALLDEPFILES = \ - m88k-tdep.c m88kbsd-nat.c \ - microblaze-tdep.c microblaze-linux-tdep.c \ - mingw-hdep.c common/mingw-strerror.c \ -+ mips-fbsd-nat.c \ - mips-fbsd-tdep.c \ - mips-linux-nat.c mips-linux-tdep.c \ - mips-sde-tdep.c \ -diff --git gdb/config/mips/fbsd.mh gdb/config/mips/fbsd.mh -new file mode 100644 -index 0000000000..f433347a20 ---- /dev/null -+++ gdb/config/mips/fbsd.mh -@@ -0,0 +1,3 @@ -+# Host: FreeBSD/mips -+NATDEPFILES= fork-child.o inf-ptrace.o fbsd-nat.o mips-fbsd-nat.o -+HAVE_NATIVE_GCORE_HOST = 1 -diff --git gdb/configure.host gdb/configure.host -index ef265ebe29..c45f61dbba 100644 ---- gdb/configure.host -+++ gdb/configure.host -@@ -129,6 +129,7 @@ m88*-*-openbsd*) gdb_host=obsd ;; - mips*-*-linux*) gdb_host=linux ;; - mips*-*-netbsd* | mips*-*-knetbsd*-gnu) - gdb_host=nbsd ;; -+mips*-*-freebsd*) gdb_host=fbsd ;; - mips64*-*-openbsd*) gdb_host=obsd64 ;; - - powerpc-*-aix* | rs6000-*-* | powerpc64-*-aix*) -diff --git gdb/mips-fbsd-nat.c gdb/mips-fbsd-nat.c -new file mode 100644 -index 0000000000..0472df88f4 ---- /dev/null -+++ gdb/mips-fbsd-nat.c -@@ -0,0 +1,136 @@ -+/* Native-dependent code for FreeBSD/mips. -+ -+ Copyright (C) 2017 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 3 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, see <http://www.gnu.org/licenses/>. */ -+ -+#include "defs.h" -+#include "inferior.h" -+#include "regcache.h" -+#include "target.h" -+ -+#include <sys/types.h> -+#include <sys/ptrace.h> -+#include <machine/reg.h> -+ -+#include "fbsd-nat.h" -+#include "mips-tdep.h" -+#include "mips-fbsd-tdep.h" -+#include "inf-ptrace.h" -+ -+/* Determine if PT_GETREGS fetches this register. */ -+ -+static bool -+getregs_supplies (struct gdbarch *gdbarch, int regnum) -+{ -+ return (regnum >= MIPS_ZERO_REGNUM -+ && regnum <= gdbarch_pc_regnum (gdbarch)); -+} -+ -+/* Fetch register REGNUM from the inferior. If REGNUM is -1, do this -+ for all registers. */ -+ -+static void -+mips_fbsd_fetch_inferior_registers (struct target_ops *ops, -+ struct regcache *regcache, int regnum) -+{ -+ struct gdbarch *gdbarch = get_regcache_arch (regcache); -+ if (regnum == -1 || getregs_supplies (gdbarch, regnum)) -+ { -+ struct reg regs; -+ -+ if (ptrace (PT_GETREGS, get_ptrace_pid (inferior_ptid), -+ (PTRACE_TYPE_ARG3) ®s, 0) == -1) -+ perror_with_name (_("Couldn't get registers")); -+ -+ mips_fbsd_supply_gregs (regcache, regnum, ®s, sizeof (register_t)); -+ if (regnum != -1) -+ return; -+ } -+ -+ if (regnum == -1 -+ || regnum >= gdbarch_fp0_regnum (get_regcache_arch (regcache))) -+ { -+ struct fpreg fpregs; -+ -+ if (ptrace (PT_GETFPREGS, get_ptrace_pid (inferior_ptid), -+ (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) -+ perror_with_name (_("Couldn't get floating point status")); -+ -+ mips_fbsd_supply_fpregs (regcache, regnum, &fpregs, -+ sizeof (f_register_t)); -+ } -+} -+ -+/* Store register REGNUM back into the inferior. If REGNUM is -1, do -+ this for all registers. */ -+ -+static void -+mips_fbsd_store_inferior_registers (struct target_ops *ops, -+ struct regcache *regcache, int regnum) -+{ -+ struct gdbarch *gdbarch = get_regcache_arch (regcache); -+ if (regnum == -1 || getregs_supplies (gdbarch, regnum)) -+ { -+ struct reg regs; -+ -+ if (ptrace (PT_GETREGS, get_ptrace_pid (inferior_ptid), -+ (PTRACE_TYPE_ARG3) ®s, 0) == -1) -+ perror_with_name (_("Couldn't get registers")); -+ -+ mips_fbsd_collect_gregs (regcache, regnum, (char *) ®s, -+ sizeof (register_t)); -+ -+ if (ptrace (PT_SETREGS, get_ptrace_pid (inferior_ptid), -+ (PTRACE_TYPE_ARG3) ®s, 0) == -1) -+ perror_with_name (_("Couldn't write registers")); -+ -+ if (regnum != -1) -+ return; -+ } -+ -+ if (regnum == -1 -+ || regnum >= gdbarch_fp0_regnum (get_regcache_arch (regcache))) -+ { -+ struct fpreg fpregs; -+ -+ if (ptrace (PT_GETFPREGS, get_ptrace_pid (inferior_ptid), -+ (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) -+ perror_with_name (_("Couldn't get floating point status")); -+ -+ mips_fbsd_collect_fpregs (regcache, regnum, (char *) &fpregs, -+ sizeof (f_register_t)); -+ -+ if (ptrace (PT_SETFPREGS, get_ptrace_pid (inferior_ptid), -+ (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) -+ perror_with_name (_("Couldn't write floating point status")); -+ } -+} -+ -+ -+/* Provide a prototype to silence -Wmissing-prototypes. */ -+void _initialize_mips_fbsd_nat (void); -+ -+void -+_initialize_mips_fbsd_nat (void) -+{ -+ struct target_ops *t; -+ -+ t = inf_ptrace_target (); -+ t->to_fetch_registers = mips_fbsd_fetch_inferior_registers; -+ t->to_store_registers = mips_fbsd_store_inferior_registers; -+ fbsd_nat_add_target (t); -+} |