* vaxbsd-nat.c: Tweak comment.
* Makefile.in (ALLDEPFILES): Add vax-nat.c, vaxbsd-nat.c and
vaxnbsd-tdep.c.
(vax-nat.o): New dependency.
* configure.host (vax-*-bsd*, vax-*-ultrix*): Set gdb_host to vax.
(vax-*-ultrix2*): Remove.
* config/vax/vax.mh: New file.
* config/vax/nm-vax.h (vax_kernel_u_addr): New extern declaration.
(KERNEL_U_ADDR): Define as vax_kernel_u_addr.
(vax_register_u_addr): New prototype.
(REGISTER_U_ADDR): Define using vax_register_u_addr.
* config/vax/vaxult2.mh: Remove file.
* config/vax/vaxult.mh: Remove file.
* config/vax/vaxbsd.mh: Remove file.
* config/vax/vax.mt (TM_FILE): Remove.
* config/vax/tm-vaxbsd.h: Remove file.
+2004-08-06 Mark Kettenis <kettenis@gnu.org>
+
+ * vax-nat.c: New file.
+ * vaxbsd-nat.c: Tweak comment.
+ * Makefile.in (ALLDEPFILES): Add vax-nat.c, vaxbsd-nat.c and
+ vaxnbsd-tdep.c.
+ (vax-nat.o): New dependency.
+ * configure.host (vax-*-bsd*, vax-*-ultrix*): Set gdb_host to vax.
+ (vax-*-ultrix2*): Remove.
+ * config/vax/vax.mh: New file.
+ * config/vax/nm-vax.h (vax_kernel_u_addr): New extern declaration.
+ (KERNEL_U_ADDR): Define as vax_kernel_u_addr.
+ (vax_register_u_addr): New prototype.
+ (REGISTER_U_ADDR): Define using vax_register_u_addr.
+ * config/vax/vaxult2.mh: Remove file.
+ * config/vax/vaxult.mh: Remove file.
+ * config/vax/vaxbsd.mh: Remove file.
+ * config/vax/vax.mt (TM_FILE): Remove.
+ * config/vax/tm-vaxbsd.h: Remove file.
+
2004-08-06 Joel Brobecker <brobecker@gnat.com>
* aix-thread.c (get_signaled_thread): New function.
sparc64nbsd-nat.c sparc64nbsd-tdep.c sparc64obsd-tdep.c \
sparcnbsd-nat.c sparcnbsd-tdep.c sparcobsd-tdep.c \
symm-tdep.c symm-nat.c \
- vax-tdep.c \
+ vax-nat.c vax-tdep.c vaxbsd-nat.c vaxnbsd-tdep.c \
vx-share/xdr_ld.c vx-share/xdr_ptrace.c vx-share/xdr_rdb.c \
win32-nat.c \
xcoffread.c xcoffsolib.c \
$(vax_tdep_h) $(bsd_kvm_h)
vaxnbsd-tdep.o: vaxnbsd-tdep.c $(defs_h) $(arch_utils_h) $(osabi_h) \
$(vax_tdep_h) $(solib_svr4_h) $(gdb_string_h)
+vax-nat.o: vax-nat.c $(defs_h) $(inferior_h) $(gdb_assert_h) $(vax_tdep_h)
vax-tdep.o: vax-tdep.c $(defs_h) $(arch_utils_h) $(dis_asm_h) $(frame_h) \
$(frame_base_h) $(frame_unwind_h) $(gdbcore_h) $(gdbtypes_h) \
$(osabi_h) $(regcache_h) $(regset_h) $(trad_frame_h) $(value_h) \
-/* Common definitions for GDB native support on Vaxen under 4.2bsd and Ultrix.
- Copyright (C) 1986, 1987, 1989, 1992 Free Software Foundation, Inc.
+/* Native-dependent definitions for VAXen under 4.2 BSD and ULTRIX.
+
+ Copyright 1986, 1987, 1989, 1992, 2004 Free Software Foundation, Inc.
This file is part of GDB.
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#define AP_REGNUM 12 /* XXXJRT */
+#ifndef NM_VAX_H
+#define NM_VAX_H
+
+extern CORE_ADDR vax_kernel_u_addr;
+#define KERNEL_U_ADDR vax_kernel_u_addr
-/* This is the amount to subtract from u.u_ar0
- to get the offset in the core file of the register values. */
-#define KERNEL_U_ADDR (0x80000000 - (UPAGES * NBPG))
+extern CORE_ADDR vax_register_u_addr (CORE_ADDR u_ar0, int regnum);
+#define REGISTER_U_ADDR(addr, u_ar0, regnum) \
+ (addr) = vax_register_u_addr (u_ar0, regnum)
-#define REGISTER_U_ADDR(addr, blockend, regno) \
-{ addr = blockend - 0110 + regno * 4; \
- if (regno == PC_REGNUM) addr = blockend - 8; \
- if (regno == PS_REGNUM) addr = blockend - 4; \
- if (regno == DEPRECATED_FP_REGNUM) addr = blockend - 0120; \
- if (regno == AP_REGNUM) addr = blockend - 0124; \
- if (regno == SP_REGNUM) addr = blockend - 20; }
+#endif /* nm-vax.h */
+++ /dev/null
-/* Definitions to make GDB run on a vax under 4.2bsd.
-
- Copyright 1986, 1987, 1989, 1991, 1993, 1994, 1996, 1998, 1999,
- 2000, 2002, 2004 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_VAXBSD_H
-#define TM_VAXBSD_H
-
-#define TARGET_UPAGES 14
-#define TARGET_NBPG 512
-#define STACK_END_ADDR (0x80000000 - (TARGET_UPAGES * TARGET_NBPG))
-
-/* On the VAX, sigtramp is in the u area. Can't check the exact
- addresses because for cross-debugging we don't have VAX include
- files around. This should be close enough. */
-#define DEPRECATED_IN_SIGTRAMP(PC,FUNC_NAME) \
-((PC) >= (STACK_END_ADDR) && (PC) < (0x80000000))
-
-#endif /* TM_VAXBSD_H */
--- /dev/null
+# Host: VAX running 4.2BSD or Ultrix
+NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o core-aout.o
+NAT_FILE= nm-vax.h
-# Target: DEC VAX running BSD or Ultrix
+# Target: VAX running 4.2BSD or Ultrix
TDEPFILES= vax-tdep.o
-TM_FILE= tm-vaxbsd.h
+++ /dev/null
-# Host: DEC VAX running BSD
-
-# The following types of /bin/cc failures have been observed:
-# 1. Something in readline.c which I have never seen
-# 2. ``"values.c", line 816: compiler error: schain botch''
-#msg /bin/cc has been known to fail on VAXen running BSD4.3
-#msg If this occurs, use gcc
-#msg (but see comments in Makefile.dist about compiling with gcc).
-
-NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o core-aout.o
-
-NAT_FILE= nm-vax.h
+++ /dev/null
-# Host: DEC VAX running Ultrix
-
-NAT_FILE= nm-vax.h
-NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o core-aout.o
+++ /dev/null
-# Host: DEC VAX running Ultrix
-
-NAT_FILE= nm-vax.h
-NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o core-aout.o
gdb_host=sol2
;;
+vax-*-bsd*) gdb_host=vax ;;
vax-*-netbsdelf*) gdb_host=nbsdelf ;;
vax-*-netbsd*) gdb_host=nbsdaout ;;
vax-*-openbsd*) gdb_host=obsd ;;
-vax-*-bsd*) gdb_host=vaxbsd ;;
-vax-*-ultrix2*) gdb_host=vaxult2 ;;
-vax-*-ultrix*) gdb_host=vaxult ;;
+vax-*-ultrix*) gdb_host=vax ;;
x86_64-*-linux*) gdb_host=linux64 ;;
x86_64-*-freebsd*) gdb_host=fbsd64 ;;
--- /dev/null
+/* Native-dependent code for VAX UNIXen (including older BSD's).
+
+ Copyright 2004 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 "defs.h"
+#include "inferior.h"
+
+#include "gdb_assert.h"
+#include <sys/types.h>
+#include <sys/dir.h>
+#include <sys/user.h>
+
+#ifdef HAVE_SYS_PTRACE_H
+#include <sys/ptrace.h>
+#endif
+
+#ifndef PT_READ_U
+#define PT_READ_U 3
+#endif
+
+#ifdef SYS_REG_H
+/* UNIX 32V and derivatives (including 3BSD). */
+#include <sys/reg.h>
+#else
+/* 4.2BSD and derivatives. */
+#include <machine/reg.h>
+#endif
+
+#include "vax-tdep.h"
+
+/* Address of the user structure. This is the the value for 32V; 3BSD
+ uses a different value, but hey, who's still using those systems? */
+CORE_ADDR vax_kernel_u_addr = 0x80020000;
+
+/* Location of the user's stored registers; usage is `u.u_ar0[XX]'.
+ For 4.2BSD and ULTRIX these are negative! See <machine/reg.h>. */
+static int vax_register_index[] =
+{
+ R0, R1, R2, R3, R4, R5,
+ R6, R7, R8, R9, R10, R11,
+ AP, FP, SP, PC, PS
+};
+
+CORE_ADDR
+vax_register_u_addr (CORE_ADDR u_ar0, int regnum)
+{
+ gdb_assert (regnum >= 0 && regnum < ARRAY_SIZE (vax_register_index));
+
+ /* Type is `int *u_ar0'. See <sys/user.h>. */
+ return u_ar0 + vax_register_index[regnum - VAX_R0_REGNUM] * 4;
+}
+\f
+
+CORE_ADDR
+vax_register_u_offset (int regnum)
+{
+ size_t u_ar0_offset = offsetof (struct user, u_ar0);
+ CORE_ADDR u_ar0;
+ int pid;
+
+ errno = 0;
+ pid = PIDGET (inferior_ptid);
+ u_ar0 = ptrace (PT_READ_U, pid, u_ar0_offset, 0);
+ if (errno)
+ perror_with_name ("Unable to determine location of registers");
+
+ return vax_register_u_addr (u_ar0, regnum) - vax_kernel_u_addr;
+}
+\f
+
+#include <nlist.h>
+
+#ifndef _PATH_UNIX
+#define _PATH_UNIX "/vmunix"
+#endif
+
+/* Provide a prototype to silence -Wmissing-prototypes. */
+void _initialize_vax_nat (void);
+
+void
+_initialize_vax_nat (void)
+{
+ struct nlist names[2];
+
+ names[0].n_name = "_u";
+ names[1].n_name = NULL;
+ if (nlist (_PATH_UNIX, names) == 0)
+ vax_kernel_u_addr = names[0].n_value;
+}
-/* Native-dependent code for VAX BSD's.
+/* Native-dependent code for modern VAX BSD's.
Copyright 2004 Free Software Foundation, Inc.