]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdb: split no_shared_libraries, command vs implementation
authorSimon Marchi <simon.marchi@polymtl.ca>
Thu, 11 Jul 2024 16:38:31 +0000 (12:38 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Mon, 15 Jul 2024 18:34:12 +0000 (14:34 -0400)
The `no_shared_libraries` function is currently used to implement the
`nosharedlibrary` command, but it also used internally by other
functions.  This does not make a very good internal API.

Add the `no_shared_libraries_command` function to implement the CLI
command.  Remove the unused parameters from `no_shared_libraries`.

Remove the `from_tty` parameter of `target_pre_inferior`, since it's now
unused.

Change-Id: I4fcba5ee1e0f7d250aab1a7b62b9ea16265fe962
Approved-By: Tom Tromey <tom@tromey.com>
Reviewed-By: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
gdb/infcmd.c
gdb/infrun.c
gdb/progspace.c
gdb/remote.c
gdb/solib.c
gdb/solib.h
gdb/symfile.c
gdb/target.c
gdb/target.h

index 71514d5ba66ea16d1694326428aecb76e5fea4a3..5738bf05bf6b64fa308feb292dda5d457794c066 100644 (file)
@@ -383,7 +383,7 @@ run_command_1 (const char *args, int from_tty, enum run_how run_how)
 
   /* Clean up any leftovers from other runs.  Some other things from
      this function should probably be moved into target_pre_inferior.  */
-  target_pre_inferior (from_tty);
+  target_pre_inferior ();
 
   /* The comment here used to read, "The exec file is re-read every
      time we do a generic_mourn_inferior, so we just have to worry
@@ -2628,7 +2628,7 @@ attach_command (const char *args, int from_tty)
 
   /* Clean up any leftovers from other runs.  Some other things from
      this function should probably be moved into target_pre_inferior.  */
-  target_pre_inferior (from_tty);
+  target_pre_inferior ();
 
   gdb::unique_xmalloc_ptr<char> stripped = strip_bg_char (args, &async_exec);
   args = stripped.get ();
@@ -2827,7 +2827,7 @@ detach_command (const char *args, int from_tty)
   /* If the solist is global across inferiors, don't clear it when we
      detach from a single inferior.  */
   if (!gdbarch_has_global_solist (inf->arch ()))
-    no_shared_libraries (nullptr, from_tty);
+    no_shared_libraries ();
 
   if (deprecated_detach_hook)
     deprecated_detach_hook ();
@@ -2853,7 +2853,7 @@ disconnect_command (const char *args, int from_tty)
   query_if_trace_running (from_tty);
   disconnect_tracing ();
   target_disconnect (args, from_tty);
-  no_shared_libraries (nullptr, from_tty);
+  no_shared_libraries ();
   init_thread_list ();
   update_previous_thread ();
   if (deprecated_detach_hook)
index 1f32a63ad541f6e393e8d655bdfab97feecd41c4..b2dfd0c96b15b61512bc4bbd691329b66f600f26 100644 (file)
@@ -1317,7 +1317,7 @@ follow_exec (ptid_t ptid, const char *exec_file_target)
   /* Also, loading a symbol file below may trigger symbol lookups, and
      we don't want those to be satisfied by the libraries of the
      previous incarnation of this process.  */
-  no_shared_libraries (nullptr, 0);
+  no_shared_libraries ();
 
   inferior *execing_inferior = current_inferior ();
   inferior *following_inferior;
index d5b5ef20023bc8544b910cf2a3433a6fcd5e15a5..580ebfbb6d1a0218cba502bd0496199648f70b16 100644 (file)
@@ -115,7 +115,7 @@ program_space::~program_space ()
   set_current_program_space (this);
 
   breakpoint_program_space_exit (this);
-  no_shared_libraries (NULL, 0);
+  no_shared_libraries ();
   free_all_objfiles ();
   /* Defer breakpoint re-set because we don't want to create new
      locations for this pspace which we're tearing down.  */
index 15c3eea6f79ba42379ab191f5c7eff6ee2ce1b62..4869e7624f924ce1658ed09d7c6707b04810dcca 100644 (file)
@@ -6271,7 +6271,7 @@ remote_target::open_1 (const char *name, int from_tty, int extended_p)
     }
 
   /* First delete any symbols previously loaded from shared libraries.  */
