/* Register groupings for GDB, the GNU debugger.
- Copyright (C) 2002, 2003, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2002-2014 Free Software Foundation, Inc.
Contributed by Red Hat.
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
+#include "arch-utils.h"
#include "reggroups.h"
#include "gdbtypes.h"
#include "gdb_assert.h"
struct reggroup *
reggroup_new (const char *name, enum reggroup_type type)
{
- struct reggroup *group = XMALLOC (struct reggroup);
+ struct reggroup *group = XNEW (struct reggroup);
+
group->name = name;
group->type = type;
return group;
{
struct reggroups *groups = GDBARCH_OBSTACK_ZALLOC (gdbarch,
struct reggroups);
+
groups->last = &groups->first;
return groups;
}
/* Group name. */
{
const char *name;
+
if (group == NULL)
name = "Group";
else
/* Group type. */
{
const char *type;
+
if (group == NULL)
type = "Type";
else
static void
maintenance_print_reggroups (char *args, int from_tty)
{
+ struct gdbarch *gdbarch = get_current_arch ();
+
if (args == NULL)
- reggroups_dump (current_gdbarch, gdb_stdout);
+ reggroups_dump (gdbarch, gdb_stdout);
else
{
+ struct cleanup *cleanups;
struct ui_file *file = gdb_fopen (args, "w");
+
if (file == NULL)
perror_with_name (_("maintenance print reggroups"));
- reggroups_dump (current_gdbarch, file);
- ui_file_delete (file);
+ cleanups = make_cleanup_ui_file_delete (file);
+ reggroups_dump (gdbarch, file);
+ do_cleanups (cleanups);
}
}
reggroups_data = gdbarch_data_register_post_init (reggroups_init);
/* The pre-defined list of groups. */
- add_group (&default_groups, general_reggroup, XMALLOC (struct reggroup_el));
- add_group (&default_groups, float_reggroup, XMALLOC (struct reggroup_el));
- add_group (&default_groups, system_reggroup, XMALLOC (struct reggroup_el));
- add_group (&default_groups, vector_reggroup, XMALLOC (struct reggroup_el));
- add_group (&default_groups, all_reggroup, XMALLOC (struct reggroup_el));
- add_group (&default_groups, save_reggroup, XMALLOC (struct reggroup_el));
- add_group (&default_groups, restore_reggroup, XMALLOC (struct reggroup_el));
+ add_group (&default_groups, general_reggroup, XNEW (struct reggroup_el));
+ add_group (&default_groups, float_reggroup, XNEW (struct reggroup_el));
+ add_group (&default_groups, system_reggroup, XNEW (struct reggroup_el));
+ add_group (&default_groups, vector_reggroup, XNEW (struct reggroup_el));
+ add_group (&default_groups, all_reggroup, XNEW (struct reggroup_el));
+ add_group (&default_groups, save_reggroup, XNEW (struct reggroup_el));
+ add_group (&default_groups, restore_reggroup, XNEW (struct reggroup_el));
add_cmd ("reggroups", class_maintenance,
maintenance_print_reggroups, _("\