annotate agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SymbolIterator.java @ 1552:c18cbe5936b8

6941466: Oracle rebranding changes for Hotspot repositories Summary: Change all the Sun copyrights to Oracle copyright Reviewed-by: ohair
author trims
date Thu, 27 May 2010 19:08:38 -0700
parents a61af66fc99e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
2 * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 *
a61af66fc99e Initial load
duke
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
7 * published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8 *
a61af66fc99e Initial load
duke
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
13 * accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
14 *
a61af66fc99e Initial load
duke
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
18 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
21 * questions.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
22 *
a61af66fc99e Initial load
duke
parents:
diff changeset
23 */
a61af66fc99e Initial load
duke
parents:
diff changeset
24
a61af66fc99e Initial load
duke
parents:
diff changeset
25 package sun.jvm.hotspot.debugger.win32.coff;
a61af66fc99e Initial load
duke
parents:
diff changeset
26
a61af66fc99e Initial load
duke
parents:
diff changeset
27 import java.util.*;
a61af66fc99e Initial load
duke
parents:
diff changeset
28
a61af66fc99e Initial load
duke
parents:
diff changeset
29 /** Provides iteration-style access to the symbols in the sstGlobalSym
a61af66fc99e Initial load
duke
parents:
diff changeset
30 (and possibly other) subsections of the VC++ 5.0 debug
a61af66fc99e Initial load
duke
parents:
diff changeset
31 information. Clients should walk down these platform-dependent
a61af66fc99e Initial load
duke
parents:
diff changeset
32 symbols and transform them into the platform-independent
a61af66fc99e Initial load
duke
parents:
diff changeset
33 interfaces described in the package sun.jvm.hotspot.debugger.csym. */
a61af66fc99e Initial load
duke
parents:
diff changeset
34
a61af66fc99e Initial load
duke
parents:
diff changeset
35 public interface DebugVC50SymbolIterator
a61af66fc99e Initial load
duke
parents:
diff changeset
36 extends DebugVC50SymbolTypes, DebugVC50SymbolEnums {
a61af66fc99e Initial load
duke
parents:
diff changeset
37
a61af66fc99e Initial load
duke
parents:
diff changeset
38 /** Indicates whether this iterator has processed all of the
a61af66fc99e Initial load
duke
parents:
diff changeset
39 available symbols. */
a61af66fc99e Initial load
duke
parents:
diff changeset
40 public boolean done();
a61af66fc99e Initial load
duke
parents:
diff changeset
41
a61af66fc99e Initial load
duke
parents:
diff changeset
42 /** Go to the next symbol. NOTE that the iterator is pointing at the
a61af66fc99e Initial load
duke
parents:
diff changeset
43 first symbol initially, so one should use a while (!iter.done())
a61af66fc99e Initial load
duke
parents:
diff changeset
44 { ... iter.next(); } construct.
a61af66fc99e Initial load
duke
parents:
diff changeset
45
a61af66fc99e Initial load
duke
parents:
diff changeset
46 @throw NoSuchElementException if the iterator is already done
a61af66fc99e Initial load
duke
parents:
diff changeset
47 and next() is called. */
a61af66fc99e Initial load
duke
parents:
diff changeset
48 public void next() throws NoSuchElementException;
a61af66fc99e Initial load
duke
parents:
diff changeset
49
a61af66fc99e Initial load
duke
parents:
diff changeset
50 /** Length of record, in bytes, excluding the length field. */
a61af66fc99e Initial load
duke
parents:
diff changeset
51 public short getLength();
a61af66fc99e Initial load
duke
parents:
diff changeset
52
a61af66fc99e Initial load
duke
parents:
diff changeset
53 /** The type enumeration is defined in {@link
a61af66fc99e Initial load
duke
parents:
diff changeset
54 sun.jvm.hotspot.debugger.win32.coff.DebugVC50SymbolTypes} */
a61af66fc99e Initial load
duke
parents:
diff changeset
55 public int getType();
a61af66fc99e Initial load
duke
parents:
diff changeset
56
a61af66fc99e Initial load
duke
parents:
diff changeset
57 /** For debugging: returns the file offset of the current symbol. */
a61af66fc99e Initial load
duke
parents:
diff changeset
58 public int getOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
59
a61af66fc99e Initial load
duke
parents:
diff changeset
60 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
61 // S_COMPILE accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
62 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
63
a61af66fc99e Initial load
duke
parents:
diff changeset
64 /** Machine enumeration specifying target processor; see
a61af66fc99e Initial load
duke
parents:
diff changeset
65 DebugVC50SymbolEnums. */
a61af66fc99e Initial load
duke
parents:
diff changeset
66 public byte getCompilerTargetProcessor();
a61af66fc99e Initial load
duke
parents:
diff changeset
67
a61af66fc99e Initial load
duke
parents:
diff changeset
68 /** Compile flags; see DebugVC50SymbolEnums. */
a61af66fc99e Initial load
duke
parents:
diff changeset
69 public int getCompilerFlags();
a61af66fc99e Initial load
duke
parents:
diff changeset
70
a61af66fc99e Initial load
duke
parents:
diff changeset
71 /** Length-prefixed string specifying language processor version.
a61af66fc99e Initial load
duke
parents:
diff changeset
72 Language processors can place additional data in version string
a61af66fc99e Initial load
duke
parents:
diff changeset
73 if desired. */
a61af66fc99e Initial load
duke
parents:
diff changeset
74 public String getComplierVersion();
a61af66fc99e Initial load
duke
parents:
diff changeset
75
a61af66fc99e Initial load
duke
parents:
diff changeset
76 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
77 // S_REGISTER accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
78 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
79
a61af66fc99e Initial load
duke
parents:
diff changeset
80 /** Type of the symbol which is in the register */
a61af66fc99e Initial load
duke
parents:
diff changeset
81 public int getRegisterSymbolType();
a61af66fc99e Initial load
duke
parents:
diff changeset
82
a61af66fc99e Initial load
duke
parents:
diff changeset
83 /** Enumerate of the registers in which the symbol is stored. The
a61af66fc99e Initial load
duke
parents:
diff changeset
84 high and low bytes are treated independently for values split
a61af66fc99e Initial load
duke
parents:
diff changeset
85 across two registers (i.e., 64-bit values on a 32-bit machine.) */
a61af66fc99e Initial load
duke
parents:
diff changeset
86 public short getRegisterEnum();
a61af66fc99e Initial load
duke
parents:
diff changeset
87
a61af66fc99e Initial load
duke
parents:
diff changeset
88 /** Length-prefixed name of the symbol stored in the register. */
a61af66fc99e Initial load
duke
parents:
diff changeset
89 public String getRegisterSymbolName();
a61af66fc99e Initial load
duke
parents:
diff changeset
90
a61af66fc99e Initial load
duke
parents:
diff changeset
91 // Note: register tracking elided as it is not implemented in the
a61af66fc99e Initial load
duke
parents:
diff changeset
92 // Microsoft compilers.
a61af66fc99e Initial load
duke
parents:
diff changeset
93
a61af66fc99e Initial load
duke
parents:
diff changeset
94 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
95 // S_CONSTANT accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
96 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
97
a61af66fc99e Initial load
duke
parents:
diff changeset
98 /** Type of symbol or containing enum. This record is used to output
a61af66fc99e Initial load
duke
parents:
diff changeset
99 constants and C enumerations. If used to output an enumeration,
a61af66fc99e Initial load
duke
parents:
diff changeset
100 then the type index refers to the containing enum. */
a61af66fc99e Initial load
duke
parents:
diff changeset
101 public int getConstantType();
a61af66fc99e Initial load
duke
parents:
diff changeset
102
a61af66fc99e Initial load
duke
parents:
diff changeset
103 /** Numeric leaf containing the value of the symbol as an int */
a61af66fc99e Initial load
duke
parents:
diff changeset
104 public int getConstantValueAsInt() throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
105
a61af66fc99e Initial load
duke
parents:
diff changeset
106 /** Numeric leaf containing the value of the symbol as a long */
a61af66fc99e Initial load
duke
parents:
diff changeset
107 public long getConstantValueAsLong() throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
108
a61af66fc99e Initial load
duke
parents:
diff changeset
109 /** Numeric leaf containing the value of the symbol as a float */
a61af66fc99e Initial load
duke
parents:
diff changeset
110 public float getConstantValueAsFloat() throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
111
a61af66fc99e Initial load
duke
parents:
diff changeset
112 /** Numeric leaf containing the value of the symbol as a double */
a61af66fc99e Initial load
duke
parents:
diff changeset
113 public double getConstantValueAsDouble() throws DebugVC50WrongNumericTypeException;
a61af66fc99e Initial load
duke
parents:
diff changeset
114
a61af66fc99e Initial load
duke
parents:
diff changeset
115 /** Length-prefixed name of the symbol */
a61af66fc99e Initial load
duke
parents:
diff changeset
116 public String getConstantName();
a61af66fc99e Initial load
duke
parents:
diff changeset
117
a61af66fc99e Initial load
duke
parents:
diff changeset
118 /////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
119 // S_UDT accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
120 /////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
121
a61af66fc99e Initial load
duke
parents:
diff changeset
122 /** Type of symbol. This specifies a C typedef or user-defined type,
a61af66fc99e Initial load
duke
parents:
diff changeset
123 such as classes, structures, unions, or enums. */
a61af66fc99e Initial load
duke
parents:
diff changeset
124 public int getUDTType();
a61af66fc99e Initial load
duke
parents:
diff changeset
125
a61af66fc99e Initial load
duke
parents:
diff changeset
126 /** Length-prefixed name of the user defined type. */
a61af66fc99e Initial load
duke
parents:
diff changeset
127 public String getUDTName();
a61af66fc99e Initial load
duke
parents:
diff changeset
128
a61af66fc99e Initial load
duke
parents:
diff changeset
129 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
130 // S_SSEARCH accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
131 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
132
a61af66fc99e Initial load
duke
parents:
diff changeset
133 // FIXME: Add more documentation and understand what this does
a61af66fc99e Initial load
duke
parents:
diff changeset
134
a61af66fc99e Initial load
duke
parents:
diff changeset
135 /** $$SYMBOL offset of the procedure or thunk record for this module
a61af66fc99e Initial load
duke
parents:
diff changeset
136 that has the lowest offset for the specified segment. */
a61af66fc99e Initial load
duke
parents:
diff changeset
137 public int getSearchSymbolOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
138
a61af66fc99e Initial load
duke
parents:
diff changeset
139 /** Segment (PE section) that this Start Search refers to. */
a61af66fc99e Initial load
duke
parents:
diff changeset
140 public short getSearchSegment();
a61af66fc99e Initial load
duke
parents:
diff changeset
141
a61af66fc99e Initial load
duke
parents:
diff changeset
142 /////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
143 // S_END accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
144 /////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
145
a61af66fc99e Initial load
duke
parents:
diff changeset
146 // (No accessors)
a61af66fc99e Initial load
duke
parents:
diff changeset
147 // Closes the scope of the nearest preceding Block Start, Global
a61af66fc99e Initial load
duke
parents:
diff changeset
148 // Procedure Start, Local Procedure Start, With Start, or Thunk
a61af66fc99e Initial load
duke
parents:
diff changeset
149 // Start definition.
a61af66fc99e Initial load
duke
parents:
diff changeset
150
a61af66fc99e Initial load
duke
parents:
diff changeset
151 //////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
152 // S_SKIP accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
153 //////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
154
a61af66fc99e Initial load
duke
parents:
diff changeset
155 // (No accessors)
a61af66fc99e Initial load
duke
parents:
diff changeset
156 // Use the length field, available in every symbol, to skip over
a61af66fc99e Initial load
duke
parents:
diff changeset
157 // these records.
a61af66fc99e Initial load
duke
parents:
diff changeset
158
a61af66fc99e Initial load
duke
parents:
diff changeset
159 ///////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
160 // S_CVRESERVE accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
161 ///////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
162
a61af66fc99e Initial load
duke
parents:
diff changeset
163 // (No accessors)
a61af66fc99e Initial load
duke
parents:
diff changeset
164
a61af66fc99e Initial load
duke
parents:
diff changeset
165 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
166 // S_OBJNAME accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
167 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
168
a61af66fc99e Initial load
duke
parents:
diff changeset
169 /** Signature used to determine whether changes in precompiled types
a61af66fc99e Initial load
duke
parents:
diff changeset
170 defined in this module require a recompilation of users of those
a61af66fc99e Initial load
duke
parents:
diff changeset
171 types. This does not have much meaning given that the algorithm
a61af66fc99e Initial load
duke
parents:
diff changeset
172 for computing the signature is unspecified. */
a61af66fc99e Initial load
duke
parents:
diff changeset
173 public int getObjectCodeViewSignature();
a61af66fc99e Initial load
duke
parents:
diff changeset
174
a61af66fc99e Initial load
duke
parents:
diff changeset
175 /** Length prefixed name of the object file without any path
a61af66fc99e Initial load
duke
parents:
diff changeset
176 information prepended to the name. */
a61af66fc99e Initial load
duke
parents:
diff changeset
177 public String getObjectName();
a61af66fc99e Initial load
duke
parents:
diff changeset
178
a61af66fc99e Initial load
duke
parents:
diff changeset
179 ////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
180 // S_ENDARG accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
181 ////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
182
a61af66fc99e Initial load
duke
parents:
diff changeset
183 // (No accessors)
a61af66fc99e Initial load
duke
parents:
diff changeset
184
a61af66fc99e Initial load
duke
parents:
diff changeset
185 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
186 // S_COBOLUDT accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
187 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
188
a61af66fc99e Initial load
duke
parents:
diff changeset
189 // (Elided as they are irrelevant)
a61af66fc99e Initial load
duke
parents:
diff changeset
190
a61af66fc99e Initial load
duke
parents:
diff changeset
191 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
192 // S_MANYREG accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
193 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
194
a61af66fc99e Initial load
duke
parents:
diff changeset
195 /** Type index of the symbol. This record is used to specify that a
a61af66fc99e Initial load
duke
parents:
diff changeset
196 symbol is stored in a set of registers. */
a61af66fc99e Initial load
duke
parents:
diff changeset
197 public int getManyRegType();
a61af66fc99e Initial load
duke
parents:
diff changeset
198
a61af66fc99e Initial load
duke
parents:
diff changeset
199 /** Count of the register enumerates that follow. */
a61af66fc99e Initial load
duke
parents:
diff changeset
200 public byte getManyRegCount();
a61af66fc99e Initial load
duke
parents:
diff changeset
201
a61af66fc99e Initial load
duke
parents:
diff changeset
202 /** Get the <i>i</i>th register (0..getManyRegCount() - 1). The
a61af66fc99e Initial load
duke
parents:
diff changeset
203 registers are listed high order register first. */
a61af66fc99e Initial load
duke
parents:
diff changeset
204 public byte getManyRegRegister(int i);
a61af66fc99e Initial load
duke
parents:
diff changeset
205
a61af66fc99e Initial load
duke
parents:
diff changeset
206 /** Name of the symbol. */
a61af66fc99e Initial load
duke
parents:
diff changeset
207 public String getManyRegName();
a61af66fc99e Initial load
duke
parents:
diff changeset
208
a61af66fc99e Initial load
duke
parents:
diff changeset
209 ////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
210 // S_RETURN accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
211 ////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
212
a61af66fc99e Initial load
duke
parents:
diff changeset
213 /** Logical or of FUNCRET_VARARGS_LEFT_TO_RIGHT_MASK (push varargs
a61af66fc99e Initial load
duke
parents:
diff changeset
214 left to right if set) and FUNCRET_RETURNEE_STACK_CLEANUP_MASK
a61af66fc99e Initial load
duke
parents:
diff changeset
215 (returnee cleans up stack if true). */
a61af66fc99e Initial load
duke
parents:
diff changeset
216 public short getReturnFlags();
a61af66fc99e Initial load
duke
parents:
diff changeset
217
a61af66fc99e Initial load
duke
parents:
diff changeset
218 /** Function return style; see constants in {@link
a61af66fc99e Initial load
duke
parents:
diff changeset
219 sun.jvm.hotspot.debugger.win32.coff.DebugVC50SymbolEnums}. */
a61af66fc99e Initial load
duke
parents:
diff changeset
220 public byte getReturnStyle();
a61af66fc99e Initial load
duke
parents:
diff changeset
221
a61af66fc99e Initial load
duke
parents:
diff changeset
222 /** Get count of registers containing return value; only valid for
a61af66fc99e Initial load
duke
parents:
diff changeset
223 FUNCRET_IN_REGISTERS return style. */
a61af66fc99e Initial load
duke
parents:
diff changeset
224 public byte getReturnRegisterCount();
a61af66fc99e Initial load
duke
parents:
diff changeset
225
a61af66fc99e Initial load
duke
parents:
diff changeset
226 /** Get <i>i</i>th register (0..getReturnRegisterCount() - 1)
a61af66fc99e Initial load
duke
parents:
diff changeset
227 containing return value, high order first; only valid for
a61af66fc99e Initial load
duke
parents:
diff changeset
228 FUNCRET_IN_REGISTERS return style. */
a61af66fc99e Initial load
duke
parents:
diff changeset
229 public byte getReturnRegister(int i);
a61af66fc99e Initial load
duke
parents:
diff changeset
230
a61af66fc99e Initial load
duke
parents:
diff changeset
231 ///////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
232 // S_ENTRYTHIS accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
233 ///////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
234
a61af66fc99e Initial load
duke
parents:
diff changeset
235 /** Advance this iterator to the symbol (which actually describes
a61af66fc99e Initial load
duke
parents:
diff changeset
236 the <b>this</b> pointer) contained within the S_ENTRYTHIS
a61af66fc99e Initial load
duke
parents:
diff changeset
237 symbol. */
a61af66fc99e Initial load
duke
parents:
diff changeset
238 public void advanceToEntryThisSymbol();
a61af66fc99e Initial load
duke
parents:
diff changeset
239
a61af66fc99e Initial load
duke
parents:
diff changeset
240 ///////////////////////////////////////////////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
241 // //
a61af66fc99e Initial load
duke
parents:
diff changeset
242 // //
a61af66fc99e Initial load
duke
parents:
diff changeset
243 // Symbols for (Intel) 16:32 Segmented and 32-bit Flat Architectures //
a61af66fc99e Initial load
duke
parents:
diff changeset
244 // //
a61af66fc99e Initial load
duke
parents:
diff changeset
245 // //
a61af66fc99e Initial load
duke
parents:
diff changeset
246 ///////////////////////////////////////////////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
247
a61af66fc99e Initial load
duke
parents:
diff changeset
248 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
249 // S_BPREL32 accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
250 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
251
a61af66fc99e Initial load
duke
parents:
diff changeset
252 // This symbol specifies symbols that are allocated on the stack for
a61af66fc99e Initial load
duke
parents:
diff changeset
253 // a procedure. For C/C++, these include the actual parameters to a
a61af66fc99e Initial load
duke
parents:
diff changeset
254 // function and the local nonstatic variables of functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
255
a61af66fc99e Initial load
duke
parents:
diff changeset
256 /** Signed offset relative to BP. If 0, then the symbol was assigned
a61af66fc99e Initial load
duke
parents:
diff changeset
257 to a register or never instantiated by the optimizer and cannot
a61af66fc99e Initial load
duke
parents:
diff changeset
258 be evaluated because its location is unknown. */
a61af66fc99e Initial load
duke
parents:
diff changeset
259 public int getBPRelOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
260
a61af66fc99e Initial load
duke
parents:
diff changeset
261 /** Type of the symbol. */
a61af66fc99e Initial load
duke
parents:
diff changeset
262 public int getBPRelType();
a61af66fc99e Initial load
duke
parents:
diff changeset
263
a61af66fc99e Initial load
duke
parents:
diff changeset
264 /** Length-prefixed name of the symbol. */
a61af66fc99e Initial load
duke
parents:
diff changeset
265 public String getBPRelName();
a61af66fc99e Initial load
duke
parents:
diff changeset
266
a61af66fc99e Initial load
duke
parents:
diff changeset
267 ///////////////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
268 // S_LDATA32 and S_GDATA32 accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
269 ///////////////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
270
a61af66fc99e Initial load
duke
parents:
diff changeset
271 // FIXME: consider documenting this as covering S_PUB32 symbols as
a61af66fc99e Initial load
duke
parents:
diff changeset
272 // well
a61af66fc99e Initial load
duke
parents:
diff changeset
273
a61af66fc99e Initial load
duke
parents:
diff changeset
274 // The formats of S_LDATA32 and S_GDATA32 symbols match; the only
a61af66fc99e Initial load
duke
parents:
diff changeset
275 // difference is the type tag.
a61af66fc99e Initial load
duke
parents:
diff changeset
276 //
a61af66fc99e Initial load
duke
parents:
diff changeset
277 // LDATA32 symbols are used for data that is not exported from a
a61af66fc99e Initial load
duke
parents:
diff changeset
278 // module. In C/C++, symbols that are declared static are emitted as
a61af66fc99e Initial load
duke
parents:
diff changeset
279 // Local Data symbols. Symbols that are emitted as Local Data cannot
a61af66fc99e Initial load
duke
parents:
diff changeset
280 // be moved by CVPACK into the global symbol table for the
a61af66fc99e Initial load
duke
parents:
diff changeset
281 // executable file.
a61af66fc99e Initial load
duke
parents:
diff changeset
282 //
a61af66fc99e Initial load
duke
parents:
diff changeset
283 // GDATA32 records have the same format as the Local Data 16:32
a61af66fc99e Initial load
duke
parents:
diff changeset
284 // except that the record type is S_GDATA32. For C/C++, symbols that
a61af66fc99e Initial load
duke
parents:
diff changeset
285 // are not specifically declared static are emitted as Global Data
a61af66fc99e Initial load
duke
parents:
diff changeset
286 // Symbols and can be compacted by CVPACK into the global symbol
a61af66fc99e Initial load
duke
parents:
diff changeset
287 // table.
a61af66fc99e Initial load
duke
parents:
diff changeset
288
a61af66fc99e Initial load
duke
parents:
diff changeset
289 /** Type index of the symbol. */
a61af66fc99e Initial load
duke
parents:
diff changeset
290 public int getLGDataType();
a61af66fc99e Initial load
duke
parents:
diff changeset
291
a61af66fc99e Initial load
duke
parents:
diff changeset
292 /** Offset portion of the symbol address. */
a61af66fc99e Initial load
duke
parents:
diff changeset
293 public int getLGDataOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
294
a61af66fc99e Initial load
duke
parents:
diff changeset
295 /** Segment portion of the symbol address. */
a61af66fc99e Initial load
duke
parents:
diff changeset
296 public short getLGDataSegment();
a61af66fc99e Initial load
duke
parents:
diff changeset
297
a61af66fc99e Initial load
duke
parents:
diff changeset
298 /** Length-prefixed name of symbol. */
a61af66fc99e Initial load
duke
parents:
diff changeset
299 public String getLGDataName();
a61af66fc99e Initial load
duke
parents:
diff changeset
300
a61af66fc99e Initial load
duke
parents:
diff changeset
301 ///////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
302 // S_PUB32 accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
303 ///////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
304
a61af66fc99e Initial load
duke
parents:
diff changeset
305 // FIXME: has the same format as the above; consider updating
a61af66fc99e Initial load
duke
parents:
diff changeset
306 // documentation. No separate accessors provided.
a61af66fc99e Initial load
duke
parents:
diff changeset
307
a61af66fc99e Initial load
duke
parents:
diff changeset
308 ///////////////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
309 // S_LPROC32 and S_GPROC32 accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
310 ///////////////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
311
a61af66fc99e Initial load
duke
parents:
diff changeset
312 // LPROC32 and GPROC32 symbols have the same format, differing only
a61af66fc99e Initial load
duke
parents:
diff changeset
313 // in the type tag.
a61af66fc99e Initial load
duke
parents:
diff changeset
314 //
a61af66fc99e Initial load
duke
parents:
diff changeset
315 // The LPROC32 symbol record defines a local (file static) procedure
a61af66fc99e Initial load
duke
parents:
diff changeset
316 // definition. For C/C++, functions that are declared static to a
a61af66fc99e Initial load
duke
parents:
diff changeset
317 // module are emitted as Local Procedure symbols. Functions not
a61af66fc99e Initial load
duke
parents:
diff changeset
318 // specifically declared static are emitted as Global Procedures.
a61af66fc99e Initial load
duke
parents:
diff changeset
319 //
a61af66fc99e Initial load
duke
parents:
diff changeset
320 // GPROC32 records are used for procedures that are not specifically
a61af66fc99e Initial load
duke
parents:
diff changeset
321 // declared static to a module. The format is the same as the Local
a61af66fc99e Initial load
duke
parents:
diff changeset
322 // Procedure Start 16:32 symbol.
a61af66fc99e Initial load
duke
parents:
diff changeset
323
a61af66fc99e Initial load
duke
parents:
diff changeset
324 /** Creates a new symbol iterator pointing to the symbol opening the
a61af66fc99e Initial load
duke
parents:
diff changeset
325 enclosing lexical scope of this function (if any); returns null
a61af66fc99e Initial load
duke
parents:
diff changeset
326 if there is no enclosing scope. */
a61af66fc99e Initial load
duke
parents:
diff changeset
327 public DebugVC50SymbolIterator getLGProcParent();
a61af66fc99e Initial load
duke
parents:
diff changeset
328
a61af66fc99e Initial load
duke
parents:
diff changeset
329 /** Gets the absolute file offset of the parent symbol, or 0 if
a61af66fc99e Initial load
duke
parents:
diff changeset
330 none. This is useful for constructing and resolving types in a
a61af66fc99e Initial load
duke
parents:
diff changeset
331 lazy fashion. */
a61af66fc99e Initial load
duke
parents:
diff changeset
332 public int getLGProcParentOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
333
a61af66fc99e Initial load
duke
parents:
diff changeset
334 /** Creates a new symbol iterator pointing to the block end symbol
a61af66fc99e Initial load
duke
parents:
diff changeset
335 terminating the lexical scope, or NULL if there is no containing
a61af66fc99e Initial load
duke
parents:
diff changeset
336 lexical scope. */
a61af66fc99e Initial load
duke
parents:
diff changeset
337 public DebugVC50SymbolIterator getLGProcEnd();
a61af66fc99e Initial load
duke
parents:
diff changeset
338
a61af66fc99e Initial load
duke
parents:
diff changeset
339 /** Gets the absolute file offset of the end symbol. This is useful
a61af66fc99e Initial load
duke
parents:
diff changeset
340 for constructing and resolving types in a lazy fashion. */
a61af66fc99e Initial load
duke
parents:
diff changeset
341 public int getLGProcEndOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
342
a61af66fc99e Initial load
duke
parents:
diff changeset
343 /** Creates a new symbol iterator pointing to the next outermost
a61af66fc99e Initial load
duke
parents:
diff changeset
344 scope symbol in the segment (if any); returns null if this is
a61af66fc99e Initial load
duke
parents:
diff changeset
345 the last outermost scope for the current segment. (See the
a61af66fc99e Initial load
duke
parents:
diff changeset
346 documentation for more information.) */
a61af66fc99e Initial load
duke
parents:
diff changeset
347 public DebugVC50SymbolIterator getLGProcNext();
a61af66fc99e Initial load
duke
parents:
diff changeset
348
a61af66fc99e Initial load
duke
parents:
diff changeset
349 /** Gets the absolute file offset of the next symbol, or 0 if none.
a61af66fc99e Initial load
duke
parents:
diff changeset
350 This is useful for constructing and resolving types in a lazy
a61af66fc99e Initial load
duke
parents:
diff changeset
351 fashion. */
a61af66fc99e Initial load
duke
parents:
diff changeset
352 public int getLGProcNextOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
353
a61af66fc99e Initial load
duke
parents:
diff changeset
354 /** Length in bytes of this procedure. */
a61af66fc99e Initial load
duke
parents:
diff changeset
355 public int getLGProcLength();
a61af66fc99e Initial load
duke
parents:
diff changeset
356
a61af66fc99e Initial load
duke
parents:
diff changeset
357 /** Offset in bytes from the start of the procedure to the point
a61af66fc99e Initial load
duke
parents:
diff changeset
358 where the stack frame has been set up. Parameter and frame
a61af66fc99e Initial load
duke
parents:
diff changeset
359 variables can be viewed at this point. */
a61af66fc99e Initial load
duke
parents:
diff changeset
360 public int getLGProcDebugStart();
a61af66fc99e Initial load
duke
parents:
diff changeset
361
a61af66fc99e Initial load
duke
parents:
diff changeset
362 /** Offset in bytes from the start of the procedure to the point
a61af66fc99e Initial load
duke
parents:
diff changeset
363 where the procedure is ready to return and has calculated its
a61af66fc99e Initial load
duke
parents:
diff changeset
364 return value, if any. Frame and register variables can still be
a61af66fc99e Initial load
duke
parents:
diff changeset
365 viewed. */
a61af66fc99e Initial load
duke
parents:
diff changeset
366 public int getLGProcDebugEnd();
a61af66fc99e Initial load
duke
parents:
diff changeset
367
a61af66fc99e Initial load
duke
parents:
diff changeset
368 /** Type of the procedure type record. */
a61af66fc99e Initial load
duke
parents:
diff changeset
369 public int getLGProcType();
a61af66fc99e Initial load
duke
parents:
diff changeset
370
a61af66fc99e Initial load
duke
parents:
diff changeset
371 /** Offset portion of the procedure address. */
a61af66fc99e Initial load
duke
parents:
diff changeset
372 public int getLGProcOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
373
a61af66fc99e Initial load
duke
parents:
diff changeset
374 /** Segment portion of the procedure address. */
a61af66fc99e Initial load
duke
parents:
diff changeset
375 public short getLGProcSegment();
a61af66fc99e Initial load
duke
parents:
diff changeset
376
a61af66fc99e Initial load
duke
parents:
diff changeset
377 /** Value defined by bitwise or of the the PROCFLAGS enumeration in
a61af66fc99e Initial load
duke
parents:
diff changeset
378 {@link
a61af66fc99e Initial load
duke
parents:
diff changeset
379 sun.jvm.hotspot.debugger.win32.coff.DebugVC50SymbolEnums}. */
a61af66fc99e Initial load
duke
parents:
diff changeset
380 public byte getLGProcFlags();
a61af66fc99e Initial load
duke
parents:
diff changeset
381
a61af66fc99e Initial load
duke
parents:
diff changeset
382 /** Length-prefixed name of procedure. */
a61af66fc99e Initial load
duke
parents:
diff changeset
383 public String getLGProcName();
a61af66fc99e Initial load
duke
parents:
diff changeset
384
a61af66fc99e Initial load
duke
parents:
diff changeset
385 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
386 // S_THUNK32 accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
387 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
388
a61af66fc99e Initial load
duke
parents:
diff changeset
389 // This record is used to specify any piece of code that exists
a61af66fc99e Initial load
duke
parents:
diff changeset
390 // outside a procedure. It is followed by an End record. The thunk
a61af66fc99e Initial load
duke
parents:
diff changeset
391 // record is intended for small code fragments. and a two byte
a61af66fc99e Initial load
duke
parents:
diff changeset
392 // length field is sufficient for its intended purpose.
a61af66fc99e Initial load
duke
parents:
diff changeset
393
a61af66fc99e Initial load
duke
parents:
diff changeset
394 /** Creates a new symbol iterator pointing to the symbol opening the
a61af66fc99e Initial load
duke
parents:
diff changeset
395 enclosing lexical scope of this thunk (if any); returns null if
a61af66fc99e Initial load
duke
parents:
diff changeset
396 there is no enclosing scope. */
a61af66fc99e Initial load
duke
parents:
diff changeset
397 public DebugVC50SymbolIterator getThunkParent();
a61af66fc99e Initial load
duke
parents:
diff changeset
398
a61af66fc99e Initial load
duke
parents:
diff changeset
399 /** Gets the absolute file offset of the parent symbol, or 0 if
a61af66fc99e Initial load
duke
parents:
diff changeset
400 none. This is useful for constructing and resolving types in a
a61af66fc99e Initial load
duke
parents:
diff changeset
401 lazy fashion. */
a61af66fc99e Initial load
duke
parents:
diff changeset
402 public int getThunkParentOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
403
a61af66fc99e Initial load
duke
parents:
diff changeset
404 /** Creates a new symbol iterator pointing to the block end symbol
a61af66fc99e Initial load
duke
parents:
diff changeset
405 terminating the lexical scope, or NULL if there is no containing
a61af66fc99e Initial load
duke
parents:
diff changeset
406 lexical scope. */
a61af66fc99e Initial load
duke
parents:
diff changeset
407 public DebugVC50SymbolIterator getThunkEnd();
a61af66fc99e Initial load
duke
parents:
diff changeset
408
a61af66fc99e Initial load
duke
parents:
diff changeset
409 /** Gets the absolute file offset of the end symbol. This is useful
a61af66fc99e Initial load
duke
parents:
diff changeset
410 for constructing and resolving types in a lazy fashion. */
a61af66fc99e Initial load
duke
parents:
diff changeset
411 public int getThunkEndOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
412
a61af66fc99e Initial load
duke
parents:
diff changeset
413 /** Creates a new symbol iterator pointing to the next outermost
a61af66fc99e Initial load
duke
parents:
diff changeset
414 scope symbol in the segment (if any); returns null if this is
a61af66fc99e Initial load
duke
parents:
diff changeset
415 the last outermost scope for the current segment. (See the
a61af66fc99e Initial load
duke
parents:
diff changeset
416 documentation for more information.) */
a61af66fc99e Initial load
duke
parents:
diff changeset
417 public DebugVC50SymbolIterator getThunkNext();
a61af66fc99e Initial load
duke
parents:
diff changeset
418
a61af66fc99e Initial load
duke
parents:
diff changeset
419 /** Gets the absolute file offset of the next symbol, or 0 if none.
a61af66fc99e Initial load
duke
parents:
diff changeset
420 This is useful for constructing and resolving types in a lazy
a61af66fc99e Initial load
duke
parents:
diff changeset
421 fashion. */
a61af66fc99e Initial load
duke
parents:
diff changeset
422 public int getThunkNextOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
423
a61af66fc99e Initial load
duke
parents:
diff changeset
424 /** Offset portion of the thunk address. */
a61af66fc99e Initial load
duke
parents:
diff changeset
425 public int getThunkOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
426
a61af66fc99e Initial load
duke
parents:
diff changeset
427 /** Segment portion of the procedure address. */
a61af66fc99e Initial load
duke
parents:
diff changeset
428 public short getThunkSegment();
a61af66fc99e Initial load
duke
parents:
diff changeset
429
a61af66fc99e Initial load
duke
parents:
diff changeset
430 /** Length in bytes of this thunk. */
a61af66fc99e Initial load
duke
parents:
diff changeset
431 public short getThunkLength();
a61af66fc99e Initial load
duke
parents:
diff changeset
432
a61af66fc99e Initial load
duke
parents:
diff changeset
433 /** Ordinal specifying the type of thunk; see THUNK enumeration in
a61af66fc99e Initial load
duke
parents:
diff changeset
434 {@link
a61af66fc99e Initial load
duke
parents:
diff changeset
435 sun.jvm.hotspot.debugger.win32.coff.DebugVC50SymbolEnums}. */
a61af66fc99e Initial load
duke
parents:
diff changeset
436 public byte getThunkType();
a61af66fc99e Initial load
duke
parents:
diff changeset
437
a61af66fc99e Initial load
duke
parents:
diff changeset
438 /** Length-prefixed name of thunk. */
a61af66fc99e Initial load
duke
parents:
diff changeset
439 public String getThunkName();
a61af66fc99e Initial load
duke
parents:
diff changeset
440
a61af66fc99e Initial load
duke
parents:
diff changeset
441 /** Delta to be added to "this" pointer; only valid if thunk type is
a61af66fc99e Initial load
duke
parents:
diff changeset
442 "adjustor". */
a61af66fc99e Initial load
duke
parents:
diff changeset
443 public short getThunkAdjustorThisDelta();
a61af66fc99e Initial load
duke
parents:
diff changeset
444
a61af66fc99e Initial load
duke
parents:
diff changeset
445 /** Length-prefixed name of target function; only valid if thunk type is
a61af66fc99e Initial load
duke
parents:
diff changeset
446 "adjustor". */
a61af66fc99e Initial load
duke
parents:
diff changeset
447 public String getThunkAdjustorTargetName();
a61af66fc99e Initial load
duke
parents:
diff changeset
448
a61af66fc99e Initial load
duke
parents:
diff changeset
449 /** Displacement into the virtual table; only valid if thunk type is
a61af66fc99e Initial load
duke
parents:
diff changeset
450 "vcall". */
a61af66fc99e Initial load
duke
parents:
diff changeset
451 public short getThunkVCallDisplacement();
a61af66fc99e Initial load
duke
parents:
diff changeset
452
a61af66fc99e Initial load
duke
parents:
diff changeset
453 /** Offset of p-code entry point; only valid if thunk type is
a61af66fc99e Initial load
duke
parents:
diff changeset
454 "pcode". */
a61af66fc99e Initial load
duke
parents:
diff changeset
455 public int getThunkPCodeOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
456
a61af66fc99e Initial load
duke
parents:
diff changeset
457 /** Segment of p-code entry point; only valid if thunk type is
a61af66fc99e Initial load
duke
parents:
diff changeset
458 "pcode". */
a61af66fc99e Initial load
duke
parents:
diff changeset
459 public short getThunkPCodeSegment();
a61af66fc99e Initial load
duke
parents:
diff changeset
460
a61af66fc99e Initial load
duke
parents:
diff changeset
461 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
462 // S_BLOCK32 accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
463 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
464
a61af66fc99e Initial load
duke
parents:
diff changeset
465 // This symbol specifies the start of an inner block of lexically
a61af66fc99e Initial load
duke
parents:
diff changeset
466 // scoped symbols. The lexical scope is terminated by a matching
a61af66fc99e Initial load
duke
parents:
diff changeset
467 // S_END symbol.
a61af66fc99e Initial load
duke
parents:
diff changeset
468
a61af66fc99e Initial load
duke
parents:
diff changeset
469 /** Creates a new symbol iterator pointing to the symbol opening the
a61af66fc99e Initial load
duke
parents:
diff changeset
470 enclosing lexical scope of this scope (if any); returns null if
a61af66fc99e Initial load
duke
parents:
diff changeset
471 there is no enclosing scope. */
a61af66fc99e Initial load
duke
parents:
diff changeset
472 public DebugVC50SymbolIterator getBlockParent();
a61af66fc99e Initial load
duke
parents:
diff changeset
473
a61af66fc99e Initial load
duke
parents:
diff changeset
474 /** Gets the absolute file offset of the parent symbol, or 0 if
a61af66fc99e Initial load
duke
parents:
diff changeset
475 none. This is useful for constructing and resolving types in a
a61af66fc99e Initial load
duke
parents:
diff changeset
476 lazy fashion. */
a61af66fc99e Initial load
duke
parents:
diff changeset
477 public int getBlockParentOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
478
a61af66fc99e Initial load
duke
parents:
diff changeset
479 /** Creates a new symbol iterator pointing to the block end symbol
a61af66fc99e Initial load
duke
parents:
diff changeset
480 terminating this scope. */
a61af66fc99e Initial load
duke
parents:
diff changeset
481 public DebugVC50SymbolIterator getBlockEnd();
a61af66fc99e Initial load
duke
parents:
diff changeset
482
a61af66fc99e Initial load
duke
parents:
diff changeset
483 /** Gets the absolute file offset of the end symbol. This is useful
a61af66fc99e Initial load
duke
parents:
diff changeset
484 for constructing and resolving types in a lazy fashion. */
a61af66fc99e Initial load
duke
parents:
diff changeset
485 public int getBlockEndOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
486
a61af66fc99e Initial load
duke
parents:
diff changeset
487 /** Length in bytes of the scope of this block. */
a61af66fc99e Initial load
duke
parents:
diff changeset
488 public int getBlockLength();
a61af66fc99e Initial load
duke
parents:
diff changeset
489
a61af66fc99e Initial load
duke
parents:
diff changeset
490 /** Offset portion of the segmented procedure address. */
a61af66fc99e Initial load
duke
parents:
diff changeset
491 public int getBlockOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
492
a61af66fc99e Initial load
duke
parents:
diff changeset
493 /** Segment portion of the segmented procedure address. */
a61af66fc99e Initial load
duke
parents:
diff changeset
494 public short getBlockSegment();
a61af66fc99e Initial load
duke
parents:
diff changeset
495
a61af66fc99e Initial load
duke
parents:
diff changeset
496 /** Length-prefixed name of the block. */
a61af66fc99e Initial load
duke
parents:
diff changeset
497 public String getBlockName();
a61af66fc99e Initial load
duke
parents:
diff changeset
498
a61af66fc99e Initial load
duke
parents:
diff changeset
499 ////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
500 // S_WITH32 accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
501 ////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
502
a61af66fc99e Initial load
duke
parents:
diff changeset
503 // FIXME: this is a Pascal construct; ignored for now
a61af66fc99e Initial load
duke
parents:
diff changeset
504
a61af66fc99e Initial load
duke
parents:
diff changeset
505 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
506 // S_LABEL32 accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
507 /////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
508
a61af66fc99e Initial load
duke
parents:
diff changeset
509 /** Offset portion of the segmented address of the start of the
a61af66fc99e Initial load
duke
parents:
diff changeset
510 block. */
a61af66fc99e Initial load
duke
parents:
diff changeset
511 public int getLabelOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
512
a61af66fc99e Initial load
duke
parents:
diff changeset
513 /** Segment portion of the segmented address of the start of the
a61af66fc99e Initial load
duke
parents:
diff changeset
514 block. */
a61af66fc99e Initial load
duke
parents:
diff changeset
515 public short getLabelSegment();
a61af66fc99e Initial load
duke
parents:
diff changeset
516
a61af66fc99e Initial load
duke
parents:
diff changeset
517 /** Label flags. These are the same as the PROCFLAGS enumeration. */
a61af66fc99e Initial load
duke
parents:
diff changeset
518 public byte getLabelFlags();
a61af66fc99e Initial load
duke
parents:
diff changeset
519
a61af66fc99e Initial load
duke
parents:
diff changeset
520 /** Length prefixed name of label. */
a61af66fc99e Initial load
duke
parents:
diff changeset
521 public String getLabelName();
a61af66fc99e Initial load
duke
parents:
diff changeset
522
a61af66fc99e Initial load
duke
parents:
diff changeset
523 ////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
524 // S_CEXMODEL32 accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
525 ////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
526
a61af66fc99e Initial load
duke
parents:
diff changeset
527 // This record is used to notify the debugger that, starting at the
a61af66fc99e Initial load
duke
parents:
diff changeset
528 // given code offset and until the address specified by the next
a61af66fc99e Initial load
duke
parents:
diff changeset
529 // Change Execution Model record, the execution model is of the
a61af66fc99e Initial load
duke
parents:
diff changeset
530 // specified type. The native execution model is assumed in the
a61af66fc99e Initial load
duke
parents:
diff changeset
531 // absence of Change Execution Model records.
a61af66fc99e Initial load
duke
parents:
diff changeset
532
a61af66fc99e Initial load
duke
parents:
diff changeset
533 /** Offset portion of start of the block where the change occurs. */
a61af66fc99e Initial load
duke
parents:
diff changeset
534 public int getChangeOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
535
a61af66fc99e Initial load
duke
parents:
diff changeset
536 /** Segment portion of start of the block where the change occurs. */
a61af66fc99e Initial load
duke
parents:
diff changeset
537 public short getChangeSegment();
a61af66fc99e Initial load
duke
parents:
diff changeset
538
a61af66fc99e Initial load
duke
parents:
diff changeset
539 /** The execution model, enumerated in EXMODEL constants in {@link
a61af66fc99e Initial load
duke
parents:
diff changeset
540 sun.jvm.hotspot.debugger.win32.coff.DebugVC50SymbolEnums}. */
a61af66fc99e Initial load
duke
parents:
diff changeset
541 public short getChangeModel();
a61af66fc99e Initial load
duke
parents:
diff changeset
542
a61af66fc99e Initial load
duke
parents:
diff changeset
543 // FIXME: figure out how to deal with variant (or whether it is
a61af66fc99e Initial load
duke
parents:
diff changeset
544 // necessary)
a61af66fc99e Initial load
duke
parents:
diff changeset
545
a61af66fc99e Initial load
duke
parents:
diff changeset
546 ////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
547 // S_VFTTABLE32 accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
548 ////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
549
a61af66fc99e Initial load
duke
parents:
diff changeset
550 // This record is used to describe the base class path for the
a61af66fc99e Initial load
duke
parents:
diff changeset
551 // virtual function table descriptor.
a61af66fc99e Initial load
duke
parents:
diff changeset
552
a61af66fc99e Initial load
duke
parents:
diff changeset
553 /** The type index of the class at the root of the path. */
a61af66fc99e Initial load
duke
parents:
diff changeset
554 public int getVTableRoot();
a61af66fc99e Initial load
duke
parents:
diff changeset
555
a61af66fc99e Initial load
duke
parents:
diff changeset
556 /** Type index of the record describing the base class path from the
a61af66fc99e Initial load
duke
parents:
diff changeset
557 root to the leaf class for the virtual function table. */
a61af66fc99e Initial load
duke
parents:
diff changeset
558 public int getVTablePath();
a61af66fc99e Initial load
duke
parents:
diff changeset
559
a61af66fc99e Initial load
duke
parents:
diff changeset
560 /** Offset portion of start of the virtual function table. */
a61af66fc99e Initial load
duke
parents:
diff changeset
561 public int getVTableOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
562
a61af66fc99e Initial load
duke
parents:
diff changeset
563 /** Segment portion of the virtual function table. */
a61af66fc99e Initial load
duke
parents:
diff changeset
564 public short getVTableSegment();
a61af66fc99e Initial load
duke
parents:
diff changeset
565
a61af66fc99e Initial load
duke
parents:
diff changeset
566 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
567 // S_REGREL32 accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
568 //////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
569
a61af66fc99e Initial load
duke
parents:
diff changeset
570 // This symbol specifies symbols that are allocated relative to a
a61af66fc99e Initial load
duke
parents:
diff changeset
571 // register.
a61af66fc99e Initial load
duke
parents:
diff changeset
572
a61af66fc99e Initial load
duke
parents:
diff changeset
573 /** Signed offset relative to register. */
a61af66fc99e Initial load
duke
parents:
diff changeset
574 public int getRegRelOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
575
a61af66fc99e Initial load
duke
parents:
diff changeset
576 /** Type of the symbol. */
a61af66fc99e Initial load
duke
parents:
diff changeset
577 public int getRegRelType();
a61af66fc99e Initial load
duke
parents:
diff changeset
578
a61af66fc99e Initial load
duke
parents:
diff changeset
579 /** Register enumerates on which the symbol is based. Note that the
a61af66fc99e Initial load
duke
parents:
diff changeset
580 register field can specify a pair of register such as ES:EBX. */
a61af66fc99e Initial load
duke
parents:
diff changeset
581 public short getRegRelRegister();
a61af66fc99e Initial load
duke
parents:
diff changeset
582
a61af66fc99e Initial load
duke
parents:
diff changeset
583 /** Length-prefixed name of the symbol. */
a61af66fc99e Initial load
duke
parents:
diff changeset
584 public String getRegRelName();
a61af66fc99e Initial load
duke
parents:
diff changeset
585
a61af66fc99e Initial load
duke
parents:
diff changeset
586 ///////////////////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
587 // S_LTHREAD32 and S_GTHREAD32 accessors //
a61af66fc99e Initial load
duke
parents:
diff changeset
588 ///////////////////////////////////////////
a61af66fc99e Initial load
duke
parents:
diff changeset
589
a61af66fc99e Initial load
duke
parents:
diff changeset
590 // These symbols are used for data declared with the __thread
a61af66fc99e Initial load
duke
parents:
diff changeset
591 // storage attribute that is not exported from a module. In C/C++,
a61af66fc99e Initial load
duke
parents:
diff changeset
592 // __thread symbols that are declared static are emitted as Local
a61af66fc99e Initial load
duke
parents:
diff changeset
593 // Thread Storage 16:32 symbols. Symbols that are emitted as Local
a61af66fc99e Initial load
duke
parents:
diff changeset
594 // Thread Storage 16:32 cannot be moved by CVPACK into the global
a61af66fc99e Initial load
duke
parents:
diff changeset
595 // symbol table for the executable file. __thread symbols that are
a61af66fc99e Initial load
duke
parents:
diff changeset
596 // not specifically declared static are emitted as Global Thread
a61af66fc99e Initial load
duke
parents:
diff changeset
597 // Storage 16:32 symbols and can be compacted by CVPACK into the
a61af66fc99e Initial load
duke
parents:
diff changeset
598 // global symbol table.
a61af66fc99e Initial load
duke
parents:
diff changeset
599
a61af66fc99e Initial load
duke
parents:
diff changeset
600 /** Type index. */
a61af66fc99e Initial load
duke
parents:
diff changeset
601 public int getLThreadType();
a61af66fc99e Initial load
duke
parents:
diff changeset
602
a61af66fc99e Initial load
duke
parents:
diff changeset
603 /** Offset into thread local storage. */
a61af66fc99e Initial load
duke
parents:
diff changeset
604 public int getLThreadOffset();
a61af66fc99e Initial load
duke
parents:
diff changeset
605
a61af66fc99e Initial load
duke
parents:
diff changeset
606 /** Segment of thread local storage. */
a61af66fc99e Initial load
duke
parents:
diff changeset
607 public short getLThreadSegment();
a61af66fc99e Initial load
duke
parents:
diff changeset
608
a61af66fc99e Initial load
duke
parents:
diff changeset
609 /** Length prefixed name. */
a61af66fc99e Initial load
duke
parents:
diff changeset
610 public String getLThreadName();
a61af66fc99e Initial load
duke
parents:
diff changeset
611
a61af66fc99e Initial load
duke
parents:
diff changeset
612 // NOTE: accessors for all other kinds of symbols (i.e., MIPS)
a61af66fc99e Initial load
duke
parents:
diff changeset
613 // elided for now (FIXME)
a61af66fc99e Initial load
duke
parents:
diff changeset
614 }