[GDBserver] unit test to i386_tdesc
[external/binutils.git] / gdb / gdbserver / tdesc.h
index 50d0364..49c82c6 100644 (file)
@@ -21,7 +21,7 @@
 
 #include "arch/tdesc.h"
 
-struct reg;
+#include "regdef.h"
 
 typedef struct reg *tdesc_reg_p;
 DEF_VEC_P(tdesc_reg_p);
@@ -66,6 +66,46 @@ public:
       xfree (reg);
     VEC_free (tdesc_reg_p, reg_defs);
   }
+
+  bool operator== (const target_desc &other) const
+  {
+    if (VEC_length (tdesc_reg_p, reg_defs)
+       != VEC_length (tdesc_reg_p, other.reg_defs))
+      return false;
+
+    struct reg *reg;
+
+    for (int ix = 0;
+        VEC_iterate (tdesc_reg_p, reg_defs, ix, reg);
+        ix++)
+      {
+       struct reg *reg2
+         = VEC_index (tdesc_reg_p, other.reg_defs, ix);
+
+       if (reg != reg2 && *reg != *reg2)
+         return false;
+      }
+
+    /* Compare expedite_regs.  */
+    int i = 0;
+    for (; expedite_regs[i] != NULL; i++)
+      {
+       if (strcmp (expedite_regs[i], other.expedite_regs[i]) != 0)
+         return false;
+      }
+    if (other.expedite_regs[i] != NULL)
+      return false;
+
+    if (strcmp (xmltarget, other.xmltarget) != 0)
+      return false;
+
+    return true;
+  }
+
+  bool operator!= (const target_desc &other) const
+  {
+    return !(*this == other);
+  }
 #endif
 };