1 /* Target description support for GDB.
3 Copyright (C) 2018 Free Software Foundation, Inc.
5 This file is part of GDB.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
20 #include "common-defs.h"
21 #include "common/tdesc.h"
23 tdesc_reg::tdesc_reg (struct tdesc_feature
*feature
, const std::string
&name_
,
24 int regnum
, int save_restore_
, const char *group_
,
25 int bitsize_
, const char *type_
)
26 : name (name_
), target_regnum (regnum
),
27 save_restore (save_restore_
),
28 group (group_
!= NULL
? group_
: ""),
30 type (type_
!= NULL
? type_
: "<unknown>")
32 /* If the register's type is target-defined, look it up now. We may not
33 have easy access to the containing feature when we want it later. */
34 tdesc_type
= tdesc_named_type (feature
, type
.c_str ());
37 void tdesc_feature::accept (tdesc_element_visitor
&v
) const
41 for (const tdesc_type_up
&type
: types
)
44 for (const tdesc_reg_up
®
: registers
)
50 bool tdesc_feature::operator== (const tdesc_feature
&other
) const
52 if (name
!= other
.name
)
55 if (registers
.size () != other
.registers
.size ())
58 for (int ix
= 0; ix
< registers
.size (); ix
++)
60 const tdesc_reg_up
®1
= registers
[ix
];
61 const tdesc_reg_up
®2
= other
.registers
[ix
];
63 if (reg1
!= reg2
&& *reg1
!= *reg2
)
67 if (types
.size () != other
.types
.size ())
70 for (int ix
= 0; ix
< types
.size (); ix
++)
72 const tdesc_type_up
&type1
= types
[ix
];
73 const tdesc_type_up
&type2
= other
.types
[ix
];
75 if (type1
!= type2
&& *type1
!= *type2
)
82 /* See common/tdesc.h. */
85 tdesc_create_reg (struct tdesc_feature
*feature
, const char *name
,
86 int regnum
, int save_restore
, const char *group
,
87 int bitsize
, const char *type
)
89 tdesc_reg
*reg
= new tdesc_reg (feature
, name
, regnum
, save_restore
,
90 group
, bitsize
, type
);
92 feature
->registers
.emplace_back (reg
);
This page took 0.034813 seconds and 5 git commands to generate.