diff options
Diffstat (limited to 'gdb/gdbserver/tdesc.h')
-rw-r--r-- | gdb/gdbserver/tdesc.h | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/gdb/gdbserver/tdesc.h b/gdb/gdbserver/tdesc.h index 50d0364..49c82c6 100644 --- a/gdb/gdbserver/tdesc.h +++ b/gdb/gdbserver/tdesc.h @@ -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 }; |