This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH 3/3] tdesc: handle arbitrary strings in tdesc_register_in_reggroup_p
Hi Stafford,
On 2017-06-08 00:15, Stafford Horne wrote:
@@ -1081,17 +1080,13 @@ tdesc_remote_register_number (struct gdbarch
*gdbarch, int regno)
}
/* Check whether REGNUM is a member of REGGROUP. Registers from the
- target description may be classified as general, float, or vector.
- Unlike a gdbarch register_reggroup_p method, this function will
- return -1 if it does not know; the caller should handle registers
- with no specified group.
-
- Arbitrary strings (other than "general", "float", and "vector")
- from the description are not used; they cause the register to be
- displayed in "info all-registers" but excluded from "info
- registers" et al. The names of containing features are also not
- used. This might be extended to display registers in some more
- useful groupings.
+ target description may be classified as general, float, vector or
other
+ register groups registerd with reggroup_add(). Unlike a gdbarch
s/registerd/registered/
@@ -1231,6 +1209,27 @@ tdesc_use_registers (struct gdbarch *gdbarch,
void **slot = htab_find_slot (reg_hash, reg, INSERT);
*slot = reg;
+ /* Add reggroup if its new. */
+ if (reg->group != NULL)
+ {
+ struct reggroup *group;
+ bool group_exists = false;
+
+ for (group = reggroup_next (gdbarch, NULL);
+ group != NULL;
+ group = reggroup_next (gdbarch, group))
+ {
+ if (strcmp (reg->group, reggroup_name (group)) == 0)
+ {
+ group_exists = true;
+ break;
+ }
+ }
+
+ if (!group_exists)
+ reggroup_add (gdbarch, reggroup_new (reg->group,
+ USER_REGGROUP));
Is the memory allocated by reggroup_new ever freed?
Simon