summaryrefslogtreecommitdiff
path: root/gdb/user-regs.c
diff options
context:
space:
mode:
authorMichael Snyder <msnyder@vmware.com>2010-05-17 01:15:20 +0000
committerMichael Snyder <msnyder@vmware.com>2010-05-17 01:15:20 +0000
commit5d5021647dbce1a933576243b9d54281a88eb3b5 (patch)
tree9cc50cfe6d9329223b5830db2770152391c17b19 /gdb/user-regs.c
parent3a6f1766e1c8ec54e2baa00f51d375c554ee63b3 (diff)
downloadbinutils-gdb-5d5021647dbce1a933576243b9d54281a88eb3b5.tar.gz
2010-05-16 Michael Snyder <msnyder@vmware.com>
* target.c: White space. * target-descriptions.c: White space. * target-memory.c: White space. * thread.c: White space. * top.c: White space. * tracepoint.c: White space. * trad-frame.c: White space. * tramp-frame.c: White space. * ui-file.c: White space. * ui-out.c: White space. * user-regs.c: White space. * utils.c: White space.
Diffstat (limited to 'gdb/user-regs.c')
-rw-r--r--gdb/user-regs.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/gdb/user-regs.c b/gdb/user-regs.c
index 7deeb1b65b7..01073771af5 100644
--- a/gdb/user-regs.c
+++ b/gdb/user-regs.c
@@ -96,7 +96,9 @@ static void *
user_regs_init (struct gdbarch *gdbarch)
{
struct user_reg *reg;
- struct gdb_user_regs *regs = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct gdb_user_regs);
+ struct gdb_user_regs *regs
+ = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct gdb_user_regs);
+
regs->last = &regs->first;
for (reg = builtin_user_regs.first; reg != NULL; reg = reg->next)
append_user_reg (regs, reg->name, reg->read, reg->baton,
@@ -109,6 +111,7 @@ user_reg_add (struct gdbarch *gdbarch, const char *name,
user_reg_read_ftype *read, const void *baton)
{
struct gdb_user_regs *regs = gdbarch_data (gdbarch, user_regs_data);
+
if (regs == NULL)
{
/* ULGH, called during architecture initialization. Patch
@@ -134,9 +137,11 @@ user_reg_map_name_to_regnum (struct gdbarch *gdbarch, const char *name,
int i;
int maxregs = (gdbarch_num_regs (gdbarch)
+ gdbarch_num_pseudo_regs (gdbarch));
+
for (i = 0; i < maxregs; i++)
{
const char *regname = gdbarch_register_name (gdbarch, i);
+
if (regname != NULL && len == strlen (regname)
&& strncmp (regname, name, len) == 0)
{
@@ -150,6 +155,7 @@ user_reg_map_name_to_regnum (struct gdbarch *gdbarch, const char *name,
struct gdb_user_regs *regs = gdbarch_data (gdbarch, user_regs_data);
struct user_reg *reg;
int nr;
+
for (nr = 0, reg = regs->first; reg != NULL; reg = reg->next, nr++)
{
if ((len < 0 && strcmp (reg->name, name))
@@ -168,6 +174,7 @@ usernum_to_user_reg (struct gdbarch *gdbarch, int usernum)
{
struct gdb_user_regs *regs = gdbarch_data (gdbarch, user_regs_data);
struct user_reg *reg;
+
for (reg = regs->first; reg != NULL; reg = reg->next)
{
if (usernum == 0)
@@ -182,6 +189,7 @@ user_reg_map_regnum_to_name (struct gdbarch *gdbarch, int regnum)
{
int maxregs = (gdbarch_num_regs (gdbarch)
+ gdbarch_num_pseudo_regs (gdbarch));
+
if (regnum < 0)
return NULL;
else if (regnum < maxregs)
@@ -203,6 +211,7 @@ value_of_user_reg (int regnum, struct frame_info *frame)
int maxregs = (gdbarch_num_regs (gdbarch)
+ gdbarch_num_pseudo_regs (gdbarch));
struct user_reg *reg = usernum_to_user_reg (gdbarch, regnum - maxregs);
+
gdb_assert (reg != NULL);
return reg->read (frame, reg->baton);
}