From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 113711 invoked by alias); 20 Jan 2016 16:05:15 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 113683 invoked by uid 89); 20 Jan 2016 16:05:14 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=doctype, !doctype, HTo:D*nl, DOCTYPE X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Wed, 20 Jan 2016 16:05:13 +0000 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (Postfix) with ESMTPS id 16AFFC7F13; Wed, 20 Jan 2016 16:05:12 +0000 (UTC) Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u0KG5AmF010649; Wed, 20 Jan 2016 11:05:11 -0500 Message-ID: <569FB036.1070108@redhat.com> Date: Wed, 20 Jan 2016 16:05:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Michael Sturm , mark.kettenis@xs4all.nl, eliz@gnu.org CC: gdb-patches@sourceware.org Subject: Re: [PATCH 1/1] Add support for Intel PKRU register to GDB and GDBserver. References: <1450367024-8646-1-git-send-email-michael.sturm@intel.com> In-Reply-To: <1450367024-8646-1-git-send-email-michael.sturm@intel.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-SW-Source: 2016-01/txt/msg00479.txt.bz2 On 12/17/2015 03:43 PM, Michael Sturm wrote: > Intel(R) 64 and IA-32 Architecures Software Developer's (Architectures) > diff --git a/gdb/NEWS b/gdb/NEWS > index 484d98d..74103f0 100644 > --- a/gdb/NEWS > +++ b/gdb/NEWS > @@ -150,6 +150,10 @@ show remote exec-event-feature-packet > > *** Changes in GDB 7.10 > > +* GDB now supports access to the PKU register on GNU/Linux. The register is > + added by the Memory Protection Keys for Userspace feature which will be > + available in future Intel CPUs. > + Please remember to move this to the 7.11 section. > + > /* Supported mask and size of the extended state. */ > #define X86_XSTATE_X87_MASK X86_XSTATE_X87 > #define X86_XSTATE_SSE_MASK (X86_XSTATE_X87 | X86_XSTATE_SSE) > #define X86_XSTATE_AVX_MASK (X86_XSTATE_SSE_MASK | X86_XSTATE_AVX) > #define X86_XSTATE_MPX_MASK (X86_XSTATE_AVX_MASK | X86_XSTATE_MPX) > #define X86_XSTATE_AVX512_MASK (X86_XSTATE_AVX_MASK | X86_XSTATE_AVX512) > -#define X86_XSTATE_MPX_AVX512_MASK (X86_XSTATE_MPX_MASK | X86_XSTATE_AVX512) > +#define X86_XSTATE_MPX_AVX512_MASK (X86_XSTATE_MPX_MASK | X86_XSTATE_AVX512 | X86_XSTATE_PKRU) Looks like X86_XSTATE_MPX_AVX512_MASK ends up misnamed? > diff --git a/gdb/features/i386/32bit-pkeys.xml b/gdb/features/i386/32bit-pkeys.xml > new file mode 100644 > index 0000000..d4702e2 > --- /dev/null > +++ b/gdb/features/i386/32bit-pkeys.xml > @@ -0,0 +1,13 @@ > + > + > + > + > + > + > + > + > + > diff --git a/gdb/features/i386/64bit-pkeys.xml b/gdb/features/i386/64bit-pkeys.xml If I'm reading right, this is exactly the same as "32bit-pkeys.xml". Any reason to have two files? > @@ -951,7 +968,8 @@ i387_supply_xsave (struct regcache *regcache, int regnum, > if (regclass != none) > { > /* Get `xstat_bv'. */ > - const gdb_byte *xstate_bv_p = XSAVE_XSTATE_BV_ADDR (regs); > + const unsigned long *xstate_bv_p = > + (unsigned long*) XSAVE_XSTATE_BV_ADDR (regs); This ... > @@ -1333,15 +1383,21 @@ i387_collect_xsave (const struct regcache *regcache, int regnum, > if ((regclass & check)) > { > gdb_byte raw[I386_MAX_REGISTER_SIZE]; > - gdb_byte *xstate_bv_p = XSAVE_XSTATE_BV_ADDR (regs); > - unsigned int xstate_bv = 0; > + unsigned long *xstate_bv_p = > + (unsigned long*) XSAVE_XSTATE_BV_ADDR (regs); > + unsigned long xstate_bv = 0; > /* The supported bits in `xstat_bv' are 1 byte. */ > - unsigned int clear_bv = (~(*xstate_bv_p)) & tdep->xcr0; > + unsigned long clear_bv = (~(*xstate_bv_p)) & tdep->xcr0; > gdb_byte *p; ... looks problematic for a host-independant file, which should work with big endian hosts, and hosts that don't support unaligned accesses. > +gdb_test "info register pkru" ".*pkru$test_string" "Read pkru register" > + > +set test_string ".*0x44444444.*" > +gdb_test "print /x \$pkru = 0x44444444" "= 0x44444444" "Set pkru value" > +gdb_test "info register pkru" ".*pkru$test_string" "Read value after setting value" Please lowercase test messages. > + > +send_gdb "quit\n" > Please remove this. Thanks, Pedro Alves