From patchwork Wed Sep 27 20:39:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 76812 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6645E38618A0 for ; Wed, 27 Sep 2023 20:40:12 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6645E38618A0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1695847212; bh=ItVrS9jbrE47wfQYp2cqbzfh3hpfbyYCI7g5YCe6cAk=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=GNIZInAgRgZgfahnUzM5hpJiRU5vhda3+7LTGuGZm6SDiuFrH/BZNQhxOlZpwF1gx hSbg2mYQHdKIlMQ96UaF6sCaRreKvjlnPHuWMu2Cx8S8d0DIYtlzvKoOjTLNU2sU+2 eX4qlmf8SzhNvIXz+DWFTsEbfP7jw0s0x059eYgo= X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org 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 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) 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 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 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Simon Marchi via Gdb-patches From: Simon Marchi Reply-To: Simon Marchi Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org Sender: "Gdb-patches" 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(-) base-commit: 28bc495137bcc824167c92dd5d049576f11a3ed3 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.