From patchwork Tue Feb 6 17:14: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: 85366 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 1951038582A3 for ; Tue, 6 Feb 2024 17:15:48 +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 96439385841D for ; Tue, 6 Feb 2024 17:15:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 96439385841D 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 96439385841D 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=1707239718; cv=none; b=OrzyotdZfTexKolETvFK5qeNR0NzBLfRcwHH6pxMiNmISOfasL4CCBHXcr0IdYosVuziQy+RIS0ATw5fFmP2hiRbhSDzP53aLy0BBf/AJ4FSclgxrazBc4QaOY5M1uweBiD4SCF9X9Tlgqge4OX9ChdwbnxuAk6i+6/2BQrwwYY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707239718; c=relaxed/simple; bh=2bN3+8gYHh3n2NXXD37mWUedWCFPfyb0gpG67GDgFNU=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=vCH/ieE1EcL/shdHmagfSqo2qkIdtYB553IQc0iiECk+auxFqyITXGQCV/nNer62jlkpQB2WRaVnZEFRlb8L43YlQqzrxU2QcqHriA9NTnr1AIQSLVMcs7JqPrlezlwHpkIrf6vt8pePCwSNVevD+PG8FmpHs60N6YGQI8RKd0o= 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 E4F7D1E0C2; Tue, 6 Feb 2024 12:15:15 -0500 (EST) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH 1/5] gdb: add program_space parameter to mark_breakpoints_out Date: Tue, 6 Feb 2024 12:14:23 -0500 Message-ID: <20240206171514.119244-2-simon.marchi@efficios.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240206171514.119244-1-simon.marchi@efficios.com> References: <20240206171514.119244-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 Tue Feb 6 17:14:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 85370 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 DA5863858415 for ; Tue, 6 Feb 2024 17:16:37 +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 C2D433858427 for ; Tue, 6 Feb 2024 17:15:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C2D433858427 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 C2D433858427 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=1707239719; cv=none; b=vrZQ8oNFjDHLkalYA9ldXZlX5ZXrpbf5sIscECUnYOKtmDi8jY4DfCktL4sW9CzlNuXhV3nnN6/7WAT6+mLWHk32tBFXj42leb5KmC4w8jtfO7Kpgq+Rdbt5OzNY4HJMDL0FPI7EvVd/OE30dJVmq4pHIWGLWsfa0LaBoxIz00k= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707239719; c=relaxed/simple; bh=pgAJIduwhIu7TJDi0+W9umobh42mrDkN1LJJ+ZTguEU=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=f5VfwKDSuwTwgMem6LXthHB0R7xE4kJUxXKjFob34Wp8Z3sbhnzm7eJg5fh7ThBSCTGHrJ1garO7jCEMq0N+EOp57M+ocE4h25avB00pN6NtZ+RomB3CbV4cyqKaKwMttNOp+CGW8bmSg+2z0Sw8h9X5vxzlwssPcflZHsY7Ufc= 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 3961A1E0C3; Tue, 6 Feb 2024 12:15:16 -0500 (EST) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH 2/5] gdb: add inferior parameter to breakpoint_init_inferior Date: Tue, 6 Feb 2024 12:14:24 -0500 Message-ID: <20240206171514.119244-3-simon.marchi@efficios.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240206171514.119244-1-simon.marchi@efficios.com> References: <20240206171514.119244-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 Tue Feb 6 17:14:25 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 85367 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 DD0593858438 for ; Tue, 6 Feb 2024 17:15:55 +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 19AE33858434 for ; Tue, 6 Feb 2024 17:15:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 19AE33858434 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 19AE33858434 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=1707239718; cv=none; b=a3zjA+tEuwP2IMIwu9Ulay8gZf8Djc+HOP1DQv5053B7a5P5UQxmkLJqqKus/ynBizFnJD9JumM+6/D5f6LzOqiAsXYce3xMM7iTv9xn9TUKj1SdcEBpVhc+otzavEUh7Bcmh1JqssOJ+Vr/C7buxVULyT0JdQiGPKTTPo/OE7o= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707239718; c=relaxed/simple; bh=9BHx6mqFZYZUkvwgdM5ZVTs/M66wgCAUTDaLMHLYJOU=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=Ou/BCkN/ofsspU+gvK/AMBpvn8TpH0j+Oe+NW7p9pEJGvALdMnV0KTMAMB6NJ5HpqcgbvTwLlLPHJHYuamP5oX/O6EI5hhxoGCpCJcPdXdZiAfqpAfhcsdjyWrcqlSKtN94mhaVeTfHlbhyTAehNP1mChOetk4m/dWjQMuFwU5Y= 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 98C781E0D0; Tue, 6 Feb 2024 12:15:16 -0500 (EST) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH 3/5] gdb: add program_space parameter to disable_breakpoints_in_shlibs Date: Tue, 6 Feb 2024 12:14:25 -0500 Message-ID: <20240206171514.119244-4-simon.marchi@efficios.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240206171514.119244-1-simon.marchi@efficios.com> References: <20240206171514.119244-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 Tue Feb 6 17:14:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 85368 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 320D1385840C for ; Tue, 6 Feb 2024 17:16:07 +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 58C173858285 for ; Tue, 6 Feb 2024 17:15:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 58C173858285 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 58C173858285 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=1707239719; cv=none; b=Xz+xDPfby8/jYoBWC4luKIEXZuayYbRDDJM+tXFf6VSkojhsFtFkBLC5zGu06eUFiKOBddoBpdtw30nOp36+mAPrGaIl8IzqYBpVNz0Qp68dqd+gLgn/cKWhM/oc7E0ouHjuC6g8O8N6BZMJk/17z0LwbmQlBve3A/n3uxrxGsI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707239719; c=relaxed/simple; bh=9/Hb2WqbggwgzFrRL0+EqRXsNFQ8ehd3/cOl2hqNCXU=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=RpwBAFtqAR0rMismH0q7nvNzTo0DgKBIvqdCHwNTclvYZVP+9evGyHeBLBIXvfZ38xAYXI7It4NQfzwDFKzUsYTFVXG3Oz5DPT+ZmzBPPUuEf+8KUFS+XouxT8TRFBnWwAyl36asYzt8pXCxLgpMHXTtDkAWf/JqVjhSepZd9Kw= 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 B59781E110; Tue, 6 Feb 2024 12:15:16 -0500 (EST) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH 4/5] gdb: add program_space parameter to clear_solib Date: Tue, 6 Feb 2024 12:14:26 -0500 Message-ID: <20240206171514.119244-5-simon.marchi@efficios.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240206171514.119244-1-simon.marchi@efficios.com> References: <20240206171514.119244-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 | 21 ++++++++++++--------- gdb/solib.h | 6 +++--- gdb/symtab.h | 4 ---- 4 files changed, 16 insertions(+), 17 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..bd69c549b8e8 100644 --- a/gdb/solib.c +++ b/gdb/solib.c @@ -1180,23 +1180,26 @@ 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 ()); + inferior *inf = find_inferior_for_program_space (pspace); + gdb_assert (inf != nullptr); + + const solib_ops *ops = gdbarch_so_ops (inf->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 +1247,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 Tue Feb 6 17:14:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 85369 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 83548385840F for ; Tue, 6 Feb 2024 17:16:31 +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 381133858C53 for ; Tue, 6 Feb 2024 17:15:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 381133858C53 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 381133858C53 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=1707239720; cv=none; b=guFvjh9xxUsYWlqoN5Sfkl1GnX5+V7AQXFItmDpcRNzjK/pmMs86CKEIw+s9mXOYBJAw+xNiZ2fjMGYddi/OogIl8ZdKhEnATwBSS4jnXSe8rJADjyFTK/+4W9bIt6BDXvqiw2/VTP2AhfuuT+ZcCN+F8iYsKfg8TlTHbj5u/TI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707239720; c=relaxed/simple; bh=RjIk8x72jdV/UcxKAoY6ChTeJS5ePZGEA16jbaoOiU8=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=f/zTJFcR5FEDGKzkxzZTaZR3DTjYpRAzQIClY6By0KpjLRWmZ74FNz57Mk8WJg72TH2dN+PaLEXI8k9/rafZfZ8M42ROu8E7pX+heKvPYLB/QhhdjjumEAr3JBPERD2dcblEaOQRlj4FaZ10ZFldVK/wqr/ACHGAqdNy3LqYaMU= 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 1E1301E11E; Tue, 6 Feb 2024 12:15:16 -0500 (EST) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH 5/5] gdb: remove unnecessary nullptr check in remove_user_added_objfile Date: Tue, 6 Feb 2024 12:14:27 -0500 Message-ID: <20240206171514.119244-6-simon.marchi@efficios.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240206171514.119244-1-simon.marchi@efficios.com> References: <20240206171514.119244-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 bd69c549b8e8..3eb84d814a20 100644 --- a/gdb/solib.c +++ b/gdb/solib.c @@ -1698,7 +1698,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)