diff options
Diffstat (limited to 'gdb/doc')
-rw-r--r-- | gdb/doc/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/doc/gdb.texinfo | 73 |
2 files changed, 79 insertions, 0 deletions
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 32c9425..40b0e40 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,9 @@ +2017-08-07 Weimin Pan <weimin.pan@oracle.com> + + * gdb.texinfo (Architectures): Add new Sparc64 section to document + ADI support. + * NEWS: Add "adi examine" and "adi assign" commands. + 2017-08-18 Yao Qi <yao.qi@linaro.org> * gdb.texinfo (Server): Document "--selftest". diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 620d11d..d0d5d96 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -22474,6 +22474,7 @@ all uses of @value{GDBN} with the architecture, both native and cross. * SPU:: Cell Broadband Engine SPU architecture * PowerPC:: * Nios II:: +* Sparc64:: @end menu @node AArch64 @@ -22858,6 +22859,78 @@ target code in @value{GDBN}. Show the current setting of Nios II debugging messages. @end table +@node Sparc64 +@subsection Sparc64 +@cindex Sparc64 support +@cindex Application Data Integrity +@subsubsection ADI Support + +The M7 processor supports an Application Data Integrity (ADI) feature that +detects invalid data accesses. When software allocates memory and enables +ADI on the allocated memory, it chooses a 4-bit version number, sets the +version in the upper 4 bits of the 64-bit pointer to that data, and stores +the 4-bit version in every cacheline of that data. Hardware saves the latter +in spare bits in the cache and memory hierarchy. On each load and store, +the processor compares the upper 4 VA (virtual address) bits to the +cacheline's version. If there is a mismatch, the processor generates a +version mismatch trap which can be either precise or disrupting. The trap +is an error condition which the kernel delivers to the process as a SIGSEGV +signal. + +Note that only 64-bit applications can use ADI and need to be built with +ADI-enabled. + +Values of the ADI version tags, which are in granularity of a +cacheline (64 bytes), can be viewed or modified. + + +@table @code +@kindex adi examine +@item adi (examine | x) [ / @var{n} ] @var{addr} + +The @code{adi examine} command displays the value of one ADI version tag per +cacheline. + +@var{n} is a decimal integer specifying the number in bytes; the default +is 1. It specifies how much ADI version information, at the ratio of 1:ADI +block size, to display. + +@var{addr} is the address in user address space where you want @value{GDBN} +to begin displaying the ADI version tags. + +Below is an example of displaying ADI versions of variable "shmaddr". + +@smallexample +(@value{GDBP}) adi x/100 shmaddr + 0xfff800010002c000: 0 0 +@end smallexample + +@kindex adi assign +@item adi (assign | a) [ / @var{n} ] @var{addr} = @var{tag} + +The @code{adi assign} command is used to assign new ADI version tag +to an address. + +@var{n} is a decimal integer specifying the number in bytes; +the default is 1. It specifies how much ADI version information, at the +ratio of 1:ADI block size, to modify. + +@var{addr} is the address in user address space where you want @value{GDBN} +to begin modifying the ADI version tags. + +@var{tag} is the new ADI version tag. + +For example, do the following to modify then verify ADI versions of +variable "shmaddr": + +@smallexample +(@value{GDBP}) adi a/100 shmaddr = 7 +(@value{GDBP}) adi x/100 shmaddr + 0xfff800010002c000: 7 7 +@end smallexample + +@end table + @node Controlling GDB @chapter Controlling @value{GDBN} |