/* Register groupings for GDB, the GNU debugger.
- Copyright (C) 2002-2017 Free Software Foundation, Inc.
+ Copyright (C) 2002-2020 Free Software Foundation, Inc.
Contributed by Red Hat.
return group;
}
+/* See reggroups.h. */
+
+struct reggroup *
+reggroup_gdbarch_new (struct gdbarch *gdbarch, const char *name,
+ enum reggroup_type type)
+{
+ struct reggroup *group = GDBARCH_OBSTACK_ZALLOC (gdbarch,
+ struct reggroup);
+
+ group->name = gdbarch_obstack_strdup (gdbarch, name);
+ group->type = type;
+ return group;
+}
+
/* Register group attributes. */
const char *
if (group == all_reggroup)
return 1;
vector_p = TYPE_VECTOR (register_type (gdbarch, regnum));
- float_p = TYPE_CODE (register_type (gdbarch, regnum)) == TYPE_CODE_FLT;
+ float_p = (TYPE_CODE (register_type (gdbarch, regnum)) == TYPE_CODE_FLT
+ || (TYPE_CODE (register_type (gdbarch, regnum))
+ == TYPE_CODE_DECFLOAT));
raw_p = regnum < gdbarch_num_regs (gdbarch);
if (group == float_reggroup)
return float_p;
return 0;
}
+/* See reggroups.h. */
+
+reggroup *
+reggroup_find (struct gdbarch *gdbarch, const char *name)
+{
+ struct reggroup *group;
+
+ for (group = reggroup_next (gdbarch, NULL);
+ group != NULL;
+ group = reggroup_next (gdbarch, group))
+ {
+ if (strcmp (name, reggroup_name (group)) == 0)
+ return group;
+ }
+ return NULL;
+}
+
/* Dump out a table of register groups for the current architecture. */
static void