diff options
author | J.T. Conklin <jtc@acorntoolworks.com> | 1996-02-21 01:52:37 +0000 |
---|---|---|
committer | J.T. Conklin <jtc@acorntoolworks.com> | 1996-02-21 01:52:37 +0000 |
commit | 48d27324a405e97454125783548e3db1aab93251 (patch) | |
tree | 373f0fa5233efe83f131e6af612635656bb66184 /gdb/i386b-nat.c | |
parent | d271dd0591a6cdc32a146dfad90d203201c71253 (diff) | |
download | fsf-binutils-gdb-48d27324a405e97454125783548e3db1aab93251.zip fsf-binutils-gdb-48d27324a405e97454125783548e3db1aab93251.tar.gz fsf-binutils-gdb-48d27324a405e97454125783548e3db1aab93251.tar.bz2 |
* 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.
Diffstat (limited to 'gdb/i386b-nat.c')
-rw-r--r-- | gdb/i386b-nat.c | 55 |
1 files changed, 42 insertions, 13 deletions
diff --git a/gdb/i386b-nat.c b/gdb/i386b-nat.c index 2e235aa..5831d26 100644 --- a/gdb/i386b-nat.c +++ b/gdb/i386b-nat.c @@ -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 */ |