gdb: Add default reggroups for ARC
authorShahab Vahedi <shahab@synopsys.com>
Tue, 14 Jan 2020 23:14:24 +0000 (00:14 +0100)
committerShahab Vahedi <shahab@synopsys.com>
Tue, 26 Jan 2021 10:18:24 +0000 (11:18 +0100)
There is no reggroups set in ARC.  If a "maintenance print reggroups"
command is issued, the default register set is dumped (which is fine).

However, if a new group is added via an XML file, then that will
become the _only_ group.  This behavior causes gdb.xml/tdesc-regs.exp
to fail.

Fixes gdb.xml/tdesc-regs.exp on ARC.

gdb/ChangeLog:

* arc-tdep.c (arc_add_reggroups): New function.
(arc_gdbarch_init): Call arc_add_reggroups.

gdb/ChangeLog
gdb/arc-tdep.c

index c7335ee0dd8fa1caaef485c5e2a9f4f0a6a0e8c7..0836eb36e6d175e72b3f5671668a3622fb8b8d3a 100644 (file)
@@ -1,3 +1,8 @@
+2021-01-26  Shahab Vahedi  <shahab@synopsys.com>
+
+       * arc-tdep.c (arc_add_reggroups): New function.
+       (arc_gdbarch_init): Call arc_add_reggroups.
+
 2021-01-26  Anton Kolesov  <anton.kolesov@synopsys.com>
 
        * arc-tdep.c (arc_skip_prologue): Log "pc" address.
index b19f7c5965ad72158a7309307a269de11b5a7a74..8a1da1a9868cc9a478263ade7b87e6bd5215aa7a 100644 (file)
@@ -27,6 +27,7 @@
 #include "frame-base.h"
 #include "frame-unwind.h"
 #include "gdbcore.h"
+#include "reggroups.h"
 #include "gdbcmd.h"
 #include "objfiles.h"
 #include "osabi.h"
@@ -1954,6 +1955,20 @@ static const struct frame_base arc_normal_base = {
   arc_frame_base_address
 };
 
+/* Add all the expected register sets into GDBARCH.  */
+
+static void
+arc_add_reggroups (struct gdbarch *gdbarch)
+{
+  reggroup_add (gdbarch, general_reggroup);
+  reggroup_add (gdbarch, float_reggroup);
+  reggroup_add (gdbarch, system_reggroup);
+  reggroup_add (gdbarch, vector_reggroup);
+  reggroup_add (gdbarch, all_reggroup);
+  reggroup_add (gdbarch, save_reggroup);
+  reggroup_add (gdbarch, restore_reggroup);
+}
+
 static enum arc_isa
 mach_type_to_arc_isa (const unsigned long mach)
 {
@@ -2352,6 +2367,9 @@ arc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   /* This doesn't include possible long-immediate value.  */
   set_gdbarch_max_insn_length (gdbarch, 4);
 
+  /* Add default register groups.  */
+  arc_add_reggroups (gdbarch);
+
   /* Frame unwinders and sniffers.  */
   dwarf2_frame_set_init_reg (gdbarch, arc_dwarf2_frame_init_reg);
   dwarf2_append_unwinders (gdbarch);