2010-02-17 Tristan Gingold <gingold@adacore.com>
[external/binutils.git] / include / vms / dst.h
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
28 struct 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
46 struct vms_dst_modbeg
47 {
48   unsigned char flags;
49   unsigned char unused;
50   unsigned char language[4];
51   unsigned char major[2];
52   unsigned char minor[2];
53   /* Module name ASCIC.  */
54   /* Ident name ASCIC.  */
55 };
56
57 /* Routine begin.  */
58 #define DST__K_RTNBEG 190
59
60 struct vms_dst_rtnbeg
61 {
62   unsigned char flags;
63
64   /* Address of the code.  */
65   unsigned char address[4];
66
67   /* Procedure descriptor address.  */
68   unsigned char pd_address[4];
69
70   /* Name: ASCIC  */
71 };
72
73 /* Line number.  */
74 #define DST__K_LINE_NUM 185
75
76 struct vms_dst_pcline
77 {
78   unsigned char pcline_command;
79   unsigned char field[4];
80 };
81
82 #define DST__K_DELTA_PC_W 1
83 #define DST__K_INCR_LINUM 2
84 #define DST__K_INCR_LINUM_W 3
85 #define DST__K_SET_LINUM  9
86 #define DST__K_SET_LINUM_B 19
87 #define DST__K_SET_LINUM_L 20
88 #define DST__K_TERM 14
89 #define DST__K_SET_ABS_PC 16
90 #define DST__K_DELTA_PC_L 17
91
92 /* Routine end.  */
93 #define DST__K_RTNEND 191
94
95 struct vms_dst_rtnend
96 {
97   unsigned char unused;
98   unsigned char size[4];
99 };
100
101 /* Prologue.  */
102 #define DST__K_PROLOG 162
103
104 struct vms_dst_prolog
105 {
106   unsigned char bkpt_addr[4];
107 };
108
109 /* Epilog.  */
110 #define DST__K_EPILOG 127
111
112 struct vms_dst_epilog
113 {
114   unsigned char flags;
115   unsigned char count[4];
116 };
117
118 /* Module end.  */
119 #define DST__K_MODEND 189
120
121 /* Block begin.  */
122 #define DST__K_BLKBEG 176
123
124 struct vms_dst_blkbeg
125 {
126   unsigned char unused;
127   unsigned char address[4];
128   /* Name ASCIC.  */
129 };
130
131 /* Block end.  */
132 #define DST__K_BLKEND 177
133
134 struct vms_dst_blkend
135 {
136   unsigned char unused;
137   unsigned char size[4];
138 };
139
140 /* Source correlation.  */
141 #define DST__K_SOURCE 155
142
143 #define DST__K_SRC_DECLFILE    1
144 #define DST__K_SRC_SETFILE     2
145 #define DST__K_SRC_SETREC_L    3
146 #define DST__K_SRC_SETREC_W    4
147 #define DST__K_SRC_SETLNUM_L   5
148 #define DST__K_SRC_SETLNUM_W   6
149 #define DST__K_SRC_DEFLINES_W 10
150 #define DST__K_SRC_DEFLINES_B 11
151 #define DST__K_SRC_FORMFEED   16
152
153 struct vms_dst_src_decl_src
154 {
155   unsigned char length;
156   unsigned char flags;
157   unsigned char fileid[2];
158   unsigned char rms_cdt[8];
159   unsigned char rms_ebk[4];
160   unsigned char rms_ffb[2];
161   unsigned char rms_rfo;
162   /* Filename ASCIC.  */
163 };
164
165 #endif /* _VMS_DST_H */