* i386-linux-tdep.c (i386_linux_regset_sections): Remove extended
authorMark Kettenis <kettenis@gnu.org>
Tue, 13 Apr 2010 21:07:16 +0000 (21:07 +0000)
committerMark Kettenis <kettenis@gnu.org>
Tue, 13 Apr 2010 21:07:16 +0000 (21:07 +0000)
register note sections.
(i386_linux_sse_regset_sections, i386_linux_avx_regset_sections):
New variables.
(i386_linux_init_abi): Install list of supported register note
sections that matches the target description.

gdb/ChangeLog
gdb/i386-linux-tdep.c

index 9d96f1e28b34a46cb37665dcc9892a84aece6214..5c6b4909971a05a4b3fd18c365e6ca1c72806972 100644 (file)
@@ -1,3 +1,12 @@
+2010-04-13  Mark Kettenis  <kettenis@gnu.org>
+
+       * i386-linux-tdep.c (i386_linux_regset_sections): Remove extended
+       register note sections.
+       (i386_linux_sse_regset_sections, i386_linux_avx_regset_sections):
+       New variables.
+       (i386_linux_init_abi): Install list of supported register note
+       sections that matches the target description.
+
 2010-04-13  Pedro Alves  <pedro@codesourcery.com>
 
        * remote.c (remote_get_noisy_reply): Don't error out on empty
index 72aced5da0d55e2d2aed117d3fc1ab70f3ac32e0..5952153095e4e26202b9c164ced525f4e88ec1cd 100644 (file)
@@ -58,7 +58,19 @@ static struct core_regset_section i386_linux_regset_sections[] =
 {
   { ".reg", 144, "general-purpose" },
   { ".reg2", 108, "floating-point" },
+  { NULL, 0 }
+};
+
+static struct core_regset_section i386_linux_sse_regset_sections[] =
+{
+  { ".reg", 144, "general-purpose" },
   { ".reg-xfp", 512, "extended floating-point" },
+  { NULL, 0 }
+};
+
+static struct core_regset_section i386_linux_avx_regset_sections[] =
+{
+  { ".reg", 144, "general-purpose" },
   { ".reg-xstate", I386_XSTATE_MAX_SIZE, "XSAVE extended state" },
   { NULL, 0 }
 };
@@ -862,7 +874,12 @@ i386_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
                                              svr4_fetch_objfile_link_map);
 
   /* Install supported register note sections.  */
-  set_gdbarch_core_regset_sections (gdbarch, i386_linux_regset_sections);
+  if (tdesc_find_feature (tdesc, "org.gnu.gdb.i386.avx"))
+    set_gdbarch_core_regset_sections (gdbarch, i386_linux_avx_regset_sections);
+  else if (tdesc_find_feature (tdesc, "org.gnu.gdb.i386.sse"))
+    set_gdbarch_core_regset_sections (gdbarch, i386_linux_sse_regset_sections);
+  else
+    set_gdbarch_core_regset_sections (gdbarch, i386_linux_regset_sections);
 
   set_gdbarch_core_read_description (gdbarch,
                                     i386_linux_core_read_description);