* solib.c: *BSD systems need <a.out.h> to be included before

<link.h>.

* i386b-nat.c: Add i386_float_info(), etc.
* config/i386/nm-nbsd.h: #define FLOAT_INFO.

* config/nm-nbsd.h: New file, for generic NetBSD native support.
* config/i386/nm-nbsd.h: Use it.
* config/sparc/nm-nbsd.h: Use it.
* config/ns32k/nm-nbsd.h: Use it.

* configure.in (i386-*-netbsd): Use config/i386/nbsd.m[ht].
  (ns32k-*-netbsd): Use config/ns32k/nbsd.m[ht].
* config/i386/{nbsd.mh,nbsd.mt,nm-nbsd.h,tm-nbsd.h,xm-nbsd.h}:
  New files, support for NetBSD/i386.
* config/ns32k/{nbsd.mh,nbsd.mh,nm-nbsd.h,tm-nbsd.h,xm-nbsd.h}:
  New files, support for NetBSD/ns32k.
This commit is contained in:
J.T. Conklin 1994-09-23 22:30:31 +00:00
parent 4d61cba987
commit 84f652b150
16 changed files with 381 additions and 11 deletions

View File

@ -1,5 +1,27 @@
Fri Sep 23 14:58:49 1994 J.T. Conklin (jtc@rtl.cygnus.com)
* solib.c: *BSD systems need <a.out.h> to be included before
<link.h>.
* i386b-nat.c: Add i386_float_info(), etc.
* config/i386/nm-nbsd.h: #define FLOAT_INFO.
* config/nm-nbsd.h: New file, for generic NetBSD native support.
* config/i386/nm-nbsd.h: Use it.
* config/sparc/nm-nbsd.h: Use it.
* config/ns32k/nm-nbsd.h: Use it.
* configure.in (i386-*-netbsd): Use config/i386/nbsd.m[ht].
(ns32k-*-netbsd): Use config/ns32k/nbsd.m[ht].
* config/i386/{nbsd.mh,nbsd.mt,nm-nbsd.h,tm-nbsd.h,xm-nbsd.h}:
New files, support for NetBSD/i386.
* config/ns32k/{nbsd.mh,nbsd.mh,nm-nbsd.h,tm-nbsd.h,xm-nbsd.h}:
New files, support for NetBSD/ns32k.
Tue Sep 20 11:34:27 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
* .gdbinit: Add list-objfiles command.
* TODO: Reword item regarding NO_STD_REGS.
* coffread.c (record_minimal_symbol, coff_read_enum_type,

View File

@ -38,6 +38,7 @@ mips
nm-empty.h
nm-lynx.h
nm-m3.h
nm-nbsd.h
nm-sysv4.h
none
ns32k

View File

@ -50,6 +50,8 @@ i386v4.mh
i386v4.mt
linux.mh
linux.mt
nbsd.mh
nbsd.mt
ncr3000.mh
ncr3000.mt
nm-i386aix.h
@ -83,6 +85,7 @@ tm-i386os9k.h
tm-i386v.h
tm-i386v4.h
tm-linux.h
tm-nbsd.h
tm-ptx.h
tm-ptx4.h
tm-sun386.h
@ -99,6 +102,7 @@ xm-i386v.h
xm-i386v32.h
xm-i386v4.h
xm-linux.h
xm-nbsd.h
xm-ptx.h
xm-ptx4.h
xm-sun386.h

7
gdb/config/i386/nbsd.mh Normal file
View File

@ -0,0 +1,7 @@
# Host: Intel 386 running NetBSD
XDEPFILES=
NATDEPFILES= exec.o fork-child.o infptrace.o inftarg.o corelow.o coredep.o i386b-nat.o
XM_FILE= xm-nbsd.h
NAT_FILE= nm-nbsd.h
REGEX=regex.o
REGEX1=regex.o

34
gdb/config/i386/nm-nbsd.h Normal file
View File

@ -0,0 +1,34 @@
/* Native-dependent definitions for Intel 386 running NetBSD, for GDB.
Copyright 1986, 1987, 1989, 1992, 1994 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef NM_NBSD_H
#define NM_NBSD_H
/* Get generic NetBSD native definitions. */
#include "nm-nbsd.h"
#define FLOAT_INFO { i386_float_info(); }
#define REGISTER_U_ADDR(addr, blockend, regno) \
(addr) = i386_register_u_addr ((blockend),(regno));
extern int
i386_register_u_addr PARAMS ((int, int));
#endif /* NM_NBSD_H */

26
gdb/config/i386/tm-nbsd.h Normal file
View File

@ -0,0 +1,26 @@
/* Macro definitions for Sparc running under NetBSD.
Copyright 1994 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef TM_NBSD_H
#define TM_NBSD_H
#include "i386/tm-i386bsd.h"
#include "tm-nbsd.h"
#endif /* TM_NBSD_H */

21
gdb/config/i386/xm-nbsd.h Normal file
View File

@ -0,0 +1,21 @@
/* Parameters for execution on a i386 running NetBSD, for GDB.
Copyright 1994 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
/* Get generic NetBSD host definitions. */
#include "xm-nbsd.h"

View File

@ -23,21 +23,25 @@ Things-to-keep:
merlin.mh
merlin.mt
nbsd.mh
nbsd.mt
nm-nbsd.h
nm-umax.h
ns32km3.mh
ns32km3.mt
tm-merlin.h
tm-nbsd.h
tm-ns32km3.h
tm-umax.h
umax.mh
umax.mt
xm-merlin.h
xm-nbsd.h
xm-ns32km3.h
xm-umax.h
Things-to-lose:
Do-last:
# End of file.

4
gdb/config/ns32k/nbsd.mh Normal file
View File

@ -0,0 +1,4 @@
# Host: PC532 running NetBSD
XM_FILE= xm-nbsd.h
NAT_FILE= nm-nbsd.h
NATDEPFILES= exec.o fork-child.o infptrace.o inftarg.o corelow.o coredep.o ns32k-nat.o

3
gdb/config/ns32k/nbsd.mt Normal file
View File

@ -0,0 +1,3 @@
# Target: PC532 running NetBSD
TDEPFILES= exec.o ns32k-tdep.o ns32k-pinsn.o solib.o
TM_FILE= tm-nbsd.h

View File

@ -0,0 +1,36 @@
/* Native-dependent definitions for ns32k running NetBSD, for GDB.
Copyright 1986, 1987, 1989, 1992, 1994 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef NM_NBSD_H
#define NM_NBSD_H
/* Get generic NetBSD native definitions. */
#include "nm-nbsd.h"
#if 0
#define FLOAT_INFO { extern ns32k_float_info(); ns32k_float_info(); }
#endif
#define REGISTER_U_ADDR(addr, blockend, regno) \
(addr) = ns32k_register_u_addr ((blockend),(regno));
extern int
ns32k_register_u_addr PARAMS ((int, int));
#endif /* NM_NBSD_H */

View File

@ -0,0 +1,38 @@
/* Macro definitions for ns32k running under NetBSD.
Copyright 1986, 1987, 1989, 1991, 1992, 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
/* Override number of expected traps from sysv. */
#define START_INFERIOR_TRAPS_EXPECTED 2
/* Most definitions from umax could be used. */
#define INVALID_FLOAT(p, s) isa_NAN(p, s)
#include "ns32k/tm-umax.h"
#include "tm-nbsd.h"
/* Saved Pc. Get it from sigcontext if within sigtramp. */
/* Offset to saved PC in sigcontext, from <machine/signal.h>. */
#define SIGCONTEXT_PC_OFFSET 20
#undef FRAME_SAVED_PC(FRAME)
#define FRAME_SAVED_PC(FRAME) \
(((FRAME)->signal_handler_caller \
? sigtramp_saved_pc (FRAME) \
: read_memory_integer ((FRAME)->frame + 4, 4)) \
)

View File

@ -0,0 +1,21 @@
/* Parameters for execution on a ns32k running NetBSD, for GDB.
Copyright 1994 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
/* Get generic NetBSD host definitions. */
#include "xm-nbsd.h"

View File

@ -20,15 +20,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef NM_NBSD_H
#define NM_NBSD_H
/* This is the amount to subtract from u.u_ar0
to get the offset in the core file of the register values. */
#include <machine/vmparam.h>
#define KERNEL_U_ADDR USRSTACK
#define PTRACE_ARG3_TYPE char*
#define ATTACH_DETACH
/* Get generic NetBSD native definitions. */
#include "nm-nbsd.h"
#define FETCH_INFERIOR_REGISTERS

View File

@ -111,6 +111,7 @@ none-*-*) gdb_host=none ;;
np1-*-*) gdb_host=np1 ;;
ns32k-*-mach3*) gdb_host=mach3 ;;
ns32k-*-netbsd*) gdb_host=nbsd ;;
ns32k-umax-*) gdb_host=umax ;;
ns32k-utek-sysv*) gdb_host=merlin ;;
@ -299,6 +300,7 @@ none-*-*) gdb_target=none ;;
np1-*-*) gdb_target=np1 ;;
ns32k-*-mach3*) gdb_target=mach3 ;;
ns32k-*-netbsd*) gdb_target=nbsd ;;
ns32k-utek-sysv*) gdb_target=merlin ;;
ns32k-utek-*) gdb_target=umax ;;

