From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30939 invoked by alias); 21 Aug 2013 12:46:01 -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 30929 invoked by uid 89); 21 Aug 2013 12:46:01 -0000 X-Spam-SWARE-Status: No, score=-3.5 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL,RP_MATCHES_RCVD autolearn=ham version=3.3.2 Received: from mga01.intel.com (HELO mga01.intel.com) (192.55.52.88) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Wed, 21 Aug 2013 12:45:59 +0000 Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga101.fm.intel.com with ESMTP; 21 Aug 2013 05:45:58 -0700 X-ExtLoop1: 1 Received: from irvmail001.ir.intel.com ([163.33.26.43]) by fmsmga002.fm.intel.com with ESMTP; 21 Aug 2013 05:45:56 -0700 Received: from ulslx001.iul.intel.com (ulslx001.iul.intel.com [172.28.207.63]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id r7LCjucs024732; Wed, 21 Aug 2013 13:45:56 +0100 Received: from ulslx001.iul.intel.com (localhost [127.0.0.1]) by ulslx001.iul.intel.com with ESMTP id r7LCjtxG011891; Wed, 21 Aug 2013 14:45:55 +0200 Received: (from wtedesch@localhost) by ulslx001.iul.intel.com with id r7LCjtwl011887; Wed, 21 Aug 2013 14:45:55 +0200 From: Walfred Tedeschi To: tromey@redhat.com, jan.kratochvil@redhat.com, mark.kettenis@xs4all.nl Cc: gdb-patches@sourceware.org, Walfred Tedeschi Subject: [PATCH 0/7] Intel(R) MPX registers support. Date: Wed, 21 Aug 2013 12:46:00 -0000 Message-Id: <1377089148-11844-1-git-send-email-walfred.tedeschi@intel.com> X-SW-Source: 2013-08/txt/msg00566.txt.bz2 This patch series adds support for the Intel(R) Memory Protection Extension MPX registers. Native and remote debugging are covered by this patch. New registers are bound registers known as bnd register (bnd0...bnd3), a config register bndcfgu and a status register bndstatus. Bound registers store pointer bounds, i.e. bound limits of a pointer. Bndstatus and bndcfgu store information of the current status and configuration of other MPX counterparts. For more information [1][2]. Design notes: Bound register are represented in hardware as two fields of 64bits each, both in 64bit and 32bit mode. The fields are lower bound and upper bound. Upper bound value is a complement of one value of the upper limiting address. To take this into account the bnd0...bnd3 are created as pseudo registers while the hardware values are stored on bnd0raw...bnd3raw. Ok to commit? References: [1] Intel(R) Architecture Instruction Set Extensions Programming Reference. http://download-software.intel.com/sites/default/files/319433-015.pdf. [2] http://software.intel.com/en-us/intel-isa-extensions. Walfred Tedeschi (7): Fix conditions in creating a bitfield. Add MPX registers XML files. Add MPX support for i386 MPX for amd64 Add MPX support to gdbserver. Add pretty-printer for MPX bnd registers. Add MPX registers tests. gdb/amd64-linux-nat.c | 43 +++-- gdb/amd64-linux-tdep.c | 16 +- gdb/amd64-linux-tdep.h | 4 +- gdb/amd64-tdep.c | 18 +++ gdb/amd64-tdep.h | 9 +- gdb/common/i386-gcc-cpuid.h | 3 + gdb/common/i386-xstate.h | 21 ++- gdb/data-directory/Makefile.in | 1 + gdb/features/Makefile | 38 ++++- gdb/features/i386/32bit-mpx.xml | 43 +++++ gdb/features/i386/64bit-mpx.xml | 43 +++++ gdb/features/i386/amd64-mpx-linux.c | 211 ++++++++++++++++++++++++ gdb/features/i386/amd64-mpx-linux.xml | 19 +++ gdb/features/i386/amd64-mpx.c | 206 +++++++++++++++++++++++ gdb/features/i386/amd64-mpx.xml | 17 ++ gdb/features/i386/i386-mpx-linux.c | 187 +++++++++++++++++++++ gdb/features/i386/i386-mpx-linux.xml | 19 +++ gdb/features/i386/i386-mpx.c | 182 +++++++++++++++++++++ gdb/features/i386/i386-mpx.xml | 17 ++ gdb/features/i386/x32-mpx-linux.c | 211 ++++++++++++++++++++++++ gdb/features/i386/x32-mpx-linux.xml | 19 +++ gdb/features/i386/x32-mpx.c | 206 +++++++++++++++++++++++ gdb/features/i386/x32-mpx.xml | 17 ++ gdb/gdbserver/Makefile.in | 15 ++ gdb/gdbserver/configure.srv | 20 +-- gdb/gdbserver/i387-fp.c | 90 +++++++++++ gdb/gdbserver/linux-x86-low.c | 87 ++++++++-- gdb/i386-linux-nat.c | 17 +- gdb/i386-linux-tdep.c | 11 +- gdb/i386-linux-tdep.h | 4 +- gdb/i386-tdep.c | 216 ++++++++++++++++++++++++- gdb/i386-tdep.h | 30 +++- gdb/i387-tdep.c | 130 ++++++++++++++- gdb/i387-tdep.h | 7 + gdb/python/lib/gdb/command/bound_registers.py | 45 ++++++ gdb/regformats/i386/amd64-mpx-linux.dat | 84 ++++++++++ gdb/regformats/i386/amd64-mpx.dat | 83 ++++++++++ gdb/regformats/i386/i386-mpx-linux.dat | 60 +++++++ gdb/regformats/i386/i386-mpx.dat | 59 +++++++ gdb/regformats/i386/x32-mpx-linux.dat | 84 ++++++++++ gdb/regformats/i386/x32-mpx.dat | 83 ++++++++++ gdb/target-descriptions.c | 2 +- gdb/testsuite/gdb.arch/i386-mpx.c | 85 ++++++++++ gdb/testsuite/gdb.arch/i386-mpx.exp | 142 ++++++++++++++++ gdb/testsuite/gdb.python/py-pp-maint.exp | 8 +- gdb/testsuite/gdb.xml/maint_print_struct.xml | 1 + 46 files changed, 2841 insertions(+), 72 deletions(-) create mode 100644 gdb/features/i386/32bit-mpx.xml create mode 100644 gdb/features/i386/64bit-mpx.xml create mode 100644 gdb/features/i386/amd64-mpx-linux.c create mode 100644 gdb/features/i386/amd64-mpx-linux.xml create mode 100644 gdb/features/i386/amd64-mpx.c create mode 100644 gdb/features/i386/amd64-mpx.xml create mode 100644 gdb/features/i386/i386-mpx-linux.c create mode 100644 gdb/features/i386/i386-mpx-linux.xml create mode 100644 gdb/features/i386/i386-mpx.c create mode 100644 gdb/features/i386/i386-mpx.xml create mode 100644 gdb/features/i386/x32-mpx-linux.c create mode 100644 gdb/features/i386/x32-mpx-linux.xml create mode 100644 gdb/features/i386/x32-mpx.c create mode 100644 gdb/features/i386/x32-mpx.xml create mode 100644 gdb/python/lib/gdb/command/bound_registers.py create mode 100644 gdb/regformats/i386/amd64-mpx-linux.dat create mode 100644 gdb/regformats/i386/amd64-mpx.dat create mode 100644 gdb/regformats/i386/i386-mpx-linux.dat create mode 100644 gdb/regformats/i386/i386-mpx.dat create mode 100644 gdb/regformats/i386/x32-mpx-linux.dat create mode 100644 gdb/regformats/i386/x32-mpx.dat create mode 100644 gdb/testsuite/gdb.arch/i386-mpx.c create mode 100644 gdb/testsuite/gdb.arch/i386-mpx.exp -- 1.7.10.4