some cleanup of vms code -- sizeof usage &c
[deliverable/binutils-gdb.git] / gas / config / obj-vms.h
1 /* VMS object file format
2 Copyright (C) 1989, 1990, 1991, 1994 Free Software Foundation, Inc.
3
4 This file is part of GAS, the GNU Assembler.
5
6 GAS is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as
8 published by the Free Software Foundation; either version 2,
9 or (at your option) any later version.
10
11 GAS is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
14 the GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public
17 License along with GAS; see the file COPYING. If not, write
18 to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
19
20 /* Tag to validate a.out object file format processing */
21 #define OBJ_VMS 1
22
23 #include "targ-cpu.h"
24
25 /* This macro controls subsection alignment within a section.
26 *
27 * Under VAX/VMS, the linker (and PSECT specifications)
28 * take care of correctly aligning the segments.
29 * Doing the alignment here (on initialized data) can
30 * mess up the calculation of global data PSECT sizes.
31 */
32 #define SUB_SEGMENT_ALIGN(SEG) (((SEG) == data_section) ? 0 : 2)
33
34 /* This flag is used to remember whether we are in the const or the
35 data section. By and large they are identical, but we set a no-write
36 bit for psects in the const section. */
37
38 extern char const_flag;
39
40 /* This is overloaded onto const_flag, for convenience. It's used to flag
41 dummy labels like "gcc2_compiled." which occur before the first .text
42 or .data section directive. */
43
44 #define IN_DEFAULT_SECTION 0x80
45
46 /* Compiler-generated label "__vax_g_doubles" is used to augment .stabs. */
47
48 #define tc_frob_label(X) vms_check_for_special_label(X)
49 extern void vms_check_for_special_label();
50
51 /* These are defined in obj-vms.c. */
52 extern const short seg_N_TYPE[];
53 extern const segT N_TYPE_seg[];
54
55 #undef NO_RELOC
56 enum reloc_type
57 {
58 NO_RELOC, RELOC_32
59 };
60
61 #define N_BADMAG(x) (0)
62 #define N_TXTOFF(x) ( sizeof(struct exec) )
63 #define N_DATOFF(x) ( N_TXTOFF(x) + (x).a_text )
64 #define N_TROFF(x) ( N_DATOFF(x) + (x).a_data )
65 #define N_DROFF(x) ( N_TROFF(x) + (x).a_trsize )
66 #define N_SYMOFF(x) ( N_DROFF(x) + (x).a_drsize )
67 #define N_STROFF(x) ( N_SYMOFF(x) + (x).a_syms )
68
69 /* We use this copy of the exec header for VMS. We do not actually use it, but
70 what we actually do is let gas fill in the relevant slots, and when we get
71 around to writing an obj file, we just pick out what we need. */
72
73 struct exec
74 {
75 unsigned long a_text; /* length of text, in bytes */
76 unsigned long a_data; /* length of data, in bytes */
77 unsigned long a_bss; /* length of uninitialized data area for file, in bytes */
78 unsigned long a_trsize; /* length of relocation info for text, in bytes */
79 unsigned long a_drsize; /* length of relocation info for data, in bytes */
80 unsigned long a_entry; /* start address */
81 unsigned long a_syms; /* length of symbol table data in file, in bytes */
82 };
83
84 typedef struct
85 {
86 struct exec header; /* a.out header */
87 long string_table_size; /* names + '\0' + sizeof(int) */
88 }
89
90 object_headers;
91
92 /* A single entry in the symbol table
93 */
94 struct nlist
95 {
96 union
97 {
98 char *n_name;
99 struct nlist *n_next;
100 long n_strx; /* Index into string table */
101 }
102 n_un;
103 unsigned char n_type; /* See below */
104 char n_other; /* Used in i80960 support -- see below */
105 short n_desc;
106 unsigned long n_value;
107 };
108
109 /* Legal values of n_type
110 */
111 #define N_UNDF 0 /* Undefined symbol */
112 #define N_ABS 2 /* Absolute symbol */
113 #define N_TEXT 4 /* Text symbol */
114 #define N_DATA 6 /* Data symbol */
115 #define N_BSS 8 /* BSS symbol */
116 #define N_FN 31 /* Filename symbol */
117
118 #define N_EXT 1 /* External symbol (OR'd in with one of above) */
119 #define N_TYPE 036 /* Mask for all the type bits */
120
121 #define N_STAB 0340 /* Mask for all bits used for SDB entries */
122
123 #include "aout/stab_gnu.h"
124
125 /* SYMBOL TABLE */
126 /* Symbol table entry data type */
127
128 typedef struct nlist obj_symbol_type; /* Symbol table entry */
129
130 /* Symbol table macros and constants */
131
132 #define OBJ_SYMFIELD_TYPE struct VMS_Symbol *
133
134 /*
135 * Macros to extract information from a symbol table entry.
136 * This syntaxic indirection allows independence regarding a.out or coff.
137 * The argument (s) of all these macros is a pointer to a symbol table entry.
138 */
139
140 /* True if the symbol is external */
141 #define S_IS_EXTERNAL(s) ((s)->sy_symbol.n_type & N_EXT)
142
143 /* True if symbol has been defined, ie is in N_{TEXT,DATA,BSS,ABS} or N_EXT */
144 #define S_IS_DEFINED(s) (S_GET_TYPE(s) != N_UNDF)
145
146 #define S_IS_REGISTER(s) ((s)->sy_symbol.n_type == N_REGISTER)
147
148 /* True if a debug special symbol entry */
149 #define S_IS_DEBUG(s) ((s)->sy_symbol.n_type & N_STAB)
150 /* True if a symbol is local symbol name */
151 /* A symbol name whose name begin with ^A is a gas internal pseudo symbol
152 nameless symbols come from .stab directives. */
153 #define S_IS_LOCAL(s) (S_GET_NAME(s) && \
154 !S_IS_DEBUG(s) && \
155 (S_GET_NAME(s)[0] == '\001' || \
156 (S_LOCAL_NAME(s) && !flag_keep_locals)))
157 /* True if a symbol is not defined in this file */
158 #define S_IS_EXTERN(s) ((s)->sy_symbol.n_type & N_EXT)
159 /* True if the symbol has been generated because of a .stabd directive */
160 #define S_IS_STABD(s) (S_GET_NAME(s) == (char *)0)
161
162 /* Accessors */
163 /* The name of the symbol */
164 #define S_GET_NAME(s) ((s)->sy_symbol.n_un.n_name)
165 /* The pointer to the string table */
166 #define S_GET_OFFSET(s) ((s)->sy_symbol.n_un.n_strx)
167 /* The raw type of the symbol */
168 #define S_GET_RAW_TYPE(s) ((s)->sy_symbol.n_type)
169 /* The type of the symbol */
170 #define S_GET_TYPE(s) ((s)->sy_symbol.n_type & N_TYPE)
171 /* The numeric value of the segment */
172 #define S_GET_SEGMENT(s) (N_TYPE_seg[S_GET_TYPE(s)])
173 /* The n_other expression value */
174 #define S_GET_OTHER(s) ((s)->sy_symbol.n_other)
175 /* The n_desc expression value */
176 #define S_GET_DESC(s) ((s)->sy_symbol.n_desc)
177
178 /* Modifiers */
179 /* Assume that a symbol cannot be simultaneously in more than on segment */
180 /* set segment */
181 #define S_SET_SEGMENT(s,seg) ((s)->sy_symbol.n_type &= ~N_TYPE,(s)->sy_symbol.n_type|=SEGMENT_TO_SYMBOL_TYPE(seg))
182 /* The symbol is external */
183 #define S_SET_EXTERNAL(s) ((s)->sy_symbol.n_type |= N_EXT)
184 /* The symbol is not external */
185 #define S_CLEAR_EXTERNAL(s) ((s)->sy_symbol.n_type &= ~N_EXT)
186 /* Set the name of the symbol */
187 #define S_SET_NAME(s,v) ((s)->sy_symbol.n_un.n_name = (v))
188 /* Set the offset in the string table */
189 #define S_SET_OFFSET(s,v) ((s)->sy_symbol.n_un.n_strx = (v))
190 /* Set the n_other expression value */
191 #define S_SET_OTHER(s,v) ((s)->sy_symbol.n_other = (v))
192 /* Set the n_desc expression value */
193 #define S_SET_DESC(s,v) ((s)->sy_symbol.n_desc = (v))
194 /* Set the n_type expression value */
195 #define S_SET_TYPE(s,v) ((s)->sy_symbol.n_type = (v))
196
197
198 /* File header macro and type definition */
199
200 #define H_GET_TEXT_SIZE(h) ((h)->header.a_text)
201 #define H_GET_DATA_SIZE(h) ((h)->header.a_data)
202 #define H_GET_BSS_SIZE(h) ((h)->header.a_bss)
203
204 #define H_SET_TEXT_SIZE(h,v) ((h)->header.a_text = md_section_align(SEG_TEXT, (v)))
205 #define H_SET_DATA_SIZE(h,v) ((h)->header.a_data = md_section_align(SEG_DATA, (v)))
206 #define H_SET_BSS_SIZE(h,v) ((h)->header.a_bss = md_section_align(SEG_BSS, (v)))
207
208 #define H_SET_STRING_SIZE(h,v) ((h)->string_table_size = (v))
209 #define H_SET_SYMBOL_TABLE_SIZE(h,v) ((h)->header.a_syms = (v) * \
210 sizeof(struct nlist))
211
212 /* line numbering stuff. */
213 #define OBJ_EMIT_LINENO(a, b, c) {;}
214
215 #define obj_symbol_new_hook(s) {;}
216
217 struct fix;
218 void tc_aout_fix_to_chars PARAMS ((char *where, struct fix *fixP, relax_addressT segment_address));
219
220 extern int vms_resolve_symbol_redef ();
221 #define RESOLVE_SYMBOL_REDEFINITION(X) vms_resolve_symbol_redef(X)
222
223 /* The rest of this file contains definitions for constants used within the actual
224 VMS object file. We do not use a $ in the symbols (as per usual VMS
225 convention) since System V gags on it. */
226
227 #define OBJ_S_C_HDR 0
228 #define OBJ_S_C_HDR_MHD 0
229 #define OBJ_S_C_HDR_LNM 1
230 #define OBJ_S_C_HDR_SRC 2
231 #define OBJ_S_C_HDR_TTL 3
232 #define OBJ_S_C_HDR_CPR 4
233 #define OBJ_S_C_HDR_MTC 5
234 #define OBJ_S_C_HDR_GTX 6
235 #define OBJ_S_C_GSD 1
236 #define OBJ_S_C_GSD_PSC 0
237 #define OBJ_S_C_GSD_SYM 1
238 #define OBJ_S_C_GSD_EPM 2
239 #define OBJ_S_C_GSD_PRO 3
240 #define OBJ_S_C_GSD_SYMW 4
241 #define OBJ_S_C_GSD_EPMW 5
242 #define OBJ_S_C_GSD_PROW 6
243 #define OBJ_S_C_GSD_IDC 7
244 #define OBJ_S_C_GSD_ENV 8
245 #define OBJ_S_C_GSD_LSY 9
246 #define OBJ_S_C_GSD_LEPM 10
247 #define OBJ_S_C_GSD_LPRO 11
248 #define OBJ_S_C_GSD_SPSC 12
249 #define OBJ_S_C_TIR 2
250 #define OBJ_S_C_EOM 3
251 #define OBJ_S_C_DBG 4
252 #define OBJ_S_C_TBT 5
253 #define OBJ_S_C_LNK 6
254 #define OBJ_S_C_EOMW 7
255 #define OBJ_S_C_MAXRECTYP 7
256 #define OBJ_S_K_SUBTYP 1
257 #define OBJ_S_C_SUBTYP 1
258 #define OBJ_S_C_MAXRECSIZ 2048
259 #define OBJ_S_C_STRLVL 0
260 #define OBJ_S_C_SYMSIZ 31
261 #define OBJ_S_C_STOREPLIM -1
262 #define OBJ_S_C_PSCALILIM 9
263 \f
264 #define MHD_S_C_MHD 0
265 #define MHD_S_C_LNM 1
266 #define MHD_S_C_SRC 2
267 #define MHD_S_C_TTL 3
268 #define MHD_S_C_CPR 4
269 #define MHD_S_C_MTC 5
270 #define MHD_S_C_GTX 6
271 #define MHD_S_C_MAXHDRTYP 6
272 \f
273 #define GSD_S_K_ENTRIES 1
274 #define GSD_S_C_ENTRIES 1
275 #define GSD_S_C_PSC 0
276 #define GSD_S_C_SYM 1
277 #define GSD_S_C_EPM 2
278 #define GSD_S_C_PRO 3
279 #define GSD_S_C_SYMW 4
280 #define GSD_S_C_EPMW 5
281 #define GSD_S_C_PROW 6
282 #define GSD_S_C_IDC 7
283 #define GSD_S_C_ENV 8
284 #define GSD_S_C_LSY 9
285 #define GSD_S_C_LEPM 10
286 #define GSD_S_C_LPRO 11
287 #define GSD_S_C_SPSC 12
288 #define GSD_S_C_SYMV 13
289 #define GSD_S_C_EPMV 14
290 #define GSD_S_C_PROV 15
291 #define GSD_S_C_MAXRECTYP 15
292 \f
293 #define GSY_S_M_WEAK 1
294 #define GSY_S_M_DEF 2
295 #define GSY_S_M_UNI 4
296 #define GSY_S_M_REL 8
297 \f
298 #define GPS_S_M_PIC 1
299 #define GPS_S_M_LIB 2
300 #define GPS_S_M_OVR 4
301 #define GPS_S_M_REL 8
302 #define GPS_S_M_GBL 16
303 #define GPS_S_M_SHR 32
304 #define GPS_S_M_EXE 64
305 #define GPS_S_M_RD 128
306 #define GPS_S_M_WRT 256
307 #define GPS_S_M_VEC 512
308 #define GPS_S_K_NAME 9
309 #define GPS_S_C_NAME 9
310 \f
311 #define TIR_S_C_STA_GBL 0
312 #define TIR_S_C_STA_SB 1
313 #define TIR_S_C_STA_SW 2
314 #define TIR_S_C_STA_LW 3
315 #define TIR_S_C_STA_PB 4
316 #define TIR_S_C_STA_PW 5
317 #define TIR_S_C_STA_PL 6
318 #define TIR_S_C_STA_UB 7
319 #define TIR_S_C_STA_UW 8
320 #define TIR_S_C_STA_BFI 9
321 #define TIR_S_C_STA_WFI 10
322 #define TIR_S_C_STA_LFI 11
323 #define TIR_S_C_STA_EPM 12
324 #define TIR_S_C_STA_CKARG 13
325 #define TIR_S_C_STA_WPB 14
326 #define TIR_S_C_STA_WPW 15
327 #define TIR_S_C_STA_WPL 16
328 #define TIR_S_C_STA_LSY 17
329 #define TIR_S_C_STA_LIT 18
330 #define TIR_S_C_STA_LEPM 19
331 #define TIR_S_C_MAXSTACOD 19
332 #define TIR_S_C_MINSTOCOD 20
333 #define TIR_S_C_STO_SB 20
334 #define TIR_S_C_STO_SW 21
335 #define TIR_S_C_STO_L 22
336 #define TIR_S_C_STO_BD 23
337 #define TIR_S_C_STO_WD 24
338 #define TIR_S_C_STO_LD 25
339 #define TIR_S_C_STO_LI 26
340 #define TIR_S_C_STO_PIDR 27
341 #define TIR_S_C_STO_PICR 28
342 #define TIR_S_C_STO_RSB 29
343 #define TIR_S_C_STO_RSW 30
344 #define TIR_S_C_STO_RL 31
345 #define TIR_S_C_STO_VPS 32
346 #define TIR_S_C_STO_USB 33
347 #define TIR_S_C_STO_USW 34
348 #define TIR_S_C_STO_RUB 35
349 #define TIR_S_C_STO_RUW 36
350 #define TIR_S_C_STO_B 37
351 #define TIR_S_C_STO_W 38
352 #define TIR_S_C_STO_RB 39
353 #define TIR_S_C_STO_RW 40
354 #define TIR_S_C_STO_RIVB 41
355 #define TIR_S_C_STO_PIRR 42
356 #define TIR_S_C_MAXSTOCOD 42
357 #define TIR_S_C_MINOPRCOD 50
358 #define TIR_S_C_OPR_NOP 50
359 #define TIR_S_C_OPR_ADD 51
360 #define TIR_S_C_OPR_SUB 52
361 #define TIR_S_C_OPR_MUL 53
362 #define TIR_S_C_OPR_DIV 54
363 #define TIR_S_C_OPR_AND 55
364 #define TIR_S_C_OPR_IOR 56
365 #define TIR_S_C_OPR_EOR 57
366 #define TIR_S_C_OPR_NEG 58
367 #define TIR_S_C_OPR_COM 59
368 #define TIR_S_C_OPR_INSV 60
369 #define TIR_S_C_OPR_ASH 61
370 #define TIR_S_C_OPR_USH 62
371 #define TIR_S_C_OPR_ROT 63
372 #define TIR_S_C_OPR_SEL 64
373 #define TIR_S_C_OPR_REDEF 65
374 #define TIR_S_C_OPR_DFLIT 66
375 #define TIR_S_C_MAXOPRCOD 66
376 #define TIR_S_C_MINCTLCOD 80
377 #define TIR_S_C_CTL_SETRB 80
378 #define TIR_S_C_CTL_AUGRB 81
379 #define TIR_S_C_CTL_DFLOC 82
380 #define TIR_S_C_CTL_STLOC 83
381 #define TIR_S_C_CTL_STKDL 84
382 #define TIR_S_C_MAXCTLCOD 84
383 \f
384 /*
385 * Debugger symbol definitions: These are done by hand, as no
386 * machine-readable version seems
387 * to be available.
388 */
389 #define DST_S_C_C 7 /* Language == "C" */
390 #define DST_S_C_CXX 15 /* Language == "C++" */
391 #define DST_S_C_VERSION 153
392 #define DST_S_C_SOURCE 155 /* Source file */
393 #define DST_S_C_PROLOG 162
394 #define DST_S_C_BLKBEG 176 /* Beginning of block */
395 #define DST_S_C_BLKEND 177 /* End of block */
396 #define DST_S_C_ENTRY 181
397 #define DST_S_C_PSECT 184
398 #define DST_S_C_LINE_NUM 185 /* Line Number */
399 #define DST_S_C_LBLORLIT 186
400 #define DST_S_C_LABEL 187
401 #define DST_S_C_MODBEG 188 /* Beginning of module */
402 #define DST_S_C_MODEND 189 /* End of module */
403 #define DST_S_C_RTNBEG 190 /* Beginning of routine */
404 #define DST_S_C_RTNEND 191 /* End of routine */
405 #define DST_S_C_DELTA_PC_W 1 /* Incr PC */
406 #define DST_S_C_INCR_LINUM 2 /* Incr Line # */
407 #define DST_S_C_INCR_LINUM_W 3 /* Incr Line # */
408 #define DST_S_C_SET_LINUM_INCR 4
409 #define DST_S_C_SET_LINUM_INCR_W 5
410 #define DST_S_C_RESET_LINUM_INCR 6
411 #define DST_S_C_BEG_STMT_MODE 7
412 #define DST_S_C_END_STMT_MODE 8
413 #define DST_S_C_SET_LINE_NUM 9 /* Set Line # */
414 #define DST_S_C_SET_PC 10
415 #define DST_S_C_SET_PC_W 11
416 #define DST_S_C_SET_PC_L 12
417 #define DST_S_C_SET_STMTNUM 13
418 #define DST_S_C_TERM 14 /* End of lines */
419 #define DST_S_C_TERM_W 15 /* End of lines */
420 #define DST_S_C_SET_ABS_PC 16 /* Set PC */
421 #define DST_S_C_DELTA_PC_L 17 /* Incr PC */
422 #define DST_S_C_INCR_LINUM_L 18 /* Incr Line # */
423 #define DST_S_C_SET_LINUM_B 19 /* Set Line # */
424 #define DST_S_C_SET_LINUM_L 20 /* Set Line # */
425 #define DST_S_C_TERM_L 21 /* End of lines */
426 /* these are used with DST_S_C_SOURCE */
427 #define DST_S_C_SRC_FORMFEED 16 /* ^L counts */
428 #define DST_S_C_SRC_DECLFILE 1 /* Declare file */
429 #define DST_S_C_SRC_SETFILE 2 /* Set file */
430 #define DST_S_C_SRC_SETREC_L 3 /* Set record */
431 #define DST_S_C_SRC_DEFLINES_W 10 /* # of line */
432 /* the following are the codes for the various data types. Anything not on
433 * the list is included under 'advanced_type'
434 */
435 #define DBG_S_C_UCHAR 0x02
436 #define DBG_S_C_USINT 0x03
437 #define DBG_S_C_ULINT 0x04
438 #define DBG_S_C_UQUAD 0x05
439 #define DBG_S_C_SCHAR 0x06
440 #define DBG_S_C_SSINT 0x07
441 #define DBG_S_C_SLINT 0x08
442 #define DBG_S_C_SQUAD 0x09
443 #define DBG_S_C_REAL4 0x0a
444 #define DBG_S_C_REAL8 0x0b /* D_float double */
445 #define DBG_S_C_COMPLX4 0x0c /* 2xF_float complex float */
446 #define DBG_S_C_COMPLX8 0x0d /* 2xD_float complex double */
447 #define DBG_S_C_REAL8_G 0x1b /* G_float double */
448 #define DBG_S_C_COMPLX8_G 0x1d /* 2xG_float complex double */
449 #define DBG_S_C_FUNCTION_ADDR 0x17
450 #define DBG_S_C_ADVANCED_TYPE 0xa3
451 /* Some of these are just for future reference. [pr]
452 */
453 #define DBG_S_C_UBITA 0x01 /* unsigned, aligned bit field */
454 #define DBG_S_C_UBITU 0x22 /* unsigned, unaligned bit field */
455 #define DBG_S_C_SBITA 0x29 /* signed, aligned bit field */
456 #define DBG_S_C_SBITU 0x2a /* signed, unaligned bit field */
457 #define DBG_S_C_CSTRING 0x2e /* asciz ('\0' terminated) string */
458 #define DBG_S_C_WCHAR 0x38 /* wchar_t */
459 /* These are descriptor class codes.
460 */
461 #define DSC_K_CLASS_S 0x01 /* static (fixed length) */
462 #define DSC_K_CLASS_D 0x02 /* dynamic string (not via malloc!) */
463 #define DSC_K_CLASS_A 0x04 /* array */
464 #define DSC_K_CLASS_UBS 0x0d /* unaligned bit string */
465 /* These are the codes that are used to generate the definitions of struct
466 * union and enum records
467 */
468 #define DBG_S_C_ENUM_ITEM 0xa4
469 #define DBG_S_C_ENUM_START 0xa5
470 #define DBG_S_C_ENUM_END 0xa6
471 #define DBG_S_C_STRUCT_ITEM DST_K_VFLAGS_BITOFFS /* 0xff */
472 #define DBG_S_C_STRUCT_START 0xab
473 #define DBG_S_C_STRUCT_END 0xac
474 #define DST_K_TYPSPEC 0xaf /* type specification */
475 /* These codes are used in the generation of the symbol definition records
476 */
477 #define DST_K_VFLAGS_NOVAL 0x80 /* struct definition only */
478 #define DST_K_VFLAGS_DSC 0xfa /* descriptor used */
479 #define DST_K_VFLAGS_TVS 0xfb /* trailing value specified */
480 #define DST_K_VS_FOLLOWS 0xfd /* value spec follows */
481 #define DST_K_VFLAGS_BITOFFS 0xff /* value contains bit offset */
482 #define DST_K_VALKIND_LITERAL 0
483 #define DST_K_VALKIND_ADDR 1
484 #define DST_K_VALKIND_DESC 2
485 #define DST_K_VALKIND_REG 3
486 #define DST_K_REG_VAX_AP 0x0c /* R12 */
487 #define DST_K_REG_VAX_FP 0x0d /* R13 */
488 #define DST_K_REG_VAX_SP 0x0e /* R14 */
489 #define DST_V_VALKIND 0 /* offset of valkind field */
490 #define DST_V_INDIRECT 2 /* offset to indirect bit */
491 #define DST_V_DISP 3 /* offset to displacement bit */
492 #define DST_V_REGNUM 4 /* offset to register number */
493 #define DST_M_INDIRECT (1<<DST_V_INDIRECT)
494 #define DST_M_DISP (1<<DST_V_DISP)
495 #define DBG_C_FUNCTION_PARAM /* 0xc9 */ \
496 (DST_K_VALKIND_ADDR|DST_M_DISP|(DST_K_REG_VAX_AP<<DST_V_REGNUM))
497 #define DBG_C_LOCAL_SYM /* 0xd9 */ \
498 (DST_K_VALKIND_ADDR|DST_M_DISP|(DST_K_REG_VAX_FP<<DST_V_REGNUM))
499 /* Kinds of value specifications
500 */
501 #define DST_K_VS_ALLOC_SPLIT 3 /* split lifetime */
502 /* Kinds of type specifications
503 */
504 #define DST_K_TS_ATOM 0x01 /* atomic type specification */
505 #define DST_K_TS_DSC 0x02 /* descriptor type spec */
506 #define DST_K_TS_IND 0x03 /* indirect type specification */
507 #define DST_K_TS_TPTR 0x04 /* typed pointer type spec */
508 #define DST_K_TS_PTR 0x05 /* pointer type spec */
509 #define DST_K_TS_ARRAY 0x07 /* array type spec */
510 #define DST_K_TS_NOV_LENG 0x0e /* novel length type spec */
511 /* These are the codes that are used in the suffix records to determine the
512 * actual data type
513 */
514 #define DBG_S_C_BASIC DST_K_TS_ATOM
515 #define DBG_S_C_BASIC_ARRAY DST_K_TS_DSC
516 #define DBG_S_C_STRUCT DST_K_TS_IND
517 #define DBG_S_C_POINTER DST_K_TS_TPTR
518 #define DBG_S_C_VOID DST_K_TS_PTR
519 #define DBG_S_C_COMPLEX_ARRAY DST_K_TS_ARRAY
520 /* end of obj-vms.h */
This page took 0.049095 seconds and 5 git commands to generate.