From 3303a2761a3f8b2c2a9e1c683a5f43fae5625be3 Mon Sep 17 00:00:00 2001 From: Mark Kettenis Date: Mon, 11 Oct 2004 20:03:55 +0000 Subject: [PATCH] * i386gnu-nat.c: Include "gdb_string.h". (fetch_fpregs): Use i387_supply_fxsave to fill the floating-point registers when the floating-point state isn't initialized. * Makefile.in (i386gnu-nat.o): Update dependencies. --- gdb/ChangeLog | 7 +++++++ gdb/Makefile.in | 4 ++-- gdb/i386gnu-nat.c | 23 +++++++++++------------ 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 94c5182e11..a3d72d1160 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2004-10-11 Mark Kettenis + + * i386gnu-nat.c: Include "gdb_string.h". + (fetch_fpregs): Use i387_supply_fxsave to fill the floating-point + registers when the floating-point state isn't initialized. + * Makefile.in (i386gnu-nat.o): Update dependencies. + 2004-10-11 David Anderson * regcache.c (regcache_raw_read): Comment was missing "to". diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 59c81c8e67..51fa3ce68d 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -2004,8 +2004,8 @@ i386fbsd-nat.o: i386fbsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \ i386fbsd-tdep.o: i386fbsd-tdep.c $(defs_h) $(arch_utils_h) $(osabi_h) \ $(i386_tdep_h) $(i387_tdep_h) $(solib_svr4_h) i386gnu-nat.o: i386gnu-nat.c $(defs_h) $(inferior_h) $(floatformat_h) \ - $(regcache_h) $(gdb_assert_h) $(i386_tdep_h) $(gnu_nat_h) \ - $(i387_tdep_h) $(gregset_h) + $(regcache_h) $(gdb_assert_h) $(gdb_string_h) $(i386_tdep_h) \ + $(gnu_nat_h) $(i387_tdep_h) $(gregset_h) i386gnu-tdep.o: i386gnu-tdep.c $(defs_h) $(osabi_h) $(i386_tdep_h) i386-linux-nat.o: i386-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \ $(regcache_h) $(linux_nat_h) $(gdb_assert_h) $(gdb_string_h) \ diff --git a/gdb/i386gnu-nat.c b/gdb/i386gnu-nat.c index f694eba91e..023fbb7d6e 100644 --- a/gdb/i386gnu-nat.c +++ b/gdb/i386gnu-nat.c @@ -28,6 +28,7 @@ #include "gdb_assert.h" #include #include +#include "gdb_string.h" #include #include @@ -60,8 +61,9 @@ static int reg_offset[] = #define REG_ADDR(state, regnum) ((char *)(state) + reg_offset[regnum]) -/* Get the whole floating-point state of THREAD and record the - values of the corresponding (pseudo) registers. */ +/* Get the whole floating-point state of THREAD and record the values + of the corresponding (pseudo) registers. */ + static void fetch_fpregs (struct proc *thread) { @@ -79,18 +81,15 @@ fetch_fpregs (struct proc *thread) } if (!state.initialized) - /* The floating-point state isn't initialized. */ { - int i; - - for (i = FP0_REGNUM; i <= FOP_REGNUM; i++) - regcache_raw_supply (current_regcache, i, NULL); - - return; + /* The floating-point state isn't initialized. */ + i387_supply_fsave (current_regcache, -1, NULL); + } + else + { + /* Supply the floating-point registers. */ + i387_supply_fsave (current_regcache, -1, state.hw_state); } - - /* Supply the floating-point registers. */ - i387_supply_fsave (current_regcache, -1, state.hw_state); } #ifdef HAVE_SYS_PROCFS_H