Add missing client_state struct references to win target.
[deliverable/binutils-gdb.git] / gdb / gdbserver / tdesc.h
index 034127864beec4ec52bc66e46e0a885284fc5bd8..989c12896ef5ac36a816a413a260fb3a06a56c69 100644 (file)
@@ -1,5 +1,5 @@
 /* Target description definitions for remote server for GDB.
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
+   Copyright (C) 2012-2018 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
 #ifndef TDESC_H
 #define TDESC_H
 
-struct reg;
+#include "common/tdesc.h"
 
-/* A target description.  */
+#include "regdef.h"
+#include <vector>
 
-struct target_desc
+/* A target description.  Inherit from tdesc_feature so that target_desc
+   can be used as tdesc_feature.  */
+
+struct target_desc : tdesc_element
 {
-  /* An array of NUM_REGISTERS elements of register definitions that
+  /* A vector of elements of register definitions that
      describe the inferior's register set.  */
-  struct reg *reg_defs;
-
-  /* The number of registers in inferior's register set (and thus in
-     the regcache).  */
-  int num_registers;
+  std::vector<struct reg> reg_defs;
 
   /* The register cache size, in bytes.  */
   int registers_size;
 
+  /* XML features in this target description.  */
+  std::vector<tdesc_feature_up> features;
+
 #ifndef IN_PROCESS_AGENT
   /* An array of register names.  These are the "expedite" registers:
      registers whose values are sent along with stop replies.  */
-  const char **expedite_regs;
+  const char **expedite_regs = NULL;
 
   /* Defines what to return when looking for the "target.xml" file in
      response to qXfer:features:read.  Its contents can either be
      verbatim XML code (prefixed with a '@') or else the name of the
-     actual XML file to be used in place of "target.xml".  */
-  const char *xmltarget;
+     actual XML file to be used in place of "target.xml".
+
+     If NULL then its content will be generated by parsing the target
+     description into xml.  */
+  mutable const char *xmltarget = NULL;
+
+  /* The value of <architecture> element in the XML, replying GDB.  */
+  const char *arch = NULL;
+
+  /* The value of <osabi> element in the XML, replying GDB.  */
+  const char *osabi = NULL;
+
+public:
+  target_desc ()
+    : registers_size (0)
+  {}
+
+  ~target_desc ();
+
+  bool operator== (const target_desc &other) const;
+
+  bool operator!= (const target_desc &other) const
+  {
+    return !(*this == other);
+  }
 #endif
+
+  void accept (tdesc_element_visitor &v) const override;
 };
 
 /* Copy target description SRC to DEST.  */
@@ -54,9 +82,11 @@ struct target_desc
 void copy_target_description (struct target_desc *dest,
                              const struct target_desc *src);
 
-/* Initialize TDESC.  */
+/* Initialize TDESC, and then set its expedite_regs field to
+   EXPEDITE_REGS.  */
 
-void init_target_desc (struct target_desc *tdesc);
+void init_target_desc (struct target_desc *tdesc,
+                      const char **expedite_regs);
 
 /* Return the current inferior's target description.  Never returns
    NULL.  */
This page took 0.032214 seconds and 4 git commands to generate.