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