From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id qWw2DxP0kmrKshAAWB0awg (envelope-from ) for ; Sat, 29 Aug 2026 11:00:35 -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=XYA/zi29; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 32A1D1E166; Sat, 29 Aug 2026 11:00:35 -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 4CF191E033 for ; Sat, 29 Aug 2026 11:00:34 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5A8C24B9DB6C for ; Sat, 29 Aug 2026 15:00:32 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5A8C24B9DB6C 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=XYA/zi29 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 508174BA2E37 for ; Sat, 29 Aug 2026 14:59:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 508174BA2E37 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 508174BA2E37 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=1788015549; cv=none; b=vM9ukj9y+k1GYdlNzpie0eZBU8lWuYW6rQ6Q5QcX8lBfFKtWyqSyHX5AILdM8cr5wij4u2GliI0ACt0NzFCnbSquFCYU/7u7gh75iH+1KeS7zYtk0zJ219/0eIQKyUoDe5XVzsIU5jq18PnpPuaMFq6BCtpuXmHggPS701p87SE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1788015549; c=relaxed/simple; bh=rdwchNA1yCaUcDlwJ4vYyCH6eiEUNIo75R8QUDclatc=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=bW2LECdyXNV8paMvrPTg/xvpHsAlDqzVSq6IMz3Zd82tT1KdTuL5CEdmvu0FQfdkn+/5iD5+0409CJovJUAA5ClL7rSlRjASNQaPPtIUNj3jK3NSW3Te8/nOs8GCuviZXem1+dWBcyM8uHS7+zX7WTwvuxM0Ie1rWTJ242nt4Sw= 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=XYA/zi29 DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 508174BA2E37 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1788015548; bh=J/FKR4ZA27eoJI0+1d/N+Um0Gg71RJR7ibvC6hVWHaA=; h=From:To:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=XYA/zi29BQQUDkGcvE7YXGv+/Sp2GDVl99DgsNL1WfbLZsbtX9UYtI+HAq0/Xq7+Kk3hnVpdBptovHeJz8Aa7dK16cqLFHsLNa+3NzvC6YiWCgAPZxOgzNYbp8iBNkDqXoe/65kk5uZHPL9PNkk1ZpaOqc5p7RCBgA8dZ+83orv0S5ChBe7RIVO6D9yNs0t39Zlpno19fHM0X7/AxsoNFc/BgZ82HE8LQkr15YyhjOfv+HclEPEOPoZR6N9oet+92tWrwph04PK7ftDdD8hg7w8hVOLNFBmaV4Aw2CpqaH+8Vzj8qiA5gt0pZ6nTzDxgtG+BrBUEi0/Kd3i8ENPmHA== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1788015548; bh=7anj2MJwVYISyX1r+WUDtnCpVdBNatCML5ybMjzJaeQ=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=bKyaLk2VHQ2mBH57wfOjkq4iGnJ76zh7F53BrKfm/oZzbel3ywJFhcJyr/0gHIpWPYlvsR1WOoNKd1fOh5Qb2dnrkoXDyfPAZaouw+sdkGDobNOlkgmkJFfZGJn6u8y2SsXIiPqFS5JIwTYzfvgPNEhYy2ounVP5Yc45PGbwJC2R0yFzOrr5WFUXcCuq89VUnO+XsB3FD7EhBN0bW3x3N/K0UbgIFCNkIf4+zgSDDNj2/Sap9hzUvaR2kQ6g04OMUW7eV03+KJ9yrnN64Vigpkop4yXlwzCGtmi0yb/LdGF4bFiK11Z7253OiyEZqkwexAN9LVD33TIGuRPcmtTmZA== X-YMail-OSG: VlpObIYVM1n8UwMZfie_JKZ5LVI0cJohNGm.6mpbUF0Xaz_7DPUaWwN1tnjMkB2 W6fSgMyRHYqGyQCLSnnZgIAwEhE6CV83UjJTsyBgB_9ZDvK3qFQZgkEKeTQyhScbqisJHCRvqSrt 56rrBiMGRp71WZyClrn.V.RC7wlhSxCENco2LcO52a1nxx26ptgqYRMlR5Adc8tkH6eJ0dXQ1XM0 DS0uUZXNyDiF0M30nYQO8ghizYgOISHGH7f7mwAz43ux.QDhnQUkx9EtC6YL_YGJNS4PBI1hdfWj A4Qsz8cup.bBLYP8AiSEXGPqeYjgwI4UcaE62c8PvwWU82zbcvoOzyFO8uzenNH0cRpuu6Bh3YXK cGv23FVBIwwe0nQ84JydXG29ojFrJ0Yg9FrNsKAQZaOcORNZY32uvZI.4D8TcC.WLpECv.Brazie UvAKCHcinOUdXErcTkJStJIXJOuNbMFa2JNgYqe7FnBSK6VKLfWWR9uMWTEnkTyGNJTHLoQ_NpvP QIc3VCRJaASK3_qOzAPGRt5VmbhC12VmifcOnzqP98jABdt_174mjF6gw4DX342azPOHcaQyb_8w tV4D5AMWLGScw01neBOUnH4PSm9F2iC2HeoBqIJmTRPdnnQi8gFw4y1Njue1lIap9pvLDSsLh_tf EEIep4VYZ2OPjq.QEWPm0xObCdAFJVzn4aQFjU4d8gNnVfBCcB0O51n5XV7vpuhtTAe7SriSrT_e E2NVdydJjqEe__Uf7KcKTHAhLltN4FCdWnZO5pOW7YoBWwayc8D6eSfQ4nolEcyLct5P1OP1pbNU _Z0x3OXmWzUVEGcbWmeIyGb6LaGF53CRbyW0XQkKSCGj2lJWptSGIr50Nv3pz2aDRWoYAlVLFdqT YcFOT0g245sI0wPdvKo3vkRXZd3XmiDzMAMQdAfgTCTKpYlBIFuNXdjDQh6pZ.9Q83xpysSApjY5 9n4D.vQi6bUq4z87ZPxAnkGSrgRz018ld6qsTMaGbUcr1lYzMGNg2Ys1uSgViEGgSSelUajKiFk9 WrA2Qh5ilXE2T6KfWWrcyTeJcM7VMS9knPpET43clQpovd3YbZrP6pz94zbJbmWV1K42D1.LVT4a ayeb0WwxgW8PIdNjwZtDTMZUSrvYH6Mgh67clEykeHYMC2Rj_wL3xiCMB._7ajlDGxCmLPOLTqUN T5upfsJRC7kM_mm4Mc5hZ7msLHURgDDa5o3O.TAtJmpkiw.M5LuuY2127cn6pgQd_V2XFuzSRSEq FRFtkxz8VVD4xu670YEa4kHST7qnkCQUzNAGtfHqH.wmiBFwskK4a5dRNZSa.18wnxwWy40KtLZL KxjRKyjldgpzCexb8nfmO7vmRNw8v2aq1HTz9sMYi__7d_pOCsD3GYibjtzGeU_.2OZSYgzWFXGp ryXiSZfkSIGs4diAtRsdTRzPmICXNO0ziL0.tJlun6jFhoe0Xz1QHWd1kTJmPC4PKdPxAAn4_j_8 JAiTVfWTjAmhA54an1I7ZG30GzetkmuCyWTB77jJQ0zlnlc_.7kdZRdChCbIDjLOHQ3KKg3Nkgf4 XhYQamWI.FQoL0D.3wUDnP60yTtzAPMsD5Q3fCVsLb684VUzto8DGmrX7Z5MC_hAVQzCSaoICfqe vCJdUl0rltGzOIY3Pd8XUx2vb9tLBqBBj.ZWhMDJWge8TZolOhCAC.67orG4LtjsnVtYo1eT5IB2 tuDh7MizEU6nK77KxEhR87l5LOcD1NuxhfBASxA0BMC4pwaIzzt6EcCf6fNNpQZ3Au1yzefjQ8kL 2_HMa2YT5Q3ARKs0uLQy7goxN2Rg9TvU0b.MLLsRVwdSx859YmndM.rdPlR577MZ6Eu4oiNFJ17s U5Gj7F1Ft9h2bA8CVpuNYlBESouGeQMm_KYG_53kMF.A7GSLVMRajlLPRvZE_mYsx5dLcMYJxRPK Pm60caSKNXXaSuh5gD6ZZTf4X7HHVTYBnR.mnV5ZRzDFnOY1cmW940oM7Af.cANS9t.jmUY0aJx3 3MLUq4ENyDMXpgMFvsQu6 X-Sonic-MF: X-Sonic-ID: f3a550c7-127e-4235-86bb-07d4f54cf0de Received: from sonic.gate.mail.ne1.yahoo.com by mail-asdoutdeli-p-cin-euwe4-prod-sonicconsumer-svc-101 with HTTP; Sat, 29 Aug 2026 14:59:08 +0000 Received: from dip114.lsn.ir2.yahoo.com ([87.248.99.123]) by hello (SMTP) with SMTP ID 13fd5a24ca42336c08dbbc03a4401a1b for ; Sat, 29 Aug 2026 14:59:02 +0000 (UTC) From: Hannes Domani To: gdb-patches@sourceware.org Subject: [PATCH v3 6/8] Windows gdb: Get available XState features Date: Sat, 29 Aug 2026 16:49:03 +0200 Message-ID: <20260829145823.1034821-6-ssbssa@yahoo.de> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260829145823.1034821-1-ssbssa@yahoo.de> References: <20260829145823.1034821-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 v3: - use throw_winerror_with_name instead of error - fix formatting and value of xstate_features --- 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..8930536f3ba 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 (NULL, context_flags, NULL, &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 53023859b9a..f0a55d40f05 100644 --- a/gdb/nat/windows-nat.h +++ b/gdb/nat/windows-nat.h @@ -750,6 +750,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