From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id yC/lDpW6bF/qfwAAWB0awg (envelope-from ) for ; Thu, 24 Sep 2020 11:26:13 -0400 Received: by simark.ca (Postfix, from userid 112) id 3927B1EE05; Thu, 24 Sep 2020 11:26:13 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id E085D1E509 for ; Thu, 24 Sep 2020 11:26:12 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 7B7C93870878; Thu, 24 Sep 2020 15:26:12 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7B7C93870878 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1600961172; bh=/ZUipnP9ygoUfyme62WcSAPYIOQI+NcqAOQqc9UX5HY=; h=Date:To:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=rbXtJVLC1ofGr+m7zJY7e9dFBw6eo8aujfH+yWyv4fjVK3AZBreY6H3zjrikfSdvV WnyctWpNWXK3/KV3TMmnATbwvPEgzgfjZ5893c4fhENdR5AFyIhmRcjpdXAK0rc0rn d5x+gpeHFyTk4YhZiOEol0aCM8fXwqzZCytJw5C0= Received: from sonic303-20.consmr.mail.ir2.yahoo.com (sonic303-20.consmr.mail.ir2.yahoo.com [77.238.178.201]) by sourceware.org (Postfix) with ESMTPS id A7BD73857C52 for ; Thu, 24 Sep 2020 15:26:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org A7BD73857C52 X-YMail-OSG: GjHWIz4VM1mNSgyed8Rj7dNlRxiHgNeWTQy2peNoCIJmXbM6P2XB5DPCnSIFQCf jqgYiBji8AEheWHxvPYClv0gEgdUlH7KxkEVcXalg267Yu5T.BKMa5MXqBkyoZrmbN8lnV_cuS8a 7Z_.ecIM7SvvnWboZDOOlvbrWgl34TSygwTskpEA9JCRzbL8CttVBEoiyVXRXtGSuHVMmNSRXTTK U8M7jslzOSEl729oGDtpovxFe1jlYJPQob59O2Qi2T9sajGY958z789cv0SMTnRWSH5oBraZYQzC sxf8QLJKK.uRjK6jNBHOHhpVv8UEjbdfAvBalGMVvIF9PEdyYIiSxf2AKJ5ucE2tgeAqEnnKOvel NnHW26smnvUKlMESReCll6bc9qbkOtg_c0IYdQY756YBNRUkX0GjlM1ypGORC9imxSt2fSCbvGqR 3fxZ2JgdDIN9GjJsJ0UPaU6CfS5XSgP1bFIOwa8xaFaHxhowdCn5KJ_d4T2e3HJYHn7bo_ZvzN4m 6nu8SrFs1TZgye2hlR5nDomWXFs03Bsg93SJlCch_AAfGxg5UH9LFaejYGIjb9Zt5TBT.vZm_QUl _NMcbZXICKlumSE0MuUDSnxthULOKV2C_jwSJXP0pQBRVKHyO82gRJAd4iXVGIl0HLgtbChTtxNz Mm1UhY63tF.viJNcVFs.8e6FmFw90MH5BuJaV.GKf1v9vmhoEhhYuvbVerIVRoqkQuZ9xLLzZtK8 Rs6ZgNi3LaL9hT6_yogn.aqS2p2X7v3IN.6OWDbe.fpbrsGCe9wo5IFPyq1YVbJJgBwz9Ih0yEzJ ejM_ZDr6XAKeSUvJjFYnIehs8KKzCF11_LLaOEXpt0JyoOhy0z2uk5OSuvsvy0qXhbcfA_Y_utxj qPN1n73I1547SeweTrYQV_RB7zoRbEzFvFucges3PbqLzrfc7C2yZkEjRCDW9ezHYz.2zLbr1mWH 6yY_VXgj9qVYuEPElfhqIGOUyp5p1RcpXyzcgQuvw0bLxsQdK9r3DKFp8af7kCM_djyVDMx1twhg ugITg9k3FoPAV2aAQHLkvWrjPvjhgjTLbhzmhJNS6r7lAlqO7GxCxMSxYiQcONPPOoJLSQdz9iQu 2GKeRN2aVYPfCyBVZ4TGd7D5wPexkBYLiyqySVVi8n7eoxVU4GVwotwIQFgNKnFZlobaVcnvDQ.w wOa7acSELUGwPzGWKsQQBBVL2pA0YW0iNoMhmAVTV_wiiF6u9Kb1rUsb3VikXauzA5LgSb5pvOic It_1RknHPMe6XodONvFLGORXmcx4uMdCjqPX37owQVlh4ArTMkEmpmk6Op6GjaAXayPJhQMhk0Ar G7.gH_QDZpAEjXw2w9pm27ORrVa8BguK0JEUAqn5BzqSbLJ5qLiDMemLMXgIf_9XnDr.JItP5wWF HJBHdWkIVMjjk0fViFddej7CuEQlQ3FJBsLTBux2MYOjTt.C46qICk6PgLINRs4XaSiGPeHJxw7H Z57hS Received: from sonic.gate.mail.ne1.yahoo.com by sonic303.consmr.mail.ir2.yahoo.com with HTTP; Thu, 24 Sep 2020 15:26:06 +0000 Date: Thu, 24 Sep 2020 15:26:05 +0000 (UTC) To: "gdb-patches@sourceware.org" , Simon Marchi Message-ID: <2023373258.594579.1600961165295@mail.yahoo.com> In-Reply-To: <0ce3a433-4256-93e9-8843-57cd5f28ba73@simark.ca> References: <20200923172122.2089-1-ssbssa.ref@yahoo.de> <20200923172122.2089-1-ssbssa@yahoo.de> <0ce3a433-4256-93e9-8843-57cd5f28ba73@simark.ca> Subject: Re: [PATCH 1/3] Handle 64bit breakpoints of WOW64 processes as SIGINT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Mailer: WebService/1.1.16674 YMailNorrin Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0 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: , From: Hannes Domani via Gdb-patches Reply-To: Hannes Domani Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" Am Donnerstag, 24. September 2020, 05:30:11 MESZ hat Simon Marchi Folgendes geschrieben: > On 2020-09-23 1:21 p.m., Hannes Domani via Gdb-patches wrote: > > When a WOW64 process triggers a breakpoint exception in 64bit code (whi= ch > > happens when a 64bit gdb calls DebugBreakProcess for a 32bit target), > > gdb ignores the breakpoint (because Wow64GetThreadContext can only repo= rt > > the pc of 32bit code, and there is not int3 at this location). > > > > But if these 64bit breakpoint exceptions are handled as SIGINT, gdb > > doesn't check for int3, and always stops the target. > > > > gdb/ChangeLog: > > > > 2020-09-23=C2=A0 Hannes Domani=C2=A0 > > > >=C2=A0=C2=A0=C2=A0=C2=A0 * nat/windows-nat.c (handle_exception): Handle = 64bit breakpoints > >=C2=A0=C2=A0=C2=A0=C2=A0 in WOW64 processes as SIGINT. > >=C2=A0=C2=A0=C2=A0=C2=A0 * nat/windows-nat.h: Make wow64_process a share= d variable. > >=C2=A0=C2=A0=C2=A0=C2=A0 * windows-nat.c: Remove static wow64_process va= riable. > > > > gdbserver/ChangeLog: > > > > 2020-09-23=C2=A0 Hannes Domani=C2=A0 > > > >=C2=A0=C2=A0=C2=A0=C2=A0 * win32-low.cc: Remove local wow64_process vari= able. > >=C2=A0=C2=A0=C2=A0=C2=A0 * win32-low.h: Remove local wow64_process varia= ble. > > This is ok, but... > > > > @@ -240,6 +241,13 @@ handle_exception (struct target_waitstatus *oursta= tus, bool debug_exceptions) > >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ourstatus->kind =3D TARGET_WA= ITKIND_SPURIOUS; > >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ignore_first_breakpoint =3D f= alse; > >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 else if (wow64_process) > > +=C2=A0=C2=A0=C2=A0 { > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 DEBUG_EXCEPTION_SIMPLE ("EXCEPTION_BREA= KPOINT"); > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 rec->ExceptionCode =3D DBG_CONTROL_C; > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ourstatus->value.sig =3D GDB_SIGNAL_INT= ; > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 break; > > > +=C2=A0=C2=A0=C2=A0 } > > ...please add a comment here saying why this particular handling exists, > it's really not intuitive. Is it ok with this addition?: diff --git a/gdb/nat/windows-nat.c b/gdb/nat/windows-nat.c index a277156138..2cbbc0f2cc 100644 --- a/gdb/nat/windows-nat.c +++ b/gdb/nat/windows-nat.c @@ -243,6 +243,13 @@ handle_exception (struct target_waitstatus *ourstatus,= bool debug_exceptions) =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 else if (wow64_process) =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=C2=A0=C2=A0 /* This breakpoint except= ion is triggered for WOW64 processes when +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 reachin= g an int3 instruction in 64bit code. +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 gdb che= cks for int3 in case of SIGTRAP, this fails because +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Wow64Ge= tThreadContext can only report the pc of 32bit code, and +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 gdb let= s the target process continue. +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 So hand= le it as SIGINT instead, then the target is stopped +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 uncondi= tionally.=C2=A0 */ =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 DEBUG_EXCEPTION_SIMP= LE ("EXCEPTION_BREAKPOINT"); =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 rec->ExceptionCode = =3D DBG_CONTROL_C; =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ourstatus->value.sig= =3D GDB_SIGNAL_INT; Hannes