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