190075Sobrien/* Definitions for the data structures and codes used in VMS debugging. 290075Sobrien Copyright (C) 2001 Free Software Foundation, Inc. 390075Sobrien 490075SobrienThis file is part of GCC. 590075Sobrien 690075SobrienGCC is free software; you can redistribute it and/or modify it under 790075Sobrienthe terms of the GNU General Public License as published by the Free 890075SobrienSoftware Foundation; either version 2, or (at your option) any later 990075Sobrienversion. 1090075Sobrien 1190075SobrienGCC is distributed in the hope that it will be useful, but WITHOUT ANY 1290075SobrienWARRANTY; without even the implied warranty of MERCHANTABILITY or 1390075SobrienFITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1490075Sobrienfor more details. 1590075Sobrien 1690075SobrienYou should have received a copy of the GNU General Public License 1790075Sobrienalong with GCC; see the file COPYING. If not, write to the Free 18169689SkanSoftware Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 19169689Skan02110-1301, USA. */ 2090075Sobrien 2190075Sobrien#ifndef GCC_VMSDBG_H 2290075Sobrien#define GCC_VMSDBG_H 1 2390075Sobrien 2490075Sobrien/* We define types and constants used in VMS Debug output. Note that the 2590075Sobrien structs only approximate the output that is written. We write the output 2690075Sobrien explicitly, field by field. This output would only agree with the 2790075Sobrien structs in this file if no padding were done. The sizes after each 2890075Sobrien struct are the size actually written, which is usually smaller than the 2990075Sobrien size of the struct. */ 3090075Sobrien 3190075Sobrien/* Header type codes. */ 3290075Sobrientypedef enum _DST_TYPE {DST_K_SOURCE = 155, DST_K_PROLOG = 162, 3390075Sobrien DST_K_BLKBEG = 176, DST_K_BLKEND = 177, 3490075Sobrien DST_K_LINE_NUM = 185, DST_K_MODBEG = 188, 3590075Sobrien DST_K_MODEND = 189, DST_K_RTNBEG = 190, 3690075Sobrien DST_K_RTNEND = 191} DST_DTYPE; 3790075Sobrien 3890075Sobrien/* Header. */ 3990075Sobrien 4090075Sobrientypedef struct _DST_HEADER 4190075Sobrien{ 4290075Sobrien union 4390075Sobrien { 4490075Sobrien unsigned short int dst_w_length; 4590075Sobrien unsigned short int dst_x_length; 4690075Sobrien } dst__header_length; 4790075Sobrien union 4890075Sobrien { 4990075Sobrien ENUM_BITFIELD (_DST_TYPE) dst_w_type : 16; 5090075Sobrien ENUM_BITFIELD (_DST_TYPE) dst_x_type : 16; 5190075Sobrien } dst__header_type; 5290075Sobrien} DST_HEADER; 5390075Sobrien#define DST_K_DST_HEADER_SIZE sizeof 4 5490075Sobrien 5590075Sobrien/* Language type codes. */ 5690075Sobrientypedef enum _DST_LANGUAGE {DST_K_FORTRAN = 1, DST_K_C = 7, DST_K_ADA = 9, 5790075Sobrien DST_K_UNKNOWN = 10, DST_K_CXX = 15} DST_LANGUAGE; 5890075Sobrien 5990075Sobrien/* Module header (a module is the result of a single compilation). */ 6090075Sobrien 6190075Sobrientypedef struct _DST_MODULE_BEGIN 6290075Sobrien{ 6390075Sobrien DST_HEADER dst_a_modbeg_header; 6490075Sobrien struct 6590075Sobrien { 6690075Sobrien unsigned dst_v_modbeg_hide : 1; 6790075Sobrien unsigned dst_v_modbeg_version : 1; 6890075Sobrien unsigned dst_v_modbeg_unused : 6; 6990075Sobrien } dst_b_modbeg_flags; 7090075Sobrien unsigned char dst_b_modbeg_unused; 7190075Sobrien DST_LANGUAGE dst_l_modbeg_language; 7290075Sobrien unsigned short int dst_w_version_major; 7390075Sobrien unsigned short int dst_w_version_minor; 7490075Sobrien unsigned char dst_b_modbeg_name; 7590075Sobrien} DST_MODULE_BEGIN; 7690075Sobrien#define DST_K_MODBEG_SIZE 15 7790075Sobrien 7890075Sobrien/* Module trailer. */ 7990075Sobrien 8090075Sobrientypedef struct _DST_MB_TRLR 8190075Sobrien{ 8290075Sobrien unsigned char dst_b_compiler; 8390075Sobrien} DST_MB_TRLR; 8490075Sobrien 8590075Sobrien#define DST_K_MB_TRLR_SIZE 1 8690075Sobrien 8790075Sobrien#define DST_K_VERSION_MAJOR 1 8890075Sobrien#define DST_K_VERSION_MINOR 13 8990075Sobrien 9090075Sobrientypedef struct _DST_MODULE_END 9190075Sobrien{ 9290075Sobrien DST_HEADER dst_a_modend_header; 9390075Sobrien} DST_MODULE_END; 9490075Sobrien#define DST_K_MODEND_SIZE sizeof 4 9590075Sobrien 9690075Sobrien/* Routine header. */ 9790075Sobrien 9890075Sobrientypedef struct _DST_ROUTINE_BEGIN 9990075Sobrien{ 10090075Sobrien DST_HEADER dst_a_rtnbeg_header; 10190075Sobrien struct 10290075Sobrien { 10390075Sobrien unsigned dst_v_rtnbeg_unused : 4; 10490075Sobrien unsigned dst_v_rtnbeg_unalloc : 1; 10590075Sobrien unsigned dst_v_rtnbeg_prototype : 1; 10690075Sobrien unsigned dst_v_rtnbeg_inlined : 1; 10790075Sobrien unsigned dst_v_rtnbeg_no_call : 1; 10890075Sobrien } dst_b_rtnbeg_flags; 10990075Sobrien int *dst_l_rtnbeg_address; 11090075Sobrien int *dst_l_rtnbeg_pd_address; 11190075Sobrien unsigned char dst_b_rtnbeg_name; 11290075Sobrien} DST_ROUTINE_BEGIN; 11390075Sobrien#define DST_K_RTNBEG_SIZE 14 11490075Sobrien 11590075Sobrien/* Routine trailer */ 11690075Sobrien 11790075Sobrientypedef struct _DST_ROUTINE_END 11890075Sobrien{ 11990075Sobrien DST_HEADER dst_a_rtnend_header; 12090075Sobrien char dst_b_rtnend_unused; 12190075Sobrien unsigned int dst_l_rtnend_size; 12290075Sobrien} DST_ROUTINE_END; 12390075Sobrien#define DST_K_RTNEND_SIZE 9 12490075Sobrien 12590075Sobrien/* Block header. */ 12690075Sobrien 12790075Sobrientypedef struct _DST_BLOCK_BEGIN 12890075Sobrien{ 12990075Sobrien DST_HEADER dst_a_blkbeg_header; 13090075Sobrien unsigned char dst_b_blkbeg_unused; 13190075Sobrien int *dst_l_blkbeg_address; 13290075Sobrien unsigned char dst_b_blkbeg_name; 13390075Sobrien} DST_BLOCK_BEGIN; 13490075Sobrien#define DST_K_BLKBEG_SIZE 10 13590075Sobrien 13690075Sobrien/* Block trailer. */ 13790075Sobrien 13890075Sobrientypedef struct _DST_BLOCK_END 13990075Sobrien{ 14090075Sobrien DST_HEADER dst_a_blkend_header; 14190075Sobrien unsigned char dst_b_blkend_unused; 14290075Sobrien unsigned int dst_l_blkend_size; 14390075Sobrien} DST_BLOCK_END; 14490075Sobrien#define DST_K_BLKEND_SIZE 9 14590075Sobrien 14690075Sobrien/* Line number header. */ 14790075Sobrien 14890075Sobrientypedef struct _DST_LINE_NUM_HEADER 14990075Sobrien{ 15090075Sobrien DST_HEADER dst_a_line_num_header; 15190075Sobrien} DST_LINE_NUM_HEADER; 15290075Sobrien#define DST_K_LINE_NUM_HEADER_SIZE 4 15390075Sobrien 15490075Sobrien/* PC to Line number correlation. */ 15590075Sobrien 15690075Sobrientypedef struct _DST_PCLINE_COMMANDS 15790075Sobrien{ 15890075Sobrien char dst_b_pcline_command; 15990075Sobrien union 16090075Sobrien { 16190075Sobrien unsigned int dst_l_pcline_unslong; 16290075Sobrien unsigned short int dst_w_pcline_unsword; 16390075Sobrien unsigned char dst_b_pcline_unsbyte; 16490075Sobrien } dst_a_pcline_access_fields; 16590075Sobrien} DST_PCLINE_COMMANDS; 16690075Sobrien 16790075Sobrien/* PC and Line number correlation codes. */ 16890075Sobrien 16990075Sobrien#define DST_K_PCLINE_COMMANDS_SIZE 5 17090075Sobrien#define DST_K_PCLINE_COMMANDS_SIZE_MIN 2 17190075Sobrien#define DST_K_PCLINE_COMMANDS_SIZE_MAX 5 17290075Sobrien#define DST_K_DELTA_PC_LOW -128 17390075Sobrien#define DST_K_DELTA_PC_HIGH 0 17490075Sobrien#define DST_K_DELTA_PC_W 1 17590075Sobrien#define DST_K_INCR_LINUM 2 17690075Sobrien#define DST_K_INCR_LINUM_W 3 17790075Sobrien#define DST_K_SET_LINUM 9 17890075Sobrien#define DST_K_SET_ABS_PC 16 17990075Sobrien#define DST_K_DELTA_PC_L 17 18090075Sobrien#define DST_K_INCR_LINUM_L 18 18190075Sobrien#define DST_K_SET_LINUM_B 19 18290075Sobrien#define DST_K_SET_LINUM_L 20 18390075Sobrien 18490075Sobrien/* Source file correlation header. */ 18590075Sobrien 18690075Sobrientypedef struct _DST_SOURCE_CORR 18790075Sobrien{ 18890075Sobrien DST_HEADER dst_a_source_corr_header; 18990075Sobrien} DST_SOURCE_CORR; 19090075Sobrien#define DST_K_SOURCE_CORR_HEADER_SIZE 4 19190075Sobrien 19290075Sobrien/* Source file correlation codes. */ 193117395Skan 19490075Sobrien#define DST_K_SRC_DECLFILE 1 19590075Sobrien#define DST_K_SRC_SETFILE 2 19690075Sobrien#define DST_K_SRC_SETREC_L 3 19790075Sobrien#define DST_K_SRC_SETREC_W 4 19890075Sobrien#define DST_K_SRC_SETLNUM_L 5 19990075Sobrien#define DST_K_SRC_SETLNUM_W 6 20090075Sobrien#define DST_K_SRC_INCRLNUM_B 7 20190075Sobrien#define DST_K_SRC_DEFLINES_W 10 20290075Sobrien#define DST_K_SRC_DEFLINES_B 11 20390075Sobrien#define DST_K_SRC_FORMFEED 16 20490075Sobrien#define DST_K_SRC_MIN_CMD 1 20590075Sobrien#define DST_K_SRC_MAX_CMD 16 20690075Sobrien 20790075Sobrien/* Source file header. */ 20890075Sobrien 20990075Sobrientypedef struct _DST_SRC_COMMAND 21090075Sobrien{ 21190075Sobrien unsigned char dst_b_src_command; 21290075Sobrien union 21390075Sobrien { 21490075Sobrien struct 21590075Sobrien { 21690075Sobrien unsigned char dst_b_src_df_length; 21790075Sobrien unsigned char dst_b_src_df_flags; 21890075Sobrien unsigned short int dst_w_src_df_fileid; 21990075Sobrien#ifdef HAVE_LONG_LONG 22090075Sobrien long long dst_q_src_df_rms_cdt; 22190075Sobrien#else 22290075Sobrien#ifdef HAVE___INT64 22390075Sobrien __int64 dst_q_src_df_rms_cdt; 22490075Sobrien#endif 22590075Sobrien#endif 22690075Sobrien unsigned int dst_l_src_df_rms_ebk; 22790075Sobrien unsigned short int dst_w_src_df_rms_ffb; 22890075Sobrien unsigned char dst_b_src_df_rms_rfo; 22990075Sobrien unsigned char dst_b_src_df_filename; 23090075Sobrien } dst_a_src_decl_src; 23190075Sobrien unsigned int dst_l_src_unslong; 23290075Sobrien unsigned short int dst_w_src_unsword; 23390075Sobrien unsigned char dst_b_src_unsbyte; 23490075Sobrien } dst_a_src_cmd_fields; 23590075Sobrien} DST_SRC_COMMAND; 23690075Sobrien#define DST_K_SRC_COMMAND_SIZE 21 23790075Sobrien 23890075Sobrien/* Source file trailer. */ 23990075Sobrien 24090075Sobrientypedef struct _DST_SRC_CMDTRLR 24190075Sobrien{ 24290075Sobrien unsigned char dst_b_src_df_libmodname; 24390075Sobrien} DST_SRC_CMDTRLR; 24490075Sobrien#define DST_K_SRC_CMDTRLR_SIZE 1 24590075Sobrien 24690075Sobrien/* Prolog header. */ 24790075Sobrien 24890075Sobrientypedef struct _DST_PROLOG 24990075Sobrien{ 25090075Sobrien DST_HEADER dst_a_prolog_header; 25190075Sobrien unsigned int dst_l_prolog_bkpt_addr; 25290075Sobrien} DST_PROLOG; 25390075Sobrien#define DST_K_PROLOG_SIZE 8 254117395Skan 25590075Sobrien#endif /* GCC_VMSDBG_H */ 256