From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 0CZcHJCZZ2rTeDAAWB0awg (envelope-from ) for ; Mon, 27 Jul 2026 13:46:56 -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=PmUqBJeD; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 60D1F1E033; Mon, 27 Jul 2026 13:46:56 -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 2D3AB1E033 for ; Mon, 27 Jul 2026 13:46:55 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id E4C6A4B99F77 for ; Mon, 27 Jul 2026 17:46:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E4C6A4B99F77 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=PmUqBJeD Received: from sonic313-21.consmr.mail.ir2.yahoo.com (sonic313-21.consmr.mail.ir2.yahoo.com [77.238.179.188]) by sourceware.org (Postfix) with ESMTPS id 2F67F4B99F57 for ; Mon, 27 Jul 2026 17:46:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2F67F4B99F57 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 2F67F4B99F57 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=77.238.179.188 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1785174389; cv=none; b=JApAuvppXAUpM0TiQe5NHHkU9U6IG9j4n+iDFrAZ5kNskW5p7IlS5zj3x+BMZPXgS0hdeeTfPwo7HmJ0ang24k864o1RSU6j4TztHN83CfYSRPQ77vINsZbVXqPv2u2eYKfv+nqRHCwtxvpd7LiIpJHbTJ39/BnaqSuZ6q3Q92k= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1785174389; c=relaxed/simple; bh=1U30lUHnqcmuSOVxxWlfOAVyoCKBzw8Z7QBldoDZUx8=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=OTArUpm1gk/s2061SXuN0EIvdGisOEUfAU3sclG51puketZMcoh6+qTqux4tPSJO7jli3UAzK438VryazEXD7LGZbCB/31Y8ScgET+vzPqm5u3vhOcFNiJRU8WHqeLdZ+VBRZ0tuBST68jXKAIJxwbCJzdiX9pDbG+RWQfXwhwU= 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=PmUqBJeD DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2F67F4B99F57 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1785174388; bh=QHrmtPn7SY9N8WoSelTjBHElcXfKPUgzWFvuOCiUhZQ=; h=From:To:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=PmUqBJeDqAvFB12XdKkUEH8UFX9SDvpKB51EBol17vRaMcDHoOvjqoCm/npAgeEjwbRe+GCNrAiW5nYIZomx9RqW+qe/tr8IY5qmXNba8SX1LCXeuKBYn7k4zuGP2Lp23EB2bCkHUFboOEAznADjL/XDBc5YAd9cusbbXO+KUkdiltrKui4RRNDoY+m8yFeKYwjZGyWTBQbLHjIlhLao10QVzhFPzmYKxP3a7NBNDgJfoCN60Fa/vV+zBaUP8GiPoAKxht9Sh8E6TKrsAcSPsO9knu7ye+JzI7+ruyQkne/eXfPHEJo74hS2EslhMSGTKlEvjJtY9bHbNM89dANZoA== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1785174388; bh=rlulet1Mroj1t3aqxDoVXwuwo/jYVkbdaeru7uNdEgt=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=PjA6rnCIIaJKPImwoHvTiisnZVvSrZC6wUDA6EO5/YUTQNCVgYA7cx9Y3RTzsL01a7yDIJ9PQTWPctvqAlqvavCbi+JljrCfi+oPmbQJXU16Af4vw9NrBLPZxUSHRIl1VX4aMSs/NQvCK1ilmY9FH71Vq23pTSjWwn0hTtQnXfDDB+drYVCjpKQQOjimGO3mFkY3ODcN5v9Teh+Y8Pga3eZKCQld9hUkIcswaAPHjieWCr+6ruXtN3Tjx5glbjpbgtXvFU45T1AUtOQJ+D/5S1fOIa0BPQ6QL/u58lKKvm+rj3dDsQwp75MoQKx+OKCSEXJS1goFxyaMI7/0cgzqhw== X-YMail-OSG: xC3.vDkVM1nk7cWxG8htjeYOOhPoz77zIkt0KjS3f6TEtX5UVQ65Vnbe_XjQpPI oH60mIH_LlGy4L1hK1dexc3Sb.J3aH2nZq62AJh7UiuS150c56k2pS2gfBOy0_3HCLvrWrxk1HuL DbbLc5he7fSzYDactjroI3sHtcII79qPS5kQ.o_ExFOKFtW0KWp2x5qNCjMyKvxjC087vrLQ_U8W TFs13Sp0GotJ8.EN961m2qkJrQ6yXZ7bucQwBtv6SC9VuhUUKmdv9EsI4kU08vgyRk9NoEXLXNqU kmJWD._frFXnunqx9vjTumPMW1HM9yCYZmUn9ZAaYqsnbo3cCNZ_LAmyntwbeeDdd_91Odk99ixv wTakF4hoPzaN4FKjgQcJsAhi0fEEXfjbFVuEyWr96T1ddCCcsvkdrlTJZWzfx1xVWeiuvzpZ5Ifo u9s3.jfOQf..694BDsgjUfVzWoW5NvnyxShRWamFk4yIPms7ROD5CdXAlMXnEnbepcpsIxWaG8yv 9H63SSwqp72HhqXq3ypug3dlIEr.XLFAjBNyrSwqbD6aK4Fft41v6CL87bkOHrEGwiJLSDJmxRGb R8W08essmkt1VAxfJ3jdeLBMWVNHnck4vLGGpHlXfhPLAyiofEf0DnOG01fOqPZi9uu9a5_X6HZw HhWVaXSjzIIkGjVuWBWG8q..useS7PXFMoa5s70bUeIrpnnefgIiNcv_IhWLFW3GZd6UfAoux1of llyjjmvqxB2lCMMnhZ_i24b.TcFcrgX2a03FIFMW60EOCmlRXyNOoXXbCrRHf0VBGty_rDygxbty Lk6L1sMeItQ6fPGpsZ1bZ6ivCr7VWrqUIHGkp_NlvDlNkGTJErsKUWVkPm.vCqsL6TTxF4Gzq.y4 WIzvrsjETC3qxVrTvbOInjpiQVG.RyzAmJcwSYla6Ius6o0rN4gl307lSNQ3tTOI8BQ6ZhmpdyZj rX3gFKSiU5Wx1VS93yxm0xvzp3OG03jgq4ukdrAHM4Jubcc6rpT8Gi7QH0q3SAWfVC77KW0GncKJ QcvQQvl7gLad4U6XwP46nvPh2gOhv_AEgKocBcspoVnUA6YC3BSiz0DepIqAPhRNl0A3eY.W2TyE 4koiTpgZdSZzQlLD0zmAxRIX3TKXNsldDL6HYYDW.QQKBzxcKdbVEhynpjmbTjICaYUBZBabxhyk VU0s6Jg69Ghjqqae9x3RoEzGOdDlIITMlz5nAe_ylJUsF0a3l9mFpu2tSkm5oPpHqctYpD.myJpj YHLDfMrreJ0y9S5HXbpsc3ZPf2qx77K7H8Ly2q_m7fboECOHvuWGMIvcfLrZL4JxPuDPh7NGApdM S2QpKO9DBehjcYKOR_5oepAZEKe8gCvHHgXQgliWD0UEOBAQ_auwBYCrBdHFhLyaW7vrDzFTaiws qUEVaRX8u_8M4tUGnuUfSi5.R95ykHq34AgboAY7JNLQRzTp0J8I2YkSSXLzuy6T7LBQm7dm5yCC ik4wuZj4kRtVeR4xB9idkjjO1LZZnBnaasNPtorVwHdCBF6xPkZZlJQ14ZZLSMv.slS4z4t5_IVJ K4fJ_bCYPkgegYERzVv5NUEXurk3cBXhu2WuUkGCJSObLgXmmZSJ7JO70pp5bG7e9BxVM4UsOBDn 6a8N.oTyS6kOlV0F3riKbtB8cv.G9r1Bb2AKc3HWwRMmK2NefzzsVdbkCOzKhg3W6sZZk.OcZlbG aaCyVPpilsEy8KOCyCPmab5jodlITVs_44Trzc8DtZvsozjUJAA.duqYuBNEVAyZHo2wfRKeTtKW U_3g7G_m71WDyJAoduJcdGkG5ITX.yPq4CYjxYzFQ.IGcV2WnuA9F91q2OnYT_nym2K_Jc_niPTR CXhI2XqE7HdTCzekX4gqF1W_l2yx1kTFRaMcjcwcrn5dZ.51FkF1tTDwQ5yhixNobvfpwDbFprrn u29hyurS3CQpVRBSZzGvXKiM4weGTQ0mwJyx0A3YgvOa.NqS3pkuXmS3_SfG3AqdFLTAyptMYe6n 45FICZOGyJEfnKaRQmKWttYVqPWx5J77E.Gi_nIuOXQjP9m_DLWeZkPf41r9Kuvzjwz8SxI2RDJn lZA3VS11rGeCdV8GApIPiUnJ9OV1HVVEV5S4vB79QgGWzzTcA46zPnIP_wCup7UajnYqmqh_8tLH 7rDaN469QEJWMaOBIFQTMdVejTAS2WOoVEChoFZzWhjb964BdTYtT21am0PdkICh4bltAmpEUf2D PS28YvJppbRiPWMqw8w-- X-Sonic-MF: X-Sonic-ID: 4688822e-80aa-4526-b971-5368dcdc986f Received: from sonic.gate.mail.ne1.yahoo.com by sonic313.consmr.mail.ir2.yahoo.com with HTTP; Mon, 27 Jul 2026 17:46:28 +0000 Received: by hermes--production-ir2-676cb4d88b-rslc6 (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 0669d8fa15a3c4ff66838ce4fae4c373; Mon, 27 Jul 2026 17:46:26 +0000 (UTC) From: Hannes Domani To: gdb-patches@sourceware.org Subject: [PATCH v2 6/8] Windows gdb: Get available XState features Date: Mon, 27 Jul 2026 19:42:30 +0200 Message-ID: <20260727174619.1089041-6-ssbssa@yahoo.de> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260727174619.1089041-1-ssbssa@yahoo.de> References: <20260727174619.1089041-1-ssbssa@yahoo.de> 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 Also prepares the thread context for the additional registers. --- v2: - Remove PKRU from the implemented features mask --- gdb/nat/windows-nat.c | 54 ++++++++++++++++++++++++++++++++++++++++++- gdb/nat/windows-nat.h | 5 ++++ 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/gdb/nat/windows-nat.c b/gdb/nat/windows-nat.c index cd1f9e7bc64..28678b9f1a7 100644 --- a/gdb/nat/windows-nat.c +++ b/gdb/nat/windows-nat.c @@ -20,6 +20,7 @@ #include "gdbsupport/common-debug.h" #include "gdbsupport/gdb_signals.h" #include "gdbsupport/gdb_wait.h" +#include "gdbsupport/x86-xstate.h" #include "target/target.h" #undef GetModuleFileNameEx @@ -84,6 +85,8 @@ RtlGetExtendedFeaturesMask_ftype *RtlGetExtendedFeaturesMask; RtlSetExtendedFeaturesMask_ftype *RtlSetExtendedFeaturesMask; RtlLocateExtendedFeature_ftype *RtlLocateExtendedFeature; #endif + +DWORD64 xstate_features; #endif /* Note that 'debug_events' must be locally defined in the relevant @@ -308,12 +311,38 @@ windows_process_info::pid_to_exec_file (int pid) void windows_process_info::initialize_context (windows_thread_info *th) { +#if defined __i386__ || defined __x86_64__ + if (xstate_features != 0) + { + DWORD context_flags = with_context (nullptr, [] (auto *context) + { + return WindowsContext::all; + }); + context_flags |= CONTEXT_XSTATE_FLAG; + DWORD xstate_size = 0; + InitializeContext (NULL, context_flags, NULL, &xstate_size); + th->context_buffer.reset (xmalloc (xstate_size)); + CONTEXT *context = nullptr; + if (!InitializeContext (th->context_buffer.get (), + context_flags, &context, &xstate_size)) + error ("InitializeContext failure %lu\n", GetLastError ()); #ifdef __x86_64__ - if (wow64_process) + /* InitializeContext actually initializes a WOW64_CONTEXT when + context_flags contains a WOW64_CONTEXT_* value, so a cast is needed. + */ + if (wow64_process) + th->wow64_context = (WOW64_CONTEXT *) context; + else +#endif + th->context = context; + } +#ifdef __x86_64__ + else if (wow64_process) { th->context_buffer.reset (xmalloc (sizeof (WOW64_CONTEXT))); th->wow64_context = (WOW64_CONTEXT *) th->context_buffer.get (); } +#endif else #endif { @@ -1289,6 +1318,29 @@ initialize_loadable () #undef GPA +#if defined __i386__ || defined __x86_64__ + if (GetEnabledXStateFeatures != nullptr + && InitializeContext != nullptr + && GetXStateFeaturesMask != nullptr + && SetXStateFeaturesMask != nullptr + && LocateXStateFeature != nullptr +#ifdef __x86_64__ + && RtlGetExtendedFeaturesMask != nullptr + && RtlSetExtendedFeaturesMask != nullptr + && RtlLocateExtendedFeature != nullptr +#endif + ) + { + /* Available XState features masked with implemented features. */ + xstate_features = GetEnabledXStateFeatures () + & (X86_XSTATE_AVX_AVX512_MASK | X86_XSTATE_CET_U); + /* The extended XState functions are only needed if the available + features exceed SSE. */ + if ((xstate_features & ~X86_XSTATE_SSE_MASK) == 0) + xstate_features = 0; + } +#endif + return result; } diff --git a/gdb/nat/windows-nat.h b/gdb/nat/windows-nat.h index a344b0a966f..8fcf5e339cb 100644 --- a/gdb/nat/windows-nat.h +++ b/gdb/nat/windows-nat.h @@ -760,6 +760,11 @@ locate_xstate_feature (WOW64_CONTEXT *context, DWORD feature, DWORD *length) } #endif +#if defined __i386__ || defined __x86_64__ +/* Available XState features. */ +extern DWORD64 xstate_features; +#endif + /* This is available starting with Windows 10. */ #ifndef DBG_REPLY_LATER # define DBG_REPLY_LATER 0x40010001L -- 2.54.0