This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 09/10] Class-ify lm_info_darwin
- From: Simon Marchi <simon dot marchi at ericsson dot com>
- To: <gdb-patches at sourceware dot org>
- Cc: Simon Marchi <simon dot marchi at ericsson dot com>
- Date: Wed, 26 Apr 2017 18:51:38 -0400
- Subject: [PATCH 09/10] Class-ify lm_info_darwin
- Authentication-results: sourceware.org; auth=none
- Authentication-results: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=ericsson.com;
- References: <20170426224706.27988-1-simon.marchi@ericsson.com>
- Spamdiagnosticmetadata: NSPM
- Spamdiagnosticoutput: 1:99
This patch makes lm_info_darwin a "real" class. It initializes the
field and replaces XCNEW/xfree with new/delete.
I believe the cleanup in darwin_current_sos can be removed, I don't see
anything that can throw after the allocation and the call to
discard_cleanups.
gdb/ChangeLog:
* solib-darwin.c (struct lm_info_darwin): Initialize field.
(darwin_current_sos): Allocate lm_info_darwin with new, remove
cleanup.
(darwin_free_so): Free lm_info_darwin with delete.
---
gdb/solib-darwin.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/gdb/solib-darwin.c b/gdb/solib-darwin.c
index 03211cfb92..0e20dc4fc5 100644
--- a/gdb/solib-darwin.c
+++ b/gdb/solib-darwin.c
@@ -41,6 +41,8 @@
#include "mach-o.h"
#include "mach-o/external.h"
+#include <memory>
+
struct gdb_dyld_image_info
{
/* Base address (which corresponds to the Mach-O header). */
@@ -156,7 +158,7 @@ darwin_load_image_infos (struct darwin_info *info)
struct lm_info_darwin : public lm_info_base
{
/* The target location of lm. */
- CORE_ADDR lm_addr;
+ CORE_ADDR lm_addr = 0;
};
/* Lookup the value for a specific symbol. */
@@ -296,7 +298,7 @@ darwin_current_sos (void)
newobj = XCNEW (struct so_list);
old_chain = make_cleanup (xfree, newobj);
- lm_info_darwin *li = XCNEW (lm_info_darwin);
+ lm_info_darwin *li = new lm_info_darwin;
newobj->lm_info = li;
strncpy (newobj->so_name, file_path, SO_NAME_MAX_PATH_SIZE - 1);
@@ -578,7 +580,9 @@ darwin_clear_solib (void)
static void
darwin_free_so (struct so_list *so)
{
- xfree (so->lm_info);
+ lm_info_darwin *li = (lm_info_darwin *) so->lm_info;
+
+ delete li;
}
/* The section table is built from bfd sections using bfd VMAs.
--
2.11.0