diff options
author | Simon Marchi <simon.marchi@efficios.com> | 2023-10-10 14:47:13 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@efficios.com> | 2023-10-19 10:57:51 -0400 |
commit | 7ad0a42e88c09b4046205316bd6352dfb31afd79 (patch) | |
tree | b64102b23c6e0bcd53196a21e2c11ba919c6b61f /gdb/solib-svr4.c | |
parent | 1c0dfccba7bac021456198597fdce080d4a8315b (diff) | |
download | fsf-binutils-gdb-7ad0a42e88c09b4046205316bd6352dfb31afd79.zip fsf-binutils-gdb-7ad0a42e88c09b4046205316bd6352dfb31afd79.tar.gz fsf-binutils-gdb-7ad0a42e88c09b4046205316bd6352dfb31afd79.tar.bz2 |
gdb: make so_list::lm_info a unique_ptr
Make it a unique_ptr, so it gets automatically deleted when the so_list
is deleted.
Change-Id: Ib62d60ae2a80656239860b80e4359121c93da13d
Approved-By: Pedro Alves <pedro@palves.net>
Reviewed-By: Reviewed-By: Lancelot Six <lancelot.six@amd.com>
Diffstat (limited to 'gdb/solib-svr4.c')
-rw-r--r-- | gdb/solib-svr4.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c index e8113fe..4f9e0b8 100644 --- a/gdb/solib-svr4.c +++ b/gdb/solib-svr4.c @@ -188,8 +188,10 @@ svr4_same (const char *gdb_name, const char *inferior_name, static int svr4_same (const so_list &gdb, const so_list &inferior) { - auto *lmg = gdb::checked_static_cast<const lm_info_svr4 *> (gdb.lm_info); - auto *lmi = gdb::checked_static_cast<const lm_info_svr4 *> (inferior.lm_info); + auto *lmg + = gdb::checked_static_cast<const lm_info_svr4 *> (gdb.lm_info.get ()); + auto *lmi + = gdb::checked_static_cast<const lm_info_svr4 *> (inferior.lm_info.get ()); return svr4_same (gdb.so_original_name, inferior.so_original_name, *lmg, *lmi); @@ -239,7 +241,7 @@ has_lm_dynamic_from_link_map (void) static CORE_ADDR lm_addr_check (const so_list &so, bfd *abfd) { - auto *li = gdb::checked_static_cast<lm_info_svr4 *> (so.lm_info); + auto *li = gdb::checked_static_cast<lm_info_svr4 *> (so.lm_info.get ()); if (!li->l_addr_p) { @@ -979,7 +981,7 @@ svr4_free_objfile_observer (struct objfile *objfile) static void svr4_clear_so (const so_list &so) { - auto *li = gdb::checked_static_cast<lm_info_svr4 *> (so.lm_info); + auto *li = gdb::checked_static_cast<lm_info_svr4 *> (so.lm_info.get ()); if (li != NULL) li->l_addr_p = 0; @@ -1001,7 +1003,7 @@ so_list_from_svr4_sos (const std::vector<svr4_so> &sos) sizeof (newobj->so_name) - 1); newobj->so_name[sizeof (newobj->so_name) - 1] = 0; strcpy (newobj->so_original_name, newobj->so_name); - newobj->lm_info = new lm_info_svr4 (*so.lm_info); + newobj->lm_info = gdb::make_unique<lm_info_svr4> (*so.lm_info); newobj->next = NULL; *link = newobj; @@ -1192,13 +1194,14 @@ svr4_default_sos (svr4_info *info) return NULL; so_list *newobj = new so_list; - lm_info_svr4 *li = new lm_info_svr4; - newobj->lm_info = li; + auto li = gdb::make_unique<lm_info_svr4> (); /* Nothing will ever check the other fields if we set l_addr_p. */ li->l_addr = li->l_addr_inferior = info->debug_loader_offset; li->l_addr_p = 1; + newobj->lm_info = std::move (li); + strncpy (newobj->so_name, info->debug_loader_name, SO_NAME_MAX_PATH_SIZE - 1); newobj->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; strcpy (newobj->so_original_name, newobj->so_name); @@ -1495,7 +1498,7 @@ svr4_current_sos (void) [ 9] .dynamic DYNAMIC ffffffffff700580 000580 0000f0 */ - auto *li = gdb::checked_static_cast<lm_info_svr4 *> (so->lm_info); + auto *li = gdb::checked_static_cast<lm_info_svr4 *> (so->lm_info.get ()); if (address_in_mem_range (li->l_ld, &vsyscall_range)) { @@ -1531,7 +1534,8 @@ svr4_fetch_objfile_link_map (struct objfile *objfile) for (struct so_list *so : current_program_space->solibs ()) if (so->objfile == objfile) { - auto *li = gdb::checked_static_cast<lm_info_svr4 *> (so->lm_info); + auto *li + = gdb::checked_static_cast<lm_info_svr4 *> (so->lm_info.get ()); return li->lm_addr; } @@ -3292,7 +3296,8 @@ find_debug_base_for_solib (so_list *solib) svr4_info *info = get_svr4_info (current_program_space); gdb_assert (info != nullptr); - const lm_info_svr4 *lm_info = (const lm_info_svr4 *) solib->lm_info; + auto *lm_info + = gdb::checked_static_cast<const lm_info_svr4 *> (solib->lm_info.get ()); for (const auto &tuple : info->solib_lists) { |