Move gdbserver tdesc header funcs to c file
[deliverable/binutils-gdb.git] / gdb / gdbserver / tdesc.h
index 002c9965205a3db02a4d052417eada6cf3f9d56e..4513ea74232a456cc86eb9a655904012ff117373 100644 (file)
@@ -1,5 +1,5 @@
 /* Target description definitions for remote server for GDB.
-   Copyright (C) 2012-2015 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
+struct tdesc_feature
+{};
+
+/* A target description.  Inherit from tdesc_feature so that target_desc
+   can be used as tdesc_feature.  */
+
+struct target_desc : tdesc_feature
 {
-  /* 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;
 
+#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".
+
+     It can be NULL, then, its content is got from the following three
+     fields features, arch, and osabi in tdesc_get_features_xml.  */
+  const char *xmltarget = NULL;
+
+  /* XML features in this target description.  */
+  VEC (char_ptr) *features = 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
 };
 
 /* Copy target description SRC to DEST.  */
@@ -61,4 +92,8 @@ void init_target_desc (struct target_desc *tdesc);
 
 const struct target_desc *current_target_desc (void);
 
+#ifndef IN_PROCESS_AGENT
+const char *tdesc_get_features_xml (struct target_desc *tdesc);
+#endif
+
 #endif /* TDESC_H */
This page took 0.027742 seconds and 4 git commands to generate.