aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@polymtl.ca>2024-07-11 12:38:31 -0400
committerSimon Marchi <simon.marchi@efficios.com>2024-07-15 14:34:12 -0400
commit89dc60d9570ff8f0f9757a6b0a8acd7204667c66 (patch)
tree72b988e76fadc444c9f2a08909233e9e25c87988 /gdb
parent98793b838c3cf99228d7a6d89918932f4effee24 (diff)
downloadgdb-89dc60d9570ff8f0f9757a6b0a8acd7204667c66.zip
gdb-89dc60d9570ff8f0f9757a6b0a8acd7204667c66.tar.gz
gdb-89dc60d9570ff8f0f9757a6b0a8acd7204667c66.tar.bz2
gdb: split no_shared_libraries, command vs implementation
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>
Diffstat (limited to 'gdb')
-rw-r--r--gdb/infcmd.c8
-rw-r--r--gdb/infrun.c2
-rw-r--r--gdb/progspace.c2
-rw-r--r--gdb/remote.c2
-rw-r--r--gdb/solib.c20
-rw-r--r--gdb/solib.h2
-rw-r--r--gdb/symfile.c2
-rw-r--r--gdb/target.c6
-rw-r--r--gdb/target.h2
9 files changed, 27 insertions, 19 deletions
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index 71514d5..5738bf0 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -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)
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 1f32a63..b2dfd0c 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -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;
diff --git a/gdb/progspace.c b/gdb/progspace.c
index d5b5ef2..580ebfb 100644
--- a/gdb/progspace.c
+++ b/gdb/progspace.c
@@ -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. */
diff --git a/gdb/remote.c b/gdb/remote.c
index 15c3eea..4869e76 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -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
diff --git a/gdb/solib.c b/gdb/solib.c
index 7b8e09a..8faf4d7 100644
--- a/gdb/solib.c
+++ b/gdb/solib.c
@@ -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,
diff --git a/gdb/solib.h b/gdb/solib.h
index f7a93c0..6b275c5 100644
--- a/gdb/solib.h
+++ b/gdb/solib.h
@@ -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.
diff --git a/gdb/symfile.c b/gdb/symfile.c
index fc86841..7c28328 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -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 ();
diff --git a/gdb/target.c b/gdb/target.c
index 1b5aa11..0ca7087 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -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. */
diff --git a/gdb/target.h b/gdb/target.h
index 81de4a6..d0af584 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -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);