This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 0/7] Intel(R) MPX registers support.
- From: Walfred Tedeschi <walfred dot tedeschi at intel dot com>
- To: tromey at redhat dot com, jan dot kratochvil at redhat dot com, mark dot kettenis at xs4all dot nl
- Cc: gdb-patches at sourceware dot org, Walfred Tedeschi <walfred dot tedeschi at intel dot com>
- Date: Wed, 21 Aug 2013 14:45:41 +0200
- Subject: [PATCH 0/7] Intel(R) MPX registers support.
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