diff options
author | Simon Marchi <simon.marchi@efficios.com> | 2023-10-02 16:31:04 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@efficios.com> | 2023-10-19 10:57:51 -0400 |
commit | 4ac91b6bb82e82066ad10914121c75d7c99b7bbf (patch) | |
tree | bf88641c62927756676b3dcc8b14cac1ebb182ad /gdb | |
parent | 7ad0a42e88c09b4046205316bd6352dfb31afd79 (diff) | |
download | gdb-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.c | 35 | ||||
-rw-r--r-- | gdb/solist.h | 10 |
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. */ |