gdb: make clear_so a method of struct so_list
authorSimon Marchi <simon.marchi@efficios.com>
Mon, 2 Oct 2023 20:31:04 +0000 (16:31 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Thu, 19 Oct 2023 14:57:51 +0000 (10:57 -0400)
... 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>
gdb/solib.c
gdb/solist.h

index 5ed223b8dfca1c481bcce7e079e45246f157e1a5..e38f495056394b039e1ae27a201387edc57fac7d 100644 (file)
@@ -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
index 5f9090a07c72a589bb3e54c03525ea0723775226..75e8e8ad01826b4d182b65dfb10387209cb1def6 100644 (file)
@@ -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.  */