From b9e1c0d643d9bf37ae9d91f57de5efdda204c803 Mon Sep 17 00:00:00 2001 From: Mark Kettenis Date: Fri, 6 Aug 2004 19:14:44 +0000 Subject: [PATCH] * 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. --- gdb/ChangeLog | 20 +++++ gdb/Makefile.in | 3 +- gdb/config/vax/nm-vax.h | 25 +++---- gdb/config/vax/tm-vaxbsd.h | 36 --------- gdb/config/vax/{vaxult.mh => vax.mh} | 5 +- gdb/config/vax/vax.mt | 3 +- gdb/config/vax/vaxbsd.mh | 12 --- gdb/config/vax/vaxult2.mh | 4 - gdb/configure.host | 5 +- gdb/vax-nat.c | 106 +++++++++++++++++++++++++++ gdb/vaxbsd-nat.c | 2 +- 11 files changed, 146 insertions(+), 75 deletions(-) delete mode 100644 gdb/config/vax/tm-vaxbsd.h rename gdb/config/vax/{vaxult.mh => vax.mh} (70%) delete mode 100644 gdb/config/vax/vaxbsd.mh delete mode 100644 gdb/config/vax/vaxult2.mh create mode 100644 gdb/vax-nat.c diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b3827633b7..ddbd4e7d94 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,23 @@ +2004-08-06 Mark Kettenis + + * 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 * aix-thread.c (get_signaled_thread): New function. diff --git a/gdb/Makefile.in b/gdb/Makefile.in index d4ff645e4c..eed7a88456 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -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) \ diff --git a/gdb/config/vax/nm-vax.h b/gdb/config/vax/nm-vax.h index b1d73b6ab5..78313cacaf 100644 --- a/gdb/config/vax/nm-vax.h +++ b/gdb/config/vax/nm-vax.h @@ -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. @@ -18,16 +19,14 @@ 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 index d9c97467ef..0000000000 --- a/gdb/config/vax/tm-vaxbsd.h +++ /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 */ diff --git a/gdb/config/vax/vaxult.mh b/gdb/config/vax/vax.mh similarity index 70% rename from gdb/config/vax/vaxult.mh rename to gdb/config/vax/vax.mh index b85e9ec912..5ac1c0eb68 100644 --- a/gdb/config/vax/vaxult.mh +++ b/gdb/config/vax/vax.mh @@ -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 diff --git a/gdb/config/vax/vax.mt b/gdb/config/vax/vax.mt index 06ab9b2b82..4d7af45813 100644 --- a/gdb/config/vax/vax.mt +++ b/gdb/config/vax/vax.mt @@ -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 index 4f0667b118..0000000000 --- a/gdb/config/vax/vaxbsd.mh +++ /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 index b85e9ec912..0000000000 --- a/gdb/config/vax/vaxult2.mh +++ /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 diff --git a/gdb/configure.host b/gdb/configure.host index 71436bf891..fbd6285562 100644 --- a/gdb/configure.host +++ b/gdb/configure.host @@ -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 index 0000000000..9dc0c51fa0 --- /dev/null +++ b/gdb/vax-nat.c @@ -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 +#include +#include + +#ifdef HAVE_SYS_PTRACE_H +#include +#endif + +#ifndef PT_READ_U +#define PT_READ_U 3 +#endif + +#ifdef SYS_REG_H +/* UNIX 32V and derivatives (including 3BSD). */ +#include +#else +/* 4.2BSD and derivatives. */ +#include +#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 . */ +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 . */ + return u_ar0 + vax_register_index[regnum - VAX_R0_REGNUM] * 4; +} + + +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; +} + + +#include + +#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; +} diff --git a/gdb/vaxbsd-nat.c b/gdb/vaxbsd-nat.c index 0529f3eec7..9f59920043 100644 --- a/gdb/vaxbsd-nat.c +++ b/gdb/vaxbsd-nat.c @@ -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. -- 2.34.1