OSDN Git Service

* vax-nat.c: New file.
authorkettenis <kettenis>
Fri, 6 Aug 2004 19:14:42 +0000 (19:14 +0000)
committerkettenis <kettenis>
Fri, 6 Aug 2004 19:14:42 +0000 (19:14 +0000)
* 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.

gdb/ChangeLog
gdb/Makefile.in
gdb/config/vax/nm-vax.h
gdb/config/vax/tm-vaxbsd.h [deleted file]
gdb/config/vax/vax.mh [moved from gdb/config/vax/vaxult.mh with 70% similarity]
gdb/config/vax/vax.mt
gdb/config/vax/vaxbsd.mh [deleted file]
gdb/config/vax/vaxult2.mh [deleted file]
gdb/configure.host
gdb/vax-nat.c [new file with mode: 0644]
gdb/vaxbsd-nat.c

index b382763..ddbd4e7 100644 (file)
@@ -1,3 +1,23 @@
+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.
index d4ff645..eed7a88 100644 (file)
@@ -1406,7 +1406,7 @@ ALLDEPFILES = \
        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 \
@@ -2640,6 +2640,7 @@ vaxbsd-nat.o: vaxbsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
        $(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) \
index b1d73b6..78313ca 100644 (file)
@@ -1,5 +1,6 @@
-/* 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 */
diff --git a/gdb/config/vax/tm-vaxbsd.h b/gdb/config/vax/tm-vaxbsd.h
deleted file mode 100644 (file)
index d9c9746..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/* 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 */
similarity index 70%
rename from gdb/config/vax/vaxult.mh
rename to gdb/config/vax/vax.mh
index b85e9ec..5ac1c0e 100644 (file)
@@ -1,4 +1,3 @@
-# Host: DEC VAX running Ultrix
-
-NAT_FILE= nm-vax.h
+# 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
index 06ab9b2..4d7af45 100644 (file)
@@ -1,3 +1,2 @@
-# Target: DEC VAX running BSD or Ultrix
+# Target: VAX running 4.2BSD or Ultrix
 TDEPFILES= vax-tdep.o
-TM_FILE= tm-vaxbsd.h
diff --git a/gdb/config/vax/vaxbsd.mh b/gdb/config/vax/vaxbsd.mh
deleted file mode 100644 (file)
index 4f0667b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# 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
diff --git a/gdb/config/vax/vaxult2.mh b/gdb/config/vax/vaxult2.mh
deleted file mode 100644 (file)
index b85e9ec..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-# Host: DEC VAX running Ultrix
-
-NAT_FILE= nm-vax.h
-NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o core-aout.o
index 71436bf..fbd6285 100644 (file)
@@ -133,12 +133,11 @@ sparc-*-solaris2* | sparcv9-*-solaris2* | sparc64-*-solaris2*)
                        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 ;;
diff --git a/gdb/vax-nat.c b/gdb/vax-nat.c
new file mode 100644 (file)
index 0000000..9dc0c51
--- /dev/null
@@ -0,0 +1,106 @@
+/* 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;
+}
index 0529f3e..9f59920 100644 (file)
@@ -1,4 +1,4 @@
-/* Native-dependent code for VAX BSD's.
+/* Native-dependent code for modern VAX BSD's.
 
    Copyright 2004 Free Software Foundation, Inc.