aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@efficios.com>2023-10-02 16:31:04 -0400
committerSimon Marchi <simon.marchi@efficios.com>2023-10-19 10:57:51 -0400
commit4ac91b6bb82e82066ad10914121c75d7c99b7bbf (patch)
treebf88641c62927756676b3dcc8b14cac1ebb182ad /gdb
parent7ad0a42e88c09b4046205316bd6352dfb31afd79 (diff)
downloadgdb-4ac91b6bb82e82066ad10914121c75d7c99b7bbf.zip
gdb-4ac91b6bb82e82066ad10914121c75d7c99b7bbf.tar.gz
gdb-4ac91b6bb82e82066ad10914121c75d7c99b7bbf.tar.bz2
gdb: make clear_so a method of struct so_list
... just because it seems to make sense to do so. Change-Id: Ie283c92d9b90c54e3deee96a43c6a942d8b5910b Approved-By: Pedro Alves <pedro@palves.net> Reviewed-By: Reviewed-By: Lancelot Six <lancelot.six@amd.com>
Diffstat (limited to 'gdb')
-rw-r--r--gdb/solib.c35
-rw-r--r--gdb/solist.h10
2 files changed, 24 insertions, 21 deletions
diff --git a/gdb/solib.c b/gdb/solib.c
index 5ed223b..e38f495 100644
--- a/gdb/solib.c
+++ b/gdb/solib.c
@@ -623,39 +623,32 @@ solib_map_sections (so_list &so)
return 1;
}
-/* Free symbol-file related contents of SO and reset for possible reloading
- of SO. If we have opened a BFD for SO, close it. If we have placed SO's
- sections in some target's section table, the caller is responsible for
- removing them.
+/* See solist.h. */
- This function doesn't mess with objfiles at all. If there is an
- objfile associated with SO that needs to be removed, the caller is
- responsible for taking care of that. */
-
-static void
-clear_so (so_list &so)
+void
+so_list::clear ()
{
const target_so_ops *ops = gdbarch_so_ops (current_inferior ()->arch ());
- delete so.sections;
- so.sections = NULL;
+ delete this->sections;
+ this->sections = nullptr;
- gdb_bfd_unref (so.abfd);
- so.abfd = NULL;
+ gdb_bfd_unref (this->abfd);
+ this->abfd = nullptr;
/* Our caller closed the objfile, possibly via objfile_purge_solibs. */
- so.symbols_loaded = 0;
- so.objfile = NULL;
+ this->symbols_loaded = 0;
+ this->objfile = nullptr;
- so.addr_low = so.addr_high = 0;
+ this->addr_low = this->addr_high = 0;
/* Restore the target-supplied file name. SO_NAME may be the path
of the symbol file. */
- strcpy (so.so_name, so.so_original_name);
+ strcpy (this->so_name, this->so_original_name);
/* Do the same for target-specific data. */
if (ops->clear_so != NULL)
- ops->clear_so (so);
+ ops->clear_so (*this);
}
lm_info::~lm_info () = default;
@@ -674,7 +667,7 @@ lm_info::~lm_info () = default;
void
free_so (so_list &so)
{
- clear_so (so);
+ so.clear ();
delete &so;
}
@@ -1358,7 +1351,7 @@ reload_shared_libraries_1 (int from_tty)
&& !solib_used (so))
so->objfile->unlink ();
current_program_space->remove_target_sections (so);
- clear_so (*so);
+ so->clear ();
}
/* If this shared library is now associated with a new symbol
diff --git a/gdb/solist.h b/gdb/solist.h
index 5f9090a..75e8e8a 100644
--- a/gdb/solist.h
+++ b/gdb/solist.h
@@ -38,6 +38,16 @@ using lm_info_up = std::unique_ptr<lm_info>;
struct so_list
{
+ /* Free symbol-file related contents of SO and reset for possible reloading
+ of SO. If we have opened a BFD for SO, close it. If we have placed SO's
+ sections in some target's section table, the caller is responsible for
+ removing them.
+
+ This function doesn't mess with objfiles at all. If there is an
+ objfile associated with SO that needs to be removed, the caller is
+ responsible for taking care of that. */
+ void clear () ;
+
/* The following fields of the structure come directly from the
dynamic linker's tables in the inferior, and are initialized by
current_sos. */