diff options
author | Simon Marchi <simon.marchi@efficios.com> | 2023-10-02 14:46:18 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@efficios.com> | 2023-10-19 10:57:51 -0400 |
commit | 581b34c2a153d36876ec92bbcd1820ac1d99f83b (patch) | |
tree | c79693a31eab84dea680b98c942ab307a996ab60 /gdb/solib-darwin.c | |
parent | 6fe4d5bf18512798b3a685599bfcff5aab3f798e (diff) | |
download | gdb-581b34c2a153d36876ec92bbcd1820ac1d99f83b.zip gdb-581b34c2a153d36876ec92bbcd1820ac1d99f83b.tar.gz gdb-581b34c2a153d36876ec92bbcd1820ac1d99f83b.tar.bz2 |
gdb: add program_space parameter to target_so_ops::clear_solib
The clear_solib is implicitly meant to clear the resources associated to
the current program space (that's what the solib implementations that
actually support multi-program-space / multi-inferior do). Make that
explicit by adding a program_space parameter and pass down
current_program_space in call sites. The implementation of the
clear_solib callbacks is fairly simple, I don't think any of them rely
on global state other than accessing current_program_space.
Change-Id: I8d0cc4db7b4f8db8d7452879c0c62db03269bf46
Approved-By: Pedro Alves <pedro@palves.net>
Reviewed-By: Reviewed-By: Lancelot Six <lancelot.six@amd.com>
Diffstat (limited to 'gdb/solib-darwin.c')
-rw-r--r-- | gdb/solib-darwin.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/gdb/solib-darwin.c b/gdb/solib-darwin.c index 98c81bb..fe6483e 100644 --- a/gdb/solib-darwin.c +++ b/gdb/solib-darwin.c @@ -75,19 +75,17 @@ struct darwin_info static const registry<program_space>::key<darwin_info> solib_darwin_pspace_data; -/* Get the current darwin data. If none is found yet, add it now. This +/* Get the darwin solib data for PSPACE. If none is found yet, add it now. This function always returns a valid object. */ -static struct darwin_info * -get_darwin_info (void) +static darwin_info * +get_darwin_info (program_space *pspace) { - struct darwin_info *info; - - info = solib_darwin_pspace_data.get (current_program_space); - if (info != NULL) + darwin_info *info = solib_darwin_pspace_data.get (pspace); + if (info != nullptr) return info; - return solib_darwin_pspace_data.emplace (current_program_space); + return solib_darwin_pspace_data.emplace (pspace); } /* Return non-zero if the version in dyld_all_image is known. */ @@ -225,7 +223,7 @@ darwin_current_sos (void) struct so_list *head = NULL; struct so_list *tail = NULL; int i; - struct darwin_info *info = get_darwin_info (); + darwin_info *info = get_darwin_info (current_program_space); /* Be sure image infos are loaded. */ darwin_load_image_infos (info); @@ -506,7 +504,7 @@ darwin_solib_create_inferior_hook (int from_tty) if (!target_has_execution ()) return; - struct darwin_info *info = get_darwin_info (); + darwin_info *info = get_darwin_info (current_program_space); CORE_ADDR load_addr; info->all_image_addr = 0; @@ -601,9 +599,9 @@ darwin_solib_create_inferior_hook (int from_tty) } static void -darwin_clear_solib (void) +darwin_clear_solib (program_space *pspace) { - struct darwin_info *info = get_darwin_info (); + darwin_info *info = get_darwin_info (pspace); info->all_image_addr = 0; info->all_image.version = 0; |