From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id xZIaK60JemrRPBsAWB0awg (envelope-from ) for ; Mon, 10 Aug 2026 13:26:05 -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=ZlY8YlO1; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id A00831E166; Mon, 10 Aug 2026 13:26:05 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.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 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 D76751E09B for ; Mon, 10 Aug 2026 13:26:04 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 06EA34B99F79 for ; Mon, 10 Aug 2026 17:26:04 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 06EA34B99F79 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=ZlY8YlO1 Received: from sonic316-11.consmr.mail.bf2.yahoo.com (sonic316-11.consmr.mail.bf2.yahoo.com [74.6.130.121]) by sourceware.org (Postfix) with ESMTPS id 882CD4B99F64 for ; Mon, 10 Aug 2026 17:25:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 882CD4B99F64 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 882CD4B99F64 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=74.6.130.121 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1786382738; cv=none; b=ZNJcXTtBnNvbeJfn29n9Msee3UT1MWSSy9/bLiln3O6tNtmH6+UOsQsQI1r/staC7PIFnmfu71IObZsJGQ29qrinjmeF1HAVl3Epb51uZRCOq8daaH/AxXmWie/bJv+ArDTBS7FkXJrbmwkU3z3MNrssRlVJda62NhE1EcIkjZs= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1786382738; c=relaxed/simple; bh=GXuhvAeh1osSjjs6clrlnHNgikaykUfC2z3UZj+cL50=; h=DKIM-Signature:Date:From:To:Message-ID:Subject:MIME-Version; b=cbXoy4raY1R6YadSMK/wFR0ypXOFu0DgLBA8bAQ7aan35/V5mSSYVHcJrX1o+JQsBGSZJFQfN5zG8lJ7YD3iTvyL5tdmZzeX/ve/ZPTOIu+H2lvViubx1MQ7CIuIHoXYHdhMFHW0xvIOGItnzpOZ9DtpdxV5DPW5FVUnaCTUoes= ARC-Authentication-Results: i=1; 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=ZlY8YlO1 DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 882CD4B99F64 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1786382737; bh=GXuhvAeh1osSjjs6clrlnHNgikaykUfC2z3UZj+cL50=; h=Date:From:To:In-Reply-To:References:Subject:From:Subject:Reply-To; b=ZlY8YlO1EjvwsNjUzCJdXMpJLbdXytU4Qg96S5TcTH/6dhsNiVW0yurYun5hMWw/RCLlQ8nUr/wLKLHkj6u+Fb0k15vh62WjbhZ1vtG3CSMK3odXPyo86yDNalQFg9m2qBFZ2eeueqliVZt5fXdoWf+tjhgH6m2+XeSvf1hQKjlWJ/f16RxhUyuYvuaVewsxNck+IQe/y3iIGhqOT94w0fvAdn2kk2jWAfn93f33fEYVPhUhzdzEGONZ8lLcoLxniHrNSbYB7FqkE2OWOAuEdphPgN4TtO1M1Lb9HC4sghmXTEZi0K52sj0lXoVucR0o6jxbAwQPltc/N4bJpYRpdg== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1786382737; bh=OymcrbrtPnIcdF/m4nceO3+ySJrjeP9Wts/zdKtHbSD=; h=X-Sonic-MF:Date:From:To:Subject:From:Subject; b=Xr+O5RA9mKe9H9u66yZDycouHpvNDjYsMBjkjjUSPk/eiH6biHGay9TkpjQ7/QDJKgE7tqVk86xkDfd7LgC7qm2T/q02+S5TvpP2lr3NoBp1tj5flByiVkqCBoNf1giVSDRQ1tzMTG+e/XUwsCg391SJd5Y6MC2m0823V1bFZcunbATqkeXEYiKrWsypY6LkOWu4eU8YenmXpMYi6b9jo3soLgn+9hPiKx1D7+g6QacJTne71yuQN/NRAWVjsyUeh3mOGw2/Li2KKFXameyME9ythtfX6XHaH6PFRL+mYx0KoA/VVf8nYQdL8VDVRPr8DJmhBJWslbAoCl2RQ9ItxQ== X-YMail-OSG: PdREHXoVM1ksgquLa7CsvmHKHHfA.yM_T3i1mHm4McbabQChCLRR2pcQNZe2F4M ommioJwdiRThpMck5ycZb3YxsqfTViaFuWvXspuie7.E8fPJonXzKgzbe5qbeT7iVQg.RmYEulsd 4Eksflmmo0MUq7kIltD36p9kXChhA22D_9ND2.ca6LldRtXpXwUFt.fhAITC7gum3H8XOY2s0v28 LEJx43JsprojDnaoOESDRaLjjLlebmNU_Y.bBpVnftet6s95KPqucsygfAKQqUY_YkPa2kthBlg6 yj182xcJqbEsxBho2eU5XP8IcVOpdt2TaRGyQxtuByLiEv5cZ49hn50FUzP_rJfprGn5PcnbgKep IR9DLUKYS4wBCbPSHtpygdrDi.aUjNNI7EV7Lu4DvqJ6L0Bc7YmTxFrJIAavljSjbjjtsJdXTI2f J1qDP5k6SR_TdJw2smdV56FcONGk_PeySRteqcw6wHcwEKqjC6oB0_dOSDg8D3jByeZLUUYhmfs5 IerunsrMEBuvQ9laHsSCOu8W8N6yYaakrxWOAG.2hW1zSkTihW4j1XlZ5YdE8134lebUn_0Kw7KA 0su.56dSO_LE4RR3Bj3fR3rmI34fqgayZnc.63vS6BrOlgwmd3xRoWs0Vx9UFmOZgeR0q.aJm.H_ 8O9VsAQb5s3itDWnJ.8XtaCGLTGCDPERyUQxIsomGu3wMvgmMRIpqvcMsD5lhixmEI46niokWcQV fMUjmVqcHjmDd9e36CXD0Y0yHMisHqLM8Rq7Nf1EQYCZZKVJOu3m0fCGjqyr6SrwcjA95vo3dfNR Zv.0cRCKR.8JT3NNy_Yg_Q5MAGyFAGBdXRsWkI48tklAf.WwpXit1fNYPAzPggHz1fUfLvPe6SAj Pp0hpIYNsXf1lhNMjJcpnu8lfHifZ.EvOB4iT4nrXLFTS4j5Nx12YVMaiZQ6q2oukbH64n4O86p6 P88FXhYjw1xUmC7HsawmPtzjEvFjBsC_tvVdOl0TllaX5b0ztP3gZgu5k.aC88GJK9rDz0ZYJFIN pIk7UE3t.QbjBrdhv9ZZlJsvaNepuUq2eW4TmiB.bZ5yBJx78QPtVRpECIXlnlfmXVJKRuOIzruw ScDGSqKDx4tC2trUHFvJ56QLdIV0sA_T8pVd4v5CNvp5mjn4xaQ8mCltEwFPFq2B0i2PzMdL1Y3p 3M47jTsbo8jD07DUMmPuKVRErRku81_RNVirCWUlscSWztxyJH_RHsHfxqovYgXZbqcpxbUufSSp YyMWiu5K6Dk9wHdZc8JbTa9G5V0ktZ8FzgtnI9Pje9mWyZC4C.FMdikiYj.3.g3S9uaVjNNY7tKT 7rBJefiwioUkt_pyS70xr2paVxtojgcAcIRS7QwL0upCeQd.NEnjoY5PZrEl1_Asm6pyfirhtKzQ mJS9I.cdymSHc.SMVgRzNO4e6uwwQMZ_dFPXG3lQfjRZkZ0Eu5TJ09ICFMv_wiqaiUP3iMtUz3Zy g__RqBjqD5KCESAsc3HcdfiXvfo_bRbSaiiudLZp8vrTBThPJM9uqvaJ2lGii.elh03lF5JcEIkd o1sBlnGZXNeh9LTwt75yu10Rb8yud4.a9MHZ3rf6g766mUOEFtLmm1Q1OkwZN_vWOsazu15D_hU3 YUinTD1nEDDNkOURMqs3G_x5Uq2XDQtqW4ZljQ4Ug5H4Ce5hDPY7Ufat59TxBfwLKK9e2sdw1t04 uL.XNb953DOm340DJRheDVvLmjercB.zUt1cDZqYlV745DPtXSmXV_haj2zmkQcXDFNQi7FRYPrR dKJCW5A_svIUS0DIF0Sfl9df483XWYrkhMDu5eiE1SJqg4KaKMeupY8flLMNxD20kyz2DpDTED8n LwdGR2Ry9GjTNlQaIx43IwHPrMAaQO7Hl0JoVNx.D8vCXsKcmh.9vXwsKG02wzDCVAaMGxYkg1NP KdYthigNvZeDhj3Th8tr_OFd9JnNwId5UweynNaoR9B14PjuFWiazVUbCQUVkATAgk32neovOhwB gnddy4AwV23OPggVMiBxOEXlAUWZkAEgdo3FMu4e3zWDJ1AW59vue7bMpSbdWjV_RbxlmsYx1Xy6 m3dke1LrpI6kmFoBzbiCOtKrIB086ZewdDdH6MPnGZdqsQ6mt0quM4uAdGAHafp4Eq6R5ok_NbfO lC_yTs0ui32Hjrs.ubwdXw0JPRs8nILH4wGxvpR54GtBNOydUCrcXDiAIhktkJOWfaqzH2FJs482 hGCK_.yn2CfVpjKUhAADR_yp.ROSQMDlXmpNCG3KTJS2JX6hAG4s.WSViU7Wjeg-- X-Sonic-MF: X-Sonic-ID: 1fd6716a-beff-4f1d-b56e-64dfb1dec39b Received: from sonic.gate.mail.ne1.yahoo.com by sonic316.consmr.mail.bf2.yahoo.com with HTTP; Mon, 10 Aug 2026 17:25:37 +0000 Date: Mon, 10 Aug 2026 17:25:13 +0000 (UTC) From: Hannes Domani To: "gdb-patches@sourceware.org" , "christina.joos@intel.com" Message-ID: <1167994112.1616103.1786382713347@mail.yahoo.com> In-Reply-To: <20260727174619.1089041-7-ssbssa@yahoo.de> References: <20260727174619.1089041-1-ssbssa@yahoo.de> <20260727174619.1089041-7-ssbssa@yahoo.de> Subject: Re: [PATCH v2 7/8] Windows gdb: Implement XState (Intel AVX) support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Mailer: WebService/1.1.26254 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 Ping for this series. Am Montag, 27. Juli 2026 um 19:47:52 MESZ hat Hannes Domani Folgendes geschrieben: > This adds support for the Intel AVX and AVX-512 registers on Windows. > It enables accessing registers $ymm0 - $ymm31, $zmm0 - $zmm31, and > $k0 - $k7 where they are available. >=C2=A0 > It also enables reading the shadow stack pointer register $pl3_ssp (for > executables marked compatible with CET shadow stack [1]), but modifying > it seems to be restricted restricted by windows. >=C2=A0 > After this patch the tests gdb.arch/i386-avx.exp and gdb.arch/i386-avx512= .exp > pass on windows. >=C2=A0 > [1] https://learn.microsoft.com/en-us/cpp/build/reference/cetcompat > --- > v2: >=C2=A0 =C2=A0- Extended commit message and NEWS entry >=C2=A0 =C2=A0- Remove PKRU support >=C2=A0 =C2=A0- Fixed context offset of $pl3_ssp > --- > gdb/NEWS=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 6 +++ > gdb/x86-windows-nat.c | 108 ++++++++++++++++++++++++++++++++++++++++-- > 2 files changed, 111 insertions(+), 3 deletions(-) >=C2=A0 > diff --git a/gdb/NEWS b/gdb/NEWS > index 8f40ca5cb11..71ff5508d6d 100644 > --- a/gdb/NEWS > +++ b/gdb/NEWS > @@ -116,6 +116,12 @@ >=C2=A0 =C2=A0intent to remove it in a future release. >=C2=A0 =C2=A0The s390 64-bit target (s390x-*) remains supported. >=C2=A0 > +* Support for Intel AVX registers on Windows. > +=C2=A0 Support displaying and modifying Intel AVX registers $ymm0 - $ymm= 31. > +=C2=A0 Support displaying and modifying Intel AVX-512 registers $zmm0 - = $zmm31 > +=C2=A0 and $k0 - $k7. > +=C2=A0 Support displaying the shadow stack pointer register $pl3_ssp. > + > * Configure changes >=C2=A0 > ** --with-babeltrace has been removed.=C2=A0 The babeltrace library was > diff --git a/gdb/x86-windows-nat.c b/gdb/x86-windows-nat.c > index 3af5ef4dae0..270f9eae8e7 100644 > --- a/gdb/x86-windows-nat.c > +++ b/gdb/x86-windows-nat.c > @@ -27,6 +27,9 @@ >=C2=A0 > #include "i386-tdep.h" > #include "i387-tdep.h" > +#ifdef __x86_64__ > +#include "amd64-tdep.h" > +#endif >=C2=A0 > using namespace windows_nat; >=C2=A0 > @@ -70,6 +73,8 @@ struct x86_windows_nat_target final : public x86_nat_ta= rget >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0windows_thread_info= *th, int r) override; >=C2=A0 >=C2=A0 =C2=A0bool is_sw_breakpoint (const EXCEPTION_RECORD *er) const over= ride; > + > +=C2=A0 const struct target_desc *read_description () override; > }; >=C2=A0 > /* The current process.=C2=A0 */ > @@ -109,7 +114,31 @@ x86_windows_per_inferior::fill_thread_context (windo= ws_thread_info *th) >=C2=A0 =C2=A0 =C2=A0 =C2=A0if (context->ContextFlags =3D=3D 0) >=C2=A0 =C2=A0 =C2=A0{ >=C2=A0 =C2=A0 =C2=A0 =C2=A0context->ContextFlags =3D WindowsContext::all; > +=C2=A0 =C2=A0 =C2=A0 if (xstate_features !=3D 0) > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 { > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 context->ContextFlags |=3D CONTEXT_XS= TATE_FLAG; > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 set_xstate_features_mask (context, xs= tate_features); > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 } >=C2=A0 =C2=A0 =C2=A0 =C2=A0CHECK (get_thread_context (th->h, context)); > + > +=C2=A0 =C2=A0 =C2=A0 if (xstate_features !=3D 0) > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 { > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 DWORD64 features =3D 0; > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 CHECK (get_xstate_features_mask (cont= ext, &features)); > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 DWORD64 zeroed_features =3D xstate_fe= atures & ~features; > + > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 for (int f =3D X86_XSTATE_AVX_ID; f <= =3D X86_XSTATE_CET_U_ID; f++) > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 { > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 DWORD64 flag =3D 1ULL << f; > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if ((zeroed_features & flag) !=3D 0) > +=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 DWORD size =3D 0; > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 void *loc =3D locate_xs= tate_feature (context, f, &size); > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (loc !=3D nullptr &&= size > 0) > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 memset (loc, 0, size); > +=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 =C2=A0 =C2=A0} >=C2=A0 =C2=A0 =C2=A0}); > } > @@ -198,6 +227,14 @@ x86_windows_nat_target::thread_context_continue (win= dows_thread_info *th, >=C2=A0 =C2=A0 =C2=A0 =C2=A0if (GetExitCodeThread (th->h, &ec) >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&& ec =3D=3D STILL_ACTIVE) >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0{ > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 DWORD debug_registers =3D WindowsCont= ext::debug; > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (xstate_features !=3D 0 > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 && (context->ContextFlags & ~debug_re= gisters) !=3D 0) > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 { > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 context->ContextFlags |=3D CONTEXT_XS= TATE_FLAG; > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 set_xstate_features_mask (context, xs= tate_features); > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 } > + >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0BOOL status =3D set_thread_contex= t (th->h, context); >=C2=A0 >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!killed) > @@ -227,7 +264,7 @@ x86_windows_nat_target::thread_context_step (windows_= thread_info *th, >=C2=A0 > template > static char * > -get_context_reg_ptr (Context *context, int r) > +get_context_reg_ptr (Context *context, int r, i386_gdbarch_tdep *tdep) > { >=C2=A0 =C2=A0const int *mappings; >=C2=A0 =C2=A0int mappings_count; > @@ -247,6 +284,54 @@ get_context_reg_ptr (Context *context, int r) >=C2=A0 =C2=A0char *context_offset; >=C2=A0 =C2=A0if (r < mappings_count) >=C2=A0 =C2=A0 =C2=A0context_offset =3D (char *) context + mappings[r]; > +=C2=A0 else if (I387_ZMM0H_REGNUM (tdep) > 0 && r >=3D I387_ZMM0H_REGNUM= (tdep) > +=C2=A0 =C2=A0 =C2=A0 && r < I387_ZMM16H_REGNUM (tdep) && r < I387_ZMMEND= H_REGNUM (tdep)) > +=C2=A0 =C2=A0 { > +=C2=A0 =C2=A0 =C2=A0 context_offset =3D (char *) locate_xstate_feature > +=C2=A0 =C2=A0 (context, X86_XSTATE_ZMM_H_ID, NULL); > +=C2=A0 =C2=A0 =C2=A0 context_offset +=3D 32 * (r - I387_ZMM0H_REGNUM (td= ep)); > +=C2=A0 =C2=A0 } > +=C2=A0 else if (I387_ZMM0H_REGNUM (tdep) > 0 && r >=3D I387_ZMM16H_REGNU= M (tdep) > +=C2=A0 =C2=A0 =C2=A0 && r < I387_ZMMENDH_REGNUM (tdep)) > +=C2=A0 =C2=A0 { > +=C2=A0 =C2=A0 =C2=A0 context_offset =3D (char *) locate_xstate_feature > +=C2=A0 =C2=A0 (context, X86_XSTATE_ZMM_ID, NULL); > +=C2=A0 =C2=A0 =C2=A0 context_offset +=3D 32 + 64 * (r - I387_ZMM16H_REGN= UM (tdep)); > +=C2=A0 =C2=A0 } > +=C2=A0 else if (I387_K0_REGNUM (tdep) > 0 && r >=3D I387_K0_REGNUM (tdep= ) > +=C2=A0 =C2=A0 =C2=A0 && r < I387_KEND_REGNUM (tdep)) > +=C2=A0 =C2=A0 { > +=C2=A0 =C2=A0 =C2=A0 context_offset =3D (char *) locate_xstate_feature > +=C2=A0 =C2=A0 (context, X86_XSTATE_K_ID, NULL); > +=C2=A0 =C2=A0 =C2=A0 context_offset +=3D 8 * (r - I387_K0_REGNUM (tdep))= ; > +=C2=A0 =C2=A0 } > +=C2=A0 else if (I387_YMM16H_REGNUM (tdep) > 0 && r >=3D I387_YMM16H_REGN= UM (tdep) > +=C2=A0 =C2=A0 =C2=A0 && r < I387_YMMH_AVX512_END_REGNUM (tdep)) > +=C2=A0 =C2=A0 { > +=C2=A0 =C2=A0 =C2=A0 context_offset =3D (char *) locate_xstate_feature > +=C2=A0 =C2=A0 (context, X86_XSTATE_ZMM_ID, NULL); > +=C2=A0 =C2=A0 =C2=A0 context_offset +=3D 16 + 64 * (r - I387_YMM16H_REGN= UM (tdep)); > +=C2=A0 =C2=A0 } > +=C2=A0 else if (I387_XMM16_REGNUM (tdep) > 0 && r >=3D I387_XMM16_REGNUM= (tdep) > +=C2=A0 =C2=A0 =C2=A0 && r < I387_XMM_AVX512_END_REGNUM (tdep)) > +=C2=A0 =C2=A0 { > +=C2=A0 =C2=A0 =C2=A0 context_offset =3D (char *) locate_xstate_feature > +=C2=A0 =C2=A0 (context, X86_XSTATE_ZMM_ID, NULL); > +=C2=A0 =C2=A0 =C2=A0 context_offset +=3D 64 * (r - I387_XMM16_REGNUM (td= ep)); > +=C2=A0 =C2=A0 } > +=C2=A0 else if (I387_YMM0H_REGNUM (tdep) > 0 && r >=3D I387_YMM0H_REGNUM= (tdep) > +=C2=A0 =C2=A0 =C2=A0 && r < I387_YMMENDH_REGNUM (tdep)) > +=C2=A0 =C2=A0 { > +=C2=A0 =C2=A0 =C2=A0 context_offset =3D (char *) locate_xstate_feature > +=C2=A0 =C2=A0 (context, X86_XSTATE_AVX_ID, NULL); > +=C2=A0 =C2=A0 =C2=A0 context_offset +=3D 16 * (r - I387_YMM0H_REGNUM (td= ep)); > +=C2=A0 =C2=A0 } > +=C2=A0 else if (tdep->ssp_regnum > 0 && r =3D=3D tdep->ssp_regnum) > +=C2=A0 =C2=A0 { > +=C2=A0 =C2=A0 =C2=A0 context_offset =3D (char *) locate_xstate_feature > +=C2=A0 =C2=A0 (context, X86_XSTATE_CET_U_ID, NULL); > +=C2=A0 =C2=A0 =C2=A0 context_offset +=3D 8; > +=C2=A0 =C2=A0 } >=C2=A0 =C2=A0else >=C2=A0 =C2=A0 =C2=A0gdb_assert_not_reached ("invalid register number %d", = r); >=C2=A0 > @@ -267,7 +352,7 @@ x86_windows_nat_target::fetch_one_register (struct re= gcache *regcache, >=C2=A0 =C2=A0char *context_offset >=C2=A0 =C2=A0 =C2=A0=3D x86_windows_process.with_context (th, [&] (auto *c= ontext) >=C2=A0 =C2=A0 =C2=A0{ > -=C2=A0 =C2=A0 =C2=A0 return get_context_reg_ptr (context, r); > +=C2=A0 =C2=A0 =C2=A0 return get_context_reg_ptr (context, r, tdep); >=C2=A0 =C2=A0 =C2=A0}); >=C2=A0 >=C2=A0 =C2=A0gdb_assert (!gdbarch_read_pc_p (gdbarch)); > @@ -333,7 +418,7 @@ x86_windows_nat_target::store_one_register (const str= uct regcache *regcache, >=C2=A0 =C2=A0 =C2=A0=3D x86_windows_process.with_context (th, [&] (auto *c= ontext) >=C2=A0 =C2=A0 =C2=A0{ >=C2=A0 =C2=A0 =C2=A0 =C2=A0gdb_assert (context->ContextFlags !=3D 0); > -=C2=A0 =C2=A0 =C2=A0 return get_context_reg_ptr (context, r); > +=C2=A0 =C2=A0 =C2=A0 return get_context_reg_ptr (context, r, tdep); >=C2=A0 =C2=A0 =C2=A0}); >=C2=A0 >=C2=A0 =C2=A0/* GDB treats some registers as 32-bit, where they are in fac= t only > @@ -368,6 +453,23 @@ x86_windows_nat_target::is_sw_breakpoint (const EXCE= PTION_RECORD *er) const >=C2=A0 =C2=A0 =C2=A0 =C2=A0|| er->ExceptionCode =3D=3D STATUS_WX86_BREAKPO= INT); > } >=C2=A0 > +const struct target_desc * > +x86_windows_nat_target::read_description () > +{ > +=C2=A0 if (inferior_ptid =3D=3D null_ptid) > +=C2=A0 =C2=A0 return this->beneath ()->read_description (); > + > +=C2=A0 if (xstate_features =3D=3D 0) > +=C2=A0 =C2=A0 return nullptr; > + > +#ifdef __x86_64__ > +=C2=A0 if (!x86_windows_process.wow64_process) > +=C2=A0 =C2=A0 return amd64_target_description (xstate_features, false); > +=C2=A0 else > +#endif > +=C2=A0 =C2=A0 return i386_target_description (xstate_features, false); > +} > + > /* Hardware watchpoint support, adapted from go32-nat.c code.=C2=A0 */ >=C2=A0 > /* Pass the address ADDR to the inferior in the I'th debug register. > --=C2=A0 > 2.54.0