* i386-tdep.c (i386_supply_fpregset): Support floating-point
authorMark Kettenis <kettenis@gnu.org>
Thu, 30 Oct 2003 23:03:36 +0000 (23:03 +0000)
committerMark Kettenis <kettenis@gnu.org>
Thu, 30 Oct 2003 23:03:36 +0000 (23:03 +0000)
registers in `fxsave' format.
(i386_regset_from_core_section): Deal with ".reg-xfp" sections.

gdb/ChangeLog
gdb/i386-tdep.c

index 7e08e30..b5a9fa5 100644 (file)
@@ -1,3 +1,9 @@
+2003-10-31  Mark Kettenis  <kettenis@gnu.org>
+
+       * i386-tdep.c (i386_supply_fpregset): Support floating-point
+       registers in `fxsave' format.
+       (i386_regset_from_core_section): Deal with ".reg-xfp" sections.
+
 2003-10-30  Mark Kettenis  <kettenis@gnu.org>
 
        * i386-linux-tdep.c (i386_linux_gregset_reg_offset): New variable.
index e8d42a1..69db1fa 100644 (file)
@@ -1576,6 +1576,12 @@ i386_supply_fpregset (const struct regset *regset, struct regcache *regcache,
 {
   const struct gdbarch_tdep *tdep = regset->descr;
 
+  if (len == I387_SIZEOF_FXSAVE)
+    {
+      i387_supply_fxsave (regcache, regnum, fpregs);
+      return;
+    }
+
   gdb_assert (len == tdep->sizeof_fpregset);
   i387_supply_fsave (regcache, regnum, fpregs);
 }
@@ -1600,7 +1606,9 @@ i386_regset_from_core_section (struct gdbarch *gdbarch,
       return tdep->gregset;
     }
 
-  if (strcmp (sect_name, ".reg2") == 0 && sect_size == tdep->sizeof_fpregset)
+  if ((strcmp (sect_name, ".reg2") == 0 && sect_size == tdep->sizeof_fpregset)
+      || (strcmp (sect_name, ".reg-xfp") == 0
+         && sect_size == I387_SIZEOF_FXSAVE))
     {
       if (tdep->fpregset == NULL)
        {