aboutsummaryrefslogtreecommitdiff
path: root/gdb/sparc-nat.c
diff options
context:
space:
mode:
authorJohn Gilmore <gnu@cygnus>1994-01-11 08:59:41 +0000
committerJohn Gilmore <gnu@cygnus>1994-01-11 08:59:41 +0000
commitc369b6a32f2d629c4ed70850adf20ec4057e84f5 (patch)
tree6341e6408b040a51754fa135dbdca56131e2249d /gdb/sparc-nat.c
parent7b2bcbf59d9eaa5123765fcc9640b7bbd4180e4f (diff)
downloadgdb-c369b6a32f2d629c4ed70850adf20ec4057e84f5.zip
gdb-c369b6a32f2d629c4ed70850adf20ec4057e84f5.tar.gz
gdb-c369b6a32f2d629c4ed70850adf20ec4057e84f5.tar.bz2
* sparc-nat.c (fetch_inferior_registers, store_inferior_registers):
Read and write the fsr (float status register) to/from the child process. This avoids random float exceptions when running under GDB, and probably obsoletes Peter Schauer's change of May 24 '93 (which remains for safety).
Diffstat (limited to 'gdb/sparc-nat.c')
-rw-r--r--gdb/sparc-nat.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/gdb/sparc-nat.c b/gdb/sparc-nat.c
index e1f0235..5fcdb92 100644
--- a/gdb/sparc-nat.c
+++ b/gdb/sparc-nat.c
@@ -98,9 +98,9 @@ fetch_inferior_registers (regno)
perror("ptrace_getfpregs");
memcpy (&registers[REGISTER_BYTE (FP0_REGNUM)], &inferior_fp_registers,
sizeof inferior_fp_registers.fpu_fr);
- /* memcpy (&registers[REGISTER_BYTE (FPS_REGNUM)],
+ memcpy (&registers[REGISTER_BYTE (FPS_REGNUM)],
&inferior_fp_registers.Fpu_fsr,
- sizeof (FPU_FSR_TYPE)); FIXME??? -- gnu@cyg */
+ sizeof (FPU_FSR_TYPE));
for (i = FP0_REGNUM; i <= FP0_REGNUM+31; i++)
register_valid[i] = 1;
register_valid[FPS_REGNUM] = 1;
@@ -223,17 +223,19 @@ store_inferior_registers (regno)
{
if (!register_valid[FP0_REGNUM+9]) abort();
/* Initialize inferior_fp_registers members that gdb doesn't set
- by reading them from the inferior. */
+ by reading them from the inferior. This may not be needed
+ any more, now that we set Fpu_fsr. */
if (0 !=
ptrace (PTRACE_GETFPREGS, inferior_pid,
(PTRACE_ARG3_TYPE) &inferior_fp_registers, 0))
perror("ptrace_getfpregs");
+
memcpy (&inferior_fp_registers, &registers[REGISTER_BYTE (FP0_REGNUM)],
sizeof inferior_fp_registers.fpu_fr);
-/* memcpy (&inferior_fp_registers.Fpu_fsr,
+ memcpy (&inferior_fp_registers.Fpu_fsr,
&registers[REGISTER_BYTE (FPS_REGNUM)], sizeof (FPU_FSR_TYPE));
-****/
+
if (0 !=
ptrace (PTRACE_SETFPREGS, inferior_pid,
(PTRACE_ARG3_TYPE) &inferior_fp_registers, 0))