forked from Imagelibrary/binutils-gdb
Documentation for MPX.
2013-11-20 Walfred Tedeschi <walfred.tedeschi@intel.com> * NEWS: Add section for Intel(R) Architecture Instructions Extesions mentioning MPX. doc/ * gdb.texinfo (i386 Features): Add MPX feature registers. (x86 Specific featuresx86 Architecture-specific Issues): Adds a subsubsection for MPX and describes the display of the boundary registers. Signed-off-by: Walfred Tedeschi <walfred.tedeschi@intel.com>
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
2013-12-03 Walfred Tedeschi <walfred.tedeschi@intel.com>
|
||||||
|
|
||||||
|
* NEWS: Add section for Intel(R) Architecture Instructions
|
||||||
|
Extesions mentioning MPX.
|
||||||
|
|
||||||
2013-12-03 Joel Brobecker <brobecker@adacore.com>
|
2013-12-03 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
* ada-lex.l (find_dot_all): Use strncasecmp instead of strncmp.
|
* ada-lex.l (find_dot_all): Use strncasecmp instead of strncmp.
|
||||||
|
|||||||
2
gdb/NEWS
2
gdb/NEWS
@@ -5577,3 +5577,5 @@ GDB now handles cross debugging. If you are remotely debugging between
|
|||||||
two different machines, type ``./configure host -target=targ''.
|
two different machines, type ``./configure host -target=targ''.
|
||||||
Host is the machine where GDB will run; targ is the machine
|
Host is the machine where GDB will run; targ is the machine
|
||||||
where the program that you are debugging will run.
|
where the program that you are debugging will run.
|
||||||
|
|
||||||
|
* GDB now supports access to Intel(R) MPX registers on GNU/Linux.
|
||||||
|
|||||||
@@ -1,3 +1,10 @@
|
|||||||
|
2013-12-03 Walfred Tedeschi <walfred.tedeschi@intel.com>
|
||||||
|
|
||||||
|
* gdb.texinfo (i386 Features): Add MPX feature registers.
|
||||||
|
(x86 Specific featuresx86 Architecture-specific Issues): Adds
|
||||||
|
a subsubsection for MPX and describes the display of the
|
||||||
|
boundary registers.
|
||||||
|
|
||||||
2013-12-03 Joel Brobecker <brobecker@adacore.com>
|
2013-12-03 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
* gdb.texinfo (GDB/MI Miscellaneous Commands): Remove the
|
* gdb.texinfo (GDB/MI Miscellaneous Commands): Remove the
|
||||||
|
|||||||
@@ -21376,6 +21376,39 @@ be returned in a register.
|
|||||||
@kindex show struct-convention
|
@kindex show struct-convention
|
||||||
Show the current setting of the convention to return @code{struct}s
|
Show the current setting of the convention to return @code{struct}s
|
||||||
from functions.
|
from functions.
|
||||||
|
|
||||||
|
@cindex Intel(R) Memory Protection Extensions (MPX).
|
||||||
|
@subsubsection Intel(R) @dfn{Memory Protection Extensions} (MPX).
|
||||||
|
|
||||||
|
@item bnd0raw..bnd3raw and bnd0@dots{}bnd3 registers display.
|
||||||
|
Memory Protection Extension (MPX) adds the bound registers @samp{BND0}
|
||||||
|
@footnote{The register named with capital letters represent the architecture
|
||||||
|
registers.} through @samp{BND3}. Bound registers store a pair of 64-bit values
|
||||||
|
which are the lower bound and upper bound. Bounds are effective addresses or
|
||||||
|
memory locations. The upper bounds are architecturally represented in 1's
|
||||||
|
complement form. A bound having lower bound = 0, and upper bound = 0
|
||||||
|
(1's complement of all bits set) will allow access to the entire address space.
|
||||||
|
|
||||||
|
@samp{BND0} through @samp{BND3} are represented in @value{GDBN} as @samp{bnd0raw}
|
||||||
|
through @samp{bnd3raw}. Pseudo registers @samp{bnd0} through @samp{bnd3}
|
||||||
|
display the upper bound performing the complement of one operation on the
|
||||||
|
upper bound value, i.e.@ when upper bound in @samp{bnd0raw} is 0 in the
|
||||||
|
@value{GDBN} @samp{bnd0} it will be @code{0xfff@dots{}}. In this sense it
|
||||||
|
can also be noted that the upper bounds are inclusive.
|
||||||
|
|
||||||
|
As an example, assume that the register BND0 holds bounds for a pointer having
|
||||||
|
access allowed for the range between 0x32 and 0x71. The values present on
|
||||||
|
bnd0raw and bnd registers are presented as follows:
|
||||||
|
|
||||||
|
@smallexample
|
||||||
|
bnd0raw = @{0x32, 0xffffffff8e@}
|
||||||
|
bnd0 = @{lbound = 0x32, ubound = 0x71@} : size 64
|
||||||
|
@end smallexample
|
||||||
|
|
||||||
|
This way the raw value can be accessed via bnd0raw@dots{}bnd3raw. Any change
|
||||||
|
on bnd0@dots{}bnd3 or bnd0raw@dots{}bnd3raw is reflect on its counterpart. When the
|
||||||
|
bnd0@dots{}bnd3 registers are displayed via Python, the display includes the memory size,
|
||||||
|
in bits, accessible to the pointer.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@node Alpha
|
@node Alpha
|
||||||
@@ -43226,6 +43259,16 @@ describe the upper 128 bits of @sc{ymm} registers:
|
|||||||
@samp{ymm0h} through @samp{ymm15h} for amd64
|
@samp{ymm0h} through @samp{ymm15h} for amd64
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
The @samp{org.gnu.gdb.i386.mpx} is an optional feature representing Intel(R)
|
||||||
|
Memory Protection Extension (MPX). It should describe the following registers:
|
||||||
|
|
||||||
|
@itemize @minus
|
||||||
|
@item
|
||||||
|
@samp{bnd0raw} through @samp{bnd3raw} for i386 and amd64.
|
||||||
|
@item
|
||||||
|
@samp{bndcfgu} and @samp{bndstatus} for i386 and amd64.
|
||||||
|
@end itemize
|
||||||
|
|
||||||
The @samp{org.gnu.gdb.i386.linux} feature is optional. It should
|
The @samp{org.gnu.gdb.i386.linux} feature is optional. It should
|
||||||
describe a single register, @samp{orig_eax}.
|
describe a single register, @samp{orig_eax}.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user