View File

@ -1,5 +1,5 @@
/* Native-dependent code for BSD Unix running on i386's, for GDB.
Copyright 1988, 1989, 1991, 1992 Free Software Foundation, Inc.
Copyright 1988, 1989, 1991, 1992, 1994 Free Software Foundation, Inc.
This file is part of GDB.
@ -69,3 +69,157 @@ i386_register_u_addr (blockend, regnum)
else
return (blockend + 4 * sregmap[regnum]);
}
#ifdef FLOAT_INFO
#include "floatformat.h"
#include <sys/param.h>
#include <sys/dir.h>
#include <signal.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <a.out.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/uio.h>
#define curpcb Xcurpcb /* XXX avoid leaking declaration from pcb.h */
#include <sys/user.h>
#undef curpcb
#include <sys/file.h>
#include <sys/stat.h>
#include <sys/ptrace.h>
extern void print_387_control_word (); /* i387-tdep.h */
extern void print_387_status_word ();
#define fpstate save87
#define U_FPSTATE(u) u.u_pcb.pcb_savefpu
struct env387
{
unsigned short control;
unsigned short r0;
unsigned short status;
unsigned short r1;
unsigned short tag;
unsigned short r2;
unsigned long eip;
unsigned short code_seg;
unsigned short opcode;
unsigned long operand;
unsigned short operand_seg;
unsigned short r3;
unsigned char regs[8][10];
};
static
print_387_status (status, ep)
unsigned short status;
struct env387 *ep;
{
int i;
int bothstatus;
int top;
int fpreg;
unsigned char *p;
bothstatus = ((status != 0) && (ep->status != 0));
if (status != 0)
{
if (bothstatus)
printf_unfiltered ("u: ");
print_387_status_word ((unsigned int)status);
}
if (ep->status != 0)
{
if (bothstatus)
printf_unfiltered ("e: ");
print_387_status_word ((unsigned int)ep->status);
}
print_387_control_word ((unsigned int)ep->control);
printf_unfiltered ("last exception: ");
printf_unfiltered ("opcode %s; ", local_hex_string(ep->opcode));
printf_unfiltered ("pc %s:", local_hex_string(ep->code_seg));
printf_unfiltered ("%s; ", local_hex_string(ep->eip));
printf_unfiltered ("operand %s", local_hex_string(ep->operand_seg));
printf_unfiltered (":%s\n", local_hex_string(ep->operand));
top = (ep->status >> 11) & 7;
printf_unfiltered ("regno tag msb lsb value\n");
for (fpreg = 7; fpreg >= 0; fpreg--)
{
double val;
printf_unfiltered ("%s %d: ", fpreg == top ? "=>" : " ", fpreg);
switch ((ep->tag >> (fpreg * 2)) & 3)
{
case 0: printf_unfiltered ("valid "); break;
case 1: printf_unfiltered ("zero "); break;
case 2: printf_unfiltered ("trap "); break;
case 3: printf_unfiltered ("empty "); break;
}
for (i = 9; i >= 0; i--)
printf_unfiltered ("%02x", ep->regs[fpreg][i]);
floatformat_to_double(&floatformat_i387_ext, (char *) ep->regs[fpreg],
&val);
printf_unfiltered (" %g\n", val);
}
}
i386_float_info ()
{
struct user u; /* just for address computations */
int i;
/* fpstate defined in <sys/user.h> */
struct fpstate *fpstatep;
char buf[sizeof (struct fpstate) + 2 * sizeof (int)];
unsigned int uaddr;
char fpvalid;
unsigned int rounded_addr;
unsigned int rounded_size;
/*extern int corechan;*/
int skip;
extern int inferior_pid;
uaddr = (char *)&U_FPSTATE(u) - (char *)&u;
if (inferior_pid)
{
int *ip;
rounded_addr = uaddr & -sizeof (int);
rounded_size = (((uaddr + sizeof (struct fpstate)) - uaddr) +
sizeof (int) - 1) / sizeof (int);
skip = uaddr - rounded_addr;
ip = (int *)buf;
for (i = 0; i < rounded_size; i++)
{
*ip++ = ptrace (PT_READ_U, inferior_pid, (caddr_t)rounded_addr, 0);
rounded_addr += sizeof (int);
}
}
else
{
printf("float info: can't do a core file (yet)\n");
return;
#if 0
if (lseek (corechan, uaddr, 0) < 0)
perror_with_name ("seek on core file");
if (myread (corechan, buf, sizeof (struct fpstate)) < 0)
perror_with_name ("read from core file");
skip = 0;
#endif
}
print_387_status (0, (struct env387 *)buf);
}
#endif