From patchwork Wed Feb 7 16:53:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 85431 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 09B8A385842C for ; Wed, 7 Feb 2024 16:56:01 +0000 (GMT) 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 73F28385801E for ; Wed, 7 Feb 2024 16:54:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 73F28385801E Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=efficios.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=efficios.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 73F28385801E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=158.69.221.121 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707324890; cv=none; b=e9/DzHTh2OQ0+fneX/VEtcGS2v5G9KWTuxIMm7GBrTJVPIQlwm7DHck9aBV5FfzGigcLcdlI51l63PlC3dGIPTeFmh2ZCBBzk1Pk2uRCsYsYcRvij9samMai4rXgdpcCh4BuAz9/aQmdqAH/KtsgpjwgEe5syGGk85kiePAaxmU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707324890; c=relaxed/simple; bh=2bN3+8gYHh3n2NXXD37mWUedWCFPfyb0gpG67GDgFNU=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=SZjf5FOpbpodmQoUFsos6Dbqci0JWjlFb9lyg1yzI0oN0hN39UjGyW5xwgICqSZ/cd/Cl5Tlp3ZwZeZKV4r46wo7488LIGOmLclzY81BF/VzGZ/C6q3WXWNnuvYrQjn4V8i9GEpOazu7r6+ALbQUSOs4gsdnlUepoq1vXxG37Co= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from smarchi-efficios.internal.efficios.com (192-222-143-198.qc.cable.ebox.net [192.222.143.198]) (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 1F2E51E0C2; Wed, 7 Feb 2024 11:54:46 -0500 (EST) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH v2 1/5] gdb: add program_space parameter to mark_breakpoints_out Date: Wed, 7 Feb 2024 11:53:19 -0500 Message-ID: <20240207165445.117512-2-simon.marchi@efficios.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240207165445.117512-1-simon.marchi@efficios.com> References: <20240207165445.117512-1-simon.marchi@efficios.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3496.5 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_NONE, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_SOFTFAIL, TXREP, T_SCC_BODY_TEXT_LINE 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: , Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org Make the current_program_space reference bubble up one level. Change-Id: Idc8ed78d23bf3bb2969f6963d8cc049f26901c29 --- gdb/breakpoint.c | 8 ++++---- gdb/breakpoint.h | 5 +++-- gdb/infrun.c | 2 +- gdb/target.c | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 7d1171ec35eb..d844ef7baf25 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -4216,13 +4216,13 @@ remove_breakpoint (struct bp_location *bl) return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT); } -/* Clear the "inserted" flag in all breakpoints. */ +/* See breakpoint.h. */ void -mark_breakpoints_out (void) +mark_breakpoints_out (program_space *pspace) { for (bp_location *bl : all_bp_locations ()) - if (bl->pspace == current_program_space) + if (bl->pspace == pspace) bl->inserted = 0; } @@ -4248,7 +4248,7 @@ breakpoint_init_inferior (enum inf_context context) if (gdbarch_has_global_breakpoints (current_inferior ()->arch ())) return; - mark_breakpoints_out (); + mark_breakpoints_out (pspace); for (breakpoint &b : all_breakpoints_safe ()) { diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h index 93c49520e8ce..e7bebed2725d 100644 --- a/gdb/breakpoint.h +++ b/gdb/breakpoint.h @@ -1764,8 +1764,9 @@ extern void breakpoint_set_inferior (struct breakpoint *b, int inferior); extern void breakpoint_set_task (struct breakpoint *b, int task); -/* Clear the "inserted" flag in all breakpoints. */ -extern void mark_breakpoints_out (void); +/* Clear the "inserted" flag in all breakpoints locations in PSPACE. */ + +extern void mark_breakpoints_out (program_space *pspace); extern struct breakpoint *create_jit_event_breakpoint (struct gdbarch *, CORE_ADDR); diff --git a/gdb/infrun.c b/gdb/infrun.c index 87965fb12742..d00a98906d71 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -1247,7 +1247,7 @@ follow_exec (ptid_t ptid, const char *exec_file_target) value that was overwritten with a TRAP instruction). Since we now have a new a.out, those shadow contents aren't valid. */ - mark_breakpoints_out (); + mark_breakpoints_out (current_program_space); /* The target reports the exec event to the main thread, even if some other thread does the exec, and even if the main thread was diff --git a/gdb/target.c b/gdb/target.c index ec75f952ea20..e72e22da69a3 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -3628,7 +3628,7 @@ generic_mourn_inferior (void) /* Mark breakpoints uninserted in case something tries to delete a breakpoint while we delete the inferior's threads (which would fail, since the inferior is long gone). */ - mark_breakpoints_out (); + mark_breakpoints_out (inf->pspace); if (inf->pid != 0) exit_inferior (inf); From patchwork Wed Feb 7 16:53:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 85429 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 4CB413857C44 for ; Wed, 7 Feb 2024 16:55:27 +0000 (GMT) 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 ECBCA3858015 for ; Wed, 7 Feb 2024 16:54:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org ECBCA3858015 Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=efficios.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=efficios.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org ECBCA3858015 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=158.69.221.121 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707324890; cv=none; b=gAZsfUbEy4epEn3AQ8AaLyUWTa5J9MBcMTnIxP6pQhLHUgGEaCdTpKwXWlUQl5LSobtm4/PBCOoXfADoqicnLcY1yTUtGVPn5rI0qfCbdTLOnJL2ifQ90CDhO+agfpfBsk/uS5E2qLEFV8mQz4K83N7bJb3hfuhNRx468I6f8to= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707324890; c=relaxed/simple; bh=pgAJIduwhIu7TJDi0+W9umobh42mrDkN1LJJ+ZTguEU=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=TB9T53a218B6Pu4Dys+g/ghVuDTDoTquy5KNGM0vc9Aafg6VWMuQ5a9s1mSX3QvJT60mmPPZStP3tlYr2rWvNJLkxmVBS9VXkkR1gPK+qbbgYsqMD3yWoDe91sjmF189S+QS+Gj/lvEUHW3a11TVfte7l07Xsgg3zLauq/A8pmw= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from smarchi-efficios.internal.efficios.com (192-222-143-198.qc.cable.ebox.net [192.222.143.198]) (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 6633C1E0C3; Wed, 7 Feb 2024 11:54:47 -0500 (EST) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH v2 2/5] gdb: add inferior parameter to breakpoint_init_inferior Date: Wed, 7 Feb 2024 11:53:20 -0500 Message-ID: <20240207165445.117512-3-simon.marchi@efficios.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240207165445.117512-1-simon.marchi@efficios.com> References: <20240207165445.117512-1-simon.marchi@efficios.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3496.5 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_NONE, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_SOFTFAIL, TXREP, T_SCC_BODY_TEXT_LINE 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: , Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org By inspection, I believe that breakpoint_init_inferior doesn't call anything that relies on the current program space or inferior. So, add an inferior parameter, to make the current inferior / program space references bubble up one level. Change-Id: Ib07b7a6d360e324f6ae1aa502dd314b8cce421b7 --- gdb/breakpoint.c | 22 +++++----------------- gdb/breakpoint.h | 12 +++++++++++- gdb/infcmd.c | 10 +++++----- gdb/infrun.c | 4 ++-- gdb/target.c | 2 +- 5 files changed, 24 insertions(+), 26 deletions(-) diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index d844ef7baf25..8d8e97400e37 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -4226,33 +4226,21 @@ mark_breakpoints_out (program_space *pspace) bl->inserted = 0; } -/* Clear the "inserted" flag in all breakpoints and delete any - breakpoints which should go away between runs of the program. - - Plus other such housekeeping that has to be done for breakpoints - between runs. - - Note: this function gets called at the end of a run (by - generic_mourn_inferior) and when a run begins (by - init_wait_for_inferior). */ - - +/* See breakpoint.h. */ void -breakpoint_init_inferior (enum inf_context context) +breakpoint_init_inferior (inferior *inf, inf_context context) { - struct program_space *pspace = current_program_space; - /* If breakpoint locations are shared across processes, then there's nothing to do. */ - if (gdbarch_has_global_breakpoints (current_inferior ()->arch ())) + if (gdbarch_has_global_breakpoints (inf->arch ())) return; - mark_breakpoints_out (pspace); + mark_breakpoints_out (inf->pspace); for (breakpoint &b : all_breakpoints_safe ()) { - if (b.has_locations () && b.first_loc ().pspace != pspace) + if (b.has_locations () && b.first_loc ().pspace != inf->pspace) continue; switch (b.type) diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h index e7bebed2725d..8530a7127945 100644 --- a/gdb/breakpoint.h +++ b/gdb/breakpoint.h @@ -1515,7 +1515,17 @@ extern struct breakpoint *clone_momentary_breakpoint (struct breakpoint *bpkt); extern void set_ignore_count (int, int, int); -extern void breakpoint_init_inferior (enum inf_context); +/* Clear the "inserted" flag in all breakpoint locations of INF's program space + and delete any breakpoints which should go away between runs of the program. + + Plus other such housekeeping that has to be done for breakpoints + between runs. + + Note: this function gets called at the end of a run (by + generic_mourn_inferior) and when a run begins (by + init_wait_for_inferior). */ + +extern void breakpoint_init_inferior (inferior *inf, inf_context context); extern void breakpoint_auto_delete (bpstat *); diff --git a/gdb/infcmd.c b/gdb/infcmd.c index 54063b37beb8..4e17a6b06295 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -2824,14 +2824,14 @@ detach_command (const char *args, int from_tty) /* Hold a strong reference to the target while (maybe) detaching the parent. Otherwise detaching could close the target. */ - auto target_ref - = target_ops_ref::new_reference (current_inferior ()->process_target ()); + inferior *inf = current_inferior (); + auto target_ref = target_ops_ref::new_reference (inf->process_target ()); /* Save this before detaching, since detaching may unpush the process_stratum target. */ bool was_non_stop_p = target_is_non_stop_p (); - target_detach (current_inferior (), from_tty); + target_detach (inf, from_tty); update_previous_thread (); @@ -2840,11 +2840,11 @@ detach_command (const char *args, int from_tty) this within target_detach because that is also used when following child forks, and in that case we will want to transfer breakpoints to the child, not delete them. */ - breakpoint_init_inferior (inf_exited); + breakpoint_init_inferior (inf, inf_exited); /* If the solist is global across inferiors, don't clear it when we detach from a single inferior. */ - if (!gdbarch_has_global_solist (current_inferior ()->arch ())) + if (!gdbarch_has_global_solist (inf->arch ())) no_shared_libraries (nullptr, from_tty); if (deprecated_detach_hook) diff --git a/gdb/infrun.c b/gdb/infrun.c index d00a98906d71..fa68ab8296e9 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -1297,7 +1297,7 @@ follow_exec (ptid_t ptid, const char *exec_file_target) /* We've followed the inferior through an exec. Therefore, the inferior has essentially been killed & reborn. */ - breakpoint_init_inferior (inf_execd); + breakpoint_init_inferior (current_inferior (), inf_execd); gdb::unique_xmalloc_ptr exec_file_host = exec_file_find (exec_file_target, nullptr); @@ -3819,7 +3819,7 @@ init_wait_for_inferior (void) { /* These are meaningless until the first time through wait_for_inferior. */ - breakpoint_init_inferior (inf_starting); + breakpoint_init_inferior (current_inferior (), inf_starting); clear_proceed_status (0); diff --git a/gdb/target.c b/gdb/target.c index e72e22da69a3..bbc1badc9e19 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -3636,7 +3636,7 @@ generic_mourn_inferior (void) /* Note this wipes step-resume breakpoints, so needs to be done after exit_inferior, which ends up referencing the step-resume breakpoints through clear_thread_inferior_resources. */ - breakpoint_init_inferior (inf_exited); + breakpoint_init_inferior (inf, inf_exited); registers_changed (); From patchwork Wed Feb 7 16:53:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 85430 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 C9E9E3857C65 for ; Wed, 7 Feb 2024 16:55:36 +0000 (GMT) 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 4FC47385803B for ; Wed, 7 Feb 2024 16:54:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4FC47385803B Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=efficios.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=efficios.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4FC47385803B Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=158.69.221.121 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707324892; cv=none; b=XGq289+7JBwH9f7Pne1nChlO3UOIL1gB05SKgUTNxt0E3GKrC5HNrcakZ461x6bQujwgIXUsIHgk8Si7qnWqNPQCPf+DRM+Bpn0qWPMuWIITjbDemRNDSmpmXYr3bNckhy7mV+LPvMKcQlUBq2MyykcyNJeX+M6Oy8R649zDRS4= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707324892; c=relaxed/simple; bh=9BHx6mqFZYZUkvwgdM5ZVTs/M66wgCAUTDaLMHLYJOU=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=Q8ar+MQCXtzr581FhRmav1UKmPdKUmihuwObui6dDGuiag+RuotjjnxvP4+OWB/vq3oRZuVk3rL0+7dcFmjUoRd6bwllBGhFjHV+DMkRbo54LRZApKIdB7r2sE+SvyiJpOhUhrUiXPs9zbqDlpq4RUVxq7J9GupV5wIHuZHf9Ow= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from smarchi-efficios.internal.efficios.com (192-222-143-198.qc.cable.ebox.net [192.222.143.198]) (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 942AF1E0D0; Wed, 7 Feb 2024 11:54:47 -0500 (EST) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH v2 3/5] gdb: add program_space parameter to disable_breakpoints_in_shlibs Date: Wed, 7 Feb 2024 11:53:21 -0500 Message-ID: <20240207165445.117512-4-simon.marchi@efficios.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240207165445.117512-1-simon.marchi@efficios.com> References: <20240207165445.117512-1-simon.marchi@efficios.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3496.5 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_NONE, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_SOFTFAIL, TXREP, T_SCC_BODY_TEXT_LINE 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: , Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org Make the current_program_space reference bubble up one level. Change-Id: Ide917aa306bff1872d961244901d79f65d2da62e --- gdb/breakpoint.c | 7 +++---- gdb/breakpoint.h | 5 ++++- gdb/solib.c | 2 +- gdb/windows-nat.c | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 8d8e97400e37..5f05657a8b3e 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -7972,11 +7972,10 @@ create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR add return b; } -/* Disable any breakpoints that are on code in shared libraries. Only - apply to enabled breakpoints, disabled ones can just stay disabled. */ +/* See breakpoint.h. */ void -disable_breakpoints_in_shlibs (void) +disable_breakpoints_in_shlibs (program_space *pspace) { for (bp_location *loc : all_bp_locations ()) { @@ -7992,7 +7991,7 @@ disable_breakpoints_in_shlibs (void) || (b->type == bp_jit_event) || (b->type == bp_hardware_breakpoint) || (is_tracepoint (b))) - && loc->pspace == current_program_space + && loc->pspace == pspace && !loc->shlib_disabled && solib_name_from_address (loc->pspace, loc->address) ) diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h index 8530a7127945..226e4d06993e 100644 --- a/gdb/breakpoint.h +++ b/gdb/breakpoint.h @@ -1802,7 +1802,10 @@ extern void remove_solib_event_breakpoints (void); delete at next stop disposition. */ extern void remove_solib_event_breakpoints_at_next_stop (void); -extern void disable_breakpoints_in_shlibs (void); +/* Disable any breakpoints that are on code in shared libraries in PSPACE. + Only apply to enabled breakpoints, disabled ones can just stay disabled. */ + +extern void disable_breakpoints_in_shlibs (program_space *pspace); /* This function returns true if B is a catchpoint. */ diff --git a/gdb/solib.c b/gdb/solib.c index 0a888430cf9b..98cda039a833 100644 --- a/gdb/solib.c +++ b/gdb/solib.c @@ -1187,7 +1187,7 @@ clear_solib (void) { const solib_ops *ops = gdbarch_so_ops (current_inferior ()->arch ()); - disable_breakpoints_in_shlibs (); + disable_breakpoints_in_shlibs (current_program_space); current_program_space->so_list.clear_and_dispose ([] (solib *so) { notify_solib_unloaded (current_program_space, *so); diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c index 48b0d10d24c7..7f3044fc61de 100644 --- a/gdb/windows-nat.c +++ b/gdb/windows-nat.c @@ -1906,7 +1906,7 @@ windows_nat_target::do_initial_windows_stuff (DWORD pid, bool attaching) inf = current_inferior (); if (!inf->target_is_pushed (this)) inf->push_target (this); - disable_breakpoints_in_shlibs (); + disable_breakpoints_in_shlibs (current_program_space); windows_clear_solib (); clear_proceed_status (0); init_wait_for_inferior (); From patchwork Wed Feb 7 16:53:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 85432 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 39C443858025 for ; Wed, 7 Feb 2024 16:56:17 +0000 (GMT) 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 765E13858009 for ; Wed, 7 Feb 2024 16:54:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 765E13858009 Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=efficios.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=efficios.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 765E13858009 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=158.69.221.121 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707324892; cv=none; b=r2RNszuqpVQDzUm00gCqhiBEk1XFX8ao5T2ihs0/A4Y3mb91zPpVNaE46/5IrC5/Cvb8nP6NyPXd65q8ts1Vui9+Erejn1svoSL/UrjsBXA4MWBwOmFzcsKa9zACqHWFTUEGJOi0ZcB6RcajYRcfViupoFN3gteWNip1nd/FpZI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707324892; c=relaxed/simple; bh=MjfgzcTYdyG4Sk/iOG18t97AFac8uDUiqn3o0D19JZs=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=PhqUDKi6tlcYVbcEmEUh37LsIwAU5pS77DYCPUTZ/tI0xxys1un8V97Pu+bjGikoiuzKNAUfhqXK7ibCIHEm2w7qqxpPWJesVi011aUsDfyDCwyOvvN/rTfEHQjL1pUZ94BI1mcciCyX76R02rqWojpsAMlj6TnilXRvA8MXYy4= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from smarchi-efficios.internal.efficios.com (192-222-143-198.qc.cable.ebox.net [192.222.143.198]) (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 008881E110; Wed, 7 Feb 2024 11:54:47 -0500 (EST) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH v2 4/5] gdb: add program_space parameter to clear_solib Date: Wed, 7 Feb 2024 11:53:22 -0500 Message-ID: <20240207165445.117512-5-simon.marchi@efficios.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240207165445.117512-1-simon.marchi@efficios.com> References: <20240207165445.117512-1-simon.marchi@efficios.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3496.5 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_NONE, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_SOFTFAIL, TXREP, T_SCC_BODY_TEXT_LINE 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: , Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org Make the current_program_space reference bubble up one level. Remove one unnecessary declaration of clear_solib. Change-Id: I234e2c8c0b71713364fc7b76cee2bee2b026bd6d --- gdb/corelow.c | 2 +- gdb/solib.c | 16 ++++++++-------- gdb/solib.h | 6 +++--- gdb/symtab.h | 4 ---- 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/gdb/corelow.c b/gdb/corelow.c index 43c1f69b1317..f291b2aba191 100644 --- a/gdb/corelow.c +++ b/gdb/corelow.c @@ -335,7 +335,7 @@ core_target::clear_core () /* Clear out solib state while the bfd is still open. See comments in clear_solib in solib.c. */ - clear_solib (); + clear_solib (current_program_space); current_program_space->cbfd.reset (nullptr); } diff --git a/gdb/solib.c b/gdb/solib.c index 98cda039a833..991ff156d12f 100644 --- a/gdb/solib.c +++ b/gdb/solib.c @@ -1180,23 +1180,23 @@ solib_keep_data_in_core (CORE_ADDR vaddr, unsigned long size) return false; } -/* Called by free_all_symtabs */ +/* See solib.h. */ void -clear_solib (void) +clear_solib (program_space *pspace) { const solib_ops *ops = gdbarch_so_ops (current_inferior ()->arch ()); - disable_breakpoints_in_shlibs (current_program_space); + disable_breakpoints_in_shlibs (pspace); - current_program_space->so_list.clear_and_dispose ([] (solib *so) { - notify_solib_unloaded (current_program_space, *so); - current_program_space->remove_target_sections (so); + pspace->so_list.clear_and_dispose ([pspace] (solib *so) { + notify_solib_unloaded (pspace, *so); + pspace->remove_target_sections (so); delete so; }); if (ops->clear_solib != nullptr) - ops->clear_solib (current_program_space); + ops->clear_solib (pspace); } /* Shared library startup support. When GDB starts up the inferior, @@ -1244,7 +1244,7 @@ no_shared_libraries (const char *ignored, int from_tty) access to their associated objfiles. Therefore, we can not purge the solibs' objfiles before clear_solib has been called. */ - clear_solib (); + clear_solib (current_program_space); objfile_purge_solibs (); } diff --git a/gdb/solib.h b/gdb/solib.h index 69183278318b..f7a93c0718f0 100644 --- a/gdb/solib.h +++ b/gdb/solib.h @@ -42,10 +42,10 @@ extern bool debug_solib; #define SOLIB_SCOPED_DEBUG_START_END(fmt, ...) \ scoped_debug_start_end (debug_solib, "solib", fmt, ##__VA_ARGS__) -/* Called when we free all symtabs, to free the shared library information - as well. */ +/* Called when we free all symtabs of PSPACE, to free the shared library + information as well. */ -extern void clear_solib (void); +extern void clear_solib (program_space *pspace); /* Called to add symbols from a shared library to gdb's symbol table. */ diff --git a/gdb/symtab.h b/gdb/symtab.h index 3b067a77b3c8..ca5a5b0f7fde 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -2423,10 +2423,6 @@ extern bool find_line_pc_range (struct symtab_and_line, CORE_ADDR *, extern void resolve_sal_pc (struct symtab_and_line *); -/* solib.c */ - -extern void clear_solib (void); - /* The reason we're calling into a completion match list collector function. */ enum class complete_symbol_mode From patchwork Wed Feb 7 16:53:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 85433 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 AD7953858032 for ; Wed, 7 Feb 2024 16:56:30 +0000 (GMT) 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 65EFF3858025 for ; Wed, 7 Feb 2024 16:54:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 65EFF3858025 Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=efficios.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=efficios.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 65EFF3858025 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=158.69.221.121 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707324892; cv=none; b=eQJEOS0F4ox9UNMR79vEGESZ8HAH1pjBHtsyQFStGWVmyZMrvHBUeJ1Sic0hqc7mR28MrgEraGqL4bTiDpPpaicTzwK5G4WfhYUx1Z1vKG56gd9Is3fERBY66arfGR3GKEBX5hswIc512hUQv5Ga3BzGtSJKB4w2R99xVymHzVk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707324892; c=relaxed/simple; bh=/mnQ4tLa0mjJWYaRD4y8x6CCPYitIJBCrTEz5PhuyCI=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=bspFy5Gwza6pRGPgyYTojmQLLcyJEpYSGaHKKNPB0Q8VEPcLrYJ4vzls7dZmlYsdUTiyOvdk33BIu0fleSnEN6JBkV0T+2DN4GZm/OyPhDlO33cDJR53ahB1p8SOc5SX/tl0Bv1+FfIPSJzV6QE5gG6s/Rqj5L7kQWmKFCk2QHo= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from smarchi-efficios.internal.efficios.com (192-222-143-198.qc.cable.ebox.net [192.222.143.198]) (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 41FBE1E11E; Wed, 7 Feb 2024 11:54:48 -0500 (EST) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH v2 5/5] gdb: remove unnecessary nullptr check in remove_user_added_objfile Date: Wed, 7 Feb 2024 11:53:23 -0500 Message-ID: <20240207165445.117512-6-simon.marchi@efficios.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240207165445.117512-1-simon.marchi@efficios.com> References: <20240207165445.117512-1-simon.marchi@efficios.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3496.5 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_NONE, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_SOFTFAIL, TXREP, T_SCC_BODY_TEXT_LINE 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: , Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org Since commit 74daa597e74 ("gdb: add all_objfiles_removed observer"), the objfile passed to the free_objfile observable can't be nullptr. Change-Id: If215aa051ab43c068b11746938022c7efca09caa --- gdb/solib.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdb/solib.c b/gdb/solib.c index 991ff156d12f..952897c37fc9 100644 --- a/gdb/solib.c +++ b/gdb/solib.c @@ -1695,7 +1695,7 @@ gdb_bfd_lookup_symbol (bfd *abfd, static void remove_user_added_objfile (struct objfile *objfile) { - if (objfile != 0 && objfile->flags & OBJF_USERLOADED) + if (objfile->flags & OBJF_USERLOADED) { for (solib &so : objfile->pspace->solibs ()) if (so.objfile == objfile)