-  no_shared_libraries (NULL, 0);
+  no_shared_libraries ();
 
   /* Start the remote connection.  If error() or QUIT, discard this
      target (we'd otherwise be in an inconsistent state) and then
index 7b8e09ac8beb87b40d09419dfc73bda97ea6ebed..8faf4d73a527080d1e2aed245a16fbf15270b171 100644 (file)
@@ -1234,13 +1234,10 @@ sharedlibrary_command (const char *args, int from_tty)
   solib_add (args, from_tty, 1);
 }
 
-/* Implements the command "nosharedlibrary", which discards symbols
-   that have been auto-loaded from shared libraries.  Symbols from
-   shared libraries that were added by explicit request of the user
-   are not discarded.  Also called from remote.c.  */
+/* See solib.h.  */
 
 void
-no_shared_libraries (const char *ignored, int from_tty)
+no_shared_libraries ()
 {
   /* The order of the two routines below is important: clear_solib notifies
      the solib_unloaded observers, and some of these observers might need
@@ -1251,6 +1248,17 @@ no_shared_libraries (const char *ignored, int from_tty)
   objfile_purge_solibs (current_program_space);
 }
 
+/* Implements the command "nosharedlibrary", which discards symbols
+   that have been auto-loaded from shared libraries.  Symbols from
+   shared libraries that were added by explicit request of the user
+   are not discarded.  */
+
+static void
+no_shared_libraries_command (const char *ignored, int from_tty)
+{
+  no_shared_libraries ();
+}
+
 /* See solib.h.  */
 
 void
@@ -1725,7 +1733,7 @@ _initialize_solib ()
     = add_info ("sharedlibrary", info_sharedlibrary_command,
                _ ("Status of loaded shared object libraries."));
   add_info_alias ("dll", info_sharedlibrary_cmd, 1);
-  add_com ("nosharedlibrary", class_files, no_shared_libraries,
+  add_com ("nosharedlibrary", class_files, no_shared_libraries_command,
           _ ("Unload all shared object library symbols."));
 
   add_setshow_boolean_cmd ("auto-solib-add", class_support, &auto_solib_add,
index f7a93c0718f0d7ccf6c6a2371e22092ab4a77079..6b275c580fa4eef2bca1d46b438d481f2f67c0c5 100644 (file)
@@ -82,7 +82,7 @@ extern bool in_solib_dynsym_resolve_code (CORE_ADDR);
 
 /* Discard symbols that were auto-loaded from shared libraries.  */
 
-extern void no_shared_libraries (const char *ignored, int from_tty);
+extern void no_shared_libraries ();
 
 /* Synchronize GDB's shared object list with inferior's.
 
index fc86841b52d5d03b4330639e6cf8169d1048b3a9..7c283289e620e52cfcc5d8bf43dd7a264983040d 100644 (file)
@@ -1209,7 +1209,7 @@ symbol_file_clear (int from_tty)
 
   /* solib descriptors may have handles to objfiles.  Wipe them before their
      objfiles get stale by free_all_objfiles.  */
-  no_shared_libraries (NULL, from_tty);
+  no_shared_libraries ();
 
   current_program_space->free_all_objfiles ();
 
index 1b5aa11ed6f5d94f2f2983972e63cb666e08d389..0ca708729a7a829aa203ae364be1fb99e723a8e4 100644 (file)
@@ -2428,7 +2428,7 @@ info_target_command (const char *args, int from_tty)
    resets (things which might change between targets).  */
 
 void
-target_pre_inferior (int from_tty)
+target_pre_inferior ()
 {
   /* Clear out solib state.  Otherwise the solib state of the previous
      inferior might have survived and is entirely wrong for the new
@@ -2452,7 +2452,7 @@ target_pre_inferior (int from_tty)
      memory regions and features.  */
   if (!gdbarch_has_global_solist (current_inferior ()->arch ()))
     {
-      no_shared_libraries (NULL, from_tty);
+      no_shared_libraries ();
 
       invalidate_target_mem_regions ();
 
@@ -2504,7 +2504,7 @@ target_preopen (int from_tty)
      live process to a core of the same program.  */
   current_inferior ()->pop_all_targets_above (file_stratum);
 
-  target_pre_inferior (from_tty);
+  target_pre_inferior ();
 }
 
 /* See target.h.  */
index 81de4a678c3f0e0216e7ec27db8b4a70acf001bc..d0af584a2bb041cc110c1692c0c9c337ae8b90b3 100644 (file)
@@ -2427,7 +2427,7 @@ struct target_unpusher
 
 typedef std::unique_ptr<struct target_ops, target_unpusher> target_unpush_up;
 
-extern void target_pre_inferior (int);
+extern void target_pre_inferior ();
 
 extern void target_preopen (int);