From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id lmeyFa8K7mkAbTwAWB0awg (envelope-from ) for ; Sun, 26 Apr 2026 08:53:03 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=yahoo.de header.i=@yahoo.de header.a=rsa-sha256 header.s=s2048 header.b=jiIcIl0H; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 467771E067; Sun, 26 Apr 2026 08:53:03 -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.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,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 EC2531E067 for ; Sun, 26 Apr 2026 08:53:00 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 83E164BB24FF for ; Sun, 26 Apr 2026 12:52:59 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 83E164BB24FF Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=yahoo.de header.i=@yahoo.de header.a=rsa-sha256 header.s=s2048 header.b=jiIcIl0H Received: from sonic310-57.consmr.mail.ir2.yahoo.com (sonic310-57.consmr.mail.ir2.yahoo.com [77.238.177.30]) by sourceware.org (Postfix) with ESMTPS id 45DC44BB24F8 for ; Sun, 26 Apr 2026 12:52:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 45DC44BB24F8 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=yahoo.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=yahoo.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 45DC44BB24F8 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=77.238.177.30 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777207953; cv=none; b=aUw2vomfe48md6Guddvva7z0UWfmQBiBhQoPF+PIUe81H4Ensyh4pOI8qgGNZoMlXxHpu6AA2Yht93rEEcrSNRKYPsrj0POnp9yattF469MUuzZGJNOKmFbMXn9F6c4BEI05i6lqiVngz6ipPa5HaWoMgpSZRU6upzDpMrnxSIE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777207953; c=relaxed/simple; bh=XYsvvpEsfvv3NCSb3mGDGyMSpsXBMiSDMX1znvkXcpU=; h=DKIM-Signature:Date:From:To:Message-ID:Subject:MIME-Version; b=lYUatMrf3pI9XO3FUKKA9AXNs2a9ow5Ffn0qRMWmSVQJ1yzhIZNkSfnpXN01bUa4iAznZ/IamqCUFDrJ2SQqhFXxDb7k3ZHiy4hmPcr94G0wSCuFRJHC7+QSf5+alXZw6jq2614o0eX1sYr07H7PUpnCT8j/jjG1qFvegWW7sMU= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 45DC44BB24F8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1777207951; bh=XYsvvpEsfvv3NCSb3mGDGyMSpsXBMiSDMX1znvkXcpU=; h=Date:From:To:Cc:In-Reply-To:References:Subject:From:Subject:Reply-To; b=jiIcIl0HKkcNH8QzI4B1efoUAY9lG1PRJvcYzniP9Hvtox5ReKfWU8N7tpu1Zkx6zhuy01z5n09gTt1HYs+KREKDldOE7c5ADXTEIX3testuXSxQ+f6yClpkrU/Add0s8gv3qUcM9l3yqdhqT/5jlNdpzWYqAnh47TfgD5JTi+EESFiytkikqhlJiN+zF+5yHF2qCcRNvKI2nti8s7LD0VQyJupuGNdO8nziddhOavJbSTBQ1C7eg8EKnafR9C5EzKw+BtEdoVXXMBKk0bndves1HETlsB6grkZSSicdCruDD0BgZG2ro3xcAETrPMp3Su9vMSEXprUeaG9U2k20qw== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1777207951; bh=+AEoOO3dHICjbxvJLJbsPeSzTa9NWS4C3OVpAPhoR1m=; h=X-Sonic-MF:Date:From:To:Subject:From:Subject; b=B3xzKihJPb4j+albNZljdAE5o3Srx2On2ol0eJk9O6fRmB2x2edVXlhz+vz2AQepTY1a+L8DyB1jS11q8m6F9biiTrV9Ww5+Nfz+0S7NcgqAb8EOausaK0MFG5MBVdlIdsthnH9Nma5Y3FvcRGeXJP0ffNacDmt3JDVe7UDE4YxarFvpFPBySMIee009pgTeB//nWAj5cUoQB/uEQgBnzI2uV/+HwaSaqOSaMruDnK6rWz/uG4MBDThB3ePAzXjKdVD8GwgfrOFq/ZGlLvSQ4jo55JflwvmDkGV50jrB9kop2/AmGhouQR17omkaFzZjwNsXK84tnttXwHQTxT7hnA== X-YMail-OSG: e1bRJQsVM1myLijFh9yTE8ROfpHxYmoYJu6kKsLsRa91oDNMOcYeaPf8oPUS87G l2xaOuqP0h8vL.kT6S9BJbGUJD3ZYk4QP_7GMioI3G_xXsWpajFhzo4QCwtphqaKs3pxBLbKXSVl Z5Lh5eDFWrviYr2ubd.Jv0.3RbZX.ekdlAqg56UyTp2QM3j7KfL6ZD1xIzP1ApqulMLfr1h1acSh 2k4M_cgcX_d5CAciW2MSAOi0649abG_STx6IW81WsPGW5jmsa69I4qFLMG3UL4jCrivIRjbHOk9Q fN6sxk6wfd2JilhShkp9DwUv.GK6pF9ARqtHLATyo1.zzgwODqteVMh1noJ3Tv5lB1fSywAi1qgr ipNYPdOqhA9ANycY_54ed11VZRLR7QWcpwzQWCxFjjETIzsop0g9xkagMOBkT75tP2ari0729vhk 7slJij9tWyLrnB4IxoeSUMUoB.OZrywcXTTO2qHjbJHm01kKBU2JLroUQu1drkctwtjI5gYt2hre sIBkzEFPMbiD0bmx7E3a9AaNAqS5eOGlQ7zYHHAGFn3ibhcupK74Q4AJrzQclwixVKxMBfyFRg3o BvJZwEDDYqOz474c.gQ.T99PLcUEFFMO8PJ9uxxGkpL5IE1eVbRlgGHuC8TwTkaea.2z59PgGR1Z 1qoku1fr1tONub4srx095MgvukAMvUlkmiCNaJ1ZpyCrWhQcnnaFxZz4Z5_gM2rRalMhdzpVrana SN2U0tN2iii2ztC2Xw5Cgr8mGIQqs7GX0MM8d7nuj1jMp3ssrNYUhyjssHz1zukgyzzpnqlwEp4C ohonXr8YjDkPOhKKzEelYZQbuYfcsgszPZBG7Vv5C.1rcizZCd1RDLQ4HG.KntjYInF5bVaXA.zc C3_UyMDNkpgkRjGyFSHRzKubhUfIklFnKkD6ukOohj4slpls8IJ4UxELQyDQQaN91_AU5YNhXkQG fHD4beaEbG.N93uu5ULbLcC64fVZ054ksIXHPn9WDK9E.bw5CEldSNKww0pbJ2rxZi8JE1_MfVd3 cZX2e04kqNkq720mJBNmmPAFuXxE9elHrvjej7OkgE8xpPAjMNK5_rNZRX4VLnaP8q9eGzvKjPs. fLC3IZ_hWePu2xSuIUwS0Xm42.vVj3hjTvE19h9ZhzfqWnJDiP4lUTourPSHeoIF5LXXPJT5zD4H Boda3vsAPDZah3E1Fnx9lMZAssZ5MatKuTa8N5J9gV14rsigGPv28_8DIYyD42_JaQ69zhjP6LBf 4yAiR7XdUMtXXnRj7tf72N9kOn0mz4mgKNnnYKhzirdB1ncrzE6.ZxvuZxg.TxDAlvt7A0J197L5 d88IAzvkFQjgGB_mtzLXBlRT9bwi3e7KD4v2pHRYL6_mfSemk43z5N67BTbOTypdMUE5EyHR2rBK e29oypJdrcilGOQeMPDzqqrd0HYAoCW6VmVy8RnssUUNHFkZoMRZSSw.f00WzDsgJndp2vu2trFK rHKcsAH2OGXGc0VytobYcp3Xj4.PmwHXFJgCWcTIkVzkazcoHhUvbEVoKBRapSgolLtFab_0QIYf Neux1YA0Uj2sBL_9juhT3D0Ayd1.BQ4NMTLaDNQSQ1Cwto39ARPcv0P6Ynj6N5RoquR1jAaFLGbN B1mSXiy4BdQcNVSbx8tFuc1Dv.Vri5ISDQ1p.5j9AonevEMQLNF6m3fQttI0G4uQMkk2YqcEPuXg Ccvc5tyS5OSY3dNN8v_jIilF0tHYlRAMUSZdPBA.Bpo7XD8AI9m2v_IelhUtwxwgOmk3XW9HI98Y jkiRsysiMcvJpvt4.SZrBX9PQFs4t4syOjiA8ZO18qBShGpDo3YJId1.ZfNT1QLvF5GS8Mx31lOu .BvjumMvXj5VYiXdOzxiM7yNip4m2zC34Zv68iBpzBHMIL8B7O42GnaEj1KsyZdyv2InfBEwDT8Q dpAtJ0GZbGNUiwNEm75uSD0n88zLgV8pCvcMfrfjHdND5VrzHvosmMEJ3GVOKEZWfa94fe0x4vHO EC8szaPzWhdRS_nNyAtYtXA5pvffu71L26FSePFKoVYxtyDj8XWGXf70hPzeMsmGNskqdnWrjiGZ bxtBXE68aSXmmcVMehWdSo1i5fecn2GdYUOmyci3zDJZ2zbKp.g3euxNEPrdBWMRqge3mG35QhUn J7wnkwsorAY.z6esb_wlearN6M7RSajGQHfGadVAyHELXQ8ddxaolY.RJx_7l97cKt4Fxvt3cWAF vI1mU7J3txJDZdHt01xwdSzznOixzRF2BxwSy3YrLq1IPu.Luz5apMqr0UTpEiisH7sroyzDQUEf yRlRmaw-- X-Sonic-MF: X-Sonic-ID: f1ab7ea1-6595-46f9-bd7a-c3bdfd96be46 Received: from sonic.gate.mail.ne1.yahoo.com by sonic310.consmr.mail.ir2.yahoo.com with HTTP; Sun, 26 Apr 2026 12:52:31 +0000 Date: Sun, 26 Apr 2026 12:52:03 +0000 (UTC) From: Hannes Domani To: "gdb-patches@sourceware.org" , Pedro Alves Cc: Tom Tromey Message-ID: <530961686.4743126.1777207923450@mail.yahoo.com> In-Reply-To: <20260424204508.1343973-8-pedro@palves.net> References: <20260424204508.1343973-1-pedro@palves.net> <20260424204508.1343973-8-pedro@palves.net> Subject: Re: [pushed 07/28] Windows gdb: Simplify windows_nat_target::wait MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Mailer: WebService/1.1.25559 YMailNorrin 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 I initially missed these commits, because I was once again unsubscribed from gdb-patches (because of bounces) when these emails where sent. I only noticed in the GNU weekly news mention of many Windows improvements which I didn't remember, so I checked again. On 4/24/26 22:44, Pedro Alves wrote: > The logic in windows_nat_target::wait, where we decide what to do > depending on the result from get_windows_debug_event is harder to > grasp than it looks. > > It is not easy to tell what should happen when in async mode > get_windows_debug_event returns that there's no event to process. > > And then, if get_windows_debug_event returns null_ptid / > TARGET_WAITKIND_SPURIOUS, then we need to issue a ContinueDebugEvent. > > There's also this comment in windows_nat_target::wait, which we're not > really implementing today: > > ~~~~ >=C2=A0 =C2=A0/* We loop when we get a non-standard exception rather than r= eturn >=C2=A0 =C2=A0 =C2=A0 with a SPURIOUS because resume can try and step or mo= dify things, >=C2=A0 =C2=A0 =C2=A0 which needs a current_thread->h.=C2=A0 But some of th= ese exceptions mark >=C2=A0 =C2=A0 =C2=A0 the birth or death of threads, which mean that the cu= rrent thread >=C2=A0 =C2=A0 =C2=A0 isn't necessarily what you think it is.=C2=A0 */ > ~~~~ > > This patch changes things a bit so that the code is more obvious: > >=C2=A0 - look at the status kind, instead of ptid_t. > >=C2=A0 - add an explicit early return case for no-event. > >=C2=A0 - add an explicit case for TARGET_WAITKIND_SPURIOUS. > >=C2=A0 - with those, we no longer need to handle the case of find_thread n= ot >=C2=A0 =C2=A0 finding a thread, so we can drop one indentation level. > > Approved-By: Tom Tromey > Change-Id: I76c41762e1f893a7ff23465856ccf6a44af1f0e7 > commit-id:aff7fc4a > --- >=C2=A0 gdb/windows-nat.c | 39 +++++++++++++++++++++++++-------------- >=C2=A0 1 file changed, 25 insertions(+), 14 deletions(-) > > diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c > index 2dd372ae7b2..30b07221b62 100644 > --- a/gdb/windows-nat.c > +++ b/gdb/windows-nat.c > @@ -1139,7 +1139,10 @@ windows_nat_target::get_windows_debug_event >=C2=A0 =C2=A0 =C2=A0 } >=C2=A0=C2=A0 >=C2=A0 =C2=A0 if (thread_id =3D=3D 0) > -=C2=A0 =C2=A0 return null_ptid; > +=C2=A0 =C2=A0 { > +=C2=A0 =C2=A0 =C2=A0 ourstatus->set_ignore (); > +=C2=A0 =C2=A0 =C2=A0 return null_ptid; > +=C2=A0 =C2=A0 } >=C2=A0 =C2=A0 return ptid_t (windows_process->current_event.dwProcessId, t= hread_id, 0); >=C2=A0 } >=C2=A0=C2=A0 > @@ -1160,25 +1163,33 @@ windows_nat_target::wait (ptid_t ptid, struct tar= get_waitstatus *ourstatus, >=C2=A0 =C2=A0 =C2=A0 { >=C2=A0 =C2=A0 =C2=A0 =C2=A0 ptid_t result =3D get_windows_debug_event (pid= , ourstatus, options); >=C2=A0=C2=A0 > -=C2=A0 =C2=A0 =C2=A0 if (result !=3D null_ptid) > +=C2=A0 =C2=A0 =C2=A0 if ((options & TARGET_WNOHANG) !=3D 0 > +=C2=A0 =C2=A0 =C2=A0 && ourstatus->kind () =3D=3D TARGET_WAITKIND_IGNORE= ) > +=C2=A0 =C2=A0 return result; > + > +=C2=A0 =C2=A0 =C2=A0 if (ourstatus->kind () =3D=3D TARGET_WAITKIND_SPURI= OUS) > +=C2=A0 =C2=A0 { > +=C2=A0 =C2=A0 =C2=A0 CHECK (windows_continue (DBG_CONTINUE, > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0win= dows_process->desired_stop_thread_id, 0)); > +=C2=A0 =C2=A0 } > +=C2=A0 =C2=A0 =C2=A0 else if (ourstatus->kind () !=3D TARGET_WAITKIND_IG= NORE) >=C2=A0 =C2=A0 =C2=A0 { >=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (ourstatus->kind () !=3D TARGET_WAITKIND_EX= ITED > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 && ourstatus->kind () !=3D=C2=A0 TARG= ET_WAITKIND_SIGNALLED) > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 && ourstatus->kind () !=3D TARGET_WAI= TKIND_SIGNALLED) >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 { >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 windows_thread_info *th =3D wind= ows_process->find_thread (result); >=C2=A0=C2=A0 > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (th !=3D nullptr) > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 th->stopped_at_software_breakpoint = =3D false; > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (windows_process->current_event.dw= DebugEventCode > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =3D=3D EXCEPTION_DEBUG_EVENT > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 && ((windows_process->current_event.u= .Exception.ExceptionRecord.ExceptionCode > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=3D=3D EXCEPTION_= BREAKPOINT) > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 || (windows_process->cu= rrent_event.u.Exception.ExceptionRecord.ExceptionCode > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =3D=3D STATUS_WX86_BREA= KPOINT)) > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 && windows_process->windows_initializ= ation_done) >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 { > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 th->stopped_at_software_breakpoint = =3D false; > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (windows_process->current_event.dw= DebugEventCode > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =3D=3D EXCEPTION_DEBUG_= EVENT > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 && is_sw_breakpoint (&w= indows_process->current_event > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0.u.Exception.ExceptionRecord) > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 && windows_process->win= dows_initialization_done) > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 { > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 th->stopped_at_software= _breakpoint =3D true; > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 th->pc_adjusted =3D fal= se; > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 } > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 th->stopped_at_software_breakpoint = =3D true; > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 th->pc_adjusted =3D false; >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 } >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 } >=C2=A0=C2=A0 This reverted the is_sw_breakpoint change done for aarch64 support. Hannes