* regset.h (struct core_regset_section): Add HUMAN_NAME.

* i386-linux-tdep.c (i386_linux_regset_sections): Fill in HUMAN_NAME.
	* ppc-linux-tdep.c (ppc_linux_vsx_regset_sections): Likewise.
	(ppc_linux_vmx_regset_sections): Likewise.
	(ppc_linux_fp_regset_sections): Likewise.

	* corelow.c (get_core_register_section): Constify arguments.
	(get_core_registers): Use gdbarch_core_regset_sections instead
	of hard-coded platform-specific register section names.
This commit is contained in:
Ulrich Weigand
2010-01-04 14:57:44 +00:00
parent dcbf108f79
commit 1b1818e443
5 changed files with 52 additions and 24 deletions

View File

@@ -1,3 +1,15 @@
2010-01-04 Ulrich Weigand <uweigand@de.ibm.com>
* regset.h (struct core_regset_section): Add HUMAN_NAME.
* i386-linux-tdep.c (i386_linux_regset_sections): Fill in HUMAN_NAME.
* ppc-linux-tdep.c (ppc_linux_vsx_regset_sections): Likewise.
(ppc_linux_vmx_regset_sections): Likewise.
(ppc_linux_fp_regset_sections): Likewise.
* corelow.c (get_core_register_section): Constify arguments.
(get_core_registers): Use gdbarch_core_regset_sections instead
of hard-coded platform-specific register section names.
2010-01-04 Ulrich Weigand <uweigand@de.ibm.com> 2010-01-04 Ulrich Weigand <uweigand@de.ibm.com>
* dwarf2loc.c (read_pieced_value): If a piece occupies part of * dwarf2loc.c (read_pieced_value): If a piece occupies part of

View File

@@ -508,9 +508,9 @@ deprecated_core_resize_section_table (int num_added)
static void static void
get_core_register_section (struct regcache *regcache, get_core_register_section (struct regcache *regcache,
char *name, const char *name,
int which, int which,
char *human_name, const char *human_name,
int required) int required)
{ {
static char *section_name = NULL; static char *section_name = NULL;
@@ -591,6 +591,7 @@ static void
get_core_registers (struct target_ops *ops, get_core_registers (struct target_ops *ops,
struct regcache *regcache, int regno) struct regcache *regcache, int regno)
{ {
struct core_regset_section *sect_list;
int i; int i;
if (!(core_gdbarch && gdbarch_regset_from_core_section_p (core_gdbarch)) if (!(core_gdbarch && gdbarch_regset_from_core_section_p (core_gdbarch))
@@ -601,16 +602,30 @@ get_core_registers (struct target_ops *ops,
return; return;
} }
get_core_register_section (regcache, sect_list = gdbarch_core_regset_sections (get_regcache_arch (regcache));
".reg", 0, "general-purpose", 1); if (sect_list)
get_core_register_section (regcache, while (sect_list->sect_name != NULL)
".reg2", 2, "floating-point", 0); {
get_core_register_section (regcache, if (strcmp (sect_list->sect_name, ".reg") == 0)
".reg-xfp", 3, "extended floating-point", 0); get_core_register_section (regcache, sect_list->sect_name,
get_core_register_section (regcache, 0, sect_list->human_name, 1);
".reg-ppc-vmx", 3, "ppc Altivec", 0); else if (strcmp (sect_list->sect_name, ".reg2") == 0)
get_core_register_section (regcache, get_core_register_section (regcache, sect_list->sect_name,
".reg-ppc-vsx", 4, "POWER7 VSX", 0); 2, sect_list->human_name, 0);
else
get_core_register_section (regcache, sect_list->sect_name,
3, sect_list->human_name, 0);
sect_list++;
}
else
{
get_core_register_section (regcache,
".reg", 0, "general-purpose", 1);
get_core_register_section (regcache,
".reg2", 2, "floating-point", 0);
}
/* Supply dummy value for all registers not found in the core. */ /* Supply dummy value for all registers not found in the core. */
for (i = 0; i < gdbarch_num_regs (get_regcache_arch (regcache)); i++) for (i = 0; i < gdbarch_num_regs (get_regcache_arch (regcache)); i++)

View File

@@ -49,9 +49,9 @@
/* Supported register note sections. */ /* Supported register note sections. */
static struct core_regset_section i386_linux_regset_sections[] = static struct core_regset_section i386_linux_regset_sections[] =
{ {
{ ".reg", 144 }, { ".reg", 144, "general-purpose" },
{ ".reg2", 108 }, { ".reg2", 108, "floating-point" },
{ ".reg-xfp", 512 }, { ".reg-xfp", 512, "extended floating-point" },
{ NULL, 0 } { NULL, 0 }
}; };

View File

@@ -516,25 +516,25 @@ ppc64_standard_linkage1_target (struct frame_info *frame,
static struct core_regset_section ppc_linux_vsx_regset_sections[] = static struct core_regset_section ppc_linux_vsx_regset_sections[] =
{ {
{ ".reg", 268 }, { ".reg", 268, "general-purpose" },
{ ".reg2", 264 }, { ".reg2", 264, "floating-point" },
{ ".reg-ppc-vmx", 544 }, { ".reg-ppc-vmx", 544, "ppc Altivec" },
{ ".reg-ppc-vsx", 256 }, { ".reg-ppc-vsx", 256, "POWER7 VSX" },
{ NULL, 0} { NULL, 0}
}; };
static struct core_regset_section ppc_linux_vmx_regset_sections[] = static struct core_regset_section ppc_linux_vmx_regset_sections[] =
{ {
{ ".reg", 268 }, { ".reg", 268, "general-purpose" },
{ ".reg2", 264 }, { ".reg2", 264, "floating-point" },
{ ".reg-ppc-vmx", 544 }, { ".reg-ppc-vmx", 544, "ppc Altivec" },
{ NULL, 0} { NULL, 0}
}; };
static struct core_regset_section ppc_linux_fp_regset_sections[] = static struct core_regset_section ppc_linux_fp_regset_sections[] =
{ {
{ ".reg", 268 }, { ".reg", 268, "general-purpose" },
{ ".reg2", 264 }, { ".reg2", 264, "floating-point" },
{ NULL, 0} { NULL, 0}
}; };

View File

@@ -29,6 +29,7 @@ struct core_regset_section
{ {
const char *sect_name; const char *sect_name;
int size; int size;
const char *human_name;
}; };
/* Data structure describing a register set. */ /* Data structure describing a register set. */