0
|
1 /* Definitions for the data structures and codes used in VMS debugging.
|
|
2 Copyright (C) 2001, 2007 Free Software Foundation, Inc.
|
|
3
|
|
4 This file is part of GCC.
|
|
5
|
|
6 GCC is free software; you can redistribute it and/or modify it under
|
|
7 the terms of the GNU General Public License as published by the Free
|
|
8 Software Foundation; either version 3, or (at your option) any later
|
|
9 version.
|
|
10
|
|
11 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
14 for more details.
|
|
15
|
|
16 You should have received a copy of the GNU General Public License
|
|
17 along with GCC; see the file COPYING3. If not see
|
|
18 <http://www.gnu.org/licenses/>. */
|
|
19
|
|
20 #ifndef GCC_VMSDBG_H
|
|
21 #define GCC_VMSDBG_H 1
|
|
22
|
|
23 /* We define types and constants used in VMS Debug output. Note that the
|
|
24 structs only approximate the output that is written. We write the output
|
|
25 explicitly, field by field. This output would only agree with the
|
|
26 structs in this file if no padding were done. The sizes after each
|
|
27 struct are the size actually written, which is usually smaller than the
|
|
28 size of the struct. */
|
|
29
|
|
30 /* Header type codes. */
|
|
31 typedef enum _DST_TYPE {DST_K_SOURCE = 155, DST_K_PROLOG = 162,
|
|
32 DST_K_BLKBEG = 176, DST_K_BLKEND = 177,
|
|
33 DST_K_LINE_NUM = 185, DST_K_MODBEG = 188,
|
|
34 DST_K_MODEND = 189, DST_K_RTNBEG = 190,
|
|
35 DST_K_RTNEND = 191} DST_DTYPE;
|
|
36
|
|
37 /* Header. */
|
|
38
|
|
39 typedef struct _DST_HEADER
|
|
40 {
|
|
41 union
|
|
42 {
|
|
43 unsigned short int dst_w_length;
|
|
44 unsigned short int dst_x_length;
|
|
45 } dst__header_length;
|
|
46 union
|
|
47 {
|
|
48 ENUM_BITFIELD (_DST_TYPE) dst_w_type : 16;
|
|
49 ENUM_BITFIELD (_DST_TYPE) dst_x_type : 16;
|
|
50 } dst__header_type;
|
|
51 } DST_HEADER;
|
|
52 #define DST_K_DST_HEADER_SIZE sizeof 4
|
|
53
|
|
54 /* Language type codes. */
|
|
55 typedef enum _DST_LANGUAGE {DST_K_FORTRAN = 1, DST_K_C = 7, DST_K_ADA = 9,
|
|
56 DST_K_UNKNOWN = 10, DST_K_CXX = 15} DST_LANGUAGE;
|
|
57
|
|
58 /* Module header (a module is the result of a single compilation). */
|
|
59
|
|
60 typedef struct _DST_MODULE_BEGIN
|
|
61 {
|
|
62 DST_HEADER dst_a_modbeg_header;
|
|
63 struct
|
|
64 {
|
|
65 unsigned dst_v_modbeg_hide : 1;
|
|
66 unsigned dst_v_modbeg_version : 1;
|
|
67 unsigned dst_v_modbeg_unused : 6;
|
|
68 } dst_b_modbeg_flags;
|
|
69 unsigned char dst_b_modbeg_unused;
|
|
70 DST_LANGUAGE dst_l_modbeg_language;
|
|
71 unsigned short int dst_w_version_major;
|
|
72 unsigned short int dst_w_version_minor;
|
|
73 unsigned char dst_b_modbeg_name;
|
|
74 } DST_MODULE_BEGIN;
|
|
75 #define DST_K_MODBEG_SIZE 15
|
|
76
|
|
77 /* Module trailer. */
|
|
78
|
|
79 typedef struct _DST_MB_TRLR
|
|
80 {
|
|
81 unsigned char dst_b_compiler;
|
|
82 } DST_MB_TRLR;
|
|
83
|
|
84 #define DST_K_MB_TRLR_SIZE 1
|
|
85
|
|
86 #define DST_K_VERSION_MAJOR 1
|
|
87 #define DST_K_VERSION_MINOR 13
|
|
88
|
|
89 typedef struct _DST_MODULE_END
|
|
90 {
|
|
91 DST_HEADER dst_a_modend_header;
|
|
92 } DST_MODULE_END;
|
|
93 #define DST_K_MODEND_SIZE sizeof 4
|
|
94
|
|
95 /* Routine header. */
|
|
96
|
|
97 typedef struct _DST_ROUTINE_BEGIN
|
|
98 {
|
|
99 DST_HEADER dst_a_rtnbeg_header;
|
|
100 struct
|
|
101 {
|
|
102 unsigned dst_v_rtnbeg_unused : 4;
|
|
103 unsigned dst_v_rtnbeg_unalloc : 1;
|
|
104 unsigned dst_v_rtnbeg_prototype : 1;
|
|
105 unsigned dst_v_rtnbeg_inlined : 1;
|
|
106 unsigned dst_v_rtnbeg_no_call : 1;
|
|
107 } dst_b_rtnbeg_flags;
|
|
108 int *dst_l_rtnbeg_address;
|
|
109 int *dst_l_rtnbeg_pd_address;
|
|
110 unsigned char dst_b_rtnbeg_name;
|
|
111 } DST_ROUTINE_BEGIN;
|
|
112 #define DST_K_RTNBEG_SIZE 14
|
|
113
|
|
114 /* Routine trailer */
|
|
115
|
|
116 typedef struct _DST_ROUTINE_END
|
|
117 {
|
|
118 DST_HEADER dst_a_rtnend_header;
|
|
119 char dst_b_rtnend_unused;
|
|
120 unsigned int dst_l_rtnend_size;
|
|
121 } DST_ROUTINE_END;
|
|
122 #define DST_K_RTNEND_SIZE 9
|
|
123
|
|
124 /* Block header. */
|
|
125
|
|
126 typedef struct _DST_BLOCK_BEGIN
|
|
127 {
|
|
128 DST_HEADER dst_a_blkbeg_header;
|
|
129 unsigned char dst_b_blkbeg_unused;
|
|
130 int *dst_l_blkbeg_address;
|
|
131 unsigned char dst_b_blkbeg_name;
|
|
132 } DST_BLOCK_BEGIN;
|
|
133 #define DST_K_BLKBEG_SIZE 10
|
|
134
|
|
135 /* Block trailer. */
|
|
136
|
|
137 typedef struct _DST_BLOCK_END
|
|
138 {
|
|
139 DST_HEADER dst_a_blkend_header;
|
|
140 unsigned char dst_b_blkend_unused;
|
|
141 unsigned int dst_l_blkend_size;
|
|
142 } DST_BLOCK_END;
|
|
143 #define DST_K_BLKEND_SIZE 9
|
|
144
|
|
145 /* Line number header. */
|
|
146
|
|
147 typedef struct _DST_LINE_NUM_HEADER
|
|
148 {
|
|
149 DST_HEADER dst_a_line_num_header;
|
|
150 } DST_LINE_NUM_HEADER;
|
|
151 #define DST_K_LINE_NUM_HEADER_SIZE 4
|
|
152
|
|
153 /* PC to Line number correlation. */
|
|
154
|
|
155 typedef struct _DST_PCLINE_COMMANDS
|
|
156 {
|
|
157 char dst_b_pcline_command;
|
|
158 union
|
|
159 {
|
|
160 unsigned int dst_l_pcline_unslong;
|
|
161 unsigned short int dst_w_pcline_unsword;
|
|
162 unsigned char dst_b_pcline_unsbyte;
|
|
163 } dst_a_pcline_access_fields;
|
|
164 } DST_PCLINE_COMMANDS;
|
|
165
|
|
166 /* PC and Line number correlation codes. */
|
|
167
|
|
168 #define DST_K_PCLINE_COMMANDS_SIZE 5
|
|
169 #define DST_K_PCLINE_COMMANDS_SIZE_MIN 2
|
|
170 #define DST_K_PCLINE_COMMANDS_SIZE_MAX 5
|
|
171 #define DST_K_DELTA_PC_LOW -128
|
|
172 #define DST_K_DELTA_PC_HIGH 0
|
|
173 #define DST_K_DELTA_PC_W 1
|
|
174 #define DST_K_INCR_LINUM 2
|
|
175 #define DST_K_INCR_LINUM_W 3
|
|
176 #define DST_K_SET_LINUM 9
|
|
177 #define DST_K_SET_ABS_PC 16
|
|
178 #define DST_K_DELTA_PC_L 17
|
|
179 #define DST_K_INCR_LINUM_L 18
|
|
180 #define DST_K_SET_LINUM_B 19
|
|
181 #define DST_K_SET_LINUM_L 20
|
|
182
|
|
183 /* Source file correlation header. */
|
|
184
|
|
185 typedef struct _DST_SOURCE_CORR
|
|
186 {
|
|
187 DST_HEADER dst_a_source_corr_header;
|
|
188 } DST_SOURCE_CORR;
|
|
189 #define DST_K_SOURCE_CORR_HEADER_SIZE 4
|
|
190
|
|
191 /* Source file correlation codes. */
|
|
192
|
|
193 #define DST_K_SRC_DECLFILE 1
|
|
194 #define DST_K_SRC_SETFILE 2
|
|
195 #define DST_K_SRC_SETREC_L 3
|
|
196 #define DST_K_SRC_SETREC_W 4
|
|
197 #define DST_K_SRC_SETLNUM_L 5
|
|
198 #define DST_K_SRC_SETLNUM_W 6
|
|
199 #define DST_K_SRC_INCRLNUM_B 7
|
|
200 #define DST_K_SRC_DEFLINES_W 10
|
|
201 #define DST_K_SRC_DEFLINES_B 11
|
|
202 #define DST_K_SRC_FORMFEED 16
|
|
203 #define DST_K_SRC_MIN_CMD 1
|
|
204 #define DST_K_SRC_MAX_CMD 16
|
|
205
|
|
206 /* Source file header. */
|
|
207
|
|
208 typedef struct _DST_SRC_COMMAND
|
|
209 {
|
|
210 unsigned char dst_b_src_command;
|
|
211 union
|
|
212 {
|
|
213 struct
|
|
214 {
|
|
215 unsigned char dst_b_src_df_length;
|
|
216 unsigned char dst_b_src_df_flags;
|
|
217 unsigned short int dst_w_src_df_fileid;
|
|
218 #ifdef HAVE_LONG_LONG
|
|
219 long long dst_q_src_df_rms_cdt;
|
|
220 #else
|
|
221 #ifdef HAVE___INT64
|
|
222 __int64 dst_q_src_df_rms_cdt;
|
|
223 #endif
|
|
224 #endif
|
|
225 unsigned int dst_l_src_df_rms_ebk;
|
|
226 unsigned short int dst_w_src_df_rms_ffb;
|
|
227 unsigned char dst_b_src_df_rms_rfo;
|
|
228 unsigned char dst_b_src_df_filename;
|
|
229 } dst_a_src_decl_src;
|
|
230 unsigned int dst_l_src_unslong;
|
|
231 unsigned short int dst_w_src_unsword;
|
|
232 unsigned char dst_b_src_unsbyte;
|
|
233 } dst_a_src_cmd_fields;
|
|
234 } DST_SRC_COMMAND;
|
|
235 #define DST_K_SRC_COMMAND_SIZE 21
|
|
236
|
|
237 /* Source file trailer. */
|
|
238
|
|
239 typedef struct _DST_SRC_CMDTRLR
|
|
240 {
|
|
241 unsigned char dst_b_src_df_libmodname;
|
|
242 } DST_SRC_CMDTRLR;
|
|
243 #define DST_K_SRC_CMDTRLR_SIZE 1
|
|
244
|
|
245 /* Prolog header. */
|
|
246
|
|
247 typedef struct _DST_PROLOG
|
|
248 {
|
|
249 DST_HEADER dst_a_prolog_header;
|
|
250 unsigned int dst_l_prolog_bkpt_addr;
|
|
251 } DST_PROLOG;
|
|
252 #define DST_K_PROLOG_SIZE 8
|
|
253
|
|
254 #endif /* GCC_VMSDBG_H */
|