This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 02/26] Class-fy target_desc
- From: Yao Qi <qiyaoltc at gmail dot com>
- To: gdb-patches at sourceware dot org
- Date: Mon, 10 Jul 2017 14:55:16 +0100
- Subject: [PATCH 02/26] Class-fy target_desc
- Authentication-results: sourceware.org; auth=none
- References: <1499694940-23564-1-git-send-email-yao.qi@linaro.org>
This patch adds ctor and dtor in target_desc.
gdb:
2017-06-30 Yao Qi <yao.qi@linaro.org>
* target-descriptions.c (target_desc): Add ctor and dtor. Do
in-class initialization.
(tdesc_create_feature): Call new instead of XCNEW.
(free_target_description): Ue delete.
---
gdb/target-descriptions.c | 61 ++++++++++++++++++++++++++---------------------
1 file changed, 34 insertions(+), 27 deletions(-)
diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c
index 0b5b46f..ffabc71 100644
--- a/gdb/target-descriptions.c
+++ b/gdb/target-descriptions.c
@@ -267,21 +267,48 @@ DEF_VEC_P(arch_p);
struct target_desc
{
+ target_desc ()
+ {}
+
+ ~target_desc ()
+ {
+ struct tdesc_feature *feature;
+ struct property *prop;
+ int ix;
+
+ for (ix = 0;
+ VEC_iterate (tdesc_feature_p, features, ix, feature);
+ ix++)
+ delete feature;
+ VEC_free (tdesc_feature_p, features);
+
+ for (ix = 0;
+ VEC_iterate (property_s, properties, ix, prop);
+ ix++)
+ {
+ xfree (prop->key);
+ xfree (prop->value);
+ }
+
+ VEC_free (property_s, properties);
+ VEC_free (arch_p, compatible);
+ }
+
/* The architecture reported by the target, if any. */
- const struct bfd_arch_info *arch;
+ const struct bfd_arch_info *arch = NULL;
/* The osabi reported by the target, if any; GDB_OSABI_UNKNOWN
otherwise. */
- enum gdb_osabi osabi;
+ enum gdb_osabi osabi = GDB_OSABI_UNKNOWN;
/* The list of compatible architectures reported by the target. */
- VEC(arch_p) *compatible;
+ VEC(arch_p) *compatible = NULL;
/* Any architecture-specific properties specified by the target. */
- VEC(property_s) *properties;
+ VEC(property_s) *properties = NULL;
/* The features associated with this target. */
- VEC(tdesc_feature_p) *features;
+ VEC(tdesc_feature_p) *features = NULL;
};
/* Per-architecture data associated with a target description. The
@@ -1551,35 +1578,15 @@ tdesc_create_feature (struct target_desc *tdesc, const char *name)
struct target_desc *
allocate_target_description (void)
{
- return XCNEW (struct target_desc);
+ return new target_desc ();
}
static void
free_target_description (void *arg)
{
struct target_desc *target_desc = (struct target_desc *) arg;
- struct tdesc_feature *feature;
- struct property *prop;
- int ix;
-
- for (ix = 0;
- VEC_iterate (tdesc_feature_p, target_desc->features, ix, feature);
- ix++)
- delete feature;
- VEC_free (tdesc_feature_p, target_desc->features);
-
- for (ix = 0;
- VEC_iterate (property_s, target_desc->properties, ix, prop);
- ix++)
- {
- xfree (prop->key);
- xfree (prop->value);
- }
- VEC_free (property_s, target_desc->properties);
-
- VEC_free (arch_p, target_desc->compatible);
- xfree (target_desc);
+ delete target_desc;
}
struct cleanup *
--
1.9.1