250 lines
6.4 KiB
C
250 lines
6.4 KiB
C
|
/* Definitions for the data structures and codes used in VMS debugging.
|
||
|
Copyright (C) 2001-2023 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 */
|