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