X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fgdbserver%2Ftdesc.h;h=989c12896ef5ac36a816a413a260fb3a06a56c69;hb=6341380d5cb8e645d79953a24701219a048f426f;hp=034127864beec4ec52bc66e46e0a885284fc5bd8;hpb=adc764e7d217d3e56af988ce20cedc98d8c4cc73;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/gdbserver/tdesc.h b/gdb/gdbserver/tdesc.h index 034127864b..989c12896e 100644 --- a/gdb/gdbserver/tdesc.h +++ b/gdb/gdbserver/tdesc.h @@ -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. @@ -19,34 +19,62 @@ #ifndef TDESC_H #define TDESC_H -struct reg; +#include "common/tdesc.h" -/* A target description. */ +#include "regdef.h" +#include -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 reg_defs; /* The register cache size, in bytes. */ int registers_size; + /* XML features in this target description. */ + std::vector 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 element in the XML, replying GDB. */ + const char *arch = NULL; + + /* The value of 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. */