summaryrefslogtreecommitdiff
path: root/gdb/i386bsd-nat.c
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@gnu.org>2000-05-31 23:14:19 +0000
committerMark Kettenis <kettenis@gnu.org>2000-05-31 23:14:19 +0000
commitcf49661517002ffbc5f0e4b1d04f1aecd40234d2 (patch)
tree9363d5af9ac0506b0b36302a5b312e5bbff16113 /gdb/i386bsd-nat.c
parent7058f19ab47e06b11a38c247c38d0fc4daebfafe (diff)
downloadgdb-cf49661517002ffbc5f0e4b1d04f1aecd40234d2.tar.gz
* i386bsd-nat.c: Include "gregset.h".
(CANNOT_STORE_REGISTER): Define to cannot_fetch_register instead of CANNOT_FETCH_REGISTER, if not already defined. (supply_gregset): Call supply_register with NULL as its second argument instead of supplying our own zeroed out buffer. (fill_gregset): Copy contents of correct registers instead of the contents of register REGNO.
Diffstat (limited to 'gdb/i386bsd-nat.c')
-rw-r--r--gdb/i386bsd-nat.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/gdb/i386bsd-nat.c b/gdb/i386bsd-nat.c
index c4def7e568f..aadf5864c92 100644
--- a/gdb/i386bsd-nat.c
+++ b/gdb/i386bsd-nat.c
@@ -38,6 +38,9 @@ typedef struct reg gregset_t;
typedef struct fpreg fpregset_t;
#endif
+#include "gregset.h"
+
+
/* In older BSD versions we cannot get at some of the segment
registers. FreeBSD for example didn't support the %fs and %gs
registers until the 3.0 release. We have autoconf checks for their
@@ -50,7 +53,7 @@ typedef struct fpreg fpregset_t;
/* Registers we shouldn't try to store. */
#if !defined (CANNOT_STORE_REGISTER)
-#define CANNOT_STORE_REGISTER(regno) CANNOT_FETCH_REGISTER (regno)
+#define CANNOT_STORE_REGISTER(regno) cannot_fetch_register (regno)
#endif
/* Offset to the gregset_t location where REG is stored. */
@@ -106,16 +109,12 @@ cannot_fetch_register (int regno)
void
supply_gregset (gregset_t *gregsetp)
{
- char buf[MAX_REGISTER_RAW_SIZE];
int i;
for (i = 0; i < NUM_GREGS; i++)
{
if (CANNOT_FETCH_REGISTER (i))
- {
- memset (buf, 0, REGISTER_RAW_SIZE (i));
- supply_register (i, buf);
- }
+ supply_register (i, NULL);
else
supply_register (i, REG_ADDR (gregsetp, i));
}
@@ -132,7 +131,7 @@ fill_gregset (gregset_t *gregsetp, int regno)
for (i = 0; i < NUM_GREGS; i++)
if ((regno == -1 || regno == i) && ! CANNOT_STORE_REGISTER (i))
- memcpy (REG_ADDR (gregsetp, i), &registers[REGISTER_BYTE (regno)],
+ memcpy (REG_ADDR (gregsetp, i), &registers[REGISTER_BYTE (i)],
REGISTER_RAW_SIZE (i));
}
@@ -180,7 +179,7 @@ fetch_inferior_registers (int regno)
supply_fpregset (&fpregs);
}
-}
+}
/* Store register REGNO back into the inferior. If REGNO is -1, do
this for all registers (including the floating point registers). */