123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- /* Definitions for the data structures and codes used in VMS debugging.
- Copyright (C) 2001-2019 Free Software Foundation, Inc.
- This file is part of GCC.
- GCC is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free
- Software Foundation; either version 3, or (at your option) any later
- version.
- GCC is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- for more details.
- You should have received a copy of the GNU General Public License
- along with GCC; see the file COPYING3. If not see
- <http://www.gnu.org/licenses/>. */
- #ifndef GCC_VMSDBG_H
- #define GCC_VMSDBG_H 1
- /* We define types and constants used in VMS Debug output. Note that the
- structs only approximate the output that is written. We write the output
- explicitly, field by field. This output would only agree with the
- structs in this file if no padding were done. The sizes after each
- struct are the size actually written, which is usually smaller than the
- size of the struct. */
- /* Header type codes. */
- typedef enum _DST_TYPE {DST_K_TBG = 0x17,
- DST_K_SOURCE = 155, DST_K_PROLOG = 162,
- DST_K_BLKBEG = 176, DST_K_BLKEND = 177,
- DST_K_LINE_NUM = 185, DST_K_MODBEG = 188,
- DST_K_MODEND = 189, DST_K_RTNBEG = 190,
- DST_K_RTNEND = 191} DST_DTYPE;
- /* Header. */
- typedef struct _DST_HEADER
- {
- union
- {
- unsigned short int dst_w_length;
- unsigned short int dst_x_length;
- } dst__header_length;
- union
- {
- ENUM_BITFIELD (_DST_TYPE) dst_w_type : 16;
- ENUM_BITFIELD (_DST_TYPE) dst_x_type : 16;
- } dst__header_type;
- } DST_HEADER;
- #define DST_K_DST_HEADER_SIZE sizeof 4
- /* Language type codes. */
- typedef enum _DST_LANGUAGE {DST_K_FORTRAN = 1, DST_K_C = 7, DST_K_ADA = 9,
- DST_K_UNKNOWN = 10, DST_K_CXX = 15} DST_LANGUAGE;
- /* Module header (a module is the result of a single compilation). */
- typedef struct _DST_MODULE_BEGIN
- {
- DST_HEADER dst_a_modbeg_header;
- struct
- {
- unsigned dst_v_modbeg_hide : 1;
- unsigned dst_v_modbeg_version : 1;
- unsigned dst_v_modbeg_unused : 6;
- } dst_b_modbeg_flags;
- unsigned char dst_b_modbeg_unused;
- DST_LANGUAGE dst_l_modbeg_language;
- unsigned short int dst_w_version_major;
- unsigned short int dst_w_version_minor;
- unsigned char dst_b_modbeg_name;
- } DST_MODULE_BEGIN;
- #define DST_K_MODBEG_SIZE 15
- /* Module trailer. */
- typedef struct _DST_MB_TRLR
- {
- unsigned char dst_b_compiler;
- } DST_MB_TRLR;
- #define DST_K_MB_TRLR_SIZE 1
- #define DST_K_VERSION_MAJOR 1
- #define DST_K_VERSION_MINOR 13
- typedef struct _DST_MODULE_END
- {
- DST_HEADER dst_a_modend_header;
- } DST_MODULE_END;
- #define DST_K_MODEND_SIZE sizeof 4
- /* Routine header. */
- typedef struct _DST_ROUTINE_BEGIN
- {
- DST_HEADER dst_a_rtnbeg_header;
- struct
- {
- unsigned dst_v_rtnbeg_unused : 4;
- unsigned dst_v_rtnbeg_unalloc : 1;
- unsigned dst_v_rtnbeg_prototype : 1;
- unsigned dst_v_rtnbeg_inlined : 1;
- unsigned dst_v_rtnbeg_no_call : 1;
- } dst_b_rtnbeg_flags;
- int *dst_l_rtnbeg_address;
- int *dst_l_rtnbeg_pd_address;
- unsigned char dst_b_rtnbeg_name;
- } DST_ROUTINE_BEGIN;
- #define DST_K_RTNBEG_SIZE 14
- /* Routine trailer */
- typedef struct _DST_ROUTINE_END
- {
- DST_HEADER dst_a_rtnend_header;
- char dst_b_rtnend_unused;
- unsigned int dst_l_rtnend_size;
- } DST_ROUTINE_END;
- #define DST_K_RTNEND_SIZE 9
- /* Block header. */
- typedef struct _DST_BLOCK_BEGIN
- {
- DST_HEADER dst_a_blkbeg_header;
- unsigned char dst_b_blkbeg_unused;
- int *dst_l_blkbeg_address;
- unsigned char dst_b_blkbeg_name;
- } DST_BLOCK_BEGIN;
- #define DST_K_BLKBEG_SIZE 10
- /* Block trailer. */
- typedef struct _DST_BLOCK_END
- {
- DST_HEADER dst_a_blkend_header;
- unsigned char dst_b_blkend_unused;
- unsigned int dst_l_blkend_size;
- } DST_BLOCK_END;
- #define DST_K_BLKEND_SIZE 9
- /* Line number header. */
- typedef struct _DST_LINE_NUM_HEADER
- {
- DST_HEADER dst_a_line_num_header;
- } DST_LINE_NUM_HEADER;
- #define DST_K_LINE_NUM_HEADER_SIZE 4
- /* PC to Line number correlation. */
- typedef struct _DST_PCLINE_COMMANDS
- {
- char dst_b_pcline_command;
- union
- {
- unsigned int dst_l_pcline_unslong;
- unsigned short int dst_w_pcline_unsword;
- unsigned char dst_b_pcline_unsbyte;
- } dst_a_pcline_access_fields;
- } DST_PCLINE_COMMANDS;
- /* PC and Line number correlation codes. */
- #define DST_K_PCLINE_COMMANDS_SIZE 5
- #define DST_K_PCLINE_COMMANDS_SIZE_MIN 2
- #define DST_K_PCLINE_COMMANDS_SIZE_MAX 5
- #define DST_K_DELTA_PC_LOW -128
- #define DST_K_DELTA_PC_HIGH 0
- #define DST_K_DELTA_PC_W 1
- #define DST_K_INCR_LINUM 2
- #define DST_K_INCR_LINUM_W 3
- #define DST_K_SET_LINUM 9
- #define DST_K_SET_ABS_PC 16
- #define DST_K_DELTA_PC_L 17
- #define DST_K_INCR_LINUM_L 18
- #define DST_K_SET_LINUM_B 19
- #define DST_K_SET_LINUM_L 20
- /* Source file correlation header. */
- typedef struct _DST_SOURCE_CORR
- {
- DST_HEADER dst_a_source_corr_header;
- } DST_SOURCE_CORR;
- #define DST_K_SOURCE_CORR_HEADER_SIZE 4
- /* Source file correlation codes. */
- #define DST_K_SRC_DECLFILE 1
- #define DST_K_SRC_SETFILE 2
- #define DST_K_SRC_SETREC_L 3
- #define DST_K_SRC_SETREC_W 4
- #define DST_K_SRC_SETLNUM_L 5
- #define DST_K_SRC_SETLNUM_W 6
- #define DST_K_SRC_INCRLNUM_B 7
- #define DST_K_SRC_DEFLINES_W 10
- #define DST_K_SRC_DEFLINES_B 11
- #define DST_K_SRC_FORMFEED 16
- #define DST_K_SRC_MIN_CMD 1
- #define DST_K_SRC_MAX_CMD 16
- /* Source file header. */
- typedef struct _DST_SRC_COMMAND
- {
- unsigned char dst_b_src_command;
- union
- {
- struct
- {
- unsigned char dst_b_src_df_length;
- unsigned char dst_b_src_df_flags;
- unsigned short int dst_w_src_df_fileid;
- int64_t dst_q_src_df_rms_cdt;
- unsigned int dst_l_src_df_rms_ebk;
- unsigned short int dst_w_src_df_rms_ffb;
- unsigned char dst_b_src_df_rms_rfo;
- unsigned char dst_b_src_df_filename;
- } dst_a_src_decl_src;
- unsigned int dst_l_src_unslong;
- unsigned short int dst_w_src_unsword;
- unsigned char dst_b_src_unsbyte;
- } dst_a_src_cmd_fields;
- } DST_SRC_COMMAND;
- #define DST_K_SRC_COMMAND_SIZE 21
- /* Source file trailer. */
- typedef struct _DST_SRC_CMDTRLR
- {
- unsigned char dst_b_src_df_libmodname;
- } DST_SRC_CMDTRLR;
- #define DST_K_SRC_CMDTRLR_SIZE 1
- /* Prolog header. */
- typedef struct _DST_PROLOG
- {
- DST_HEADER dst_a_prolog_header;
- unsigned int dst_l_prolog_bkpt_addr;
- } DST_PROLOG;
- #define DST_K_PROLOG_SIZE 8
- #endif /* GCC_VMSDBG_H */
|