aboutsummaryrefslogtreecommitdiff
path: root/gdb/solib-dsbt.c
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@ericsson.com>2017-04-28 17:16:14 -0400
committerSimon Marchi <simon.marchi@ericsson.com>2017-04-28 17:16:14 -0400
commitb091120773f8a740065b6449617cfbf1e0e789f4 (patch)
tree9333715621ba58e3c792481d5892e26379cccd8e /gdb/solib-dsbt.c
parent6c401f72e979ddd7e2f890dcc88f93f683233d74 (diff)
downloadfsf-binutils-gdb-b091120773f8a740065b6449617cfbf1e0e789f4.zip
fsf-binutils-gdb-b091120773f8a740065b6449617cfbf1e0e789f4.tar.gz
fsf-binutils-gdb-b091120773f8a740065b6449617cfbf1e0e789f4.tar.bz2
Class-ify lm_info_dsbt
This patches makes lm_info_dsbt a "real" class. It introduces a destructor, initializes the field and replaces XCNEW/xfree with new/delete. gdb/ChangeLog: * solib-dsbt.c (struct lm_info_dsbt): Add destructor, initialize map field. (dsbt_current_sos): Allocate lm_info_dsbt with new. (dsbt_relocate_main_executable): Free lm_info_dsbt with delete and allocate with new. (dsbt_clear_solib, dsbt_free_so): Free lm_info_dsbt with delete.
Diffstat (limited to 'gdb/solib-dsbt.c')
-rw-r--r--gdb/solib-dsbt.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/gdb/solib-dsbt.c b/gdb/solib-dsbt.c
index 6d410ac..facbd93 100644
--- a/gdb/solib-dsbt.c
+++ b/gdb/solib-dsbt.c
@@ -125,8 +125,13 @@ struct ext_link_map
struct lm_info_dsbt : public lm_info_base
{
+ ~lm_info_dsbt ()
+ {
+ xfree (this->map);
+ }
+
/* The loadmap, digested into an easier to use form. */
- struct int_elf32_dsbt_loadmap *map;
+ int_elf32_dsbt_loadmap *map = NULL;
};
/* Per pspace dsbt specific data. */
@@ -711,7 +716,7 @@ dsbt_current_sos (void)
}
sop = XCNEW (struct so_list);
- lm_info_dsbt *li = XCNEW (lm_info_dsbt);
+ lm_info_dsbt *li = new lm_info_dsbt;
sop->lm_info = li;
li->map = loadmap;
/* Fetch the name. */
@@ -930,8 +935,8 @@ dsbt_relocate_main_executable (void)
dsbt_get_initial_loadmaps ();
ldm = info->exec_loadmap;
- xfree (info->main_executable_lm_info);
- info->main_executable_lm_info = XCNEW (lm_info_dsbt);
+ delete info->main_executable_lm_info;
+ info->main_executable_lm_info = new lm_info_dsbt;
info->main_executable_lm_info->map = ldm;
new_offsets = XCNEWVEC (struct section_offsets,
@@ -1006,12 +1011,9 @@ dsbt_clear_solib (void)
info->lm_base_cache = 0;
info->main_lm_addr = 0;
- if (info->main_executable_lm_info != 0)
- {
- xfree (info->main_executable_lm_info->map);
- xfree (info->main_executable_lm_info);
- info->main_executable_lm_info = 0;
- }
+
+ delete info->main_executable_lm_info;
+ info->main_executable_lm_info = NULL;
}
static void
@@ -1019,8 +1021,7 @@ dsbt_free_so (struct so_list *so)
{
lm_info_dsbt *li = (lm_info_dsbt *) so->lm_info;
- xfree (li->map);
- xfree (li);
+ delete li;
}
static void