From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id gQ2aAJbW62m5UzkAWB0awg (envelope-from ) for ; Fri, 24 Apr 2026 16:46:14 -0400 Received: by simark.ca (Postfix, from userid 112) id F252D1E0BA; Fri, 24 Apr 2026 16:46:13 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (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 ESMTPS id 76CB11E093 for ; Fri, 24 Apr 2026 16:46:13 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 84C704B9209A for ; Fri, 24 Apr 2026 20:46:12 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 84C704B9209A Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) by sourceware.org (Postfix) with ESMTPS id 4B5B74B920F0 for ; Fri, 24 Apr 2026 20:45:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4B5B74B920F0 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=palves.net Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4B5B74B920F0 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777063548; cv=none; b=JBlGbp8w90F+Xkb0F37RarSRjP65UhXJhLaCzjEeQ4WVK8Rg8+Bj0x1cjzmvuYCupJDX9E5LbvV96fdwDBfsRuaAn12aQTcCwW7xq7Jswn59UxI9BnYrJpLoNBOBqOAav8/NAtsuQyoRTVBfsQ1JU1oMTDsBS0aH6WWnvfl3u4E= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777063548; c=relaxed/simple; bh=JKt31HqzlgBF4B7TeniwbCMhImOBz7Q+0V7Jts/lYRM=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=bi62sB5BI1Zlf88W83VhHX6bL+lSMzGB6/1r2j4tfwTfjTa15w1DaQIhgHqaA7PKvt+2FeJBmVfcHViOy1824pK+rGu5CwGp8xUCM8UOtVETrH5nrGjSaYbSg0Ky5zOMRojgjqxKOCnsEbnb82QyYKhZK1O9+QOA0pHSv/Kr/Zs= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4B5B74B920F0 Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-488a8ca4aadso113492565e9.3 for ; Fri, 24 Apr 2026 13:45:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777063547; x=1777668347; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=y1KmcM2uZEiupgJehtdMbwjSqObbBS6YQpkKdiFEorM=; b=LDW2yFhVuDubr8Oz4qh7fmzWvmOM4eLu/mgeo44fX/1HudGS0EaH65HKLXWF2fQ9sd Wem8lU67yO4JH/e8is/3pHQHEK+F1aNb0RIMsYm7QCZZ7Zyl4bB9sw+44eM1GtNxBDIO ZFxbKaL/VrEPbyHLm4sTP/5PbmeNdTDxj1tqAhDEKbYUcpgfgN8qyzEcPxOJYljR3fEi mmyOdy2mSdzLfdF5aZg0FUKgvGWZ4a2h0ClrIpckRCAGsmO/MFtvky9GFVbY/lejWBEV M3o8e13VPMsUq22YhncGxFsuoldBREqDSZBPenIqiH8IAa396Kv7T+tOTeSdkTl3fC78 Uzrg== X-Gm-Message-State: AOJu0Yzw+Beu5w7sM64G0JF/BcLEdY4u9XjNdnDjZX9vXFwwMDZpQPaR 0MQTv/C7bRD4uFwys/xGMk0sfxcAbngU6x94A5/wt+Fhy+e+aWsLs9ZoMERThZQf X-Gm-Gg: AeBDiet9+CSvD1qFethY3YylgnZaohcf7Qu1cCJ48+qCOpzuk4DEwOGFZ5HgOzOn+qK NYfKxLUx7R6j/GEpWxWn3Rd1jvxz1B1xIkp2nfE4ZnuRQ1TD8/NQ1Ywor2mFkC9tnw9Fj7YjEVa mVTboUMNx8UcHJV+xVRzqlCz3n4aRnz1pJFbj1xc0WdKKaELDqr/fgVGtieIh9mAs/gmTKn7qsj KrumqChSGKM7clSXPHKzhrYfeLVGaoqDgqKGDyLulic4V0i624Jro+Et1PzDxr7lg12QcWfZyQw MDbiA29rDV5DeKhhvYGzCOIOfWNbQy+6CPqeUPh465Ien9otVdwOpzmt/aYhKdX4xMKtT6WI7xe 7PEK7iRZvEALYtZcn3UjjEAOuDWZuAuMGvRH6oe4tDDLoydjufzFECSzjuyinFcMowSQOhq9nzg ZyEEcZOHDvPLuOyN82WzKGVcDbSMaXA3z1wDahxd5bjcjlbUV4+sBqQmCxCg== X-Received: by 2002:a05:600c:2e42:b0:489:1fa4:50c6 with SMTP id 5b1f17b1804b1-4891fa451bamr185153595e9.20.1777063546810; Fri, 24 Apr 2026 13:45:46 -0700 (PDT) Received: from localhost (bl16-157-130.dsl.telepac.pt. [188.81.157.130]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-488fc1393f5sm567083355e9.9.2026.04.24.13.45.46 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 24 Apr 2026 13:45:46 -0700 (PDT) From: Pedro Alves To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [pushed 10/28] Windows gdb: Introduce windows_continue_flags Date: Fri, 24 Apr 2026 21:44:50 +0100 Message-ID: <20260424204508.1343973-11-pedro@palves.net> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260424204508.1343973-1-pedro@palves.net> References: <20260424204508.1343973-1-pedro@palves.net> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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~public-inbox=simark.ca@sourceware.org windows_continue already has two boolean parameters: (..., int killed, bool last_call = false) A patch later in the series would need a third. Instead, convert windows_continue to use an optional enum-flags parameter instead of multiple booleans. Approved-By: Tom Tromey Change-Id: I17c4d8a12b662190f972c380f838cb3317bd2e1e commit-id:e669e7de --- gdb/windows-nat.c | 25 ++++++++++++------------- gdb/windows-nat.h | 20 ++++++++++++++++++-- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c index 174b54eda78..170b837e930 100644 --- a/gdb/windows-nat.c +++ b/gdb/windows-nat.c @@ -705,14 +705,12 @@ windows_per_inferior::handle_access_violation } /* Resume thread specified by ID, or all artificially suspended - threads, if we are continuing execution. KILLED non-zero means we - have killed the inferior, so we should ignore weird errors due to - threads shutting down. LAST_CALL is true if we expect this to be - the last call to continue the inferior -- we are either mourning it - or detaching. */ + threads, if we are continuing execution. See description of + windows_continue_flags for CONT_FLAGS. */ + BOOL windows_nat_target::windows_continue (DWORD continue_status, int id, - int killed, bool last_call) + windows_continue_flags cont_flags) { windows_process->desired_stop_thread_id = id; @@ -728,6 +726,7 @@ windows_nat_target::windows_continue (DWORD continue_status, int id, for (auto &th : windows_process->thread_list) if (id == -1 || id == (int) th->tid) { + bool killed = (cont_flags & WCONT_KILLED) != 0; thread_context_continue (th.get (), killed); th->resume (); @@ -735,7 +734,7 @@ windows_nat_target::windows_continue (DWORD continue_status, int id, continue_last_debug_event_main_thread (_("Failed to resume program execution"), continue_status, - last_call); + cont_flags & WCONT_LAST_CALL); return TRUE; } @@ -832,9 +831,9 @@ windows_nat_target::resume (ptid_t ptid, int step, enum gdb_signal sig) Otherwise complain. */ if (resume_all) - windows_continue (continue_status, -1, 0); + windows_continue (continue_status, -1); else - windows_continue (continue_status, ptid.lwp (), 0); + windows_continue (continue_status, ptid.lwp ()); } /* Interrupt the inferior. */ @@ -1538,7 +1537,7 @@ windows_nat_target::detach (inferior *inf, int from_tty) if (m_continued) break_out_process_thread (process_alive); - windows_continue (DBG_CONTINUE, -1, 0, true); + windows_continue (DBG_CONTINUE, -1, WCONT_LAST_CALL); std::optional err; if (process_alive) @@ -2286,13 +2285,13 @@ windows_nat_target::create_inferior (const char *exec_file, do_initial_windows_stuff (pi.dwProcessId, 0); - /* windows_continue (DBG_CONTINUE, -1, 0); */ + /* windows_continue (DBG_CONTINUE, -1); */ } void windows_nat_target::mourn_inferior () { - (void) windows_continue (DBG_CONTINUE, -1, 0, true); + windows_continue (DBG_CONTINUE, -1, WCONT_LAST_CALL); cleanup_windows_arch (); if (windows_process->open_process_used) { @@ -2350,7 +2349,7 @@ windows_nat_target::kill () for (;;) { - if (!windows_continue (DBG_CONTINUE, -1, 1)) + if (!windows_continue (DBG_CONTINUE, -1, WCONT_KILLED)) break; wait_for_debug_event_main_thread (&windows_process->current_event); if (windows_process->current_event.dwDebugEventCode diff --git a/gdb/windows-nat.h b/gdb/windows-nat.h index 8866408567c..c4f3b2423b6 100644 --- a/gdb/windows-nat.h +++ b/gdb/windows-nat.h @@ -44,6 +44,22 @@ struct windows_solib std::string name; }; +/* Flags that can be passed to windows_continue. */ + +enum windows_continue_flag + { + /* This means we have killed the inferior, so windows_continue + should ignore weird errors due to threads shutting down. */ + WCONT_KILLED = 1, + + /* This means we expect this windows_continue call to be the last + call to continue the inferior -- we are either mourning it or + detaching. */ + WCONT_LAST_CALL = 2, + }; + +DEF_ENUM_FLAGS_TYPE (windows_continue_flag, windows_continue_flags); + struct windows_per_inferior : public windows_nat::windows_process_info { windows_thread_info *find_thread (ptid_t ptid) override; @@ -227,8 +243,8 @@ struct windows_nat_target : public inf_child_target void delete_thread (ptid_t ptid, DWORD exit_code, bool main_thread_p); DWORD fake_create_process (); - BOOL windows_continue (DWORD continue_status, int id, int killed, - bool last_call = false); + BOOL windows_continue (DWORD continue_status, int id, + windows_continue_flags cont_flags = 0); /* Helper function to start process_thread. */ static DWORD WINAPI process_thread_starter (LPVOID self); -- 2.53.0