Preserving locations for variable-uses and constants (PR c++/43486)
[official-gcc.git] / gcc / vmsdbg.h
blob55b4eedcdb3367bcd616b1c5d7472050637ae0d1
1 /* Definitions for the data structures and codes used in VMS debugging.
2 Copyright (C) 2001-2018 Free Software Foundation, Inc.
4 This file is part of GCC.
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.
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.
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/>. */
20 #ifndef GCC_VMSDBG_H
21 #define GCC_VMSDBG_H 1
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. */
30 /* Header type codes. */
31 typedef enum _DST_TYPE {DST_K_TBG = 0x17,
32 DST_K_SOURCE = 155, DST_K_PROLOG = 162,
33 DST_K_BLKBEG = 176, DST_K_BLKEND = 177,
34 DST_K_LINE_NUM = 185, DST_K_MODBEG = 188,
35 DST_K_MODEND = 189, DST_K_RTNBEG = 190,
36 DST_K_RTNEND = 191} DST_DTYPE;
38 /* Header. */
40 typedef struct _DST_HEADER
42 union
44 unsigned short int dst_w_length;
45 unsigned short int dst_x_length;
46 } dst__header_length;
47 union
49 ENUM_BITFIELD (_DST_TYPE) dst_w_type : 16;
50 ENUM_BITFIELD (_DST_TYPE) dst_x_type : 16;
51 } dst__header_type;
52 } DST_HEADER;
53 #define DST_K_DST_HEADER_SIZE sizeof 4
55 /* Language type codes. */
56 typedef enum _DST_LANGUAGE {DST_K_FORTRAN = 1, DST_K_C = 7, DST_K_ADA = 9,
57 DST_K_UNKNOWN = 10, DST_K_CXX = 15} DST_LANGUAGE;
59 /* Module header (a module is the result of a single compilation). */
61 typedef struct _DST_MODULE_BEGIN
63 DST_HEADER dst_a_modbeg_header;
64 struct
66 unsigned dst_v_modbeg_hide : 1;
67 unsigned dst_v_modbeg_version : 1;
68 unsigned dst_v_modbeg_unused : 6;
69 } dst_b_modbeg_flags;
70 unsigned char dst_b_modbeg_unused;
71 DST_LANGUAGE dst_l_modbeg_language;
72 unsigned short int dst_w_version_major;
73 unsigned short int dst_w_version_minor;
74 unsigned char dst_b_modbeg_name;
75 } DST_MODULE_BEGIN;
76 #define DST_K_MODBEG_SIZE 15
78 /* Module trailer. */
80 typedef struct _DST_MB_TRLR
82 unsigned char dst_b_compiler;
83 } DST_MB_TRLR;
85 #define DST_K_MB_TRLR_SIZE 1
87 #define DST_K_VERSION_MAJOR 1
88 #define DST_K_VERSION_MINOR 13
90 typedef struct _DST_MODULE_END
92 DST_HEADER dst_a_modend_header;
93 } DST_MODULE_END;
94 #define DST_K_MODEND_SIZE sizeof 4
96 /* Routine header. */
98 typedef struct _DST_ROUTINE_BEGIN
100 DST_HEADER dst_a_rtnbeg_header;
101 struct
103 unsigned dst_v_rtnbeg_unused : 4;
104 unsigned dst_v_rtnbeg_unalloc : 1;
105 unsigned dst_v_rtnbeg_prototype : 1;
106 unsigned dst_v_rtnbeg_inlined : 1;
107 unsigned dst_v_rtnbeg_no_call : 1;
108 } dst_b_rtnbeg_flags;
109 int *dst_l_rtnbeg_address;
110 int *dst_l_rtnbeg_pd_address;
111 unsigned char dst_b_rtnbeg_name;
112 } DST_ROUTINE_BEGIN;
113 #define DST_K_RTNBEG_SIZE 14
115 /* Routine trailer */
117 typedef struct _DST_ROUTINE_END
119 DST_HEADER dst_a_rtnend_header;
120 char dst_b_rtnend_unused;
121 unsigned int dst_l_rtnend_size;
122 } DST_ROUTINE_END;
123 #define DST_K_RTNEND_SIZE 9
125 /* Block header. */
127 typedef struct _DST_BLOCK_BEGIN
129 DST_HEADER dst_a_blkbeg_header;
130 unsigned char dst_b_blkbeg_unused;
131 int *dst_l_blkbeg_address;
132 unsigned char dst_b_blkbeg_name;
133 } DST_BLOCK_BEGIN;
134 #define DST_K_BLKBEG_SIZE 10
136 /* Block trailer. */
138 typedef struct _DST_BLOCK_END
140 DST_HEADER dst_a_blkend_header;
141 unsigned char dst_b_blkend_unused;
142 unsigned int dst_l_blkend_size;
143 } DST_BLOCK_END;
144 #define DST_K_BLKEND_SIZE 9
146 /* Line number header. */
148 typedef struct _DST_LINE_NUM_HEADER
150 DST_HEADER dst_a_line_num_header;
151 } DST_LINE_NUM_HEADER;
152 #define DST_K_LINE_NUM_HEADER_SIZE 4
154 /* PC to Line number correlation. */
156 typedef struct _DST_PCLINE_COMMANDS
158 char dst_b_pcline_command;
159 union
161 unsigned int dst_l_pcline_unslong;
162 unsigned short int dst_w_pcline_unsword;
163 unsigned char dst_b_pcline_unsbyte;
164 } dst_a_pcline_access_fields;
165 } DST_PCLINE_COMMANDS;
167 /* PC and Line number correlation codes. */
169 #define DST_K_PCLINE_COMMANDS_SIZE 5
170 #define DST_K_PCLINE_COMMANDS_SIZE_MIN 2
171 #define DST_K_PCLINE_COMMANDS_SIZE_MAX 5
172 #define DST_K_DELTA_PC_LOW -128
173 #define DST_K_DELTA_PC_HIGH 0
174 #define DST_K_DELTA_PC_W 1
175 #define DST_K_INCR_LINUM 2
176 #define DST_K_INCR_LINUM_W 3
177 #define DST_K_SET_LINUM 9
178 #define DST_K_SET_ABS_PC 16
179 #define DST_K_DELTA_PC_L 17
180 #define DST_K_INCR_LINUM_L 18
181 #define DST_K_SET_LINUM_B 19
182 #define DST_K_SET_LINUM_L 20
184 /* Source file correlation header. */
186 typedef struct _DST_SOURCE_CORR
188 DST_HEADER dst_a_source_corr_header;
189 } DST_SOURCE_CORR;
190 #define DST_K_SOURCE_CORR_HEADER_SIZE 4
192 /* Source file correlation codes. */
194 #define DST_K_SRC_DECLFILE 1
195 #define DST_K_SRC_SETFILE 2
196 #define DST_K_SRC_SETREC_L 3
197 #define DST_K_SRC_SETREC_W 4
198 #define DST_K_SRC_SETLNUM_L 5
199 #define DST_K_SRC_SETLNUM_W 6
200 #define DST_K_SRC_INCRLNUM_B 7
201 #define DST_K_SRC_DEFLINES_W 10
202 #define DST_K_SRC_DEFLINES_B 11
203 #define DST_K_SRC_FORMFEED 16
204 #define DST_K_SRC_MIN_CMD 1
205 #define DST_K_SRC_MAX_CMD 16
207 /* Source file header. */
209 typedef struct _DST_SRC_COMMAND
211 unsigned char dst_b_src_command;
212 union
214 struct
216 unsigned char dst_b_src_df_length;
217 unsigned char dst_b_src_df_flags;
218 unsigned short int dst_w_src_df_fileid;
219 int64_t dst_q_src_df_rms_cdt;
220 unsigned int dst_l_src_df_rms_ebk;
221 unsigned short int dst_w_src_df_rms_ffb;
222 unsigned char dst_b_src_df_rms_rfo;
223 unsigned char dst_b_src_df_filename;
224 } dst_a_src_decl_src;
225 unsigned int dst_l_src_unslong;
226 unsigned short int dst_w_src_unsword;
227 unsigned char dst_b_src_unsbyte;
228 } dst_a_src_cmd_fields;
229 } DST_SRC_COMMAND;
230 #define DST_K_SRC_COMMAND_SIZE 21
232 /* Source file trailer. */
234 typedef struct _DST_SRC_CMDTRLR
236 unsigned char dst_b_src_df_libmodname;
237 } DST_SRC_CMDTRLR;
238 #define DST_K_SRC_CMDTRLR_SIZE 1
240 /* Prolog header. */
242 typedef struct _DST_PROLOG
244 DST_HEADER dst_a_prolog_header;
245 unsigned int dst_l_prolog_bkpt_addr;
246 } DST_PROLOG;
247 #define DST_K_PROLOG_SIZE 8
249 #endif /* GCC_VMSDBG_H */