From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id icK1AnF7U2pdNQQAWB0awg (envelope-from ) for ; Sun, 12 Jul 2026 07:33: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=bs4mlGVn; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id ED9F21E098; Sun, 12 Jul 2026 07:33:04 -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 182BF1E070 for ; Sun, 12 Jul 2026 07:33:02 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0D9834BA23D5 for ; Sun, 12 Jul 2026 11:33:01 +0000 (GMT) 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 CBC6C4BA2E0E for ; Sun, 12 Jul 2026 11:32:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CBC6C4BA2E0E 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 CBC6C4BA2E0E Authentication-Results: sourceware.org; arc=none smtp.remote-ip=77.238.178.201 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1783855971; cv=none; b=gNZ6jEqFpvRpi7cz7lNmLoMKu0XbqsltT4fI+WouxsCkd8dCh/Ea6yJZ18wDhqw5TFc73UCXSpPWfVuzBzB7gCU6dqtL7EFVgBxtAPiqTOqMV6RBKrq/BAIZU8cOLOSHvzm0n8qiCPSkAUK+n8yG+yFvGhs97Xw2tO7ku2QEXTI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1783855971; c=relaxed/simple; bh=Os97CnpXFDwnk+YdIhnChZI53d70stg/XWOOXZpkklQ=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=qb4U8UCDAiP004wv3vHm2yfVZgxBI21/su56Hnz4LT8OjIeq9pZflmtb+LNb03GgtnzGRWU0qshhogiIyAh+5MdSpOpGl39YLrFbE+KHmYP7zygAkyci1f44apZf9Qu+3zcUY46cfC4Y6A4a967xP199kovoWBBk3STXcMFdP1s= 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=bs4mlGVn DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CBC6C4BA2E0E 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=bs4mlGVn DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1783855964; bh=/AeD51zKZIZomr0z3G8HqeisPC3Lv//4QOvRTtuZLmM=; h=From:To:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=bs4mlGVnpxTZKg1ouUd1DkwX26E0fcUipPbYZJK0jMFFDfGPQroEppbXYHVBQykPtMSio7zgPTxjIwqNd6gaAbk3I+Xim7zVG3FfDIEJeJwV90u2ixeUY3Iral/hRdppGSmLEP127rK/rBLm+20FEDNeMb0jP5t8UZyRZV9WS5RHRwG5rsOiOGy4AaCt9DGraCaSivD6KdgdvbockCNeJkF67eR2INFcARP2rOKcmTUjSQSuKzEiGJsxzXd1Y9gfta8/J79ONg2vsX8UkultkhfMo8l6IMYV3t/KtXoVaKcflH1d7Hengw75pHtCHLDq9vkysCmQQgRTFmaosKOXaw== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1783855964; bh=y8D5+xG7RU3tRY2+7Pt8IOo+x8RZ/+yGYtHGKwPrNiQ=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=D/XyTWP+kU4keClG5AEnG5k3aecd/MjAfprcb4c2vonwN4PnCKB7ck6qA+BETIuFQu+tepvfd7pyNgINpKcSAw5uP+mvgAZ93EY/Qgd1h0+t5pI1WSdZGIQFTHTZ8jbZPAZ3151Nk77PWL3ceRZN0SERJxZ5mKMgzBmyMV8T5J7dilWygnieuBbC+uS9EEoUc3B0riJmVUuP3rc6Z62q0hAKBG1TURIgDzyzCs7yGntJkMoK+0dK09k5YY2xQDXcHFEMrLB6DU5XKVlMzGhqF4NGZ7i/mqjc9KndillUpJQgSSGHaNoQY2VXCE7IcRmzvX3mh+wHTVd9FWnZagagaw== X-YMail-OSG: TiNC8gkVM1nWOl6nSeMwJiurBYT6vZvNNNxXsSR2iphScDDFltPNN7JQjYWhr1e APNTQ2UzFIjVREcnGzzmcEND00hEy45fPDn7HQJagZDeCtY8gz8aEpj6HKJCzE.1Z3vC4u66r1ge IZn9B_yeRoBPjx532PHVaMupawT.r9EZPG5jIjOIRv.SRvfBf7pppNW3b0l8nBh5eYAYGN8IWGDK ANmDsnSdZi1g3Esc8QUlxVBH9V0fmZtvPXZX.y1JaN0PKp1emxnVX6pmUAq6BRpwTZEg6coF_rlz wReq7M_._VdlqBVrCl4wD67Hv0J6G3vsaoANYPN1dVzreahzThz5bwDW0zCtQ6KXyaC7seFwqxEr SaYdqsocd_Wz.hwIw7JRGSVIe0F9mB2d9ZzTBw2dRfBwk7pcS_jXyDHcacQoFcb8TKHBmbcylT_i cVMh3eHslXWMZv1R3dXMprFiFATZWBzYU56xl3M7HSRGaqigF2edr99keokKFPeX4YQyWRSeYSvQ UOz4ajg907oPUdLWs6S52LEMNrBDMmnlT4Fx2V4Y7ntU5lEA3UyHAcBn50XBj0fubk82Yaz54nLT Q364rG32HObSCsfbpWWkuOA4B6BfcVGPx3DX8t9933yfCt64NNZgCXBAggoHjlUqAxhlUQ8kHGjm NaE4UfDcNi7mRpetaIwQnHEbgr27fUMD6l1RYUDJke3FaYazmGexAE_6cIxATIXc4d6qil74Ovks X54N.tMnuXr8p7L9Q453rllJ05s_uz30JgHVaOWYIi2T_x4kkVr4DZfhFOkbSInuI0qE8WPwxsXH Gul..LjkQ7_ktk2JByLvbcfL14VjmszwIrahmatkXwuK71mYjPF1CWFMziTpwQPIadNC4A5_KnVk L173OFYQXWwPCT1nNfYW.eKhVoOlWsnABKyZPb2Th0BtBTH3qV_CMPTSejPowFfUvM1hoJoz38TM 1YqrXiMNT_KkT_4gvsFtbXbBSVhC4xE3xRRPbbd44xy7pCunJqS_HbpleQU74EF6461TE_PeCaxo NCpQvboPFUK0I2PPp1ggAPC9PyZAjBbRS32PAPYHCgHK1jIAUcMrX6NEfhmykajrrycSy6A4xctd SoHjIx28Qxs8Qg20EJbylQW3CW96NsGXBFxWslNQHUOEXgZIEZ_ok8a8jg8QauRQJtKUdWjp_HtN K0jkiJ47F1Gt2tFeH50PFs7w66C6zwXyHrtljNQlGRIJcmvBAZiZQrZPZMgmELBgJrt_pAkQD2yh 8yHSH0ppcl7A._JUHGJOCSZzBV3sBw191_9L.Rw3mPfGHqE8oqOygeMBzEEiWBgDtHH6iLyC7FyO XD0X1VGGixXGv4RP6VdrF_UsuNgSEcVIFb1otD9CADVoDPosOVoUe5xQPkvZ48KuQkF2EMuFpsWU I4B2SveOO186ZX0A7OQPJKYJj59.ntFAhQjShNOfZXHc9S3wesmDyXlyFVQlCgU5qqJhWCFDfI2S VEP21DnsCGbbPAmDRkHumFLf80sRhdOShdgLWtWf0cUZJdJGvjOxf7BqLjEpx7JFGMDHD7zMyXlp 61af4p_urNpiAZeNwCmBn0H1QwIPv2hDxdgeqUwMEbSUtn7s2MAdIH5ek23Iyo5QqW5z7UusAti1 Nduvd33P8uUxbvTFKJOfmNClJYqpgU2QZ_vnI08FeHOl2CrGoaG.z1_gLmoUjqTEG.l1tL9wDPV4 70O7BpyywXjanX8Zz_HwkqzM7hDdneZmJ9l.KO6y1kiwJWebd.261f6tWxsouAmibaIIr25ccbgv kFSdUIyGN1I3RFIQ6u0ZBWcqjuB.88io3anc3aXUcd.dC74lxJ6Copl2S2kwVMf6W29ulOWMi4Di 5Xw.G1JreiyJvVSabZD5eIuyjKx5X7t80DKZnAUww08qdmvAeuax4a.Fx1djDBQTDyM4USj6I3vt hlQB.4yolQLv6PjPGq5jXNAzZgB2fSBcRKswFF2G4brs11KYIC1lYQwCXTTWqxlR9VLKIH8rPVMv ZvIm2RzmEOtOY82gqKV9rAU5fHNcZrLKlW2Yt_c0pw9GTBbWhjsIbQ7TQMDuyngWsgRNoTp3EJy1 z9l8geYAVzWMMfRx1Y5HO_GNHDVKtNoxqg.79ewPI2kdc4j8LcKSLC0UKHBg0IJzJFHit6p5awki zqtfi4RXFPttICPUg6CRSWK.ObLqjfc1WHhKi1ViMEsFOsEMyIYCB1d7nlmMqRoO4nNQcD7osdmC Iw.laV3UayJUE7lj8zZsp X-Sonic-MF: X-Sonic-ID: 90c99428-3548-47b8-a7f1-d5367fdebda5 Received: from sonic.gate.mail.ne1.yahoo.com by sonic303.consmr.mail.ir2.yahoo.com with HTTP; Sun, 12 Jul 2026 11:32:44 +0000 Received: by hermes--production-ir2-7b48fcd765-7kk6w (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 8f842386f7843a8cccfcf644a1266621; Sun, 12 Jul 2026 11:32:40 +0000 (UTC) From: Hannes Domani To: gdb-patches@sourceware.org Subject: [PATCH 6/8] Windows gdb: Get available XState features Date: Sun, 12 Jul 2026 13:32:27 +0200 Message-ID: <20260712113229.3695246-6-ssbssa@yahoo.de> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260712113229.3695246-1-ssbssa@yahoo.de> References: <20260712113229.3695246-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. --- 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..96c7eb54a45 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_PKU_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