gdb: provide and use sparc{32,64} target description XML files.
gdb/ChangeLog: 2017-02-06 Ivo Raisr <ivo.raisr@oracle.com> PR tdep/20936 Provide and use sparc32 and sparc64 target description XML files. * features/sparc/sparc32-cp0.xml, features/sparc/sparc32-cpu.xml, features/sparc/sparc32-fpu.xml: New files for sparc 32-bit. * features/sparc/sparc64-cp0.xml, features/sparc/sparc64-cpu.xml, features/sparc/sparc64-fpu.xml: New files for sparc 64-bit. * features/sparc/sparc32-solaris.xml: New file. * features/sparc/sparc64-solaris.xml: New file. * features/sparc/sparc32-solaris.c: Generated. * features/sparc/sparc64-solaris.c: Generated. * sparc-tdep.h: Account for differences in target descriptions. * sparc-tdep.c (sparc32_register_name): Use target provided registers. (sparc32_register_type): Use target provided registers. (validate_tdesc_registers): New function. (sparc32_gdbarch_init): Use tdesc_has_registers. Set pseudoregister functions. * sparc64-tdep.c (sparc64_register_name): Use target provided registers. (sparc64_register_type): Use target provided registers. (sparc64_init_abi): Set pseudoregister functions. gdb/doc/ChangeLog: 2017-02-06 Ivo Raisr <ivo.raisr@oracle.com> PR tdep/20936 * gdb.texinfo: (Standard Target Features): Document SPARC features. (Sparc Features): New node. gdb/testsuite/ChangeLog: 2017-02-06 Ivo Raisr <ivo.raisr@oracle.com> PR tdep/20936 * gdb.xml/tdesc-regs.exp: Provide sparc core registers for the tests.
This commit is contained in:
parent
de32a80f8f
commit
3f7b46f2da
19 changed files with 647 additions and 0 deletions
|
@ -31,6 +31,7 @@
|
|||
#include "objfiles.h"
|
||||
#include "osabi.h"
|
||||
#include "regcache.h"
|
||||
#include "target-descriptions.h"
|
||||
#include "target.h"
|
||||
#include "value.h"
|
||||
|
||||
|
@ -241,6 +242,9 @@ sparc64_fprs_type (struct gdbarch *gdbarch)
|
|||
"fprs", \
|
||||
"y"
|
||||
|
||||
static const char *sparc64_fpu_register_names[] = { SPARC64_FPU_REGISTERS };
|
||||
static const char *sparc64_cp0_register_names[] = { SPARC64_CP0_REGISTERS };
|
||||
|
||||
static const char *sparc64_register_names[] =
|
||||
{
|
||||
SPARC_CORE_REGISTERS,
|
||||
|
@ -290,6 +294,9 @@ sparc64_pseudo_register_name (struct gdbarch *gdbarch, int regnum)
|
|||
static const char *
|
||||
sparc64_register_name (struct gdbarch *gdbarch, int regnum)
|
||||
{
|
||||
if (tdesc_has_registers (gdbarch_target_desc (gdbarch)))
|
||||
return tdesc_register_name (gdbarch, regnum);
|
||||
|
||||
if (regnum >= 0 && regnum < gdbarch_num_regs (gdbarch))
|
||||
return sparc64_register_names[regnum];
|
||||
|
||||
|
@ -328,6 +335,9 @@ sparc64_pseudo_register_type (struct gdbarch *gdbarch, int regnum)
|
|||
static struct type *
|
||||
sparc64_register_type (struct gdbarch *gdbarch, int regnum)
|
||||
{
|
||||
if (tdesc_has_registers (gdbarch_target_desc (gdbarch)))
|
||||
return tdesc_register_type (gdbarch, regnum);
|
||||
|
||||
/* Raw registers. */
|
||||
if (regnum == SPARC_SP_REGNUM || regnum == SPARC_FP_REGNUM)
|
||||
return builtin_type (gdbarch)->builtin_data_ptr;
|
||||
|
@ -1222,6 +1232,10 @@ sparc64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
|||
|
||||
tdep->pc_regnum = SPARC64_PC_REGNUM;
|
||||
tdep->npc_regnum = SPARC64_NPC_REGNUM;
|
||||
tdep->fpu_register_names = sparc64_fpu_register_names;
|
||||
tdep->fpu_registers_num = ARRAY_SIZE (sparc64_fpu_register_names);
|
||||
tdep->cp0_register_names = sparc64_cp0_register_names;
|
||||
tdep->cp0_registers_num = ARRAY_SIZE (sparc64_cp0_register_names);
|
||||
|
||||
/* This is what all the fuss is about. */
|
||||
set_gdbarch_long_bit (gdbarch, 64);
|
||||
|
@ -1232,6 +1246,8 @@ sparc64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
|||
set_gdbarch_register_name (gdbarch, sparc64_register_name);
|
||||
set_gdbarch_register_type (gdbarch, sparc64_register_type);
|
||||
set_gdbarch_num_pseudo_regs (gdbarch, SPARC64_NUM_PSEUDO_REGS);
|
||||
set_tdesc_pseudo_register_name (gdbarch, sparc64_pseudo_register_name);
|
||||
set_tdesc_pseudo_register_type (gdbarch, sparc64_pseudo_register_type);
|
||||
set_gdbarch_pseudo_register_read (gdbarch, sparc64_pseudo_register_read);
|
||||
set_gdbarch_pseudo_register_write (gdbarch, sparc64_pseudo_register_write);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue