From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id acfOFXQnvWpG7h4AWB0awg (envelope-from ) for ; Wed, 30 Sep 2026 11:15:00 -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=IWzMpGGf; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 561E31E01F; Wed, 30 Sep 2026 11:15:00 -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 [IPv6:2620:52:6:3111::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 27FEB1E01F for ; Wed, 30 Sep 2026 11:14:59 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4C75D4BB5904 for ; Wed, 30 Sep 2026 15:14:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4C75D4BB5904 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=IWzMpGGf Received: from sonic.asd.mail.yahoo.com (sonic-euwe4-0022.asd.mail.yahoo.com [34.2.86.21]) by sourceware.org (Postfix) with ESMTPS id 2E4C64BB58A1 for ; Wed, 30 Sep 2026 15:14:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2E4C64BB58A1 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 2E4C64BB58A1 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=34.2.86.21 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1790781265; cv=none; b=Inv3YAzlfBo3zKQR0jdDxkTULu1oN8yFo3/NfJ64cI+eE72KGHcBiXUy8zMj8edGLr0KxVhyhvVDMYSOgzE6uz0yCi6dYMh6HNZFBaYs1rd+TV96dH5j6x134V6lxhkoluDwFJNPblSJ+4fPeGIcBZBEZaJURMpNVjeGVpbSSwU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1790781265; c=relaxed/simple; bh=3lhCxG9w3+6PDAM2MyZ0LwjBT1DnShgkYp7fiJMN3K8=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=t0ckjv2f6pl0Z0y+XX4WOKQATUHEZPzNGgIjaYW9G1XSKuRXl/cyAyf9YF3U3QXdJwaJAgXabw9sRyZp9n/uSSQODcVHmALCWxZoLQgl+vHfP4HH11GtqXG+6wMncpZdzV07FWX7biZqM7FPvjO06ChWq+H6XLVgfPWa88LEAmM= 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=IWzMpGGf DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2E4C64BB58A1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1790781264; bh=JmW2cD9ux5FHZB5+nziNCMNGMA71EzoDn9tSEU1Bb1Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=IWzMpGGfWebZwPpt0pO2kzrT90JatpLUW3OPBpPkQBNmFtilJqtkx4k1CeXsdXJXQ8z0TCPxO4A/1K9cmqDMPmPCsxlK4lAyS2e0iedIz2cqKQr4t1Dl9qxBXYrewV1FlK7wOLYxc9U3Xr9lKjsdVLATtP8PvwwZmYQs6LyN/v17N7Iw7VkGijvpjwmz5ELEve5yyghNTq9phcCtyjFzcJkNNKG/3JRMbvWS9sKX4VjW/RqlAhjJKkFRkbrdbysklGura+6mBCIt75OAEPgkfNqEzPkrEWq7cv/sPDOJfgNczMAPQ7KQHfVKSvT8euilYYdTqzialM6LaiPLUbh2WQ== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1790781264; bh=Npt3Q3ZaLSf9siXQXaA5YQ43m047i5p1XNgTBmaNaBI=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=Iahl5q/K8cOqCjLPWnlYNYr+/kgSWs+EquNxV+gQaO2iKjNfVqgoVw48WR83Xtz8OFncCaExtWJXPjpZ3fZPZ9X+JVMzrqNH1ZVGbsMZCX/n5Nt95yJ1AWiGNUaoslpTnS5WzCexdUJbwUmBT2e1hA+p/N3N31pKJ9AoKJCKzokNSySoHVFu9pqf808VU2PWZdRT+wo/rSxRUNhcXmjyInX0yvPI7AeEXh9hw27JoRQptJ/WINa7OOjw9IlMEUNE+rQ0vP1PXRtb2LTG+Isg8UmWxc44H2y2PALFkZpRMPRAdAAqe9OcMykV4vTknqTDGqlaZc9jecOHG7/mUtHYPw== X-YMail-OSG: bIw0gfcVM1nHHtUAcR593tPScL933XmYQdNV8mj8t.PrB4n7JA64jCzOGzJeahC HisbnWQZ5xpkOvINQzizG4DvLqiZrlaqf14fpRwjVqApLVZTGWML6fvL8fxwAT.17u3CTZ7mNrXC 3WCl39ogwUW7L.T98t9Qgjp.6Sg0S.4DGuG4abUkYC9bYc4UchCNX9Kw6y9kUErEOyMVQMpsfjsv Xm81sEOQ.UmORn0lVSgGymLasKGGHc4Mxni3NiWkuIGTiFJSNBj2zAiGDZwhaSi7NuQppVXzlbAD X0hnmbfzk9kpxH2dhLsNqrjkgH47mxF4WwaHZC.Ec5t6wYowoTLiQ4XuqZaM4NhLzCJqZ92Z7pkQ FrQftLP6ZlAknQbYK3zJwgF1S7A14ckKwyEFNysXR.3zgnPIOT8tPdZyRrhUvlbXWp7zX53j3kk0 tBdUa7PTVc6.yEP9TL.uJJudpOYQCoKzv84sAQ_KjU8wnMDG_2PEH9kACa1jA3np2KvZ1MrqSa.K AtVYRRDSLqqMOHRdTrC._ktmNXjiojjo6ix0Fsip7rTR63t90JJ3AuD0gPUNNlcZ8FRLVVqLiZ0y byTxv1xAtQUdbk4JNO6PBne4.owtv7i0UnpPzVpJjP6WpSi26mdg5muzp.EKYsxZ_vgKwIf0L9Z0 9VS7SVbKLhZs1McujaUWPc_I5q8ZsGXU0iDm8sKW0jGGVwWdqxDXJ0BkalIxgsfb0k2Rz2JFFg4C SDTBesFOfzw356ml21OfMV6u5FwYGeZWh.aaLWf1aXEDWFQYxCHQNw1k19XGAhJ4EAFsHnePz6Iv AJKCOYxzSzgiMYDs2y8hDiSfGDXR8kwz69b_gr51Nkt_e9QENDpjEydbV6LBgdCMvnLe2U7pOJDn 3_QYsTgRrxtDWN5pJ4DUpzW3N2BzNUSFtSqSBfd_1OT0Y1AIqnpzKwC4BRLe2IiT1hLEEdn.NQZa C2iqQ3Q3sYLx59XV15ZHVVQQwCkdJAAw7GFLx.pyUjXImDJGucXerjyKJeFQZl01vgb.xawgjRgA _SwbiABwQNG4JlB6EGYBiM96_3ONOhECI4r3WK67pH5wEvcYmFJFb986TqJ2kveMBLB6b3PpmNt6 RsGAHVpFgolGlrPiQ3VIXe24OAfxweoUljFFwMCzIUi6UEF3pCLBYhHjzXhRY5XksAUPzT7GrWdC NAR3j7Uhkk4O3eCr5wO6z33RDmdgf2Iff6OcgLeP6E171rs_JcYjOPCq_qE0xX5Zp0JFJCTfPjy7 .cFR__.Wkq9po59W4UCtDWNFxi6NaH5bpjtCz5x61Gg9ZXiGTJGLtQ7238zkTn30Xx7zbB89Guet jXNvtzDE.A1W.eNgG1_s_LT8zL__qhep0u8zb7KmCVJJQrS4oYRVdm9PIKJv42R88xz6BRGqdPu4 gc1LjqX6ErtUKdtkCsEIF4PevdXLJjgwV3ds9TBvbgm2Zwnw2lGg2xbOJuD5tmLiXNNphg2.djKd 0LHK6BxBfyuiJYHOPMycCNcA7tGDTiNyVvNzkY5ok1RCPMVBO.YfJGKsDCafSUshS7oVzirxz.ZB t7wBp2OxwkhHaFUNbFIDTdk2yjov46NbsrA6HamYW3uf1GpGep7l2cR8aMBrrBg0GN1afk0ZrEW7 AdEY8QxQdML1J_dwIgufC5ElObeFBPfwAJubUQA.bdg8WdYGjbEDTCnjDWyARs8rKAjvg0xSw5qw FLmkRkhOvneFyurNYJ3oAYoTaoMgDOGev240edDmp2SqvIe3YyuKxITdonY0VKaqBI6EJusAyuPO mqeSziswgHHQiW8fT3Wn1FuR24pwQjwGXmBkAl5Bvu14_hzAyjslNEn6lieY.xUXL_zNPYnzMNQM 6zcalChsE1GPYllMUbd5xvdnlOkM8U0cGxP_nbHBLO4c3hxhO8HNQKiivDmKgqtK9Kf8rCPyA6XU jrQ7Ym19P4hmYohs.jGPDJn3SplIYJvG08VADd0ihoO_gr.Y_65QCQeeWi7c7cU7S0iG218piHJx a3CcQPHwU.s4Iddx36xVCLFc- X-Sonic-MF: X-Sonic-ID: f795dab1-efb2-4d36-a62a-a0f67a40452e Received: from sonic.gate.mail.ne1.yahoo.com by mail-asdoutdeli-p-cin-euwe4-prod-sonicconsumer-svc-101 with HTTP; Wed, 30 Sep 2026 15:14:24 +0000 Received: from dip115.lsn.ir2.yahoo.com ([87.248.99.124]) by hello (SMTP) with SMTP ID 15744020acab95e3749a115a097d285b; Wed, 30 Sep 2026 15:14:18 +0000 (UTC) From: Hannes Domani To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH v4 6/9] Windows gdb: Get available XState features Date: Wed, 30 Sep 2026 17:11:40 +0200 Message-ID: <20260930151403.774660-6-ssbssa@yahoo.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260930151403.774660-1-ssbssa@yahoo.de> References: <20260930151403.774660-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. Approved-By: Tom Tromey --- v2: - Remove PKRU from the implemented features mask v3: - use throw_winerror_with_name instead of error - fix formatting and value of xstate_features v4: no changes --- gdb/nat/windows-nat.c | 57 ++++++++++++++++++++++++++++++++++++++++++- gdb/nat/windows-nat.h | 5 ++++ 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/gdb/nat/windows-nat.c b/gdb/nat/windows-nat.c index 8f91e755334..58be5368a79 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 @@ -99,12 +102,41 @@ windows_thread_info::windows_thread_info (windows_process_info *proc_, h (h_), thread_local_base (tlb) { +#if defined __i386__ || defined __x86_64__ + if (xstate_features != 0) + { + DWORD context_flags = proc->with_context (nullptr, [] (auto *context) + { + return WindowsContext::all; + }); + context_flags |= CONTEXT_XSTATE_FLAG; + DWORD xstate_size = 0; + InitializeContext (nullptr, context_flags, nullptr, &xstate_size); + context_buffer.reset (xmalloc (xstate_size)); + CONTEXT *c = nullptr; + if (!InitializeContext (context_buffer.get (), + context_flags, &c, &xstate_size)) + { + unsigned err = (unsigned) GetLastError (); + throw_winerror_with_name (_("InitializeContext failed"), err); + } #ifdef __x86_64__ - if (proc->wow64_process) + /* InitializeContext actually initializes a WOW64_CONTEXT when + context_flags contains a WOW64_CONTEXT_* value, so a cast is needed. + */ + if (proc->wow64_process) + wow64_context = (WOW64_CONTEXT *) c; + else +#endif + context = c; + } +#ifdef __x86_64__ + else if (proc->wow64_process) { context_buffer.reset (xmalloc (sizeof (WOW64_CONTEXT))); wow64_context = (WOW64_CONTEXT *) context_buffer.get (); } +#endif else #endif { @@ -1292,6 +1324,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_SSE_MASK); + /* 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 511f5605384..a7d4af84e13 100644 --- a/gdb/nat/windows-nat.h +++ b/gdb/nat/windows-nat.h @@ -749,6 +749,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.55.0