This is the mail archive of the
gdb-cvs@sourceware.org
mailing list for the GDB project.
[binutils-gdb] Class-ify lm_info_frv
- From: Simon Marchi <simark at sourceware dot org>
- To: gdb-cvs at sourceware dot org
- Date: 28 Apr 2017 21:18:55 -0000
- Subject: [binutils-gdb] Class-ify lm_info_frv
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=4023ae762ed9b52e4925242b705d0b3a50f6ed13
commit 4023ae762ed9b52e4925242b705d0b3a50f6ed13
Author: Simon Marchi <simon.marchi@ericsson.com>
Date: Fri Apr 28 17:16:16 2017 -0400
Class-ify lm_info_frv
This patches makes lm_info_frv a "real" class. It adds a destructor,
initializes the fields and replaces XCNEW/xfree with new/delete.
gdb/ChangeLog:
* solib-frv.c (struct lm_info_frv): Add destructor, initialize
fields.
(frv_current_sos): Allocate lm_info_frv with new.
(frv_relocate_main_executable): Free lm_info_frv with delete,
allocate with new.
(frv_clear_solib, frv_free_so): Free lm_info_frv with delete.
Diff:
---
gdb/ChangeLog | 9 +++++++++
gdb/solib-frv.c | 42 +++++++++++++++++++-----------------------
2 files changed, 28 insertions(+), 23 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index aadb63e..9952e28 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,14 @@
2017-04-28 Simon Marchi <simon.marchi@ericsson.com>
+ * solib-frv.c (struct lm_info_frv): Add destructor, initialize
+ fields.
+ (frv_current_sos): Allocate lm_info_frv with new.
+ (frv_relocate_main_executable): Free lm_info_frv with delete,
+ allocate with new.
+ (frv_clear_solib, frv_free_so): Free lm_info_frv with delete.
+
+2017-04-28 Simon Marchi <simon.marchi@ericsson.com>
+
* solib-frv.c (struct lm_info_frv): Fix indentation.
2017-04-28 Simon Marchi <simon.marchi@ericsson.com>
diff --git a/gdb/solib-frv.c b/gdb/solib-frv.c
index e11de25..f0265e3 100644
--- a/gdb/solib-frv.c
+++ b/gdb/solib-frv.c
@@ -204,13 +204,19 @@ struct ext_link_map
struct lm_info_frv : public lm_info_base
{
+ ~lm_info_frv ()
+ {
+ xfree (this->map);
+ xfree (this->dyn_syms);
+ xfree (this->dyn_relocs);
+ }
/* The loadmap, digested into an easier to use form. */
- struct int_elf32_fdpic_loadmap *map;
+ int_elf32_fdpic_loadmap *map = NULL;
/* The GOT address for this link map entry. */
- CORE_ADDR got_value;
+ CORE_ADDR got_value = 0;
/* The link map address, needed for frv_fetch_objfile_link_map(). */
- CORE_ADDR lm_addr;
+ CORE_ADDR lm_addr = 0;
/* Cached dynamic symbol table and dynamic relocs initialized and
used only by find_canonical_descriptor_in_load_object().
@@ -222,10 +228,9 @@ struct lm_info_frv : public lm_info_base
supplied to the first call. Thus the caching of the dynamic
symbols (dyn_syms) is critical for correct operation. The
caching of the dynamic relocations could be dispensed with. */
- asymbol **dyn_syms;
- arelent **dyn_relocs;
- int dyn_reloc_count; /* Number of dynamic relocs. */
-
+ asymbol **dyn_syms = NULL;
+ arelent **dyn_relocs = NULL;
+ int dyn_reloc_count = 0; /* Number of dynamic relocs. */
};
/* The load map, got value, etc. are not available from the chain
@@ -390,7 +395,7 @@ frv_current_sos (void)
}
sop = XCNEW (struct so_list);
- lm_info_frv *li = XCNEW (lm_info_frv);
+ lm_info_frv *li = new lm_info_frv;
sop->lm_info = li;
li->map = loadmap;
li->got_value = got_addr;
@@ -783,9 +788,8 @@ frv_relocate_main_executable (void)
if (ldm == NULL)
error (_("Unable to load the executable's loadmap."));
- if (main_executable_lm_info)
- xfree (main_executable_lm_info);
- main_executable_lm_info = XCNEW (lm_info_frv);
+ delete main_executable_lm_info;
+ main_executable_lm_info = new lm_info_frv;
main_executable_lm_info->map = ldm;
new_offsets = XCNEWVEC (struct section_offsets,
@@ -859,14 +863,9 @@ frv_clear_solib (void)
lm_base_cache = 0;
enable_break2_done = 0;
main_lm_addr = 0;
- if (main_executable_lm_info != 0)
- {
- xfree (main_executable_lm_info->map);
- xfree (main_executable_lm_info->dyn_syms);
- xfree (main_executable_lm_info->dyn_relocs);
- xfree (main_executable_lm_info);
- main_executable_lm_info = 0;
- }
+
+ delete main_executable_lm_info;
+ main_executable_lm_info = NULL;
}
static void
@@ -874,10 +873,7 @@ frv_free_so (struct so_list *so)
{
lm_info_frv *li = (lm_info_frv *) so->lm_info;
- xfree (li->map);
- xfree (li->dyn_syms);
- xfree (li->dyn_relocs);
- xfree (li);
+ delete li;
}
static void