This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Standardize darwin's lm_info


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=434a40239548115cf04a80410e4f570f35c361c1

commit 434a40239548115cf04a80410e4f570f35c361c1
Author: Simon Marchi <simon.marchi@ericsson.com>
Date:   Fri Apr 28 17:16:12 2017 -0400

    Standardize darwin's lm_info
    
    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.

Diff:
---
 gdb/ChangeLog      |  7 +++++++
 gdb/solib-darwin.c | 17 ++++-------------
 2 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index a5ecf6e..8f7f552 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2017-04-28  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* 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.
+
 2017-04-28  John Baldwin  <jhb@FreeBSD.org>
 
 	* mips-tdep.c (print_gp_register_row): Replace printf_filtered
diff --git a/gdb/solib-darwin.c b/gdb/solib-darwin.c
index 0b97556..c507e13 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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]