blob: 0dea35dd0b3e0c48a231ebfb964a53f5450be3d5 (
plain)
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
|
/* Alpha VMS external format of Debug Symbol Table.
Copyright (C) 2010-2016 Free Software Foundation, Inc.
Written by Tristan Gingold <gingold@adacore.com>, AdaCore.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
MA 02110-1301, USA. */
#ifndef _VMS_DST_H
#define _VMS_DST_H
/* Also available in vms freeware v5.0 debug/alpha_dstrecrds.sdl. */
struct vms_dst_header
{
/* Length. */
unsigned char length[2];
/* Type. */
unsigned char type[2];
};
/* Beginning of module. */
#define DST__K_MODBEG 188
/* Some well known languages. */
#define DST__K_MACRO 0
#define DST__K_BLISS 2
#define DST__K_C 7
#define DST__K_ADA 9
#define DST__K_CXX 15
struct vms_dst_modbeg
{
unsigned char flags;
unsigned char unused;
unsigned char language[4];
unsigned char major[2];
unsigned char minor[2];
/* Module name ASCIC. */
/* Ident name ASCIC. */
};
/* Routine begin. */
#define DST__K_RTNBEG 190
struct vms_dst_rtnbeg
{
unsigned char flags;
/* Address of the code. */
unsigned char address[4];
/* Procedure descriptor address. */
unsigned char pd_address[4];
/* Name: ASCIC */
};
/* Line number. */
#define DST__K_LINE_NUM 185
struct vms_dst_pcline
{
unsigned char pcline_command;
unsigned char field[4];
};
#define DST__K_DELTA_PC_W 1
#define DST__K_INCR_LINUM 2
#define DST__K_INCR_LINUM_W 3
#define DST__K_SET_LINUM_INCR 4
#define DST__K_SET_LINUM_INCR_W 5
#define DST__K_RESET_LINUM_INCR 6
#define DST__K_BEG_STMT_MODE 7
#define DST__K_END_STMT_MODE 8
#define DST__K_SET_LINUM 9
#define DST__K_SET_PC 10
#define DST__K_SET_PC_W 11
#define DST__K_SET_PC_L 12
#define DST__K_SET_STMTNUM 13
#define DST__K_TERM 14
#define DST__K_TERM_W 15
#define DST__K_SET_ABS_PC 16
#define DST__K_DELTA_PC_L 17
#define DST__K_INCR_LINUM_L 18
#define DST__K_SET_LINUM_B 19
#define DST__K_SET_LINUM_L 20
#define DST__K_TERM_L 21
/* Routine end. */
#define DST__K_RTNEND 191
struct vms_dst_rtnend
{
unsigned char unused;
unsigned char size[4];
};
/* Prologue. */
#define DST__K_PROLOG 162
struct vms_dst_prolog
{
unsigned char bkpt_addr[4];
};
/* Epilog. */
#define DST__K_EPILOG 127
struct vms_dst_epilog
{
unsigned char flags;
unsigned char count[4];
};
/* Module end. */
#define DST__K_MODEND 189
/* Block begin. */
#define DST__K_BLKBEG 176
struct vms_dst_blkbeg
{
unsigned char unused;
unsigned char address[4];
/* Name ASCIC. */
};
/* Block end. */
#define DST__K_BLKEND 177
struct vms_dst_blkend
{
unsigned char unused;
unsigned char size[4];
};
/* Source correlation. */
#define DST__K_SOURCE 155
#define DST__K_SRC_DECLFILE 1
#define DST__K_SRC_SETFILE 2
#define DST__K_SRC_SETREC_L 3
#define DST__K_SRC_SETREC_W 4
#define DST__K_SRC_SETLNUM_L 5
#define DST__K_SRC_SETLNUM_W 6
#define DST__K_SRC_INCRLNUM_B 7
#define DST__K_SRC_DEFLINES_W 10
#define DST__K_SRC_DEFLINES_B 11
#define DST__K_SRC_FORMFEED 16
struct vms_dst_src_decl_src
{
unsigned char length;
unsigned char flags;
unsigned char fileid[2];
unsigned char rms_cdt[8];
unsigned char rms_ebk[4];
unsigned char rms_ffb[2];
unsigned char rms_rfo;
/* Filename ASCIC. */
};
/* Record begin. */
#define DST__K_RECBEG 171
struct vms_dst_recbeg
{
unsigned char vflags;
unsigned char value[4];
/* Filename ASCIC. */
};
/* Record end. */
#define DST__K_RECEND 172
/* Enumeration begin. */
#define DST__K_ENUMBEG 165
/* Enumeration element. */
#define DST__K_ENUMELT 164
/* Enumeration end. */
#define DST__K_ENUMEND 166
/* Separate type specification. */
#define DST__K_SEPTYP 163
/* Type specification. */
#define DST__K_TYPSPEC 175
#define DST__K_TS_ATOM 1 /* Atomic. */
#define DST__K_TS_DSC 2 /* VMS Standard descriptor. */
#define DST__K_TS_IND 3 /* Indirect. */
#define DST__K_TS_TPTR 4 /* Typed pointer. */
#define DST__K_TS_PTR 5 /* Pointer. */
#define DST__K_TS_PIC 6 /* Pictured. */
#define DST__K_TS_ARRAY 7
#define DST__K_TS_SET 8
#define DST__K_TS_SUBRANGE 9 /* Subrange. */
#define DST__K_TS_ADA_DSC 10 /* Ada descriptor. */
#define DST__K_TS_FILE 11
#define DST__K_TS_AREA 12 /* Area (PL/I). */
#define DST__K_TS_OFFSET 13 /* Offset (PL/I). */
#define DST__K_TS_NOV_LENG 14 /* Novel Length. */
#define DST__K_TS_IND_TSPEC 15 /* Internal to debugger. */
#define DST__K_TS_SELF_REL_LABEL 16 /* Self-relative label (PL/I). */
#define DST__K_TS_RFA 17 /* (Basic). */
#define DST__K_TS_TASK 18 /* (Ada). */
#define DST__K_TS_ADA_ARRAY 19
#define DST__K_TS_XMOD_IND 20 /* Cross-module indirect type spec. */
#define DST__K_TS_CONSTRAINED 21 /* (Ada). */
#define DST__K_TS_MAYBE_CONSTR 22 /* Might-be-constrained (Ada). */
#define DST__K_TS_DYN_LOV_LENG 23
#define DST__K_TS_TPTR_D 24 /* Typed pointer to descriptor. */
#define DST__K_TS_SCAN_TREE 25
#define DST__K_TS_SCAN_TREEPTR 26
#define DST__K_TS_INCOMPLETE 27
#define DST__K_TS_BLISS_BLOCK 28
#define DST__K_TS_TPTR_64 29
#define DST__K_TS_PTR_64 30
#define DST__K_TS_REF 31 /* C++ referenced type. */
#define DST__K_TS_REF_64 32
/* Value Specification. */
#define DST__K_VFLAGS_NOVAL 128 /* No value. */
#define DST__K_VFLAGS_NOTACTIVE 248 /* Not active at current PC. */
#define DST__K_VFLAGS_UNALLOC 249 /* Not allocated. */
#define DST__K_VFLAGS_DSC 250 /* Descriptor format. */
#define DST__K_VFLAGS_TVS 251 /* Trailing value spec. */
#define DST__K_VS_FOLLOWS 253 /* Value specification follow. */
#define DST__K_VFLAGS_BITOFFS 255 /* Value is a bit offset. */
/* Vflags fields. */
#define DST__K_VALKIND_MASK 0x03
#define DST__K_INDIR 0x04
#define DST__K_DISP 0x08
#define DST__K_REGNUM_MASK 0xf0
#define DST__K_REGNUM_SHIFT 4
#define DST__K_VALKIND_LITERAL 0
#define DST__K_VALKIND_ADDR 1
#define DST__K_VALKIND_DESC 2
#define DST__K_VALKIND_REG 3
/* Label. */
#define DST__K_LABEL 187
struct vms_dst_label
{
unsigned char unused;
unsigned char value[4];
unsigned char name[1];
};
/* Discontiguous range. */
#define DST__K_DIS_RANGE 118
#endif /* _VMS_DST_H */
|