Upload Tizen:Base source
[external/binutils.git] / include / vms / dst.h
1 /* Alpha VMS external format of Debug Symbol Table.
2
3    Copyright 2010 Free Software Foundation, Inc.
4    Written by Tristan Gingold <gingold@adacore.com>, AdaCore.
5
6    This file is part of BFD, the Binary File Descriptor library.
7
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 3 of the License, or
11    (at your option) any later version.
12
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, write to the Free Software
20    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
21    MA 02110-1301, USA.  */
22
23 #ifndef _VMS_DST_H
24 #define _VMS_DST_H
25
26 /* Also available in vms freeware v5.0 debug/alpha_dstrecrds.sdl.  */
27
28 struct vms_dst_header
29 {
30   /* Length.  */
31   unsigned char length[2];
32
33   /* Type.  */
34   unsigned char type[2];
35 };
36
37 /* Beginning of module.  */
38 #define DST__K_MODBEG 188
39
40 /* Some well known languages.  */
41 #define DST__K_MACRO    0
42 #define DST__K_BLISS    2
43 #define DST__K_C        7
44 #define DST__K_ADA      9
45 #define DST__K_CXX      15
46
47 struct vms_dst_modbeg
48 {
49   unsigned char flags;
50   unsigned char unused;
51   unsigned char language[4];
52   unsigned char major[2];
53   unsigned char minor[2];
54   /* Module name ASCIC.  */
55   /* Ident name ASCIC.  */
56 };
57
58 /* Routine begin.  */
59 #define DST__K_RTNBEG 190
60
61 struct vms_dst_rtnbeg
62 {
63   unsigned char flags;
64
65   /* Address of the code.  */
66   unsigned char address[4];
67
68   /* Procedure descriptor address.  */
69   unsigned char pd_address[4];
70
71   /* Name: ASCIC  */
72 };
73
74 /* Line number.  */
75 #define DST__K_LINE_NUM 185
76
77 struct vms_dst_pcline
78 {
79   unsigned char pcline_command;
80   unsigned char field[4];
81 };
82
83 #define DST__K_DELTA_PC_W       1
84 #define DST__K_INCR_LINUM       2
85 #define DST__K_INCR_LINUM_W     3
86 #define DST__K_SET_LINUM_INCR   4
87 #define DST__K_SET_LINUM_INCR_W 5
88 #define DST__K_RESET_LINUM_INCR 6
89 #define DST__K_BEG_STMT_MODE    7
90 #define DST__K_END_STMT_MODE    8
91 #define DST__K_SET_LINUM        9
92 #define DST__K_SET_PC           10
93 #define DST__K_SET_PC_W         11
94 #define DST__K_SET_PC_L         12
95 #define DST__K_SET_STMTNUM      13
96 #define DST__K_TERM             14
97 #define DST__K_TERM_W           15
98 #define DST__K_SET_ABS_PC       16
99 #define DST__K_DELTA_PC_L       17
100 #define DST__K_INCR_LINUM_L     18
101 #define DST__K_SET_LINUM_B      19
102 #define DST__K_SET_LINUM_L      20
103 #define DST__K_TERM_L           21
104
105 /* Routine end.  */
106 #define DST__K_RTNEND 191
107
108 struct vms_dst_rtnend
109 {
110   unsigned char unused;
111   unsigned char size[4];
112 };
113
114 /* Prologue.  */
115 #define DST__K_PROLOG 162
116
117 struct vms_dst_prolog
118 {
119   unsigned char bkpt_addr[4];
120 };
121
122 /* Epilog.  */
123 #define DST__K_EPILOG 127
124
125 struct vms_dst_epilog
126 {
127   unsigned char flags;
128   unsigned char count[4];
129 };
130
131 /* Module end.  */
132 #define DST__K_MODEND 189
133
134 /* Block begin.  */
135 #define DST__K_BLKBEG 176
136
137 struct vms_dst_blkbeg
138 {
139   unsigned char unused;
140   unsigned char address[4];
141   /* Name ASCIC.  */
142 };
143
144 /* Block end.  */
145 #define DST__K_BLKEND 177
146
147 struct vms_dst_blkend
148 {
149   unsigned char unused;
150   unsigned char size[4];
151 };
152
153 /* Source correlation.  */
154 #define DST__K_SOURCE 155
155
156 #define DST__K_SRC_DECLFILE    1
157 #define DST__K_SRC_SETFILE     2
158 #define DST__K_SRC_SETREC_L    3
159 #define DST__K_SRC_SETREC_W    4
160 #define DST__K_SRC_SETLNUM_L   5
161 #define DST__K_SRC_SETLNUM_W   6
162 #define DST__K_SRC_INCRLNUM_B  7
163 #define DST__K_SRC_DEFLINES_W 10
164 #define DST__K_SRC_DEFLINES_B 11
165 #define DST__K_SRC_FORMFEED   16
166
167 struct vms_dst_src_decl_src
168 {
169   unsigned char length;
170   unsigned char flags;
171   unsigned char fileid[2];
172   unsigned char rms_cdt[8];
173   unsigned char rms_ebk[4];
174   unsigned char rms_ffb[2];
175   unsigned char rms_rfo;
176   /* Filename ASCIC.  */
177 };
178
179 /* Record begin.  */
180 #define DST__K_RECBEG 171
181
182 struct vms_dst_recbeg
183 {
184   unsigned char vflags;
185   unsigned char value[4];
186   /* Filename ASCIC.  */
187 };
188
189 /* Record end.  */
190 #define DST__K_RECEND 172
191
192 /* Enumeration begin.  */
193 #define DST__K_ENUMBEG 165
194
195 /* Enumeration element.  */
196 #define DST__K_ENUMELT 164
197
198 /* Enumeration end.  */
199 #define DST__K_ENUMEND 166
200
201 /* Separate type specification.  */
202 #define DST__K_SEPTYP 163
203
204 /* Type specification.  */
205 #define DST__K_TYPSPEC 175
206
207 #define DST__K_TS_ATOM          1       /* Atomic.  */
208 #define DST__K_TS_DSC           2       /* VMS Standard descriptor.  */
209 #define DST__K_TS_IND           3       /* Indirect.  */
210 #define DST__K_TS_TPTR          4       /* Typed pointer.  */
211 #define DST__K_TS_PTR           5       /* Pointer.  */
212 #define DST__K_TS_PIC           6       /* Pictured.  */
213 #define DST__K_TS_ARRAY         7
214 #define DST__K_TS_SET           8
215 #define DST__K_TS_SUBRANGE      9       /* Subrange.  */
216 #define DST__K_TS_ADA_DSC      10       /* Ada descriptor.  */
217 #define DST__K_TS_FILE         11
218 #define DST__K_TS_AREA         12       /* Area (PL/I).  */
219 #define DST__K_TS_OFFSET       13       /* Offset (PL/I).  */
220 #define DST__K_TS_NOV_LENG     14       /* Novel Length.  */
221 #define DST__K_TS_IND_TSPEC    15       /* Internal to debugger.  */
222 #define DST__K_TS_SELF_REL_LABEL 16     /* Self-relative label (PL/I).  */
223 #define DST__K_TS_RFA          17       /* (Basic).  */
224 #define DST__K_TS_TASK         18       /* (Ada).  */
225 #define DST__K_TS_ADA_ARRAY    19
226 #define DST__K_TS_XMOD_IND     20       /* Cross-module indirect type spec.  */
227 #define DST__K_TS_CONSTRAINED  21       /* (Ada).  */
228 #define DST__K_TS_MAYBE_CONSTR 22       /* Might-be-constrained (Ada).  */
229 #define DST__K_TS_DYN_LOV_LENG 23
230 #define DST__K_TS_TPTR_D       24       /* Typed pointer to descriptor.  */
231 #define DST__K_TS_SCAN_TREE    25
232 #define DST__K_TS_SCAN_TREEPTR 26
233 #define DST__K_TS_INCOMPLETE   27
234 #define DST__K_TS_BLISS_BLOCK  28
235 #define DST__K_TS_TPTR_64      29
236 #define DST__K_TS_PTR_64       30
237 #define DST__K_TS_REF          31       /* C++ referenced type.  */
238 #define DST__K_TS_REF_64       32
239
240 /* Value Specification.  */
241 #define DST__K_VFLAGS_NOVAL     128 /* No value.  */
242 #define DST__K_VFLAGS_NOTACTIVE 248 /* Not active at current PC.  */
243 #define DST__K_VFLAGS_UNALLOC   249 /* Not allocated.  */
244 #define DST__K_VFLAGS_DSC       250 /* Descriptor format.  */
245 #define DST__K_VFLAGS_TVS       251 /* Trailing value spec.  */
246 #define DST__K_VS_FOLLOWS       253 /* Value specification follow.  */
247 #define DST__K_VFLAGS_BITOFFS   255 /* Value is a bit offset.  */
248
249 /* Vflags fields.  */
250 #define DST__K_VALKIND_MASK 0x03
251 #define DST__K_INDIR        0x04
252 #define DST__K_DISP         0x08
253 #define DST__K_REGNUM_MASK  0xf0
254 #define DST__K_REGNUM_SHIFT  4
255
256 #define DST__K_VALKIND_LITERAL 0
257 #define DST__K_VALKIND_ADDR    1
258 #define DST__K_VALKIND_DESC    2
259 #define DST__K_VALKIND_REG     3
260
261 /* Label.  */
262 #define DST__K_LABEL 187
263
264 struct vms_dst_label
265 {
266   unsigned char unused;
267
268   unsigned char value[4];
269   unsigned char name[1];
270 };
271
272 /* Discontiguous range.  */
273 #define DST__K_DIS_RANGE 118
274 #endif /* _VMS_DST_H */