1/* Alpha VMS external format of Debug Symbol Table. 2 3 Copyright 2010 Free Software Foundation, Inc. 4 Written by Tristan Gingold <gingold@adacore.com>, AdaCore. 5 6 This file is part of BFD, the Binary File Descriptor library. 7 8 This program is free software; you can redistribute it and/or modify 9 it under the terms of the GNU General Public License as published by 10 the Free Software Foundation; either version 3 of the License, or 11 (at your option) any later version. 12 13 This program is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with this program; if not, write to the Free Software 20 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 21 MA 02110-1301, USA. */ 22 23#ifndef _VMS_DST_H 24#define _VMS_DST_H 25 26/* Also available in vms freeware v5.0 debug/alpha_dstrecrds.sdl. */ 27 28struct vms_dst_header 29{ 30 /* Length. */ 31 unsigned char length[2]; 32 33 /* Type. */ 34 unsigned char type[2]; 35}; 36 37/* Beginning of module. */ 38#define DST__K_MODBEG 188 39 40/* Some well known languages. */ 41#define DST__K_MACRO 0 42#define DST__K_BLISS 2 43#define DST__K_C 7 44#define DST__K_ADA 9 45#define DST__K_CXX 15 46 47struct vms_dst_modbeg 48{ 49 unsigned char flags; 50 unsigned char unused; 51 unsigned char language[4]; 52 unsigned char major[2]; 53 unsigned char minor[2]; 54 /* Module name ASCIC. */ 55 /* Ident name ASCIC. */ 56}; 57 58/* Routine begin. */ 59#define DST__K_RTNBEG 190 60 61struct vms_dst_rtnbeg 62{ 63 unsigned char flags; 64 65 /* Address of the code. */ 66 unsigned char address[4]; 67 68 /* Procedure descriptor address. */ 69 unsigned char pd_address[4]; 70 71 /* Name: ASCIC */ 72}; 73 74/* Line number. */ 75#define DST__K_LINE_NUM 185 76 77struct vms_dst_pcline 78{ 79 unsigned char pcline_command; 80 unsigned char field[4]; 81}; 82 83#define DST__K_DELTA_PC_W 1 84#define DST__K_INCR_LINUM 2 85#define DST__K_INCR_LINUM_W 3 86#define DST__K_SET_LINUM_INCR 4 87#define DST__K_SET_LINUM_INCR_W 5 88#define DST__K_RESET_LINUM_INCR 6 89#define DST__K_BEG_STMT_MODE 7 90#define DST__K_END_STMT_MODE 8 91#define DST__K_SET_LINUM 9 92#define DST__K_SET_PC 10 93#define DST__K_SET_PC_W 11 94#define DST__K_SET_PC_L 12 95#define DST__K_SET_STMTNUM 13 96#define DST__K_TERM 14 97#define DST__K_TERM_W 15 98#define DST__K_SET_ABS_PC 16 99#define DST__K_DELTA_PC_L 17 100#define DST__K_INCR_LINUM_L 18 101#define DST__K_SET_LINUM_B 19 102#define DST__K_SET_LINUM_L 20 103#define DST__K_TERM_L 21 104 105/* Routine end. */ 106#define DST__K_RTNEND 191 107 108struct vms_dst_rtnend 109{ 110 unsigned char unused; 111 unsigned char size[4]; 112}; 113 114/* Prologue. */ 115#define DST__K_PROLOG 162 116 117struct vms_dst_prolog 118{ 119 unsigned char bkpt_addr[4]; 120}; 121 122/* Epilog. */ 123#define DST__K_EPILOG 127 124 125struct vms_dst_epilog 126{ 127 unsigned char flags; 128 unsigned char count[4]; 129}; 130 131/* Module end. */ 132#define DST__K_MODEND 189 133 134/* Block begin. */ 135#define DST__K_BLKBEG 176 136 137struct vms_dst_blkbeg 138{ 139 unsigned char unused; 140 unsigned char address[4]; 141 /* Name ASCIC. */ 142}; 143 144/* Block end. */ 145#define DST__K_BLKEND 177 146 147struct vms_dst_blkend 148{ 149 unsigned char unused; 150 unsigned char size[4]; 151}; 152 153/* Source correlation. */ 154#define DST__K_SOURCE 155 155 156#define DST__K_SRC_DECLFILE 1 157#define DST__K_SRC_SETFILE 2 158#define DST__K_SRC_SETREC_L 3 159#define DST__K_SRC_SETREC_W 4 160#define DST__K_SRC_SETLNUM_L 5 161#define DST__K_SRC_SETLNUM_W 6 162#define DST__K_SRC_INCRLNUM_B 7 163#define DST__K_SRC_DEFLINES_W 10 164#define DST__K_SRC_DEFLINES_B 11 165#define DST__K_SRC_FORMFEED 16 166 167struct vms_dst_src_decl_src 168{ 169 unsigned char length; 170 unsigned char flags; 171 unsigned char fileid[2]; 172 unsigned char rms_cdt[8]; 173 unsigned char rms_ebk[4]; 174 unsigned char rms_ffb[2]; 175 unsigned char rms_rfo; 176 /* Filename ASCIC. */ 177}; 178 179/* Record begin. */ 180#define DST__K_RECBEG 171 181 182struct vms_dst_recbeg 183{ 184 unsigned char vflags; 185 unsigned char value[4]; 186 /* Filename ASCIC. */ 187}; 188 189/* Record end. */ 190#define DST__K_RECEND 172 191 192/* Enumeration begin. */ 193#define DST__K_ENUMBEG 165 194 195/* Enumeration element. */ 196#define DST__K_ENUMELT 164 197 198/* Enumeration end. */ 199#define DST__K_ENUMEND 166 200 201/* Separate type specification. */ 202#define DST__K_SEPTYP 163 203 204/* Type specification. */ 205#define DST__K_TYPSPEC 175 206 207#define DST__K_TS_ATOM 1 /* Atomic. */ 208#define DST__K_TS_DSC 2 /* VMS Standard descriptor. */ 209#define DST__K_TS_IND 3 /* Indirect. */ 210#define DST__K_TS_TPTR 4 /* Typed pointer. */ 211#define DST__K_TS_PTR 5 /* Pointer. */ 212#define DST__K_TS_PIC 6 /* Pictured. */ 213#define DST__K_TS_ARRAY 7 214#define DST__K_TS_SET 8 215#define DST__K_TS_SUBRANGE 9 /* Subrange. */ 216#define DST__K_TS_ADA_DSC 10 /* Ada descriptor. */ 217#define DST__K_TS_FILE 11 218#define DST__K_TS_AREA 12 /* Area (PL/I). */ 219#define DST__K_TS_OFFSET 13 /* Offset (PL/I). */ 220#define DST__K_TS_NOV_LENG 14 /* Novel Length. */ 221#define DST__K_TS_IND_TSPEC 15 /* Internal to debugger. */ 222#define DST__K_TS_SELF_REL_LABEL 16 /* Self-relative label (PL/I). */ 223#define DST__K_TS_RFA 17 /* (Basic). */ 224#define DST__K_TS_TASK 18 /* (Ada). */ 225#define DST__K_TS_ADA_ARRAY 19 226#define DST__K_TS_XMOD_IND 20 /* Cross-module indirect type spec. */ 227#define DST__K_TS_CONSTRAINED 21 /* (Ada). */ 228#define DST__K_TS_MAYBE_CONSTR 22 /* Might-be-constrained (Ada). */ 229#define DST__K_TS_DYN_LOV_LENG 23 230#define DST__K_TS_TPTR_D 24 /* Typed pointer to descriptor. */ 231#define DST__K_TS_SCAN_TREE 25 232#define DST__K_TS_SCAN_TREEPTR 26 233#define DST__K_TS_INCOMPLETE 27 234#define DST__K_TS_BLISS_BLOCK 28 235#define DST__K_TS_TPTR_64 29 236#define DST__K_TS_PTR_64 30 237#define DST__K_TS_REF 31 /* C++ referenced type. */ 238#define DST__K_TS_REF_64 32 239 240/* Value Specification. */ 241#define DST__K_VFLAGS_NOVAL 128 /* No value. */ 242#define DST__K_VFLAGS_NOTACTIVE 248 /* Not active at current PC. */ 243#define DST__K_VFLAGS_UNALLOC 249 /* Not allocated. */ 244#define DST__K_VFLAGS_DSC 250 /* Descriptor format. */ 245#define DST__K_VFLAGS_TVS 251 /* Trailing value spec. */ 246#define DST__K_VS_FOLLOWS 253 /* Value specification follow. */ 247#define DST__K_VFLAGS_BITOFFS 255 /* Value is a bit offset. */ 248 249/* Vflags fields. */ 250#define DST__K_VALKIND_MASK 0x03 251#define DST__K_INDIR 0x04 252#define DST__K_DISP 0x08 253#define DST__K_REGNUM_MASK 0xf0 254#define DST__K_REGNUM_SHIFT 4 255 256#define DST__K_VALKIND_LITERAL 0 257#define DST__K_VALKIND_ADDR 1 258#define DST__K_VALKIND_DESC 2 259#define DST__K_VALKIND_REG 3 260 261/* Label. */ 262#define DST__K_LABEL 187 263 264struct vms_dst_label 265{ 266 unsigned char unused; 267 268 unsigned char value[4]; 269 unsigned char name[1]; 270}; 271 272/* Discontiguous range. */ 273#define DST__K_DIS_RANGE 118 274#endif /* _VMS_DST_H */ 275