/* Register groupings for GDB, the GNU debugger.
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002-2020 Free Software Foundation, Inc.
Contributed by Red Hat.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
+ the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
#ifndef REGGROUPS_H
#define REGGROUPS_H
/* Create a new local register group. */
extern struct reggroup *reggroup_new (const char *name,
enum reggroup_type type);
+/* Create a new register group allocated onto the gdbarch obstack. */
+extern struct reggroup *reggroup_gdbarch_new (struct gdbarch *gdbarch,
+ const char *name,
+ enum reggroup_type type);
/* Add a register group (with attribute values) to the pre-defined list. */
extern void reggroup_add (struct gdbarch *gdbarch, struct reggroup *group);
extern const char *reggroup_name (struct reggroup *reggroup);
extern enum reggroup_type reggroup_type (struct reggroup *reggroup);
-/* Interator for the architecture's register groups. Pass in NULL,
- returns the first group. Pass in a group, returns the next group,
- or NULL when the last group is reached. */
+/* Iterators for the architecture's register groups. Pass in NULL, returns
+ the first (for next), or last (for prev) group. Pass in a group,
+ returns the next or previous group, or NULL when either the end or the
+ beginning of the group list is reached. */
extern struct reggroup *reggroup_next (struct gdbarch *gdbarch,
struct reggroup *last);
+extern struct reggroup *reggroup_prev (struct gdbarch *gdbarch,
+ struct reggroup *curr);
+/* Find a reggroup by name. */
+extern reggroup *reggroup_find (struct gdbarch *gdbarch, const char *name);
/* Is REGNUM a member of REGGROUP? */
extern int default_register_reggroup_p (struct gdbarch *gdbarch, int regnum,