forked from KolibriOS/kolibrios
275 lines
6.7 KiB
C
275 lines
6.7 KiB
C
|
/* Alpha VMS external format of Debug Symbol Table.
|
||
|
|
||
|
Copyright 2010 Free Software Foundation, Inc.
|
||
|
Written by Tristan Gingold <gingold@adacore.com>, AdaCore.
|
||
|
|
||
|
This file is part of BFD, the Binary File Descriptor library.
|
||
|
|
||
|
This program 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 of the License, or
|
||
|
(at your option) any later version.
|
||
|
|
||
|
This program 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 this program; if not, write to the Free Software
|
||
|
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||
|
MA 02110-1301, USA. */
|
||
|
|
||
|
#ifndef _VMS_DST_H
|
||
|
#define _VMS_DST_H
|
||
|
|
||
|
/* Also available in vms freeware v5.0 debug/alpha_dstrecrds.sdl. */
|
||
|
|
||
|
struct vms_dst_header
|
||
|
{
|
||
|
/* Length. */
|
||
|
unsigned char length[2];
|
||
|
|
||
|
/* Type. */
|
||
|
unsigned char type[2];
|
||
|
};
|
||
|
|
||
|
/* Beginning of module. */
|
||
|
#define DST__K_MODBEG 188
|
||
|
|
||
|
/* Some well known languages. */
|
||
|
#define DST__K_MACRO 0
|
||
|
#define DST__K_BLISS 2
|
||
|
#define DST__K_C 7
|
||
|
#define DST__K_ADA 9
|
||
|
#define DST__K_CXX 15
|
||
|
|
||
|
struct vms_dst_modbeg
|
||
|
{
|
||
|
unsigned char flags;
|
||
|
unsigned char unused;
|
||
|
unsigned char language[4];
|
||
|
unsigned char major[2];
|
||
|
unsigned char minor[2];
|
||
|
/* Module name ASCIC. */
|
||
|
/* Ident name ASCIC. */
|
||
|
};
|
||
|
|
||
|
/* Routine begin. */
|
||
|
#define DST__K_RTNBEG 190
|
||
|
|
||
|
struct vms_dst_rtnbeg
|
||
|
{
|
||
|
unsigned char flags;
|
||
|
|
||
|
/* Address of the code. */
|
||
|
unsigned char address[4];
|
||
|
|
||
|
/* Procedure descriptor address. */
|
||
|
unsigned char pd_address[4];
|
||
|
|
||
|
/* Name: ASCIC */
|
||
|
};
|
||
|
|
||
|
/* Line number. */
|
||
|
#define DST__K_LINE_NUM 185
|
||
|
|
||
|
struct vms_dst_pcline
|
||
|
{
|
||
|
unsigned char pcline_command;
|
||
|
unsigned char field[4];
|
||
|
};
|
||
|
|
||
|
#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_INCR 4
|
||
|
#define DST__K_SET_LINUM_INCR_W 5
|
||
|
#define DST__K_RESET_LINUM_INCR 6
|
||
|
#define DST__K_BEG_STMT_MODE 7
|
||
|
#define DST__K_END_STMT_MODE 8
|
||
|
#define DST__K_SET_LINUM 9
|
||
|
#define DST__K_SET_PC 10
|
||
|
#define DST__K_SET_PC_W 11
|
||
|
#define DST__K_SET_PC_L 12
|
||
|
#define DST__K_SET_STMTNUM 13
|
||
|
#define DST__K_TERM 14
|
||
|
#define DST__K_TERM_W 15
|
||
|
#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
|
||
|
#define DST__K_TERM_L 21
|
||
|
|
||
|
/* Routine end. */
|
||
|
#define DST__K_RTNEND 191
|
||
|
|
||
|
struct vms_dst_rtnend
|
||
|
{
|
||
|
unsigned char unused;
|
||
|
unsigned char size[4];
|
||
|
};
|
||
|
|
||
|
/* Prologue. */
|
||
|
#define DST__K_PROLOG 162
|
||
|
|
||
|
struct vms_dst_prolog
|
||
|
{
|
||
|
unsigned char bkpt_addr[4];
|
||
|
};
|
||
|
|
||
|
/* Epilog. */
|
||
|
#define DST__K_EPILOG 127
|
||
|
|
||
|
struct vms_dst_epilog
|
||
|
{
|
||
|
unsigned char flags;
|
||
|
unsigned char count[4];
|
||
|
};
|
||
|
|
||
|
/* Module end. */
|
||
|
#define DST__K_MODEND 189
|
||
|
|
||
|
/* Block begin. */
|
||
|
#define DST__K_BLKBEG 176
|
||
|
|
||
|
struct vms_dst_blkbeg
|
||
|
{
|
||
|
unsigned char unused;
|
||
|
unsigned char address[4];
|
||
|
/* Name ASCIC. */
|
||
|
};
|
||
|
|
||
|
/* Block end. */
|
||
|
#define DST__K_BLKEND 177
|
||
|
|
||
|
struct vms_dst_blkend
|
||
|
{
|
||
|
unsigned char unused;
|
||
|
unsigned char size[4];
|
||
|
};
|
||
|
|
||
|
/* Source correlation. */
|
||
|
#define DST__K_SOURCE 155
|
||
|
|
||
|
#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
|
||
|
|
||
|
struct vms_dst_src_decl_src
|
||
|
{
|
||
|
unsigned char length;
|
||
|
unsigned char flags;
|
||
|
unsigned char fileid[2];
|
||
|
unsigned char rms_cdt[8];
|
||
|
unsigned char rms_ebk[4];
|
||
|
unsigned char rms_ffb[2];
|
||
|
unsigned char rms_rfo;
|
||
|
/* Filename ASCIC. */
|
||
|
};
|
||
|
|
||
|
/* Record begin. */
|
||
|
#define DST__K_RECBEG 171
|
||
|
|
||
|
struct vms_dst_recbeg
|
||
|
{
|
||
|
unsigned char vflags;
|
||
|
unsigned char value[4];
|
||
|
/* Filename ASCIC. */
|
||
|
};
|
||
|
|
||
|
/* Record end. */
|
||
|
#define DST__K_RECEND 172
|
||
|
|
||
|
/* Enumeration begin. */
|
||
|
#define DST__K_ENUMBEG 165
|
||
|
|
||
|
/* Enumeration element. */
|
||
|
#define DST__K_ENUMELT 164
|
||
|
|
||
|
/* Enumeration end. */
|
||
|
#define DST__K_ENUMEND 166
|
||
|
|
||
|
/* Separate type specification. */
|
||
|
#define DST__K_SEPTYP 163
|
||
|
|
||
|
/* Type specification. */
|
||
|
#define DST__K_TYPSPEC 175
|
||
|
|
||
|
#define DST__K_TS_ATOM 1 /* Atomic. */
|
||
|
#define DST__K_TS_DSC 2 /* VMS Standard descriptor. */
|
||
|
#define DST__K_TS_IND 3 /* Indirect. */
|
||
|
#define DST__K_TS_TPTR 4 /* Typed pointer. */
|
||
|
#define DST__K_TS_PTR 5 /* Pointer. */
|
||
|
#define DST__K_TS_PIC 6 /* Pictured. */
|
||
|
#define DST__K_TS_ARRAY 7
|
||
|
#define DST__K_TS_SET 8
|
||
|
#define DST__K_TS_SUBRANGE 9 /* Subrange. */
|
||
|
#define DST__K_TS_ADA_DSC 10 /* Ada descriptor. */
|
||
|
#define DST__K_TS_FILE 11
|
||
|
#define DST__K_TS_AREA 12 /* Area (PL/I). */
|
||
|
#define DST__K_TS_OFFSET 13 /* Offset (PL/I). */
|
||
|
#define DST__K_TS_NOV_LENG 14 /* Novel Length. */
|
||
|
#define DST__K_TS_IND_TSPEC 15 /* Internal to debugger. */
|
||
|
#define DST__K_TS_SELF_REL_LABEL 16 /* Self-relative label (PL/I). */
|
||
|
#define DST__K_TS_RFA 17 /* (Basic). */
|
||
|
#define DST__K_TS_TASK 18 /* (Ada). */
|
||
|
#define DST__K_TS_ADA_ARRAY 19
|
||
|
#define DST__K_TS_XMOD_IND 20 /* Cross-module indirect type spec. */
|
||
|
#define DST__K_TS_CONSTRAINED 21 /* (Ada). */
|
||
|
#define DST__K_TS_MAYBE_CONSTR 22 /* Might-be-constrained (Ada). */
|
||
|
#define DST__K_TS_DYN_LOV_LENG 23
|
||
|
#define DST__K_TS_TPTR_D 24 /* Typed pointer to descriptor. */
|
||
|
#define DST__K_TS_SCAN_TREE 25
|
||
|
#define DST__K_TS_SCAN_TREEPTR 26
|
||
|
#define DST__K_TS_INCOMPLETE 27
|
||
|
#define DST__K_TS_BLISS_BLOCK 28
|
||
|
#define DST__K_TS_TPTR_64 29
|
||
|
#define DST__K_TS_PTR_64 30
|
||
|
#define DST__K_TS_REF 31 /* C++ referenced type. */
|
||
|
#define DST__K_TS_REF_64 32
|
||
|
|
||
|
/* Value Specification. */
|
||
|
#define DST__K_VFLAGS_NOVAL 128 /* No value. */
|
||
|
#define DST__K_VFLAGS_NOTACTIVE 248 /* Not active at current PC. */
|
||
|
#define DST__K_VFLAGS_UNALLOC 249 /* Not allocated. */
|
||
|
#define DST__K_VFLAGS_DSC 250 /* Descriptor format. */
|
||
|
#define DST__K_VFLAGS_TVS 251 /* Trailing value spec. */
|
||
|
#define DST__K_VS_FOLLOWS 253 /* Value specification follow. */
|
||
|
#define DST__K_VFLAGS_BITOFFS 255 /* Value is a bit offset. */
|
||
|
|
||
|
/* Vflags fields. */
|
||
|
#define DST__K_VALKIND_MASK 0x03
|
||
|
#define DST__K_INDIR 0x04
|
||
|
#define DST__K_DISP 0x08
|
||
|
#define DST__K_REGNUM_MASK 0xf0
|
||
|
#define DST__K_REGNUM_SHIFT 4
|
||
|
|
||
|
#define DST__K_VALKIND_LITERAL 0
|
||
|
#define DST__K_VALKIND_ADDR 1
|
||
|
#define DST__K_VALKIND_DESC 2
|
||
|
#define DST__K_VALKIND_REG 3
|
||
|
|
||
|
/* Label. */
|
||
|
#define DST__K_LABEL 187
|
||
|
|
||
|
struct vms_dst_label
|
||
|
{
|
||
|
unsigned char unused;
|
||
|
|
||
|
unsigned char value[4];
|
||
|
unsigned char name[1];
|
||
|
};
|
||
|
|
||
|
/* Discontiguous range. */
|
||
|
#define DST__K_DIS_RANGE 118
|
||
|
#endif /* _VMS_DST_H */
|