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