From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca (simark.ca [158.69.221.121]) by sourceware.org (Postfix) with ESMTPS id 6BF81385828D for ; Wed, 27 Sep 2023 20:39:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6BF81385828D Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=efficios.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=efficios.com Received: from localhost.localdomain (modemcable238.237-201-24.mc.videotron.ca [24.201.237.238]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id 6276C1E092; Wed, 27 Sep 2023 16:39:45 -0400 (EDT) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH] gdb: remove solib::pspace field Date: Wed, 27 Sep 2023 16:39:36 -0400 Message-ID: <20230927203944.294563-1-simon.marchi@efficios.com> X-Mailer: git-send-email 2.42.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1173.6 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_NONE,KAM_DMARC_STATUS,SPF_HELO_PASS,SPF_SOFTFAIL,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This backlink is not necessary, we always know the program space from the context. Pass it down the solib_unloaded observer. Change-Id: I45a503472dc791f517558b8141901472634e0556 --- gdb/breakpoint.c | 4 ++-- gdb/bsd-uthread.c | 2 +- gdb/observable.h | 7 ++++--- gdb/solib.c | 10 ++++------ gdb/solist.h | 3 --- 5 files changed, 11 insertions(+), 15 deletions(-) diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index f9b20a7d62d1..f378edf865ea 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -8018,7 +8018,7 @@ disable_breakpoints_in_shlibs (void) disabled ones can just stay disabled. */ static void -disable_breakpoints_in_unloaded_shlib (struct so_list *solib) +disable_breakpoints_in_unloaded_shlib (program_space *pspace, so_list *solib) { bool disabled_shlib_breaks = false; @@ -8027,7 +8027,7 @@ disable_breakpoints_in_unloaded_shlib (struct so_list *solib) /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */ struct breakpoint *b = loc->owner; - if (solib->pspace == loc->pspace + if (pspace == loc->pspace && !loc->shlib_disabled && (((b->type == bp_breakpoint || b->type == bp_jit_event diff --git a/gdb/bsd-uthread.c b/gdb/bsd-uthread.c index d5c6fdd36395..e27e88add869 100644 --- a/gdb/bsd-uthread.c +++ b/gdb/bsd-uthread.c @@ -294,7 +294,7 @@ bsd_uthread_solib_loaded (struct so_list *so) } static void -bsd_uthread_solib_unloaded (struct so_list *so) +bsd_uthread_solib_unloaded (program_space *pspace, so_list *so) { if (!bsd_uthread_solib_name) return; diff --git a/gdb/observable.h b/gdb/observable.h index 4ea203c6fc38..b57c3a201741 100644 --- a/gdb/observable.h +++ b/gdb/observable.h @@ -93,10 +93,11 @@ extern observable solib_loaded; -/* The shared library specified by SOLIB has been unloaded. Note - that when gdb calls this observer, the library's symbols have not +/* The shared library SOLIB has been unloaded from program space PSPACE. + Note when gdb calls this observer, the library's symbols have not been unloaded yet, and thus are still available. */ -extern observable solib_unloaded; +extern observable + solib_unloaded; /* The symbol file specified by OBJFILE has been loaded. Called with OBJFILE equal to NULL to indicate previously loaded symbol diff --git a/gdb/solib.c b/gdb/solib.c index 771954e51c8f..f2735b37927e 100644 --- a/gdb/solib.c +++ b/gdb/solib.c @@ -769,10 +769,10 @@ notify_solib_loaded (so_list *so) /* Notify interpreters and observers that solib SO has been unloaded. */ static void -notify_solib_unloaded (so_list *so) +notify_solib_unloaded (program_space *pspace, so_list *so) { interps_notify_solib_unloaded (so); - gdb::observers::solib_unloaded.notify (so); + gdb::observers::solib_unloaded.notify (pspace, so); } /* See solib.h. */ @@ -875,7 +875,7 @@ update_solib_list (int from_tty) { /* Notify any observer that the shared object has been unloaded before we remove it from GDB's tables. */ - notify_solib_unloaded (gdb); + notify_solib_unloaded (current_program_space, gdb); current_program_space->deleted_solibs.push_back (gdb->so_name); @@ -911,8 +911,6 @@ update_solib_list (int from_tty) /* Fill in the rest of each of the `struct so_list' nodes. */ for (i = inferior; i; i = i->next) { - - i->pspace = current_program_space; current_program_space->added_solibs.push_back (i); try @@ -1243,7 +1241,7 @@ clear_solib (void) struct so_list *so = current_program_space->so_list; current_program_space->so_list = so->next; - notify_solib_unloaded (so); + notify_solib_unloaded (current_program_space, so); current_program_space->remove_target_sections (so); free_so (so); } diff --git a/gdb/solist.h b/gdb/solist.h index 5275a79d811c..0f764b264f74 100644 --- a/gdb/solist.h +++ b/gdb/solist.h @@ -55,9 +55,6 @@ struct so_list /* Shared object file name, expanded to something GDB can open. */ char so_name[SO_NAME_MAX_PATH_SIZE]; - /* Program space this shared library belongs to. */ - struct program_space *pspace; - /* The following fields of the structure are built from information gathered from the shared object file itself, and are set when we actually add it to our symbol tables. base-commit: 28bc495137bcc824167c92dd5d049576f11a3ed3 -- 2.42.0