projects
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gdb/testsuite/
[binutils-gdb.git]
/
gdb
/
user-regs.c
diff --git
a/gdb/user-regs.c
b/gdb/user-regs.c
index 79a2dd1c3d60ffd64357fc7b23466eb86c625a85..01073771af54ce4662ebae391b9b95bd936ee384 100644
(file)
--- a/
gdb/user-regs.c
+++ b/
gdb/user-regs.c
@@
-1,6
+1,7
@@
/* User visible, per-frame registers, for GDB, the GNU debugger.
/* User visible, per-frame registers, for GDB, the GNU debugger.
- Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004, 2007, 2008, 2009, 2010
+ Free Software Foundation, Inc.
Contributed by Red Hat.
Contributed by Red Hat.
@@
-95,7
+96,9
@@
static void *
user_regs_init (struct gdbarch *gdbarch)
{
struct user_reg *reg;
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 = ®s->first;
for (reg = builtin_user_regs.first; reg != NULL; reg = reg->next)
append_user_reg (regs, reg->name, reg->read, reg->baton,
regs->last = ®s->first;
for (reg = builtin_user_regs.first; reg != NULL; reg = reg->next)
append_user_reg (regs, reg->name, reg->read, reg->baton,
@@
-108,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);
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
if (regs == NULL)
{
/* ULGH, called during architecture initialization. Patch
@@
-133,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));
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);
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)
{
if (regname != NULL && len == strlen (regname)
&& strncmp (regname, name, len) == 0)
{
@@
-149,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;
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))
for (nr = 0, reg = regs->first; reg != NULL; reg = reg->next, nr++)
{
if ((len < 0 && strcmp (reg->name, name))
@@
-167,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;
{
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)
for (reg = regs->first; reg != NULL; reg = reg->next)
{
if (usernum == 0)
@@
-181,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));
{
int maxregs = (gdbarch_num_regs (gdbarch)
+ gdbarch_num_pseudo_regs (gdbarch));
+
if (regnum < 0)
return NULL;
else if (regnum < maxregs)
if (regnum < 0)
return NULL;
else if (regnum < maxregs)
@@
-202,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);
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);
}
gdb_assert (reg != NULL);
return reg->read (frame, reg->baton);
}