From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id ybuoN7iRa2lAwwcAWB0awg (envelope-from ) for ; Sat, 17 Jan 2026 08:42:16 -0500 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=Vwx/7VeF; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id DF82E1E070; Sat, 17 Jan 2026 08:42:16 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.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,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED 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 220471E070 for ; Sat, 17 Jan 2026 08:42:16 -0500 (EST) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 9FFAB4BA23EF for ; Sat, 17 Jan 2026 13:42:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9FFAB4BA23EF 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=Vwx/7VeF Received: from sonic305-20.consmr.mail.ir2.yahoo.com (sonic305-20.consmr.mail.ir2.yahoo.com [77.238.177.82]) by sourceware.org (Postfix) with ESMTPS id 94A184BA23D6 for ; Sat, 17 Jan 2026 13:41:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 94A184BA23D6 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 94A184BA23D6 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=77.238.177.82 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1768657287; cv=none; b=rNO7eAq9oNcuuoBOc/bVrYAfZChCY3z4AhYDSyZg2SIhktgXaoRwsVpWssEQLpuf5KhHm4hTvTk/AAH0rgZ1lRvzclEAjjbQUiqy5hH6k3pnIYQ4X9ucK0/7uXN3AkPx+fA+lQENQO/ejKaj7osQ9RU/3rqQrDsxMPZpZgWRn3Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1768657287; c=relaxed/simple; bh=O+QVXDT8d8lXEX71Y2Q+IGY1O1dsCtFf5SiVg/k54as=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=tTMFaMDlX4R6/NZUQr1r7D6nv7XJl9/sIAFpZAW69QD2PcrByFdfpO4aezmkOzyonOQ/dNTVfEdzEDhyjxeJ4GkvUz5MQq0/2B9DAkpGIM9OrOSHXuxR1Xx+uBDT6itvUi71F4tm4YBzwNhl0ZvpoBUYcBOGCf1cxOvQNFFPbVU= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 94A184BA23D6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1768657286; bh=fc5MRJ/a/GL85SQd8hBN5J3yskmmXQIZgpMUWSaHAEA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=Vwx/7VeFWP0ChOQFFD/91o9MHJfC7Cbiy4wsF5JiRJMvx9R3SNdF4oLwOmirUmlqvhnFMxA4kNYFIMmre1uK6xze3n6zCdo04Fva+dAVsDSiBzIP2irUwnFnK06AknydRa4Rp9JcNoIARLfSz1I54fDVo3wvxHD9g6QGvjEUU9f2roAGWcQMO/S49WjhcRGtQGYmN3kxmykjAoTGgnyRF0ZYaDPJ2+7x/PcUySUMomT7/HQCC+0Z46/vZew5WuOJaYhaf0XsTAYieixQw6yMV6xUrasb6/zNsPDIpnfa7B4gnfplmwk3qxruOq7zg1P2+fbW4yCa/KshWzmuKVaNfg== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1768657286; bh=G85VGh3YdQ1DWj4bybuacy5z2MTpAFNc6zMwj7+Grw1=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=YbprzCOylBKmhO2Bz9tYWw+insAmXZs/C/l91e7mQ2Y9Qe2dZnc15tAhikKRrXA/dOLKoAm88Y5u135vusjIAG8XNhqzcK6NodJ17Ty5VzoKjqDT4GxBXmZYEhjn7QS2vcu9RSnm2dX1ctTroUgRMjuuyX8ZER7QXMFFcsoy9mRKDRAqvpJg0ekXkb2uwEP++DbuwlPlpDj+IMFZtoIbEhMuJUqJz0MjSnJmkVUAfXzvsEh77fIKj6UulsM3rFxuNwKMXghunyhFv2vEJ/UABKsqfJpnmpcZjOCP3rQhtrGdAyOR6W/x72MLVoZEz+4zezJlzkPWfheTEP0ltFKH+Q== X-YMail-OSG: iZQU0EgVM1n9b_JjzrtgaPW.lMI_3CAvoiv5LdB4jLFTUSJADs6uveG0hsTnriE mhqwRNa7h5oiH851Q98.THq9t91jThTrF2ADQyKfy7pJR61Qrmk2AGxpgY3v4GHHlBUbGA28qaoW pu8QbsXy2MAjdI557ildb9WwYhqf6.n4_AwrY4E76nQs9uR9duHKsXxpYoY_M9wc3rDBZNsLFf0h RAdty0a9Qjng1Z70BXveIzOxN0dyEG1s816BhEidFUH8Bprx4laoZ1A9yTx.lpk0FnlxlCOIdHUF SD.XCcnwqYfHEKu31LNkMR_pd7x3ECQYOzGdCx_7mImnZNIRsWP7RAaQ6PLswucCNAXw0hIue6i. 0JPzGdGZxp3_G6hdzUd97gVokCFRIWkpwlMMUgiIeIx_U6dSBG34MXuVdSc0O_9DWQToY5h2CvW. 8edkvzYrlOZkZTZbkeXHppi1tqPup_N0PPlaYicr3IfkPBhBZXQAYxOdl7cOiLqefP4nStBtrN00 tGFXv6CWvAVBZ2Q9GR37rlvo5ppbfI8yppFviWCzuBJgNe7WA.rLpxwUUBcTCEoJMd3yS8wAJUmP 1.DPCAHi2MD75OMLr8pnyk7fihFJsOWLSxPG528tVSjV35ESdciX3Df1cwVc.y.oT4zjB4lxxjDQ h09SMg2fe5nFu64yThxca0Bpj6_Tn2cogrQrax5MOdJSxIE_jdk.3_y.MoiraT7vmLZNyN2ChdcL 1ApPGoBGidbd2jmOiBJNRR0qkXSpcm3R4njILGbLTYMA.ZvdNr6WiEPsS1hZqjiEdiYv54khje2J jhrE26eCThChWCZ3Gl2Go5XCJvFd7JUA4Dc9wGd9RW0sJGBbBVYf0auOCq4HK2PlkUcKRUZU8M8w XhcPmPTBYTp60a3RCjx0ru4iPY1Tue3tDJlNcpjGEl0YSBp_lCEYJvoQ83hlPCpD8RGihVuSnlIX tHJEOWFl8AAJLcgrSLxKK7rFMuUVxLSKlWNciJQDZMe.rNzq.UIGqxeZLkctz9KZMfz3FRzAn9xg uH_PqQ5iOUt0DHgm1_JbzpphSL9XhghFuEC5DWAzYs_Lsmbz7jolrSzAGMbAShPXK_vrvtuQP636 jQTojaonSv.8qfaK6BfBPjXb.vHzANDBPXuPL.B.xXxjixOBwxcCUF1XMbZWauhBECw31XZwZVJ0 HQvd69IrOTKBXcCPA88z0YuAJg_bcd0UBKjvi1HW3Y.u6NqENZ38xjza2aGgE58hutBy8MjDsQN4 vLm1Cb6A4hdC37AZOHTzKjza88yplbBzzqQD0rlZMLtWXQFx8sg1C0L.jPztkOL8DOeHfwy9R264 4zYKvnO7BVHjHdfiMNKq0Zv12ZPTkW3oT9owAn3CjzXbc6tutq.Pxu9a0EwQb0bvtZyFvgn5FHI. vDuXmoXc2q5IlQauovqPQv9gePEwZHdWenfZOFTmV7EG9atpAmbCWDcHvSCxHOkKf2IHGN4VDx2O gZ_oMeDTD9WOV7rQx8BATz0oDRhCAGO5kzSXtrAuH1Epz8d1DSxEi1Xlxro0sUd.Bqm7Uq1bN8yl hnMtbN_K2X_QtzwTV512d6Ovn.BSrwwb8zi5iplxcv9x6.rQU0w_0zYF3itK_06kPC9eQ1HBTBGp MswmPCRvuGRhVv1o4426LsTNcT5UYW7ZkaomphY3g184Xq5spQFoodXAC7btiKCtRcpD_M3BWY02 gX27jCLJzA5jajiaRs66ADKRliussaTmzSkv5emQ6y.7iuX8lEm04hNQRINH0CTOMUkJsIqU6yuZ 8BW7InGf4Wj1d80XbjgerEP.oX_oo4nPSEpTG9ponRrK19Hit03TX0aRYX5iaNuCgYLXxtmwhGmb zucpPvbrRgHMKiXR.nzemklwaHnNW7Nc0JawUr1gnGBhvN34xld4mgslJSn4Bx1Wfzlu0ZOfuLoT v8QPndXU1.M6DVOCQ_Ta1tfUjMqhK7dmqVIRHN2CiWm2uTq5ZTZvBKeuOtpkrOhvr8knk_na2eQo xGqxGHXQrWl8ZuYvYi_.YKZ4KYFpAvCSHAzgm4oXQJJTiWsSSwotsP6DCep6mRqxMktlROxJZ738 k1dq5B8hetQQRtWDZLgLt2sUnrvMdyJZUOEZpaT1b92TuS6smF1yzpOt51QKaE59HicHBluvknYd 9y8kO639DGOirB0lU7NWX5i5y4Wvz6hsPwkxHEPyyoTzqvcGwwpeBzaaqP7yKaB2.Hpn6kCILnIL 53fRF1LUjj.94WddI7SG26nCPNWNaEOvgJsLrWochGAQSmXnv X-Sonic-MF: X-Sonic-ID: 135ee311-a057-4013-a875-826e99a19749 Received: from sonic.gate.mail.ne1.yahoo.com by sonic305.consmr.mail.ir2.yahoo.com with HTTP; Sat, 17 Jan 2026 13:41:26 +0000 Received: by hermes--production-ir2-6fcf857f6f-fskn5 (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 8b536636b504c3e6f51c508e4731c748; Sat, 17 Jan 2026 13:41:21 +0000 (UTC) From: Hannes Domani To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH v2 07/11] Move x86 selector code into x86-windows-nat.c Date: Sat, 17 Jan 2026 14:36:18 +0100 Message-ID: <20260117134052.2660009-7-ssbssa@yahoo.de> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260117134052.2660009-1-ssbssa@yahoo.de> References: <20260117134052.2660009-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 Approved-By: Tom Tromey --- No changes in v2 --- gdb/windows-nat.c | 125 ----------------------------------------- gdb/x86-windows-nat.c | 127 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+), 125 deletions(-) diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c index 926b85d479b..f9d07336cca 100644 --- a/gdb/windows-nat.c +++ b/gdb/windows-nat.c @@ -685,127 +685,6 @@ windows_per_inferior::handle_output_debug_string return retval; } -static int -display_selector (HANDLE thread, DWORD sel) -{ - LDT_ENTRY info; - BOOL ret = windows_process->with_context (nullptr, [&] (auto *context) - { - return get_thread_selector_entry (context, thread, sel, &info); - }); - if (ret) - { - int base, limit; - gdb_printf ("0x%03x: ", (unsigned) sel); - if (!info.HighWord.Bits.Pres) - { - gdb_puts ("Segment not present\n"); - return 0; - } - base = (info.HighWord.Bits.BaseHi << 24) + - (info.HighWord.Bits.BaseMid << 16) - + info.BaseLow; - limit = (info.HighWord.Bits.LimitHi << 16) + info.LimitLow; - if (info.HighWord.Bits.Granularity) - limit = (limit << 12) | 0xfff; - gdb_printf ("base=0x%08x limit=0x%08x", base, limit); - if (info.HighWord.Bits.Default_Big) - gdb_puts(" 32-bit "); - else - gdb_puts(" 16-bit "); - switch ((info.HighWord.Bits.Type & 0xf) >> 1) - { - case 0: - gdb_puts ("Data (Read-Only, Exp-up"); - break; - case 1: - gdb_puts ("Data (Read/Write, Exp-up"); - break; - case 2: - gdb_puts ("Unused segment ("); - break; - case 3: - gdb_puts ("Data (Read/Write, Exp-down"); - break; - case 4: - gdb_puts ("Code (Exec-Only, N.Conf"); - break; - case 5: - gdb_puts ("Code (Exec/Read, N.Conf"); - break; - case 6: - gdb_puts ("Code (Exec-Only, Conf"); - break; - case 7: - gdb_puts ("Code (Exec/Read, Conf"); - break; - default: - gdb_printf ("Unknown type 0x%lx", - (unsigned long) info.HighWord.Bits.Type); - } - if ((info.HighWord.Bits.Type & 0x1) == 0) - gdb_puts(", N.Acc"); - gdb_puts (")\n"); - if ((info.HighWord.Bits.Type & 0x10) == 0) - gdb_puts("System selector "); - gdb_printf ("Privilege level = %ld. ", - (unsigned long) info.HighWord.Bits.Dpl); - if (info.HighWord.Bits.Granularity) - gdb_puts ("Page granular.\n"); - else - gdb_puts ("Byte granular.\n"); - return 1; - } - else - { - DWORD err = GetLastError (); - if (err == ERROR_NOT_SUPPORTED) - gdb_printf ("Function not supported\n"); - else - gdb_printf ("Invalid selector 0x%x.\n", (unsigned) sel); - return 0; - } -} - -static void -display_selectors (const char * args, int from_tty) -{ - if (inferior_ptid == null_ptid) - { - gdb_puts ("Impossible to display selectors now.\n"); - return; - } - - windows_thread_info *current_windows_thread - = windows_process->thread_rec (inferior_ptid, DONT_INVALIDATE_CONTEXT); - - if (!args) - { - windows_process->with_context (current_windows_thread, [&] (auto *context) - { - gdb_puts ("Selector $cs\n"); - display_selector (current_windows_thread->h, context->SegCs); - gdb_puts ("Selector $ds\n"); - display_selector (current_windows_thread->h, context->SegDs); - gdb_puts ("Selector $es\n"); - display_selector (current_windows_thread->h, context->SegEs); - gdb_puts ("Selector $ss\n"); - display_selector (current_windows_thread->h, context->SegSs); - gdb_puts ("Selector $fs\n"); - display_selector (current_windows_thread->h, context->SegFs); - gdb_puts ("Selector $gs\n"); - display_selector (current_windows_thread->h, context->SegGs); - }); - } - else - { - int sel; - sel = parse_and_eval_long (args); - gdb_printf ("Selector \"%s\"\n",args); - display_selector (current_windows_thread->h, sel); - } -} - /* See nat/windows-nat.h. */ bool @@ -2727,10 +2606,6 @@ Show whether to display kernel exceptions in child process."), NULL, init_w32_command_list (); - add_cmd ("selector", class_info, display_selectors, - _("Display selectors infos."), - &info_w32_cmdlist); - if (!initialize_loadable ()) { /* This will probably fail on Windows 9x/Me. Let the user know diff --git a/gdb/x86-windows-nat.c b/gdb/x86-windows-nat.c index 96dd61b39fb..7538c360bfe 100644 --- a/gdb/x86-windows-nat.c +++ b/gdb/x86-windows-nat.c @@ -17,9 +17,11 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ +#include "windows-tdep.h" #include "windows-nat.h" #include "regcache.h" #include "gdbarch.h" +#include "inferior.h" #include "x86-nat.h" @@ -346,6 +348,127 @@ cygwin_get_dr7 (void) return (unsigned long) x86_windows_process.dr[7]; } +static int +display_selector (HANDLE thread, DWORD sel) +{ + LDT_ENTRY info; + BOOL ret = windows_process->with_context (nullptr, [&] (auto *context) + { + return get_thread_selector_entry (context, thread, sel, &info); + }); + if (ret) + { + int base, limit; + gdb_printf ("0x%03x: ", (unsigned) sel); + if (!info.HighWord.Bits.Pres) + { + gdb_puts ("Segment not present\n"); + return 0; + } + base = (info.HighWord.Bits.BaseHi << 24) + + (info.HighWord.Bits.BaseMid << 16) + + info.BaseLow; + limit = (info.HighWord.Bits.LimitHi << 16) + info.LimitLow; + if (info.HighWord.Bits.Granularity) + limit = (limit << 12) | 0xfff; + gdb_printf ("base=0x%08x limit=0x%08x", base, limit); + if (info.HighWord.Bits.Default_Big) + gdb_puts(" 32-bit "); + else + gdb_puts(" 16-bit "); + switch ((info.HighWord.Bits.Type & 0xf) >> 1) + { + case 0: + gdb_puts ("Data (Read-Only, Exp-up"); + break; + case 1: + gdb_puts ("Data (Read/Write, Exp-up"); + break; + case 2: + gdb_puts ("Unused segment ("); + break; + case 3: + gdb_puts ("Data (Read/Write, Exp-down"); + break; + case 4: + gdb_puts ("Code (Exec-Only, N.Conf"); + break; + case 5: + gdb_puts ("Code (Exec/Read, N.Conf"); + break; + case 6: + gdb_puts ("Code (Exec-Only, Conf"); + break; + case 7: + gdb_puts ("Code (Exec/Read, Conf"); + break; + default: + gdb_printf ("Unknown type 0x%lx", + (unsigned long) info.HighWord.Bits.Type); + } + if ((info.HighWord.Bits.Type & 0x1) == 0) + gdb_puts(", N.Acc"); + gdb_puts (")\n"); + if ((info.HighWord.Bits.Type & 0x10) == 0) + gdb_puts("System selector "); + gdb_printf ("Privilege level = %ld. ", + (unsigned long) info.HighWord.Bits.Dpl); + if (info.HighWord.Bits.Granularity) + gdb_puts ("Page granular.\n"); + else + gdb_puts ("Byte granular.\n"); + return 1; + } + else + { + DWORD err = GetLastError (); + if (err == ERROR_NOT_SUPPORTED) + gdb_printf ("Function not supported\n"); + else + gdb_printf ("Invalid selector 0x%x.\n", (unsigned) sel); + return 0; + } +} + +static void +display_selectors (const char * args, int from_tty) +{ + if (inferior_ptid == null_ptid) + { + gdb_puts ("Impossible to display selectors now.\n"); + return; + } + + windows_thread_info *current_windows_thread + = windows_process->thread_rec (inferior_ptid, DONT_INVALIDATE_CONTEXT); + + if (!args) + { + windows_process->with_context (current_windows_thread, [&] (auto *context) + { + gdb_puts ("Selector $cs\n"); + display_selector (current_windows_thread->h, context->SegCs); + gdb_puts ("Selector $ds\n"); + display_selector (current_windows_thread->h, context->SegDs); + gdb_puts ("Selector $es\n"); + display_selector (current_windows_thread->h, context->SegEs); + gdb_puts ("Selector $ss\n"); + display_selector (current_windows_thread->h, context->SegSs); + gdb_puts ("Selector $fs\n"); + display_selector (current_windows_thread->h, context->SegFs); + gdb_puts ("Selector $gs\n"); + display_selector (current_windows_thread->h, context->SegGs); + }); + } + else + { + int sel; + sel = parse_and_eval_long (args); + gdb_printf ("Selector \"%s\"\n",args); + display_selector (current_windows_thread->h, sel); + } +} + INIT_GDB_FILE (x86_windows_nat) { x86_dr_low.set_control = cygwin_set_dr7; @@ -363,4 +486,8 @@ INIT_GDB_FILE (x86_windows_nat) add_inf_child_target (new x86_windows_nat_target); windows_process = &x86_windows_process; + + add_cmd ("selector", class_info, display_selectors, + _("Display selectors infos."), + &info_w32_cmdlist); } -- 2.52.0