xref: /netbsd-src/external/gpl3/gcc.old/dist/gcc/vmsdbg.h (revision 8feb0f0b7eaff0608f8350bbfa3098827b4bb91b)
11debfc3dSmrg /* Definitions for the data structures and codes used in VMS debugging.
2*8feb0f0bSmrg    Copyright (C) 2001-2020 Free Software Foundation, Inc.
31debfc3dSmrg 
41debfc3dSmrg This file is part of GCC.
51debfc3dSmrg 
61debfc3dSmrg GCC is free software; you can redistribute it and/or modify it under
71debfc3dSmrg the terms of the GNU General Public License as published by the Free
81debfc3dSmrg Software Foundation; either version 3, or (at your option) any later
91debfc3dSmrg version.
101debfc3dSmrg 
111debfc3dSmrg GCC is distributed in the hope that it will be useful, but WITHOUT ANY
121debfc3dSmrg WARRANTY; without even the implied warranty of MERCHANTABILITY or
131debfc3dSmrg FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
141debfc3dSmrg for more details.
151debfc3dSmrg 
161debfc3dSmrg You should have received a copy of the GNU General Public License
171debfc3dSmrg along with GCC; see the file COPYING3.  If not see
181debfc3dSmrg <http://www.gnu.org/licenses/>.  */
191debfc3dSmrg 
201debfc3dSmrg #ifndef GCC_VMSDBG_H
211debfc3dSmrg #define GCC_VMSDBG_H 1
221debfc3dSmrg 
231debfc3dSmrg /*  We define types and constants used in VMS Debug output.  Note that the
241debfc3dSmrg     structs only approximate the output that is written.  We write the output
251debfc3dSmrg     explicitly, field by field.  This output would only agree with the
261debfc3dSmrg     structs in this file if no padding were done.  The sizes after each
271debfc3dSmrg     struct are the size actually written, which is usually smaller than the
281debfc3dSmrg     size of the struct.  */
291debfc3dSmrg 
301debfc3dSmrg /* Header type codes.  */
311debfc3dSmrg typedef enum _DST_TYPE {DST_K_TBG = 0x17,
321debfc3dSmrg 			DST_K_SOURCE = 155, DST_K_PROLOG = 162,
331debfc3dSmrg 			DST_K_BLKBEG = 176, DST_K_BLKEND = 177,
341debfc3dSmrg 			DST_K_LINE_NUM = 185, DST_K_MODBEG = 188,
351debfc3dSmrg 			DST_K_MODEND = 189, DST_K_RTNBEG = 190,
361debfc3dSmrg 			DST_K_RTNEND = 191} DST_DTYPE;
371debfc3dSmrg 
381debfc3dSmrg /* Header.  */
391debfc3dSmrg 
401debfc3dSmrg typedef struct _DST_HEADER
411debfc3dSmrg {
421debfc3dSmrg   union
431debfc3dSmrg     {
441debfc3dSmrg       unsigned short int dst_w_length;
451debfc3dSmrg       unsigned short int dst_x_length;
461debfc3dSmrg     } dst__header_length;
471debfc3dSmrg   union
481debfc3dSmrg     {
491debfc3dSmrg       ENUM_BITFIELD (_DST_TYPE) dst_w_type : 16;
501debfc3dSmrg       ENUM_BITFIELD (_DST_TYPE) dst_x_type : 16;
511debfc3dSmrg     } dst__header_type;
521debfc3dSmrg } DST_HEADER;
531debfc3dSmrg #define DST_K_DST_HEADER_SIZE sizeof 4
541debfc3dSmrg 
551debfc3dSmrg /* Language type codes.  */
561debfc3dSmrg typedef enum _DST_LANGUAGE {DST_K_FORTRAN = 1, DST_K_C = 7, DST_K_ADA = 9,
571debfc3dSmrg 			    DST_K_UNKNOWN = 10, DST_K_CXX = 15} DST_LANGUAGE;
581debfc3dSmrg 
591debfc3dSmrg /* Module header (a module is the result of a single compilation).  */
601debfc3dSmrg 
611debfc3dSmrg typedef struct _DST_MODULE_BEGIN
621debfc3dSmrg {
631debfc3dSmrg   DST_HEADER dst_a_modbeg_header;
641debfc3dSmrg   struct
651debfc3dSmrg     {
661debfc3dSmrg       unsigned dst_v_modbeg_hide : 1;
671debfc3dSmrg       unsigned dst_v_modbeg_version : 1;
681debfc3dSmrg       unsigned dst_v_modbeg_unused : 6;
691debfc3dSmrg     } dst_b_modbeg_flags;
701debfc3dSmrg   unsigned char dst_b_modbeg_unused;
711debfc3dSmrg   DST_LANGUAGE dst_l_modbeg_language;
721debfc3dSmrg   unsigned short int dst_w_version_major;
731debfc3dSmrg   unsigned short int dst_w_version_minor;
741debfc3dSmrg   unsigned char dst_b_modbeg_name;
751debfc3dSmrg } DST_MODULE_BEGIN;
761debfc3dSmrg #define DST_K_MODBEG_SIZE 15
771debfc3dSmrg 
781debfc3dSmrg /* Module trailer.  */
791debfc3dSmrg 
801debfc3dSmrg typedef struct _DST_MB_TRLR
811debfc3dSmrg {
821debfc3dSmrg   unsigned char dst_b_compiler;
831debfc3dSmrg } DST_MB_TRLR;
841debfc3dSmrg 
851debfc3dSmrg #define DST_K_MB_TRLR_SIZE 1
861debfc3dSmrg 
871debfc3dSmrg #define DST_K_VERSION_MAJOR 1
881debfc3dSmrg #define DST_K_VERSION_MINOR 13
891debfc3dSmrg 
901debfc3dSmrg typedef struct _DST_MODULE_END
911debfc3dSmrg {
921debfc3dSmrg   DST_HEADER dst_a_modend_header;
931debfc3dSmrg } DST_MODULE_END;
941debfc3dSmrg #define DST_K_MODEND_SIZE sizeof 4
951debfc3dSmrg 
961debfc3dSmrg /* Routine header.  */
971debfc3dSmrg 
981debfc3dSmrg typedef struct _DST_ROUTINE_BEGIN
991debfc3dSmrg {
1001debfc3dSmrg   DST_HEADER dst_a_rtnbeg_header;
1011debfc3dSmrg   struct
1021debfc3dSmrg     {
1031debfc3dSmrg       unsigned dst_v_rtnbeg_unused : 4;
1041debfc3dSmrg       unsigned dst_v_rtnbeg_unalloc : 1;
1051debfc3dSmrg       unsigned dst_v_rtnbeg_prototype : 1;
1061debfc3dSmrg       unsigned dst_v_rtnbeg_inlined : 1;
1071debfc3dSmrg       unsigned dst_v_rtnbeg_no_call : 1;
1081debfc3dSmrg     } dst_b_rtnbeg_flags;
1091debfc3dSmrg   int *dst_l_rtnbeg_address;
1101debfc3dSmrg   int *dst_l_rtnbeg_pd_address;
1111debfc3dSmrg   unsigned char dst_b_rtnbeg_name;
1121debfc3dSmrg } DST_ROUTINE_BEGIN;
1131debfc3dSmrg #define DST_K_RTNBEG_SIZE 14
1141debfc3dSmrg 
1151debfc3dSmrg /* Routine trailer */
1161debfc3dSmrg 
1171debfc3dSmrg typedef struct _DST_ROUTINE_END
1181debfc3dSmrg {
1191debfc3dSmrg   DST_HEADER dst_a_rtnend_header;
1201debfc3dSmrg   char dst_b_rtnend_unused;
1211debfc3dSmrg   unsigned int dst_l_rtnend_size;
1221debfc3dSmrg } DST_ROUTINE_END;
1231debfc3dSmrg #define DST_K_RTNEND_SIZE 9
1241debfc3dSmrg 
1251debfc3dSmrg /* Block header.  */
1261debfc3dSmrg 
1271debfc3dSmrg typedef struct _DST_BLOCK_BEGIN
1281debfc3dSmrg {
1291debfc3dSmrg   DST_HEADER dst_a_blkbeg_header;
1301debfc3dSmrg   unsigned char dst_b_blkbeg_unused;
1311debfc3dSmrg   int *dst_l_blkbeg_address;
1321debfc3dSmrg   unsigned char dst_b_blkbeg_name;
1331debfc3dSmrg } DST_BLOCK_BEGIN;
1341debfc3dSmrg #define DST_K_BLKBEG_SIZE 10
1351debfc3dSmrg 
1361debfc3dSmrg /* Block trailer.  */
1371debfc3dSmrg 
1381debfc3dSmrg typedef struct _DST_BLOCK_END
1391debfc3dSmrg {
1401debfc3dSmrg   DST_HEADER dst_a_blkend_header;
1411debfc3dSmrg   unsigned char dst_b_blkend_unused;
1421debfc3dSmrg   unsigned int dst_l_blkend_size;
1431debfc3dSmrg } DST_BLOCK_END;
1441debfc3dSmrg #define DST_K_BLKEND_SIZE 9
1451debfc3dSmrg 
1461debfc3dSmrg /* Line number header.  */
1471debfc3dSmrg 
1481debfc3dSmrg typedef struct _DST_LINE_NUM_HEADER
1491debfc3dSmrg {
1501debfc3dSmrg   DST_HEADER dst_a_line_num_header;
1511debfc3dSmrg } DST_LINE_NUM_HEADER;
1521debfc3dSmrg #define DST_K_LINE_NUM_HEADER_SIZE 4
1531debfc3dSmrg 
1541debfc3dSmrg /* PC to Line number correlation.  */
1551debfc3dSmrg 
1561debfc3dSmrg typedef struct _DST_PCLINE_COMMANDS
1571debfc3dSmrg {
1581debfc3dSmrg   char dst_b_pcline_command;
1591debfc3dSmrg   union
1601debfc3dSmrg     {
1611debfc3dSmrg       unsigned int dst_l_pcline_unslong;
1621debfc3dSmrg       unsigned short int dst_w_pcline_unsword;
1631debfc3dSmrg       unsigned char dst_b_pcline_unsbyte;
1641debfc3dSmrg     } dst_a_pcline_access_fields;
1651debfc3dSmrg } DST_PCLINE_COMMANDS;
1661debfc3dSmrg 
1671debfc3dSmrg /* PC and Line number correlation codes.  */
1681debfc3dSmrg 
1691debfc3dSmrg #define DST_K_PCLINE_COMMANDS_SIZE 5
1701debfc3dSmrg #define DST_K_PCLINE_COMMANDS_SIZE_MIN 2
1711debfc3dSmrg #define DST_K_PCLINE_COMMANDS_SIZE_MAX 5
1721debfc3dSmrg #define DST_K_DELTA_PC_LOW -128
1731debfc3dSmrg #define DST_K_DELTA_PC_HIGH 0
1741debfc3dSmrg #define DST_K_DELTA_PC_W 1
1751debfc3dSmrg #define DST_K_INCR_LINUM 2
1761debfc3dSmrg #define DST_K_INCR_LINUM_W 3
1771debfc3dSmrg #define DST_K_SET_LINUM 9
1781debfc3dSmrg #define DST_K_SET_ABS_PC 16
1791debfc3dSmrg #define DST_K_DELTA_PC_L 17
1801debfc3dSmrg #define DST_K_INCR_LINUM_L 18
1811debfc3dSmrg #define DST_K_SET_LINUM_B 19
1821debfc3dSmrg #define DST_K_SET_LINUM_L 20
1831debfc3dSmrg 
1841debfc3dSmrg /* Source file correlation header.  */
1851debfc3dSmrg 
1861debfc3dSmrg typedef struct _DST_SOURCE_CORR
1871debfc3dSmrg {
1881debfc3dSmrg   DST_HEADER dst_a_source_corr_header;
1891debfc3dSmrg } DST_SOURCE_CORR;
1901debfc3dSmrg #define DST_K_SOURCE_CORR_HEADER_SIZE 4
1911debfc3dSmrg 
1921debfc3dSmrg /* Source file correlation codes.  */
1931debfc3dSmrg 
1941debfc3dSmrg #define DST_K_SRC_DECLFILE 1
1951debfc3dSmrg #define DST_K_SRC_SETFILE 2
1961debfc3dSmrg #define DST_K_SRC_SETREC_L 3
1971debfc3dSmrg #define DST_K_SRC_SETREC_W 4
1981debfc3dSmrg #define DST_K_SRC_SETLNUM_L 5
1991debfc3dSmrg #define DST_K_SRC_SETLNUM_W 6
2001debfc3dSmrg #define DST_K_SRC_INCRLNUM_B 7
2011debfc3dSmrg #define DST_K_SRC_DEFLINES_W 10
2021debfc3dSmrg #define DST_K_SRC_DEFLINES_B 11
2031debfc3dSmrg #define DST_K_SRC_FORMFEED 16
2041debfc3dSmrg #define DST_K_SRC_MIN_CMD 1
2051debfc3dSmrg #define DST_K_SRC_MAX_CMD 16
2061debfc3dSmrg 
2071debfc3dSmrg /* Source file header.  */
2081debfc3dSmrg 
2091debfc3dSmrg typedef struct _DST_SRC_COMMAND
2101debfc3dSmrg {
2111debfc3dSmrg   unsigned char dst_b_src_command;
2121debfc3dSmrg   union
2131debfc3dSmrg     {
2141debfc3dSmrg       struct
2151debfc3dSmrg 	{
2161debfc3dSmrg 	  unsigned char dst_b_src_df_length;
2171debfc3dSmrg 	  unsigned char dst_b_src_df_flags;
2181debfc3dSmrg 	  unsigned short int dst_w_src_df_fileid;
2191debfc3dSmrg 	  int64_t dst_q_src_df_rms_cdt;
2201debfc3dSmrg 	  unsigned int dst_l_src_df_rms_ebk;
2211debfc3dSmrg 	  unsigned short int dst_w_src_df_rms_ffb;
2221debfc3dSmrg 	  unsigned char dst_b_src_df_rms_rfo;
2231debfc3dSmrg 	  unsigned char dst_b_src_df_filename;
2241debfc3dSmrg 	} dst_a_src_decl_src;
2251debfc3dSmrg       unsigned int dst_l_src_unslong;
2261debfc3dSmrg       unsigned short int dst_w_src_unsword;
2271debfc3dSmrg       unsigned char dst_b_src_unsbyte;
2281debfc3dSmrg     } dst_a_src_cmd_fields;
2291debfc3dSmrg } DST_SRC_COMMAND;
2301debfc3dSmrg #define DST_K_SRC_COMMAND_SIZE 21
2311debfc3dSmrg 
2321debfc3dSmrg /* Source file trailer.  */
2331debfc3dSmrg 
2341debfc3dSmrg typedef struct _DST_SRC_CMDTRLR
2351debfc3dSmrg {
2361debfc3dSmrg   unsigned char dst_b_src_df_libmodname;
2371debfc3dSmrg } DST_SRC_CMDTRLR;
2381debfc3dSmrg #define DST_K_SRC_CMDTRLR_SIZE 1
2391debfc3dSmrg 
2401debfc3dSmrg /* Prolog header.  */
2411debfc3dSmrg 
2421debfc3dSmrg typedef struct _DST_PROLOG
2431debfc3dSmrg {
2441debfc3dSmrg   DST_HEADER dst_a_prolog_header;
2451debfc3dSmrg   unsigned int dst_l_prolog_bkpt_addr;
2461debfc3dSmrg } DST_PROLOG;
2471debfc3dSmrg #define DST_K_PROLOG_SIZE 8
2481debfc3dSmrg 
2491debfc3dSmrg #endif /* GCC_VMSDBG_H */
250