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