* config/nm-nbsd.h (FETCH_INFERIOR_REGISTERS): Defined.
* config/xm-nbsd.h (CC_HAS_LONG_LONG, PRINTF_HAS_LONG_LONG): #ifdef'd out definitions --- Causes serious gdb failures on the i386. Need to investigate further before enabling. * i386b-nat.c (fetch_inferior_registers, store_inferior_registers, fetch_core_registers): New functions. These functions are defined if FETCH_INFERIOR_REGISTERS is set. Registers are fetched/stored with ptrace PT_GETREGS/PT_SETREGS.
This commit is contained in:
parent
d271dd0591
commit
48d27324a4
@ -1,3 +1,15 @@
|
||||
Tue Feb 20 17:32:05 1996 J.T. Conklin <jtc@rtl.cygnus.com>
|
||||
|
||||
* config/nm-nbsd.h (FETCH_INFERIOR_REGISTERS): Defined.
|
||||
* config/xm-nbsd.h (CC_HAS_LONG_LONG, PRINTF_HAS_LONG_LONG):
|
||||
#ifdef'd out definitions --- Causes serious gdb failures on
|
||||
the i386. Need to investigate further before enabling.
|
||||
|
||||
* i386b-nat.c (fetch_inferior_registers, store_inferior_registers,
|
||||
fetch_core_registers): New functions. These functions are defined
|
||||
if FETCH_INFERIOR_REGISTERS is set. Registers are fetched/stored
|
||||
with ptrace PT_GETREGS/PT_SETREGS.
|
||||
|
||||
Tue Feb 20 16:55:06 1996 Stu Grossman (grossman@critters.cygnus.com)
|
||||
|
||||
* findvar.c (extract_floating store_floating): Replace `long
|
||||
|
30
gdb/config/nm-nbsd.h
Normal file
30
gdb/config/nm-nbsd.h
Normal file
@ -0,0 +1,30 @@
|
||||
/* Native-dependent definitions for 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* 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 FETCH_INFERIOR_REGISTERS
|
||||
|
||||
#define ATTACH_DETACH
|
@ -31,5 +31,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
/* NetBSD has termios facilities. */
|
||||
#define HAVE_TERMIOS
|
||||
|
||||
#if 0
|
||||
#define CC_HAS_LONG_LONG 1
|
||||
#define PRINTF_HAS_LONG_LONG 1
|
||||
#endif
|
||||
|
@ -18,6 +18,47 @@ 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"
|
||||
|
||||
#ifdef FETCH_INFERIOR_REGISTERS
|
||||
#include <sys/types.h>
|
||||
#include <sys/ptrace.h>
|
||||
#include <machine/reg.h>
|
||||
#include <machine/frame.h>
|
||||
#include "inferior.h"
|
||||
|
||||
void
|
||||
fetch_inferior_registers(regno)
|
||||
int regno;
|
||||
{
|
||||
struct reg inferior_registers;
|
||||
|
||||
ptrace (PT_GETREGS, inferior_pid, (PTRACE_ARG3_TYPE) &inferior_registers, 0);
|
||||
memcpy (®isters[REGISTER_BYTE (0)], &inferior_registers, 4*NUM_REGS);
|
||||
registers_fetched ();
|
||||
}
|
||||
|
||||
void
|
||||
store_inferior_registers(regno)
|
||||
int regno;
|
||||
{
|
||||
struct reg inferior_registers;
|
||||
|
||||
memcpy (&inferior_registers, ®isters[REGISTER_BYTE (0)], 4*NUM_REGS);
|
||||
ptrace (PT_SETREGS, inferior_pid, (PTRACE_ARG3_TYPE) &inferior_registers, 0);
|
||||
}
|
||||
|
||||
void
|
||||
fetch_core_registers (core_reg_sect, core_reg_size, which, ignore)
|
||||
char *core_reg_sect;
|
||||
unsigned core_reg_size;
|
||||
int which;
|
||||
unsigned int ignore;
|
||||
{
|
||||
abort();
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include <machine/reg.h>
|
||||
|
||||
/* this table must line up with REGISTER_NAMES in tm-i386.h */
|
||||
@ -29,25 +70,12 @@ static int tregmap[] =
|
||||
tEIP, tEFLAGS, tCS, tSS
|
||||
};
|
||||
|
||||
#ifdef sEAX
|
||||
static int sregmap[] =
|
||||
{
|
||||
sEAX, sECX, sEDX, sEBX,
|
||||
sESP, sEBP, sESI, sEDI,
|
||||
sEIP, sEFLAGS, sCS, sSS
|
||||
};
|
||||
#else /* No sEAX */
|
||||
|
||||
/* NetBSD has decided to collapse the s* and t* symbols. So if the s*
|
||||
ones aren't around, use the t* ones for sregmap too. */
|
||||
|
||||
static int sregmap[] =
|
||||
{
|
||||
tEAX, tECX, tEDX, tEBX,
|
||||
tESP, tEBP, tESI, tEDI,
|
||||
tEIP, tEFLAGS, tCS, tSS
|
||||
};
|
||||
#endif /* No sEAX */
|
||||
|
||||
/* blockend is the value of u.u_ar0, and points to the
|
||||
place where ES is stored. */
|
||||
@ -70,6 +98,7 @@ i386_register_u_addr (blockend, regnum)
|
||||
return (blockend + 4 * sregmap[regnum]);
|
||||
}
|
||||
|
||||
#endif /* !FETCH_INFERIOR_REGISTERS */
|
||||
|
||||
#ifdef FLOAT_INFO
|
||||
#include "language.h" /* for local_hex_string */
|
||||
|
Loading…
Reference in New Issue
Block a user