summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrahnds <rahnds@openbsd.org>1998-08-07 02:02:32 +0000
committerrahnds <rahnds@openbsd.org>1998-08-07 02:02:32 +0000
commit4fca75ec0b45541d7ced8fc21f315b29f79bd46d (patch)
treecf2558204212d2b5f3d4a3b13cea06ce3d2868a3
parentDo not build the libiberty version of vasprintf, use the version that is (diff)
downloadwireguard-openbsd-4fca75ec0b45541d7ced8fc21f315b29f79bd46d.tar.xz
wireguard-openbsd-4fca75ec0b45541d7ced8fc21f315b29f79bd46d.zip
Support pieces for gdb to work on the powerpc port.
-rw-r--r--gnu/usr.bin/binutils/gdb/config/powerpc/nm-obsd.h150
-rw-r--r--gnu/usr.bin/binutils/gdb/config/powerpc/obsd.mh13
-rw-r--r--gnu/usr.bin/binutils/gdb/config/powerpc/xm-obsd.h3
-rw-r--r--gnu/usr.bin/binutils/gdb/ppcobsd-nat.c103
4 files changed, 252 insertions, 17 deletions
diff --git a/gnu/usr.bin/binutils/gdb/config/powerpc/nm-obsd.h b/gnu/usr.bin/binutils/gdb/config/powerpc/nm-obsd.h
index 656cc6c4533..12648bf65f7 100644
--- a/gnu/usr.bin/binutils/gdb/config/powerpc/nm-obsd.h
+++ b/gnu/usr.bin/binutils/gdb/config/powerpc/nm-obsd.h
@@ -1,6 +1,5 @@
-/* Definitions for running gdb on a host machine running any flavor of SVR4.
- Copyright 1991, 1992 Free Software Foundation, Inc.
- Written by Fred Fish at Cygnus Support (fnf@cygnus.com).
+/* Native-dependent definitions for OpenBSD.
+ Copyright 1994, 1996 Free Software Foundation, Inc.
This file is part of GDB.
@@ -18,20 +17,145 @@ 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 "solib.h" /* Support for shared libraries. */
+/* "Support" the Net- and OpenBSD-specific "-k" option. */
+#define ADDITIONAL_OPTIONS {"k", no_argument, 0, 'k'},
+#define ADDITIONAL_OPTION_CASES case 'k': \
+ fprintf_unfiltered (gdb_stderr, \
+"-k: obsolete option. For kernel debugging, start gdb\n" \
+"with just the kernel name as an argument (no core file)\n" \
+"and then use the gdb command `target kcore COREFILE'.\n"); \
+ exit (1);
+/* End of "-k" stuff. */
-/* Use SVR4 style shared library support */
+#define ATTACH_DETACH
-#define SVR4_SHARED_LIBS
+/* Use this instead of KERNEL_U_ADDR (See gdb/infptrace.c) */
+#define KERNEL_U_ADDR 0
+#define FETCH_INFERIOR_REGISTERS
-/* SVR4 has /proc support, so use it instead of ptrace. */
-/* On OpenBSD we prefer ptrace */
+/* This enables functions needed by kcore-nbsd.c */
+#define FETCH_KCORE_REGISTERS
-#undef USE_PROC_FS
+#define PTRACE_ARG3_TYPE char*
-/* SVR4 machines can easily do attach and detach via /proc (procfs.c)
- support */
+#if 0
+#include "solib.h" /* Support for shared libraries. */
+#endif
-#define ATTACH_DETACH
+/*
+ * fix this later
+ */
+#if 0
+#ifdef SVR4_SHARED_LIBS
+/* The Net- and OpenBSD link.h structure definitions have different names
+ than the SunOS version, but the structures are very similar,
+ so we can use solib.c by defining the SunOS names. */
+#define link_object sod
+#define lo_name sod_name
+#define lo_library sod_library
+#define lo_unused sod_reserved
+#define lo_major sod_major
+#define lo_minor sod_minor
+#define lo_next sod_next
+
+#define link_map so_map
+#define l_addr som_addr
+#define l_name som_path
+#define l_next som_next
+#define lm_lop som_sod
+#define lm_lob som_sodbase
+#define l_prev som_sodbase
+#define lm_rwt som_write
+#define lm_ld som_dynamic
+#define lm_lpd som_spd
+
+#define link_dynamic_2 section_dispatch_table
+#define ld_loaded sdt_loaded
+#define ld_need sdt_sods
+#define ld_rules sdt_rules
+#define ld_got sdt_got
+#define ld_plt sdt_plt
+#define ld_rel sdt_rel
+#define ld_hash sdt_hash
+#define ld_stab sdt_nzlist
+#define ld_stab_hash sdt_filler2
+#define ld_buckets sdt_buckets
+#define ld_symbols sdt_strings
+#define ld_symb_size sdt_str_sz
+#define ld_text sdt_text_sz
+#define ld_plt_sz sdt_plt_sz
+
+#define rtc_symb rt_symbol
+#define rtc_sp rt_sp
+#define rtc_next rt_next
+
+#define r_debug so_debug
+#define ldd_version dd_version
+#define ldd_in_debugger dd_in_debugger
+#define ldd_sym_loaded dd_sym_loaded
+#define ldd_bp_addr dd_bpt_addr
+#define ldd_bp_inst dd_bpt_shadow
+#define ldd_cp dd_cc
+
+#define link_dynamic _dynamic
+#define ld_version d_version
+#define ldd d_debug
+#define ld_un d_un
+#define ld_2 d_sdt
+
+#else
+
+#define link_object sod
+#define lo_name sod_name
+#define lo_library sod_library
+#define lo_unused sod_reserved
+#define lo_major sod_major
+#define lo_minor sod_minor
+#define lo_next sod_next
+
+#define link_map so_map
+#define lm_addr som_addr
+#define lm_name som_path
+#define lm_next som_next
+#define lm_lop som_sod
+#define lm_lob som_sodbase
+#define lm_rwt som_write
+#define lm_ld som_dynamic
+#define lm_lpd som_spd
+
+#define link_dynamic_2 section_dispatch_table
+#define ld_loaded sdt_loaded
+#define ld_need sdt_sods
+#define ld_rules sdt_rules
+#define ld_got sdt_got
+#define ld_plt sdt_plt
+#define ld_rel sdt_rel
+#define ld_hash sdt_hash
+#define ld_stab sdt_nzlist
+#define ld_stab_hash sdt_filler2
+#define ld_buckets sdt_buckets
+#define ld_symbols sdt_strings
+#define ld_symb_size sdt_str_sz
+#define ld_text sdt_text_sz
+#define ld_plt_sz sdt_plt_sz
+
+#define rtc_symb rt_symbol
+#define rtc_sp rt_sp
+#define rtc_next rt_next
+
+#define ld_debug so_debug
+#define ldd_version dd_version
+#define ldd_in_debugger dd_in_debugger
+#define ldd_sym_loaded dd_sym_loaded
+#define ldd_bp_addr dd_bpt_addr
+#define ldd_bp_inst dd_bpt_shadow
+#define ldd_cp dd_cc
+
+#define link_dynamic _dynamic
+#define ld_version d_version
+#define ldd d_debug
+#define ld_un d_un
+#define ld_2 d_sdt
-#define KERNEL_U_ADDR ((u_int)(USER_ADDR))
+#endif /* SVR4_SHARED_LIBS */
+#endif
diff --git a/gnu/usr.bin/binutils/gdb/config/powerpc/obsd.mh b/gnu/usr.bin/binutils/gdb/config/powerpc/obsd.mh
index 6e3e5c84e20..29976b851ec 100644
--- a/gnu/usr.bin/binutils/gdb/config/powerpc/obsd.mh
+++ b/gnu/usr.bin/binutils/gdb/config/powerpc/obsd.mh
@@ -1,10 +1,15 @@
-# Host: PowerPC, running Linux
+# Host: PowerPC, running OpenBSD
-XM_FILE= xm-obsd.h
+XM_FILE= ../xm-obsd.h
XDEPFILES= ser-tcp.o
XM_CLIBS=
NAT_FILE= nm-obsd.h
-NATDEPFILES= obsdsolib.o corelow.o core-aout.o core-regset.o # infptrace.o inftarg.o fork-child.o
+NATDEPFILES= ppcobsd-nat.o corelow.o infptrace.o fork-child.o core-aout.o inftarg.o #core-regset.o
-#GDBSERVER_DEPFILES= low-linux.o
+GDBSERVER_DEPFILES=
+
+# SVR4 comes standard with terminfo, and in some implementations, the
+# old termcap descriptions are incomplete. So ensure that we use the
+# new terminfo interface and latest terminal descriptions.
+TERMCAP=-lcurses
diff --git a/gnu/usr.bin/binutils/gdb/config/powerpc/xm-obsd.h b/gnu/usr.bin/binutils/gdb/config/powerpc/xm-obsd.h
index 41c8ba71dc5..697e7ba1748 100644
--- a/gnu/usr.bin/binutils/gdb/config/powerpc/xm-obsd.h
+++ b/gnu/usr.bin/binutils/gdb/config/powerpc/xm-obsd.h
@@ -19,3 +19,6 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define HOST_BYTE_ORDER BIG_ENDIAN
+/*
+#define KERNEL_U_ADDR 0
+*/
diff --git a/gnu/usr.bin/binutils/gdb/ppcobsd-nat.c b/gnu/usr.bin/binutils/gdb/ppcobsd-nat.c
new file mode 100644
index 00000000000..978a3cd9d69
--- /dev/null
+++ b/gnu/usr.bin/binutils/gdb/ppcobsd-nat.c
@@ -0,0 +1,103 @@
+/* Functions specific to running gdb native on a Powerpc System.
+ Copyright (C) 1993, 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 <sys/param.h>
+#include <sys/signal.h> /* for MAXSIG in sys/user.h */
+#include <sys/types.h> /* for ushort in sys/dir.h */
+#include <sys/dir.h> /* for struct direct in sys/user.h */
+#include <sys/user.h>
+#include <machine/reg.h>
+#include "defs.h"
+#include "inferior.h"
+#include "target.h"
+#include "gdbcore.h"
+
+#include <nlist.h>
+
+#if !defined (offsetof)
+#define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER)
+#endif
+
+void
+fetch_inferior_registers (regno)
+ int regno;
+{
+ struct reg inferior_registers;
+
+/*
+ * this gets fp and gpr?
+ */
+
+ ptrace (PT_GETREGS, inferior_pid,
+ (PTRACE_ARG3_TYPE) &inferior_registers, 0);
+ memcpy (&registers, &inferior_registers,
+ sizeof(inferior_registers));
+
+
+ registers_fetched ();
+}
+
+void
+store_inferior_registers (regno)
+ int regno;
+{
+ struct reg inferior_registers;
+
+
+ memcpy (&inferior_registers, &registers,
+ sizeof(inferior_registers));
+ ptrace (PT_SETREGS, inferior_pid,
+ (PTRACE_ARG3_TYPE) &inferior_registers, 0);
+
+}
+/* Return the address in the core dump or inferior of register REGNO.
+ BLOCKEND is the address of the end of the user structure. */
+
+CORE_ADDR
+register_addr (regno, blockend)
+ int regno;
+ CORE_ADDR blockend;
+{
+ int ppcreg[] =
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* fp 0-15 */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* fp 16-31 */
+ 36, 37, 33, 32, 35, 34 , 0 };
+ /* "pc", "ps", "cnd", "lr", "cnt", "xer", "mq" */
+ /*
+ 32 lr
+ 33 cr
+ 34 xer
+ 35 ctr
+ 36 srr0
+ 37 srr1
+ */
+ if (regno < NUM_REGS) {
+ return (blockend + REGISTER_BYTE(regno));
+ } else
+ {
+ fprintf_unfiltered (gdb_stderr, "\
+Internal error: invalid register number %d in REGISTER_U_ADDR\n",
+ regno);
+ return blockend;
+ }
+}