From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 101626 invoked by alias); 1 Dec 2016 13:39:24 -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 101603 invoked by uid 89); 1 Dec 2016 13:39:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.4 required=5.0 tests=AWL,BAYES_00,KAM_LAZY_DOMAIN_SECURITY,RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=Protection, HTo:D*nl, amd64tdepc, UD:amd64-tdep.c X-HELO: mga03.intel.com Received: from mga03.intel.com (HELO mga03.intel.com) (134.134.136.65) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 01 Dec 2016 13:39:12 +0000 Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga103.jf.intel.com with ESMTP; 01 Dec 2016 05:39:10 -0800 X-ExtLoop1: 1 Received: from irvmail001.ir.intel.com ([163.33.26.43]) by orsmga003.jf.intel.com with ESMTP; 01 Dec 2016 05:39:09 -0800 Received: from ulvlx001.iul.intel.com (ulvlx001.iul.intel.com [172.28.207.17]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id uB1Dd8i9029893; Thu, 1 Dec 2016 13:39:08 GMT Received: from ulvlx001.iul.intel.com (localhost [127.0.0.1]) by ulvlx001.iul.intel.com with ESMTP id uB1Dd8D1030848; Thu, 1 Dec 2016 14:39:08 +0100 Received: (from msturm@localhost) by ulvlx001.iul.intel.com with œ id uB1Dd7cd030844; Thu, 1 Dec 2016 14:39:07 +0100 From: Michael Sturm To: mark.kettenis@xs4all.nl, palves@redhat.com, eliz@gnu.org Cc: gdb-patches@sourceware.org, michael.sturm@intel.com Subject: [PATCH v2 0/5] Add support for PKRU register to GDB and GDBServer. Date: Thu, 01 Dec 2016 13:39:00 -0000 Message-Id: <1480599538-30543-1-git-send-email-michael.sturm@intel.com> X-SW-Source: 2016-12/txt/msg00029.txt.bz2 This patch series adds support for the registers added by the Memory Protection Keys for Userspace (PKU aka PKEYs). Native and remote debugging are covered by this patch. The feedback I got during the first review of this patch raised questions regarding the naming of XSTATE masks and target descriptors. in addition, Walfred started working on patches that included renaming of XSTATE masks and target descriptors. These patches have been submitted by now. (https://sourceware.org/ml/gdb-patches/2016-04/msg00329.html) (https://sourceware.org/ml/gdb-patches/2016-04/msg00328.html) Adressed in V2: * [Patch v2 1/5] New patch to sync cpuid bits with GCC as suggested by Pedro. * [PATCH v2 2/5] Change xstate_bv handling to use 8 bytes of data: Read/write xstate_bc values using endianess-aware functions. * [PATCH v2 3/5] Rename target descriptions to reflect actual content: Addressed comments by Pedro regarding wording in Changelog. * [PATCH v2 4/5] Add target description for avx-avx512: Addressed comments by Pedro regarding Changelog. Fixed wording of comments regarding MPX on x32. Removed MPX from comment in x32*.xml files. * [PATCH v2 5/5] Add support for Intel PKRU register to GDB and GDBserver: Adressed comments by Pedro regarding Changelog. Added missing renames in GDBserver ipa-related files. Changed test for PKU following comments by Pedro. I'd like to answer Pedro's question regarding the approach of adding PKRU to amd64-avx-mpx_avx512-* tdesc and renaming _without_ keeping a copy without PKU: Q: "Is that really the right thing to do? What about machines that _don't_ support pkru? Shouldn't we keep the older descriptions for those? A: The first machine to support PKU will have the xstate mask X86_XSTATE_AVX_MPX_AVX512_PKU_MASK. The nearest existing xstate masks without PKU are X86_XSTATE_AVX_AVX512_MASK, which was introduced in patch 4 of this series, and X86_XSTATE_AVX_MPX_MASK. I've only kept X86_XSTATE_AVX_MPX_AVX512_MASK in patch 4, because it is reused in patch 5 to be renamed to X86_XSTATE_AVX_MPX_AVX512_PKU_MASK. Michael Sturm (5): Sync up x86-gcc-cpuid.h with cpuid.h from gcc-6 branch. Change xstate_bv handling to use 8 bytes of data. Rename target descriptions to reflect actual content of description. Add target description for avx-avx512. Add support for Intel PKRU register to GDB and GDBserver. gdb/NEWS | 6 + gdb/amd64-linux-nat.c | 1 + gdb/amd64-linux-tdep.c | 30 ++- gdb/amd64-linux-tdep.h | 7 +- gdb/amd64-tdep.c | 28 +- gdb/amd64-tdep.h | 5 +- gdb/common/x86-xstate.h | 21 +- gdb/doc/gdb.texinfo | 4 + gdb/features/Makefile | 96 +++++-- gdb/features/i386/32bit-pkeys.xml | 13 + gdb/features/i386/64bit-pkeys.xml | 13 + gdb/features/i386/amd64-avx-avx512-linux.c | 284 +++++++++++++++++++++ ...avx512-linux.xml => amd64-avx-avx512-linux.xml} | 3 +- gdb/features/i386/amd64-avx-avx512.c | 279 ++++++++++++++++++++ .../{amd64-avx512.xml => amd64-avx-avx512.xml} | 3 +- ...12-linux.c => amd64-avx-mpx-avx512-pku-linux.c} | 11 +- .../i386/amd64-avx-mpx-avx512-pku-linux.xml | 22 ++ .../{amd64-avx512.c => amd64-avx-mpx-avx512-pku.c} | 11 +- gdb/features/i386/amd64-avx-mpx-avx512-pku.xml | 19 ++ gdb/features/i386/i386-avx-avx512-linux.c | 170 ++++++++++++ ...-avx512-linux.xml => i386-avx-avx512-linux.xml} | 3 +- gdb/features/i386/i386-avx-avx512.c | 165 ++++++++++++ .../i386/{i386-avx512.xml => i386-avx-avx512.xml} | 3 +- ...512-linux.c => i386-avx-mpx-avx512-pku-linux.c} | 11 +- .../i386/i386-avx-mpx-avx512-pku-linux.xml | 22 ++ .../{i386-avx512.c => i386-avx-mpx-avx512-pku.c} | 11 +- gdb/features/i386/i386-avx-mpx-avx512-pku.xml | 19 ++ .../{x32-avx512-linux.c => x32-avx-avx512-linux.c} | 192 ++++++-------- ...2-avx512-linux.xml => x32-avx-avx512-linux.xml} | 3 +- .../i386/{x32-avx512.c => x32-avx-avx512.c} | 190 ++++++-------- .../i386/{x32-avx512.xml => x32-avx-avx512.xml} | 3 +- gdb/gdbserver/Makefile.in | 50 ++-- gdb/gdbserver/configure.srv | 25 +- gdb/gdbserver/i387-fp.c | 51 +++- gdb/gdbserver/linux-amd64-ipa.c | 15 +- gdb/gdbserver/linux-i386-ipa.c | 10 +- gdb/gdbserver/linux-x86-low.c | 45 +++- gdb/gdbserver/linux-x86-tdesc.h | 29 ++- gdb/i386-linux-nat.c | 2 +- gdb/i386-linux-tdep.c | 14 +- gdb/i386-linux-tdep.h | 6 +- gdb/i386-tdep.c | 76 +++++- gdb/i386-tdep.h | 14 +- gdb/i387-tdep.c | 116 ++++++++- gdb/i387-tdep.h | 5 + gdb/nat/x86-gcc-cpuid.h | 128 ++++------ .../{x32-avx512.dat => amd64-avx-avx512-linux.dat} | 13 +- .../{amd64-avx512.dat => amd64-avx-avx512.dat} | 12 +- ...inux.dat => amd64-avx-mpx-avx512-pku-linux.dat} | 6 +- ...x512-linux.dat => amd64-avx-mpx-avx512-pku.dat} | 8 +- gdb/regformats/i386/i386-avx-avx512-linux.dat | 71 ++++++ gdb/regformats/i386/i386-avx-avx512.dat | 70 +++++ ...vx512.dat => i386-avx-mpx-avx512-pku-linux.dat} | 8 +- ...vx512-linux.dat => i386-avx-mpx-avx512-pku.dat} | 8 +- gdb/regformats/i386/x32-avx-avx512-linux.dat | 151 +++++++++++ gdb/regformats/i386/x32-avx-avx512.dat | 150 +++++++++++ gdb/testsuite/gdb.arch/i386-pkru.c | 95 +++++++ gdb/testsuite/gdb.arch/i386-pkru.exp | 73 ++++++ gdb/x86-linux-nat.c | 20 +- 59 files changed, 2387 insertions(+), 532 deletions(-) create mode 100644 gdb/features/i386/32bit-pkeys.xml create mode 100644 gdb/features/i386/64bit-pkeys.xml create mode 100644 gdb/features/i386/amd64-avx-avx512-linux.c rename gdb/features/i386/{amd64-avx512-linux.xml => amd64-avx-avx512-linux.xml} (84%) create mode 100644 gdb/features/i386/amd64-avx-avx512.c rename gdb/features/i386/{amd64-avx512.xml => amd64-avx-avx512.xml} (89%) rename gdb/features/i386/{amd64-avx512-linux.c => amd64-avx-mpx-avx512-pku-linux.c} (97%) create mode 100644 gdb/features/i386/amd64-avx-mpx-avx512-pku-linux.xml rename gdb/features/i386/{amd64-avx512.c => amd64-avx-mpx-avx512-pku.c} (98%) create mode 100644 gdb/features/i386/amd64-avx-mpx-avx512-pku.xml create mode 100644 gdb/features/i386/i386-avx-avx512-linux.c rename gdb/features/i386/{i386-avx512-linux.xml => i386-avx-avx512-linux.xml} (84%) create mode 100644 gdb/features/i386/i386-avx-avx512.c rename gdb/features/i386/{i386-avx512.xml => i386-avx-avx512.xml} (89%) rename gdb/features/i386/{i386-avx512-linux.c => i386-avx-mpx-avx512-pku-linux.c} (96%) create mode 100644 gdb/features/i386/i386-avx-mpx-avx512-pku-linux.xml rename gdb/features/i386/{i386-avx512.c => i386-avx-mpx-avx512-pku.c} (96%) create mode 100644 gdb/features/i386/i386-avx-mpx-avx512-pku.xml rename gdb/features/i386/{x32-avx512-linux.c => x32-avx-avx512-linux.c} (61%) rename gdb/features/i386/{x32-avx512-linux.xml => x32-avx-avx512-linux.xml} (85%) rename gdb/features/i386/{x32-avx512.c => x32-avx-avx512.c} (60%) rename gdb/features/i386/{x32-avx512.xml => x32-avx-avx512.xml} (89%) rename gdb/regformats/i386/{x32-avx512.dat => amd64-avx-avx512-linux.dat} (90%) rename gdb/regformats/i386/{amd64-avx512.dat => amd64-avx-avx512.dat} (90%) rename gdb/regformats/i386/{x32-avx512-linux.dat => amd64-avx-mpx-avx512-pku-linux.dat} (91%) rename gdb/regformats/i386/{amd64-avx512-linux.dat => amd64-avx-mpx-avx512-pku.dat} (92%) create mode 100644 gdb/regformats/i386/i386-avx-avx512-linux.dat create mode 100644 gdb/regformats/i386/i386-avx-avx512.dat rename gdb/regformats/i386/{i386-avx512.dat => i386-avx-mpx-avx512-pku-linux.dat} (81%) rename gdb/regformats/i386/{i386-avx512-linux.dat => i386-avx-mpx-avx512-pku.dat} (84%) create mode 100644 gdb/regformats/i386/x32-avx-avx512-linux.dat create mode 100644 gdb/regformats/i386/x32-avx-avx512.dat create mode 100644 gdb/testsuite/gdb.arch/i386-pkru.c create mode 100644 gdb/testsuite/gdb.arch/i386-pkru.exp -- 1.8.4.2