This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 01/10] Standardize darwin's lm_info
- From: Simon Marchi <simon dot marchi at ericsson dot com>
- To: <gdb-patches at sourceware dot org>
- Cc: Simon Marchi <simon dot marchi at polymtl dot ca>
- Date: Wed, 26 Apr 2017 18:46:57 -0400
- Subject: [PATCH 01/10] Standardize darwin's lm_info
- 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
From: Simon Marchi <simon.marchi@polymtl.ca>
Darwin's lm_info structure is used a little bit differently than the
other solib implementations. The other implementations first allocate
an so_list object, then instanciate their specific lm_info structure,
and assign it to so_list::lm_info.
The Darwin implementation allocates both at the same time
(darwin_so_list). This patch changes it to be like the others, so that
we'll be able to do some generalizations later.
gdb/ChangeLog:
* solib-darwin.c (struct darwin_so_list): Remove.
(darwin_current_sos): Allocate an so_list object instead of a
darwin_so_list, separately allocate an lm_info object.
(darwin_free_so): Free lm_info.
---
gdb/solib-darwin.c | 17 ++++-------------
1 file changed, 4 insertions(+), 13 deletions(-)
diff --git a/gdb/solib-darwin.c b/gdb/solib-darwin.c
index 0b975569e2..c507e13caf 100644
--- a/gdb/solib-darwin.c
+++ b/gdb/solib-darwin.c
@@ -159,14 +159,6 @@ struct lm_info
CORE_ADDR lm_addr;
};
-struct darwin_so_list
-{
- /* Common field. */
- struct so_list sl;
- /* Darwin specific data. */
- struct lm_info li;
-};
-
/* Lookup the value for a specific symbol. */
static CORE_ADDR
@@ -271,7 +263,6 @@ darwin_current_sos (void)
unsigned long hdr_val;
char *file_path;
int errcode;
- struct darwin_so_list *dnew;
struct so_list *newobj;
struct cleanup *old_chain;
@@ -302,11 +293,10 @@ darwin_current_sos (void)
break;
/* Create and fill the new so_list element. */
- dnew = XCNEW (struct darwin_so_list);
- newobj = &dnew->sl;
- old_chain = make_cleanup (xfree, dnew);
+ newobj = XCNEW (struct so_list);
+ old_chain = make_cleanup (xfree, newobj);
- newobj->lm_info = &dnew->li;
+ newobj->lm_info = XCNEW (struct lm_info);
strncpy (newobj->so_name, file_path, SO_NAME_MAX_PATH_SIZE - 1);
newobj->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0';
@@ -587,6 +577,7 @@ darwin_clear_solib (void)
static void
darwin_free_so (struct so_list *so)
{
+ xfree (so->lm_info);
}
/* The section table is built from bfd sections using bfd VMAs.
--
2.11.0