From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from barracuda.ebox.ca (barracuda.ebox.ca [96.127.255.19]) by sourceware.org (Postfix) with ESMTPS id C03733858D3C for ; Tue, 18 Jan 2022 04:09:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C03733858D3C X-ASG-Debug-ID: 1642478978-0c856e06ab131c50001-fS2M51 Received: from smtp.ebox.ca (smtp.ebox.ca [96.127.255.82]) by barracuda.ebox.ca with ESMTP id Sme8AOywgQ9dAsjR (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 17 Jan 2022 23:09:38 -0500 (EST) X-Barracuda-Envelope-From: simon.marchi@polymtl.ca X-Barracuda-RBL-Trusted-Forwarder: 96.127.255.82 Received: from simark.localdomain (192-222-157-6.qc.cable.ebox.net [192.222.157.6]) by smtp.ebox.ca (Postfix) with ESMTP id 58119441D64; Mon, 17 Jan 2022 23:09:38 -0500 (EST) From: Simon Marchi X-Barracuda-RBL-IP: 192.222.157.6 X-Barracuda-Effective-Source-IP: 192-222-157-6.qc.cable.ebox.net[192.222.157.6] X-Barracuda-Apparent-Source-IP: 192.222.157.6 To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH v2 1/9] gdb/infrun: add reason parameter to stop_all_threads Date: Mon, 17 Jan 2022 23:09:29 -0500 X-ASG-Orig-Subj: [PATCH v2 1/9] gdb/infrun: add reason parameter to stop_all_threads Message-Id: <20220118040937.730282-2-simon.marchi@polymtl.ca> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220118040937.730282-1-simon.marchi@polymtl.ca> References: <20220118040937.730282-1-simon.marchi@polymtl.ca> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: smtp.ebox.ca[96.127.255.82] X-Barracuda-Start-Time: 1642478978 X-Barracuda-Encrypted: DHE-RSA-AES256-SHA X-Barracuda-URL: https://96.127.255.19:443/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at ebox.ca X-Barracuda-Scan-Msg-Size: 4301 X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using global scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=8.0 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.95404 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Spam-Status: No, score=-15.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_QUARANTINE, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_SOFTFAIL, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Jan 2022 04:09:50 -0000 From: Simon Marchi Add a "reason" parameter, only used to show in debug messages what is the reason for stopping all threads. This helped me understand the debug logs while adding some new uses of stop_all_threads, so I am proposing to merge it. Change-Id: I66c8c335ebf41836a7bc3d5fe1db92c195f65e55 --- gdb/infcmd.c | 2 +- gdb/infrun.c | 10 +++++----- gdb/infrun.h | 11 +++++++---- gdb/remote.c | 2 +- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/gdb/infcmd.c b/gdb/infcmd.c index 9f4ed8bff138..16b1ca65d812 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -2473,7 +2473,7 @@ attach_post_wait (int from_tty, enum attach_post_wait_mode mode) { struct thread_info *lowest = inferior_thread (); - stop_all_threads (); + stop_all_threads ("attaching"); /* It's not defined which thread will report the attach stop. For consistency, always select the thread with diff --git a/gdb/infrun.c b/gdb/infrun.c index 2335fc74dc02..46e14d720cce 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -2391,7 +2391,7 @@ resume_1 (enum gdb_signal sig) /* Fallback to stepping over the breakpoint in-line. */ if (target_is_non_stop_p ()) - stop_all_threads (); + stop_all_threads ("displaced stepping falling back on inline stepping"); set_step_over_info (regcache->aspace (), regcache_read_pc (regcache), 0, tp->global_num); @@ -4915,7 +4915,7 @@ handle_one (const wait_one_event &event) /* See infrun.h. */ void -stop_all_threads (void) +stop_all_threads (const char *reason) { /* We may need multiple passes to discover all threads. */ int pass; @@ -4923,7 +4923,7 @@ stop_all_threads (void) gdb_assert (exists_non_stop_target ()); - infrun_debug_printf ("starting"); + INFRUN_SCOPED_DEBUG_START_END ("reason=%s", reason); scoped_restore_current_thread restore_thread; @@ -7963,7 +7963,7 @@ stop_waiting (struct execution_control_state *ecs) /* If all-stop, but there exists a non-stop target, stop all threads now that we're presenting the stop to the user. */ if (!non_stop && exists_non_stop_target ()) - stop_all_threads (); + stop_all_threads ("presenting stop to user in all-stop"); } /* Like keep_going, but passes the signal to the inferior, even if the @@ -8063,7 +8063,7 @@ keep_going_pass_signal (struct execution_control_state *ecs) we're about to step over, otherwise other threads could miss it. */ if (step_over_info_valid_p () && target_is_non_stop_p ()) - stop_all_threads (); + stop_all_threads ("starting in-line step-over"); /* Stop stepping if inserting breakpoints fails. */ try diff --git a/gdb/infrun.h b/gdb/infrun.h index 3e84805accb5..be600fd8f7da 100644 --- a/gdb/infrun.h +++ b/gdb/infrun.h @@ -40,8 +40,8 @@ extern bool debug_infrun; /* Print "infrun" start/end debug statements. */ -#define INFRUN_SCOPED_DEBUG_START_END(msg) \ - scoped_debug_start_end (debug_infrun, "infrun", msg) +#define INFRUN_SCOPED_DEBUG_START_END(fmt, ...) \ + scoped_debug_start_end (debug_infrun, "infrun", fmt, ##__VA_ARGS__) /* Print "infrun" enter/exit debug statements. */ @@ -139,8 +139,11 @@ extern void set_last_target_status (process_stratum_target *target, ptid_t ptid, target_wait(). */ extern void nullify_last_target_wait_ptid (); -/* Stop all threads. Only returns after everything is halted. */ -extern void stop_all_threads (void); +/* Stop all threads. Only returns after everything is halted. + + REASON is a string indicating the reason why we stop all threads, used in + debug messages. */ +extern void stop_all_threads (const char *reason); extern void prepare_for_detach (void); diff --git a/gdb/remote.c b/gdb/remote.c index b126532af45d..8a5cc1108007 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -4641,7 +4641,7 @@ remote_target::process_initial_stop_replies (int from_tty) gdb_assert (!this->is_async_p ()); SCOPE_EXIT { target_async (0); }; target_async (1); - stop_all_threads (); + stop_all_threads ("remote connect in all-stop"); } /* If all threads of an inferior were already stopped, we -- 2.34.1