* ppc-linux-tdep.c (ppc_linux_vsx_regset_sections) New structure.
authorLuis Machado <luisgpm@br.ibm.com>
Tue, 26 Aug 2008 15:16:41 +0000 (15:16 +0000)
committerLuis Machado <luisgpm@br.ibm.com>
Tue, 26 Aug 2008 15:16:41 +0000 (15:16 +0000)
(ppc_linux_vmx_regset_sections): New structure.
(ppc_linux_fp_regset_sections): New structure.
(ppc_linux_init_abi): Select core-file regset  based on target
features.

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

index 15d3499..d9745da 100644 (file)
@@ -1,3 +1,11 @@
+2008-08-26  Luis Machado  <luisgpm@br.ibm.com>
+
+       * ppc-linux-tdep.c (ppc_linux_vsx_regset_sections) New structure.
+       (ppc_linux_vmx_regset_sections): New structure.
+       (ppc_linux_fp_regset_sections): New structure.
+       (ppc_linux_init_abi): Select core-file regset  based on target
+       features.
+
 2008-08-26  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * target.c (debug_print_register): Use regcache_raw_collect
index c3c0c1b..2804857 100644 (file)
@@ -491,7 +491,7 @@ ppc64_standard_linkage1_target (struct frame_info *frame,
   return ppc64_desc_entry_point (desc);
 }
 
-static struct core_regset_section ppc_linux_regset_sections[] =
+static struct core_regset_section ppc_linux_vsx_regset_sections[] =
 {
   { ".reg", 268 },
   { ".reg2", 264 },
@@ -500,6 +500,21 @@ static struct core_regset_section ppc_linux_regset_sections[] =
   { NULL, 0}
 };
 
+static struct core_regset_section ppc_linux_vmx_regset_sections[] =
+{
+  { ".reg", 268 },
+  { ".reg2", 264 },
+  { ".reg-ppc-vmx", 544 },
+  { NULL, 0}
+};
+
+static struct core_regset_section ppc_linux_fp_regset_sections[] =
+{
+  { ".reg", 268 },
+  { ".reg2", 264 },
+  { NULL, 0}
+};
+
 static CORE_ADDR
 ppc64_standard_linkage2_target (struct frame_info *frame,
                                CORE_ADDR pc, unsigned int *insn)
@@ -1103,7 +1118,14 @@ ppc_linux_init_abi (struct gdbarch_info info,
   set_gdbarch_core_read_description (gdbarch, ppc_linux_core_read_description);
 
   /* Supported register sections.  */
-  set_gdbarch_core_regset_sections (gdbarch, ppc_linux_regset_sections);
+  if (tdesc_find_feature (info.target_desc,
+                         "org.gnu.gdb.power.vsx"))
+    set_gdbarch_core_regset_sections (gdbarch, ppc_linux_vsx_regset_sections);
+  else if (tdesc_find_feature (info.target_desc,
+                              "org.gnu.gdb.power.altivec"))
+    set_gdbarch_core_regset_sections (gdbarch, ppc_linux_vmx_regset_sections);
+  else
+    set_gdbarch_core_regset_sections (gdbarch, ppc_linux_fp_regset_sections);
 
   /* Enable TLS support.  */
   set_gdbarch_fetch_tls_load_module_address (gdbarch,