hc
2023-11-06 15ade055295d13f95d49e3d99b09f3bbfb4a43e7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "Free Software" and "Free Software Needs
Free Documentation", with the Front-Cover Texts being "A GNU Manual,"
and with the Back-Cover Texts as in (a) below.
 
(a) The FSF's Back-Cover Text is: "You are free to copy and modify
this GNU Manual.  Buying copies from GNU Press supports the FSF in
developing GNU and promoting software freedom." -->
<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Debugging with GDB: Sparc64</title>
 
<meta name="description" content="Debugging with GDB: Sparc64">
<meta name="keywords" content="Debugging with GDB: Sparc64">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Architectures.html#Architectures" rel="up" title="Architectures">
<link href="S12Z.html#S12Z" rel="next" title="S12Z">
<link href="Nios-II.html#Nios-II" rel="previous" title="Nios II">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
 
 
</head>
 
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Sparc64"></a>
<div class="header">
<p>
Next: <a href="S12Z.html#S12Z" accesskey="n" rel="next">S12Z</a>, Previous: <a href="Nios-II.html#Nios-II" accesskey="p" rel="previous">Nios II</a>, Up: <a href="Architectures.html#Architectures" accesskey="u" rel="up">Architectures</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Sparc64-1"></a>
<h4 class="subsection">21.4.8 Sparc64</h4>
<a name="index-Sparc64-support"></a>
<a name="index-Application-Data-Integrity"></a>
<a name="ADI-Support"></a>
<h4 class="subsubsection">21.4.8.1 ADI Support</h4>
 
<p>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&rsquo;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.
</p>
<p>Note that only 64-bit applications can use ADI and need to be built with
ADI-enabled.
</p>
<p>Values of the ADI version tags, which are in granularity of a 
cacheline (64 bytes), can be viewed or modified. 
</p>
 
<dl compact="compact">
<dd><a name="index-adi-examine"></a>
</dd>
<dt><code>adi (examine | x) [ / <var>n</var> ] <var>addr</var></code></dt>
<dd>
<p>The <code>adi examine</code> command displays the value of one ADI version tag per 
cacheline. 
</p>
<p><var>n</var> 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. 
</p>
<p><var>addr</var> is the address in user address space where you want <small>GDB</small> 
to begin displaying the ADI version tags. 
</p>
<p>Below is an example of displaying ADI versions of variable &quot;shmaddr&quot;.
</p>
<div class="smallexample">
<pre class="smallexample">(gdb) adi x/100 shmaddr
   0xfff800010002c000:     0 0
</pre></div>
 
<a name="index-adi-assign"></a>
</dd>
<dt><code>adi (assign | a) [ / <var>n</var> ] <var>addr</var> = <var>tag</var></code></dt>
<dd>
<p>The <code>adi assign</code> command is used to assign new ADI version tag 
to an address. 
</p>
<p><var>n</var> 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. 
</p>
<p><var>addr</var> is the address in user address space where you want <small>GDB</small> 
to begin modifying the ADI version tags. 
</p>
<p><var>tag</var> is the new ADI version tag.
</p>
<p>For example, do the following to modify then verify ADI versions of 
variable &quot;shmaddr&quot;:
</p>
<div class="smallexample">
<pre class="smallexample">(gdb) adi a/100 shmaddr = 7
(gdb) adi x/100 shmaddr
   0xfff800010002c000:     7 7
</pre></div>
 
</dd>
</dl>
 
<hr>
<div class="header">
<p>
Next: <a href="S12Z.html#S12Z" accesskey="n" rel="next">S12Z</a>, Previous: <a href="Nios-II.html#Nios-II" accesskey="p" rel="previous">Nios II</a>, Up: <a href="Architectures.html#Architectures" accesskey="u" rel="up">Architectures</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
 
 
 
</body>
</html>