OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gdb-5.3/] [gdb/] [dst.h] - Blame information for rev 1181

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1181 sfurman
// OBSOLETE /* <apollo/dst.h> */
2
// OBSOLETE /* Apollo object module DST (debug symbol table) description */
3
// OBSOLETE 
4
// OBSOLETE #ifndef apollo_dst_h
5
// OBSOLETE #define apollo_dst_h
6
// OBSOLETE 
7
// OBSOLETE #if defined(apollo) && !defined(__GNUC__)
8
// OBSOLETE #define ALIGNED1  __attribute( (aligned(1)) )
9
// OBSOLETE #else
10
// OBSOLETE /* Remove attribute directives from non-Apollo code: */
11
// OBSOLETE #define ALIGNED1            /* nil */
12
// OBSOLETE #endif
13
// OBSOLETE 
14
// OBSOLETE 
15
// OBSOLETE 
16
// OBSOLETE /* Identification of this version of the debug symbol table.  Producers of the
17
// OBSOLETE    debug symbol table must write these values into the version number field of
18
// OBSOLETE    the compilation unit record in .blocks .
19
// OBSOLETE  */
20
// OBSOLETE #define dst_version_major    1
21
// OBSOLETE #define dst_version_minor    3
22
// OBSOLETE 
23
// OBSOLETE 
24
// OBSOLETE /*
25
// OBSOLETE    ** Enumeration of debug record types appearing in .blocks and .symbols ...
26
// OBSOLETE  */
27
// OBSOLETE typedef enum
28
// OBSOLETE   {
29
// OBSOLETE     dst_typ_pad,            /*  0 */
30
// OBSOLETE     dst_typ_comp_unit,              /*  1 */
31
// OBSOLETE     dst_typ_section_tab,    /*  2 */
32
// OBSOLETE     dst_typ_file_tab,               /*  3 */
33
// OBSOLETE     dst_typ_block,          /*  4 */
34
// OBSOLETE     dst_typ_5,
35
// OBSOLETE     dst_typ_var,
36
// OBSOLETE     dst_typ_pointer,                /*  7 */
37
// OBSOLETE     dst_typ_array,          /*  8 */
38
// OBSOLETE     dst_typ_subrange,               /*  9 */
39
// OBSOLETE     dst_typ_set,            /* 10 */
40
// OBSOLETE     dst_typ_implicit_enum,  /* 11 */
41
// OBSOLETE     dst_typ_explicit_enum,  /* 12 */
42
// OBSOLETE     dst_typ_short_rec,              /* 13 */
43
// OBSOLETE     dst_typ_old_record,
44
// OBSOLETE     dst_typ_short_union,    /* 15 */
45
// OBSOLETE     dst_typ_old_union,
46
// OBSOLETE     dst_typ_file,           /* 17 */
47
// OBSOLETE     dst_typ_offset,         /* 18 */
48
// OBSOLETE     dst_typ_alias,          /* 19 */
49
// OBSOLETE     dst_typ_signature,              /* 20 */
50
// OBSOLETE     dst_typ_21,
51
// OBSOLETE     dst_typ_old_label,              /* 22 */
52
// OBSOLETE     dst_typ_scope,          /* 23 */
53
// OBSOLETE     dst_typ_end_scope,              /* 24 */
54
// OBSOLETE     dst_typ_25,
55
// OBSOLETE     dst_typ_26,
56
// OBSOLETE     dst_typ_string_tab,             /* 27 */
57
// OBSOLETE     dst_typ_global_name_tab,        /* 28 */
58
// OBSOLETE     dst_typ_forward,                /* 29 */
59
// OBSOLETE     dst_typ_aux_size,               /* 30 */
60
// OBSOLETE     dst_typ_aux_align,              /* 31 */
61
// OBSOLETE     dst_typ_aux_field_size, /* 32 */
62
// OBSOLETE     dst_typ_aux_field_off,  /* 33 */
63
// OBSOLETE     dst_typ_aux_field_align,        /* 34 */
64
// OBSOLETE     dst_typ_aux_qual,               /* 35 */
65
// OBSOLETE     dst_typ_aux_var_bound,  /* 36 */
66
// OBSOLETE     dst_typ_extension,              /* 37 */
67
// OBSOLETE     dst_typ_string,         /* 38 */
68
// OBSOLETE     dst_typ_old_entry,
69
// OBSOLETE     dst_typ_const,          /* 40 */
70
// OBSOLETE     dst_typ_reference,              /* 41 */
71
// OBSOLETE     dst_typ_record,         /* 42 */
72
// OBSOLETE     dst_typ_union,          /* 43 */
73
// OBSOLETE     dst_typ_aux_type_deriv, /* 44 */
74
// OBSOLETE     dst_typ_locpool,                /* 45 */
75
// OBSOLETE     dst_typ_variable,               /* 46 */
76
// OBSOLETE     dst_typ_label,          /* 47 */
77
// OBSOLETE     dst_typ_entry,          /* 48 */
78
// OBSOLETE     dst_typ_aux_lifetime,   /* 49 */
79
// OBSOLETE     dst_typ_aux_ptr_base,   /* 50 */
80
// OBSOLETE     dst_typ_aux_src_range,  /* 51 */
81
// OBSOLETE     dst_typ_aux_reg_val,    /* 52 */
82
// OBSOLETE     dst_typ_aux_unit_names, /* 53 */
83
// OBSOLETE     dst_typ_aux_sect_info,  /* 54 */
84
// OBSOLETE     dst_typ_END_OF_ENUM
85
// OBSOLETE   }
86
// OBSOLETE dst_rec_type_t;
87
// OBSOLETE 
88
// OBSOLETE 
89
// OBSOLETE /*
90
// OBSOLETE    ** Dummy bounds for variably dimensioned arrays:
91
// OBSOLETE  */
92
// OBSOLETE #define dst_dummy_array_size  100
93
// OBSOLETE 
94
// OBSOLETE 
95
// OBSOLETE /*
96
// OBSOLETE    ** Reference to another item in the symbol table.
97
// OBSOLETE    **
98
// OBSOLETE    ** The value of a dst_rel_offset_t is the relative offset from the start of the
99
// OBSOLETE    ** referencing record to the start of the referenced record, string, etc. 
100
// OBSOLETE    **
101
// OBSOLETE    ** The value of a NIL dst_rel_offset_t is zero.
102
// OBSOLETE  */
103
// OBSOLETE 
104
// OBSOLETE typedef long dst_rel_offset_t ALIGNED1;
105
// OBSOLETE 
106
// OBSOLETE 
107
// OBSOLETE /* FIXME: Here and many places we make assumptions about sizes of host
108
// OBSOLETE    data types, structure layout, etc.  Only needs to be fixed if we care
109
// OBSOLETE    about cross-debugging, though.  */
110
// OBSOLETE 
111
// OBSOLETE /*
112
// OBSOLETE    ** Section-relative reference. 
113
// OBSOLETE    **
114
// OBSOLETE    ** The section index field is an index into the local compilation unit's
115
// OBSOLETE    ** section table (see dst_rec_section_tab_t)--NOT into the object module
116
// OBSOLETE    ** section table!
117
// OBSOLETE    **
118
// OBSOLETE    ** The sect_offset field is the offset in bytes into the section.
119
// OBSOLETE    **
120
// OBSOLETE    ** A NIL dst_sect_ref_t has a sect_index field of zero.  Indexes originate
121
// OBSOLETE    ** at one.
122
// OBSOLETE  */
123
// OBSOLETE 
124
// OBSOLETE typedef struct
125
// OBSOLETE   {
126
// OBSOLETE     unsigned short sect_index;
127
// OBSOLETE     unsigned long sect_offset ALIGNED1;
128
// OBSOLETE   }
129
// OBSOLETE dst_sect_ref_t;
130
// OBSOLETE 
131
// OBSOLETE #define dst_sect_index_nil    0
132
// OBSOLETE #define dst_sect_index_origin 1
133
// OBSOLETE 
134
// OBSOLETE 
135
// OBSOLETE /*
136
// OBSOLETE    ** Source location descriptor.
137
// OBSOLETE    **
138
// OBSOLETE    ** The file_index field is an index into the local compilation unit's
139
// OBSOLETE    ** file table (see dst_rec_file_tab_t).
140
// OBSOLETE    **
141
// OBSOLETE    ** A NIL dst_src_loc_t has a file_index field of zero.  Indexes originate
142
// OBSOLETE    ** at one.
143
// OBSOLETE  */
144
// OBSOLETE 
145
// OBSOLETE typedef struct
146
// OBSOLETE   {
147
// OBSOLETE     boolean reserved:1;             /* reserved for future use */
148
// OBSOLETE     int file_index:11;              /* index into .blocks source file list */
149
// OBSOLETE     int line_number:20;             /* source line number */
150
// OBSOLETE   }
151
// OBSOLETE dst_src_loc_t;
152
// OBSOLETE 
153
// OBSOLETE #define dst_file_index_nil    0
154
// OBSOLETE #define dst_file_index_origin 1
155
// OBSOLETE 
156
// OBSOLETE 
157
// OBSOLETE /*
158
// OBSOLETE    ** Standard (primitive) type codes.
159
// OBSOLETE  */
160
// OBSOLETE 
161
// OBSOLETE typedef enum
162
// OBSOLETE   {
163
// OBSOLETE     dst_non_std_type,
164
// OBSOLETE     dst_int8_type,          /* 8 bit integer */
165
// OBSOLETE     dst_int16_type,         /* 16 bit integer */
166
// OBSOLETE     dst_int32_type,         /* 32 bit integer */
167
// OBSOLETE     dst_uint8_type,         /* 8 bit unsigned integer */
168
// OBSOLETE     dst_uint16_type,                /* 16 bit unsigned integer */
169
// OBSOLETE     dst_uint32_type,                /* 32 bit unsigned integer */
170
// OBSOLETE     dst_real32_type,                /* single precision ieee floatining point */
171
// OBSOLETE     dst_real64_type,                /* double precision ieee floatining point */
172
// OBSOLETE     dst_complex_type,               /* single precision complex */
173
// OBSOLETE     dst_dcomplex_type,              /* double precision complex */
174
// OBSOLETE     dst_bool8_type,         /* boolean =logical*1 */
175
// OBSOLETE     dst_bool16_type,                /* boolean =logical*2 */
176
// OBSOLETE     dst_bool32_type,                /* boolean =logical*4 */
177
// OBSOLETE     dst_char_type,          /* 8 bit ascii character */
178
// OBSOLETE     dst_string_type,                /* string of 8 bit ascii characters */
179
// OBSOLETE     dst_ptr_type,           /* univ_pointer */
180
// OBSOLETE     dst_set_type,           /* generic 256 bit set */
181
// OBSOLETE     dst_proc_type,          /* generic procedure (signature not specified) */
182
// OBSOLETE     dst_func_type,          /* generic function (signature not specified) */
183
// OBSOLETE     dst_void_type,          /* c void type */
184
// OBSOLETE     dst_uchar_type,         /* c unsigned char */
185
// OBSOLETE     dst_std_type_END_OF_ENUM
186
// OBSOLETE   }
187
// OBSOLETE dst_std_type_t;
188
// OBSOLETE 
189
// OBSOLETE 
190
// OBSOLETE /*
191
// OBSOLETE    ** General data type descriptor
192
// OBSOLETE    **
193
// OBSOLETE    ** If the user_defined_type bit is clear, then the type is a standard type, and
194
// OBSOLETE    ** the remaining bits contain the dst_std_type_t of the type.  If the bit is
195
// OBSOLETE    ** set, then the type is defined in a separate dst record, which is referenced
196
// OBSOLETE    ** by the remaining bits as a dst_rel_offset_t.
197
// OBSOLETE  */
198
// OBSOLETE 
199
// OBSOLETE typedef union
200
// OBSOLETE   {
201
// OBSOLETE     struct
202
// OBSOLETE       {
203
// OBSOLETE     boolean user_defined_type:1;    /* tag field */
204
// OBSOLETE     int must_be_zero:23;    /* 23 bits of pad */
205
// OBSOLETE     dst_std_type_t dtc:8;   /* 8 bit primitive data */
206
// OBSOLETE       }
207
// OBSOLETE     std_type;
208
// OBSOLETE 
209
// OBSOLETE     struct
210
// OBSOLETE       {
211
// OBSOLETE     boolean user_defined_type:1;    /* tag field */
212
// OBSOLETE     int doffset:31;         /* offset to type record */
213
// OBSOLETE       }
214
// OBSOLETE     user_type;
215
// OBSOLETE   }
216
// OBSOLETE dst_type_t ALIGNED1;
217
// OBSOLETE 
218
// OBSOLETE /* The user_type.doffset field is a 31-bit signed value.  Some versions of C
219
// OBSOLETE    do not support signed bit fields.  The following macro will extract that
220
// OBSOLETE    field as a signed value:
221
// OBSOLETE  */
222
// OBSOLETE #define dst_user_type_offset(type_rec) \
223
// OBSOLETE     ( ((int) ((type_rec).user_type.doffset << 1)) >> 1 )
224
// OBSOLETE 
225
// OBSOLETE 
226
// OBSOLETE /*================================================*/
227
// OBSOLETE /*========== RECORDS IN .blocks SECTION ==========*/
228
// OBSOLETE /*================================================*/
229
// OBSOLETE 
230
// OBSOLETE /*-----------------------
231
// OBSOLETE   COMPILATION UNIT record 
232
// OBSOLETE   -----------------------
233
// OBSOLETE   This must be the first record in each .blocks section.
234
// OBSOLETE   Provides a set of information describing the output of a single compilation
235
// OBSOLETE   and pointers to additional information for the compilation unit.
236
// OBSOLETE */
237
// OBSOLETE 
238
// OBSOLETE typedef enum
239
// OBSOLETE   {
240
// OBSOLETE     dst_pc_code_locs,               /* ranges in loc strings are pc ranges */
241
// OBSOLETE     dst_comp_unit_END_OF_ENUM
242
// OBSOLETE   }
243
// OBSOLETE dst_comp_unit_flag_t;
244
// OBSOLETE 
245
// OBSOLETE typedef enum
246
// OBSOLETE   {
247
// OBSOLETE     dst_lang_unk,           /* unknown language */
248
// OBSOLETE     dst_lang_pas,           /* Pascal */
249
// OBSOLETE     dst_lang_ftn,           /* FORTRAN */
250
// OBSOLETE     dst_lang_c,                     /* C */
251
// OBSOLETE     dst_lang_mod2,          /* Modula-2 */
252
// OBSOLETE     dst_lang_asm_m68k,              /* 68K assembly language */
253
// OBSOLETE     dst_lang_asm_a88k,              /* AT assembly language */
254
// OBSOLETE     dst_lang_ada,           /* Ada */
255
// OBSOLETE     dst_lang_cxx,           /* C++ */
256
// OBSOLETE     dst_lang_END_OF_ENUM
257
// OBSOLETE   }
258
// OBSOLETE dst_lang_type_t;
259
// OBSOLETE 
260
// OBSOLETE typedef struct
261
// OBSOLETE   {
262
// OBSOLETE     struct
263
// OBSOLETE       {
264
// OBSOLETE     unsigned char major_part;       /* = dst_version_major */
265
// OBSOLETE     unsigned char minor_part;       /* = dst_version_minor */
266
// OBSOLETE       }
267
// OBSOLETE     version;                        /* version of dst */
268
// OBSOLETE     unsigned short flags;   /* mask of dst_comp_unit_flag_t */
269
// OBSOLETE     unsigned short lang_type;       /* source language */
270
// OBSOLETE     unsigned short number_of_blocks;        /* number of blocks records */
271
// OBSOLETE     dst_rel_offset_t root_block_offset;             /* offset to root block (module?) */
272
// OBSOLETE     dst_rel_offset_t section_table /* offset to section table record */ ;
273
// OBSOLETE     dst_rel_offset_t file_table;    /* offset to file table record */
274
// OBSOLETE     unsigned long data_size;        /* total size of .blocks data */
275
// OBSOLETE   }
276
// OBSOLETE dst_rec_comp_unit_t ALIGNED1;
277
// OBSOLETE 
278
// OBSOLETE 
279
// OBSOLETE /*--------------------
280
// OBSOLETE   SECTION TABLE record
281
// OBSOLETE   --------------------
282
// OBSOLETE   There must be one section table associated with each compilation unit.
283
// OBSOLETE   Other debug records refer to sections via their index in this table.  The
284
// OBSOLETE   section base addresses in the table are virtual addresses of the sections,
285
// OBSOLETE   relocated by the linker.
286
// OBSOLETE */
287
// OBSOLETE 
288
// OBSOLETE typedef struct
289
// OBSOLETE   {
290
// OBSOLETE     unsigned short number_of_sections;      /* size of array: */
291
// OBSOLETE     unsigned long section_base[dst_dummy_array_size] ALIGNED1;
292
// OBSOLETE   }
293
// OBSOLETE dst_rec_section_tab_t ALIGNED1;
294
// OBSOLETE 
295
// OBSOLETE 
296
// OBSOLETE /*-----------------
297
// OBSOLETE   FILE TABLE record
298
// OBSOLETE   -----------------
299
// OBSOLETE   There must be one file table associated with each compilation unit describing
300
// OBSOLETE   the source (and include) files used by each compilation unit.  Other debug 
301
// OBSOLETE   records refer to files via their index in this table.  The first entry is the
302
// OBSOLETE   primary source file.
303
// OBSOLETE */
304
// OBSOLETE 
305
// OBSOLETE typedef struct
306
// OBSOLETE   {
307
// OBSOLETE     long dtm;                       /* time last modified (time_$clock_t) */
308
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to name string for source file */
309
// OBSOLETE   }
310
// OBSOLETE dst_file_desc_t;
311
// OBSOLETE 
312
// OBSOLETE typedef struct
313
// OBSOLETE   {
314
// OBSOLETE     unsigned short number_of_files; /* size of array: */
315
// OBSOLETE     dst_file_desc_t files[dst_dummy_array_size] ALIGNED1;
316
// OBSOLETE   }
317
// OBSOLETE dst_rec_file_tab_t ALIGNED1;
318
// OBSOLETE 
319
// OBSOLETE 
320
// OBSOLETE /*-----------------
321
// OBSOLETE   NAME TABLE record
322
// OBSOLETE   -----------------
323
// OBSOLETE   A name table record may appear as an auxiliary record to the file table,
324
// OBSOLETE   providing additional qualification of the file indexes for languages that 
325
// OBSOLETE   need it (i.e. Ada).  Name table entries parallel file table entries of the
326
// OBSOLETE   same file index.
327
// OBSOLETE */
328
// OBSOLETE 
329
// OBSOLETE typedef struct
330
// OBSOLETE   {
331
// OBSOLETE     unsigned short number_of_names; /* size of array: */
332
// OBSOLETE     dst_rel_offset_t names[dst_dummy_array_size] ALIGNED1;
333
// OBSOLETE   }
334
// OBSOLETE dst_rec_name_tab_t ALIGNED1;
335
// OBSOLETE 
336
// OBSOLETE 
337
// OBSOLETE /*--------------
338
// OBSOLETE   BLOCK record
339
// OBSOLETE   --------------
340
// OBSOLETE   Describes a lexical program block--a procedure, function, module, etc.
341
// OBSOLETE */
342
// OBSOLETE 
343
// OBSOLETE /* Block types.  These may be used in any way desired by the compiler writers. 
344
// OBSOLETE    The debugger uses them only to give a description to the user of the type of
345
// OBSOLETE    a block.  The debugger makes no other assumptions about the meaning of any
346
// OBSOLETE    of these.  For example, the fact that a block is executable (e.g., program)
347
// OBSOLETE    or not (e.g., module) is expressed in block attributes (see below), not
348
// OBSOLETE    guessed at from the block type.
349
// OBSOLETE  */
350
// OBSOLETE typedef enum
351
// OBSOLETE   {
352
// OBSOLETE     dst_block_module,               /* some pascal = modula = ada types */
353
// OBSOLETE     dst_block_program,
354
// OBSOLETE     dst_block_procedure,
355
// OBSOLETE     dst_block_function,             /* C function */
356
// OBSOLETE     dst_block_subroutine,   /* some fortran block types */
357
// OBSOLETE     dst_block_block_data,
358
// OBSOLETE     dst_block_stmt_function,
359
// OBSOLETE     dst_block_package,              /* a few particular to Ada */
360
// OBSOLETE     dst_block_package_body,
361
// OBSOLETE     dst_block_subunit,
362
// OBSOLETE     dst_block_task,
363
// OBSOLETE     dst_block_file,         /* a C outer scope? */
364
// OBSOLETE     dst_block_class,                /* C++ or Simula */
365
// OBSOLETE     dst_block_END_OF_ENUM
366
// OBSOLETE   }
367
// OBSOLETE dst_block_type_t;
368
// OBSOLETE 
369
// OBSOLETE /* Block attributes.  This is the information used by the debugger to represent
370
// OBSOLETE    the semantics of blocks.
371
// OBSOLETE  */
372
// OBSOLETE typedef enum
373
// OBSOLETE   {
374
// OBSOLETE     dst_block_main_entry,   /* the block's entry point is a main entry into
375
// OBSOLETE                                the compilation unit */
376
// OBSOLETE     dst_block_executable,   /* the block has an entry point */
377
// OBSOLETE     dst_block_attr_END_OF_ENUM
378
// OBSOLETE   }
379
// OBSOLETE dst_block_attr_t;
380
// OBSOLETE 
381
// OBSOLETE /* Code range.  Each block has associated with it one or more code ranges. An
382
// OBSOLETE    individual code range is identified by a range of source (possibly nil) and
383
// OBSOLETE    a range of executable code.  For example, a block which has its executable
384
// OBSOLETE    code spread over multiple sections will have one code range per section.
385
// OBSOLETE  */
386
// OBSOLETE typedef struct
387
// OBSOLETE   {
388
// OBSOLETE     unsigned long code_size;        /* size of executable code (in bytes ) */
389
// OBSOLETE     dst_sect_ref_t code_start;      /* starting address of executable code */
390
// OBSOLETE     dst_sect_ref_t lines_start;     /* start of line number tables */
391
// OBSOLETE   }
392
// OBSOLETE dst_code_range_t;
393
// OBSOLETE 
394
// OBSOLETE typedef struct
395
// OBSOLETE   {
396
// OBSOLETE     dst_block_type_t block_type:8;
397
// OBSOLETE     unsigned short flags:8; /* mask of dst_block_attr_t flags */
398
// OBSOLETE     dst_rel_offset_t sibling_block_off;             /* offset to next sibling block */
399
// OBSOLETE     dst_rel_offset_t child_block_off;       /* offset to first contained block */
400
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to block name string */
401
// OBSOLETE     dst_sect_ref_t symbols_start;   /* start of debug symbols  */
402
// OBSOLETE     unsigned short n_of_code_ranges;        /* size of array... */
403
// OBSOLETE     dst_code_range_t code_ranges[dst_dummy_array_size] ALIGNED1;
404
// OBSOLETE   }
405
// OBSOLETE dst_rec_block_t ALIGNED1;
406
// OBSOLETE 
407
// OBSOLETE 
408
// OBSOLETE /*--------------------------
409
// OBSOLETE   AUX SECT INFO TABLE record
410
// OBSOLETE   --------------------------
411
// OBSOLETE   Appears as an auxiliary to a block record.  Expands code range information
412
// OBSOLETE   by providing references into additional, language-dependent sections for 
413
// OBSOLETE   information related to specific code ranges of the block.  Sect info table
414
// OBSOLETE   entries parallel code range array entries of the same index.
415
// OBSOLETE */
416
// OBSOLETE 
417
// OBSOLETE typedef struct
418
// OBSOLETE   {
419
// OBSOLETE     unsigned char tag;              /* currently can only be zero */
420
// OBSOLETE     unsigned char number_of_refs;   /* size of array: */
421
// OBSOLETE     dst_sect_ref_t refs[dst_dummy_array_size] ALIGNED1;
422
// OBSOLETE   }
423
// OBSOLETE dst_rec_sect_info_tab_t ALIGNED1;
424
// OBSOLETE 
425
// OBSOLETE /*=================================================*/
426
// OBSOLETE /*========== RECORDS IN .symbols SECTION ==========*/
427
// OBSOLETE /*=================================================*/
428
// OBSOLETE 
429
// OBSOLETE /*-----------------
430
// OBSOLETE   CONSTANT record
431
// OBSOLETE   -----------------
432
// OBSOLETE   Describes a symbolic constant.
433
// OBSOLETE */
434
// OBSOLETE 
435
// OBSOLETE typedef struct
436
// OBSOLETE   {
437
// OBSOLETE     float r;                        /* real part */
438
// OBSOLETE     float i;                        /* imaginary part */
439
// OBSOLETE   }
440
// OBSOLETE dst_complex_t;
441
// OBSOLETE 
442
// OBSOLETE typedef struct
443
// OBSOLETE   {
444
// OBSOLETE     double dr;                      /* real part */
445
// OBSOLETE     double di;                      /* imaginary part */
446
// OBSOLETE   }
447
// OBSOLETE dst_double_complex_t;
448
// OBSOLETE 
449
// OBSOLETE /* The following record provides a way of describing constant values with 
450
// OBSOLETE    non-standard type and no limit on size. 
451
// OBSOLETE  */
452
// OBSOLETE typedef union
453
// OBSOLETE   {
454
// OBSOLETE     char char_data[dst_dummy_array_size];
455
// OBSOLETE     short int_data[dst_dummy_array_size];
456
// OBSOLETE     long long_data[dst_dummy_array_size];
457
// OBSOLETE   }
458
// OBSOLETE dst_big_kon_t;
459
// OBSOLETE 
460
// OBSOLETE /* Representation of the value of a general constant.
461
// OBSOLETE  */
462
// OBSOLETE typedef struct
463
// OBSOLETE   {
464
// OBSOLETE     unsigned short length;  /* size of constant value (bytes) */
465
// OBSOLETE 
466
// OBSOLETE     union
467
// OBSOLETE       {
468
// OBSOLETE     unsigned short kon_int8;
469
// OBSOLETE     short kon_int16;
470
// OBSOLETE     long kon_int32 ALIGNED1;
471
// OBSOLETE     float kon_real ALIGNED1;
472
// OBSOLETE     double kon_dbl ALIGNED1;
473
// OBSOLETE     dst_complex_t kon_cplx ALIGNED1;
474
// OBSOLETE     dst_double_complex_t kon_dcplx ALIGNED1;
475
// OBSOLETE     char kon_char;
476
// OBSOLETE     dst_big_kon_t kon ALIGNED1;
477
// OBSOLETE       }
478
// OBSOLETE     val;                    /* value data of constant */
479
// OBSOLETE   }
480
// OBSOLETE dst_const_t ALIGNED1;
481
// OBSOLETE 
482
// OBSOLETE typedef struct
483
// OBSOLETE   {
484
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to name string */
485
// OBSOLETE     dst_src_loc_t src_loc;  /* file/line of const definition */
486
// OBSOLETE     dst_type_t type_desc;   /* type of this (manifest) constant */
487
// OBSOLETE     dst_const_t value;
488
// OBSOLETE   }
489
// OBSOLETE dst_rec_const_t ALIGNED1;
490
// OBSOLETE 
491
// OBSOLETE /*----------------
492
// OBSOLETE   VARIABLE record
493
// OBSOLETE   ----------------
494
// OBSOLETE   Describes a program variable.
495
// OBSOLETE */
496
// OBSOLETE 
497
// OBSOLETE /* Variable attributes.  These define certain variable semantics to the
498
// OBSOLETE    debugger.
499
// OBSOLETE  */
500
// OBSOLETE typedef enum
501
// OBSOLETE   {
502
// OBSOLETE     dst_var_attr_read_only, /* is read-only (a program literal) */
503
// OBSOLETE     dst_var_attr_volatile,  /* same as compiler's VOLATILE attribute */
504
// OBSOLETE     dst_var_attr_global,    /* is a global definition or reference */
505
// OBSOLETE     dst_var_attr_compiler_gen,      /* is compiler-generated */
506
// OBSOLETE     dst_var_attr_static,    /* has static location */
507
// OBSOLETE     dst_var_attr_END_OF_ENUM
508
// OBSOLETE   }
509
// OBSOLETE dst_var_attr_t;
510
// OBSOLETE 
511
// OBSOLETE typedef struct
512
// OBSOLETE   {
513
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to name string */
514
// OBSOLETE     dst_rel_offset_t loffset;       /* offset to loc string */
515
// OBSOLETE     dst_src_loc_t src_loc;  /* file/line of variable definition */
516
// OBSOLETE     dst_type_t type_desc;   /* type descriptor */
517
// OBSOLETE     unsigned short attributes;      /* mask of dst_var_attr_t flags */
518
// OBSOLETE   }
519
// OBSOLETE dst_rec_variable_t ALIGNED1;
520
// OBSOLETE 
521
// OBSOLETE 
522
// OBSOLETE /*----------------
523
// OBSOLETE   old VAR record
524
// OBSOLETE  -----------------
525
// OBSOLETE  Used by older compilers to describe a variable
526
// OBSOLETE */
527
// OBSOLETE 
528
// OBSOLETE typedef enum
529
// OBSOLETE   {
530
// OBSOLETE     dst_var_loc_unknown,    /* Actually defined as "unknown" */
531
// OBSOLETE     dst_var_loc_abs,                /* Absolute address */
532
// OBSOLETE     dst_var_loc_sect_off,   /* Absolute address as a section offset */
533
// OBSOLETE     dst_var_loc_ind_sect_off,       /* An indexed section offset ???? */
534
// OBSOLETE     dst_var_loc_reg,                /* register */
535
// OBSOLETE     dst_var_loc_reg_rel,    /* register relative - usually fp */
536
// OBSOLETE     dst_var_loc_ind_reg_rel,        /* Indexed register relative */
537
// OBSOLETE     dst_var_loc_ftn_ptr_based,      /* Fortran pointer based */
538
// OBSOLETE     dst_var_loc_pc_rel,             /* PC relative. Really. */
539
// OBSOLETE     dst_var_loc_external,   /* External */
540
// OBSOLETE     dst_var_loc_END_OF_ENUM
541
// OBSOLETE   }
542
// OBSOLETE dst_var_loc_t;
543
// OBSOLETE 
544
// OBSOLETE /* Locations come in two versions. The short, and the long. The difference
545
// OBSOLETE  * between the short and the long is the addition of a statement number
546
// OBSOLETE  * field to the start andend of the range of the long, and and unkown
547
// OBSOLETE  * purpose field in the middle. Also, loc_type and loc_index aren't
548
// OBSOLETE  * bitfields in the long version.
549
// OBSOLETE  */
550
// OBSOLETE 
551
// OBSOLETE typedef struct
552
// OBSOLETE   {
553
// OBSOLETE     unsigned short loc_type:4;
554
// OBSOLETE     unsigned short loc_index:12;
555
// OBSOLETE     long location;
556
// OBSOLETE     short start_line;               /* start_line and end_line? */
557
// OBSOLETE     short end_line;         /* I'm guessing here.       */
558
// OBSOLETE   }
559
// OBSOLETE dst_var_loc_short_t;
560
// OBSOLETE 
561
// OBSOLETE typedef struct
562
// OBSOLETE   {
563
// OBSOLETE     unsigned short loc_type;
564
// OBSOLETE     unsigned short loc_index;
565
// OBSOLETE     long location;
566
// OBSOLETE     short unknown;          /* Always 0003 or 3b3c. Why? */
567
// OBSOLETE     short start_statement;
568
// OBSOLETE     short start_line;
569
// OBSOLETE     short end_statement;
570
// OBSOLETE     short end_line;
571
// OBSOLETE   }
572
// OBSOLETE dst_var_loc_long_t;
573
// OBSOLETE 
574
// OBSOLETE 
575
// OBSOLETE typedef struct
576
// OBSOLETE   {
577
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to name string */
578
// OBSOLETE     dst_src_loc_t src_loc;  /* file/line of description */
579
// OBSOLETE     dst_type_t type_desc;   /* Type description */
580
// OBSOLETE     unsigned short attributes;      /* mask of dst_var_attr_t flags */
581
// OBSOLETE     unsigned short no_of_locs:15;   /* Number of locations */
582
// OBSOLETE     unsigned short short_locs:1;    /* True if short locations. */
583
// OBSOLETE     union
584
// OBSOLETE       {
585
// OBSOLETE     dst_var_loc_short_t shorts[dst_dummy_array_size];
586
// OBSOLETE     dst_var_loc_long_t longs[dst_dummy_array_size];
587
// OBSOLETE       }
588
// OBSOLETE     locs;
589
// OBSOLETE   }
590
// OBSOLETE dst_rec_var_t;
591
// OBSOLETE 
592
// OBSOLETE /*----------------
593
// OBSOLETE   old LABEL record
594
// OBSOLETE  -----------------
595
// OBSOLETE  Used by older compilers to describe a label
596
// OBSOLETE */
597
// OBSOLETE 
598
// OBSOLETE typedef struct
599
// OBSOLETE   {
600
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to name string */
601
// OBSOLETE     dst_src_loc_t src_loc;  /* file/line of description */
602
// OBSOLETE     char location[12];              /* location string */
603
// OBSOLETE   }
604
// OBSOLETE dst_rec_old_label_t ALIGNED1;
605
// OBSOLETE 
606
// OBSOLETE /*----------------
607
// OBSOLETE   POINTER record
608
// OBSOLETE   ----------------
609
// OBSOLETE   Describes a pointer type.
610
// OBSOLETE */
611
// OBSOLETE 
612
// OBSOLETE typedef struct
613
// OBSOLETE   {
614
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to the name string for this type */
615
// OBSOLETE     dst_src_loc_t src_loc;  /* file/line of definition */
616
// OBSOLETE     dst_type_t type_desc;   /* base type of this pointer */
617
// OBSOLETE   }
618
// OBSOLETE dst_rec_pointer_t ALIGNED1;
619
// OBSOLETE 
620
// OBSOLETE 
621
// OBSOLETE /*-------------
622
// OBSOLETE   ARRAY record
623
// OBSOLETE   -------------
624
// OBSOLETE   Describes an array type.
625
// OBSOLETE 
626
// OBSOLETE   Multidimensional arrays are described with a number of dst_rec_array_t 
627
// OBSOLETE   records, one per array dimension, each linked to the next through the
628
// OBSOLETE   elem_type_desc.doffset field.  Each record must have its multi_dim flag
629
// OBSOLETE   set.
630
// OBSOLETE 
631
// OBSOLETE   If column_major is true (as with FORTRAN arrays) then the last array bound in
632
// OBSOLETE   the declaration is the first array index in memory, which is the opposite of
633
// OBSOLETE   the usual case (as with Pascal and C arrays).
634
// OBSOLETE 
635
// OBSOLETE   Variable array bounds are described by auxiliary records; if aux_var_bound
636
// OBSOLETE   records are present, the lo_bound and hi_bound fields of this record are
637
// OBSOLETE   ignored by the debugger.
638
// OBSOLETE 
639
// OBSOLETE   span_comp identifies one of the language-dependent ways in which the distance
640
// OBSOLETE   between successive array elements (span) is calculated.  
641
// OBSOLETE      dst_use_span_field    -- the span is the value of span field.
642
// OBSOLETE      dst_compute_from_prev -- the span is the size of the previous dimension.
643
// OBSOLETE      dst_compute_from_next -- the span is the size of the next dimension.
644
// OBSOLETE   In the latter two cases, the span field contains an amount of padding to add
645
// OBSOLETE   to the size of the appropriate dimension to calculate the span.
646
// OBSOLETE */
647
// OBSOLETE 
648
// OBSOLETE typedef enum
649
// OBSOLETE   {
650
// OBSOLETE     dst_use_span_field,
651
// OBSOLETE     dst_compute_from_prev,
652
// OBSOLETE     dst_compute_from_next,
653
// OBSOLETE     dst_span_comp_END_OF_ENUM
654
// OBSOLETE   }
655
// OBSOLETE dst_span_comp_t;
656
// OBSOLETE 
657
// OBSOLETE typedef struct
658
// OBSOLETE   {
659
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to name string */
660
// OBSOLETE     dst_src_loc_t src_loc;  /* file/line of definition */
661
// OBSOLETE     dst_type_t elem_type_desc;      /* array element type */
662
// OBSOLETE     dst_type_t indx_type_desc;      /* array index type */
663
// OBSOLETE     long lo_bound;          /* lower bound of index */
664
// OBSOLETE     long hi_bound;          /* upper bound of index */
665
// OBSOLETE     unsigned long span;             /* see above */
666
// OBSOLETE     unsigned long size;             /* total array size (bytes) */
667
// OBSOLETE     boolean multi_dim:1;
668
// OBSOLETE     boolean is_packed:1;    /* true if packed array */
669
// OBSOLETE     boolean is_signed:1;    /* true if packed elements are signed */
670
// OBSOLETE     dst_span_comp_t span_comp:2;    /* how to compute span */
671
// OBSOLETE     boolean column_major:1;
672
// OBSOLETE     unsigned short reserved:2;      /* must be zero */
673
// OBSOLETE     unsigned short elem_size:8;     /* element size if packed (bits) */
674
// OBSOLETE   }
675
// OBSOLETE dst_rec_array_t ALIGNED1;
676
// OBSOLETE 
677
// OBSOLETE 
678
// OBSOLETE /*-----------------
679
// OBSOLETE   SUBRANGE record
680
// OBSOLETE   -----------------
681
// OBSOLETE   Describes a subrange type.
682
// OBSOLETE */
683
// OBSOLETE 
684
// OBSOLETE /* Variable subrange bounds are described by auxiliary records; if aux_var_bound
685
// OBSOLETE    records are present, the lo_bound and hi_bound fields of this record are
686
// OBSOLETE    ignored by the debugger.
687
// OBSOLETE  */
688
// OBSOLETE 
689
// OBSOLETE typedef struct
690
// OBSOLETE   {
691
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to name string */
692
// OBSOLETE     dst_src_loc_t src_loc;  /* file/line of subrange definition */
693
// OBSOLETE     dst_type_t type_desc;   /* parent type */
694
// OBSOLETE     long lo_bound;          /* lower bound of subrange */
695
// OBSOLETE     long hi_bound;          /* upper bound of subrange */
696
// OBSOLETE     unsigned short size;    /* storage size (bytes) */
697
// OBSOLETE   }
698
// OBSOLETE dst_rec_subrange_t ALIGNED1;
699
// OBSOLETE 
700
// OBSOLETE 
701
// OBSOLETE /*---------------
702
// OBSOLETE   STRING record 
703
// OBSOLETE   ---------------
704
// OBSOLETE   Describes a string type.
705
// OBSOLETE */
706
// OBSOLETE 
707
// OBSOLETE /* Variable subrange bounds are described by auxiliary records; if aux_var_bound
708
// OBSOLETE    records are present, the lo_bound and hi_bound fields of this record are
709
// OBSOLETE    ignored by the debugger.
710
// OBSOLETE  */
711
// OBSOLETE 
712
// OBSOLETE typedef struct
713
// OBSOLETE   {
714
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to name string */
715
// OBSOLETE     dst_src_loc_t src_loc;  /* file/line of string definition */
716
// OBSOLETE     dst_type_t elem_type_desc;      /* element type */
717
// OBSOLETE     dst_type_t indx_type_desc;      /* index type */
718
// OBSOLETE     long lo_bound;          /* lower bound */
719
// OBSOLETE     long hi_bound;          /* upper bound */
720
// OBSOLETE     unsigned long size;             /* total string size (bytes) if fixed */
721
// OBSOLETE   }
722
// OBSOLETE dst_rec_string_t ALIGNED1;
723
// OBSOLETE 
724
// OBSOLETE 
725
// OBSOLETE /*---------------
726
// OBSOLETE   SET record 
727
// OBSOLETE   ---------------
728
// OBSOLETE   Describes a set type.
729
// OBSOLETE */
730
// OBSOLETE 
731
// OBSOLETE typedef struct
732
// OBSOLETE   {
733
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to name string */
734
// OBSOLETE     dst_src_loc_t src_loc;  /* file/line of definition */
735
// OBSOLETE     dst_type_t type_desc;   /* element type */
736
// OBSOLETE     unsigned short nbits;   /* number of bits in set */
737
// OBSOLETE     unsigned short size;    /* storage size (bytes) */
738
// OBSOLETE   }
739
// OBSOLETE dst_rec_set_t ALIGNED1;
740
// OBSOLETE 
741
// OBSOLETE 
742
// OBSOLETE /*-----------------------------
743
// OBSOLETE   IMPLICIT ENUMERATION record 
744
// OBSOLETE   -----------------------------
745
// OBSOLETE   Describes an enumeration type with implicit element values = 0, 1, 2, ...
746
// OBSOLETE   (Pascal-style).
747
// OBSOLETE */
748
// OBSOLETE 
749
// OBSOLETE typedef struct
750
// OBSOLETE   {
751
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to name string */
752
// OBSOLETE     dst_src_loc_t src_loc;  /* file/line of definition */
753
// OBSOLETE     unsigned short nelems;  /* number of elements in enumeration */
754
// OBSOLETE     unsigned short size;    /* storage size (bytes) */
755
// OBSOLETE     /* offsets to name strings of elements 0, 1, 2, ... */
756
// OBSOLETE     dst_rel_offset_t elem_noffsets[dst_dummy_array_size];
757
// OBSOLETE   }
758
// OBSOLETE dst_rec_implicit_enum_t ALIGNED1;
759
// OBSOLETE 
760
// OBSOLETE 
761
// OBSOLETE /*-----------------------------
762
// OBSOLETE   EXPLICIT ENUMERATION record 
763
// OBSOLETE   -----------------------------
764
// OBSOLETE   Describes an enumeration type with explicitly assigned element values
765
// OBSOLETE   (C-style).
766
// OBSOLETE */
767
// OBSOLETE 
768
// OBSOLETE typedef struct
769
// OBSOLETE   {
770
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to element name string */
771
// OBSOLETE     long value;                     /* element value */
772
// OBSOLETE   }
773
// OBSOLETE dst_enum_elem_t;
774
// OBSOLETE 
775
// OBSOLETE typedef struct
776
// OBSOLETE   {
777
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to name string */
778
// OBSOLETE     dst_src_loc_t src_loc;  /* file/line of definition */
779
// OBSOLETE     unsigned short nelems;  /* number of elements in enumeration */
780
// OBSOLETE     unsigned short size;    /* storage size (bytes) */
781
// OBSOLETE     /* name/value pairs, one describing each enumeration value: */
782
// OBSOLETE     dst_enum_elem_t elems[dst_dummy_array_size];
783
// OBSOLETE   }
784
// OBSOLETE dst_rec_explicit_enum_t ALIGNED1;
785
// OBSOLETE 
786
// OBSOLETE 
787
// OBSOLETE /*-----------------------
788
// OBSOLETE   RECORD / UNION record 
789
// OBSOLETE   -----------------------
790
// OBSOLETE   Describes a record (struct) or union.
791
// OBSOLETE 
792
// OBSOLETE   If the record is larger than 2**16 bytes then an attached aux record
793
// OBSOLETE   specifies its size.  Also, if the record is stored in short form then
794
// OBSOLETE   attached records specify field offsets larger than 2**16 bytes.
795
// OBSOLETE 
796
// OBSOLETE   Whether the fields[] array or sfields[] array is used is selected by
797
// OBSOLETE   the dst_rec_type_t of the overall dst record.
798
// OBSOLETE */
799
// OBSOLETE 
800
// OBSOLETE /*
801
// OBSOLETE    Record field descriptor, short form.  This form handles only fields which
802
// OBSOLETE    are an even number of bytes long, located some number of bytes from the
803
// OBSOLETE    start of the record.
804
// OBSOLETE  */
805
// OBSOLETE typedef struct
806
// OBSOLETE   {
807
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to field name string */
808
// OBSOLETE     dst_type_t type_desc;   /* field type */
809
// OBSOLETE     unsigned short foffset; /* field offset from start of record (bytes) */
810
// OBSOLETE   }
811
// OBSOLETE dst_short_field_t ALIGNED1;
812
// OBSOLETE 
813
// OBSOLETE typedef struct
814
// OBSOLETE   {
815
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to name string */
816
// OBSOLETE     dst_type_t type_desc;   /* field type */
817
// OBSOLETE     unsigned short foffset; /* byte offset */
818
// OBSOLETE     unsigned short is_packed:1;     /* True if field is packed */
819
// OBSOLETE     unsigned short bit_offset:6;    /* Bit offset */
820
// OBSOLETE     unsigned short size:6;  /* Size in bits */
821
// OBSOLETE     unsigned short sign:1;  /* True if signed */
822
// OBSOLETE     unsigned short pad:2;   /* Padding. Must be 0 */
823
// OBSOLETE   }
824
// OBSOLETE dst_old_field_t ALIGNED1;
825
// OBSOLETE 
826
// OBSOLETE /* Tag enumeration for long record field descriptor:
827
// OBSOLETE  */
828
// OBSOLETE typedef enum
829
// OBSOLETE   {
830
// OBSOLETE     dst_field_byte,
831
// OBSOLETE     dst_field_bit,
832
// OBSOLETE     dst_field_loc,
833
// OBSOLETE     dst_field_END_OF_ENUM
834
// OBSOLETE   }
835
// OBSOLETE dst_field_format_t;
836
// OBSOLETE 
837
// OBSOLETE /*
838
// OBSOLETE    Record field descriptor, long form.  The format of the field information
839
// OBSOLETE    is identified by the format_tag, which contains one of the above values.
840
// OBSOLETE    The field_byte variant is equivalent to the short form of field descriptor.
841
// OBSOLETE    The field_bit variant handles fields which are any number of bits long,
842
// OBSOLETE    located some number of bits from the start of the record.  The field_loc
843
// OBSOLETE    variant allows the location of the field to be described by a general loc
844
// OBSOLETE    string.
845
// OBSOLETE  */
846
// OBSOLETE typedef struct
847
// OBSOLETE   {
848
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to name of field */
849
// OBSOLETE     dst_type_t type_desc;   /* type of field */
850
// OBSOLETE     union
851
// OBSOLETE       {
852
// OBSOLETE     struct
853
// OBSOLETE       {
854
// OBSOLETE         dst_field_format_t format_tag:2;    /* dst_field_byte */
855
// OBSOLETE         unsigned long offset:30;    /* offset of field in bytes */
856
// OBSOLETE       }
857
// OBSOLETE     field_byte ALIGNED1;
858
// OBSOLETE     struct
859
// OBSOLETE       {
860
// OBSOLETE         dst_field_format_t format_tag:2;    /* dst_field_bit */
861
// OBSOLETE         unsigned long nbits:6;      /* bit size of field */
862
// OBSOLETE         unsigned long is_signed:1;  /* signed/unsigned attribute */
863
// OBSOLETE         unsigned long bit_offset:3;         /* bit offset from byte boundary */
864
// OBSOLETE         int pad:4;          /* must be zero */
865
// OBSOLETE         unsigned short byte_offset;         /* offset of byte boundary */
866
// OBSOLETE       }
867
// OBSOLETE     field_bit ALIGNED1;
868
// OBSOLETE     struct
869
// OBSOLETE       {
870
// OBSOLETE         dst_field_format_t format_tag:2;    /* dst_field_loc */
871
// OBSOLETE         int loffset:30;     /* dst_rel_offset_t to loc string */
872
// OBSOLETE       }
873
// OBSOLETE     field_loc ALIGNED1;
874
// OBSOLETE       }
875
// OBSOLETE     f ALIGNED1;
876
// OBSOLETE   }
877
// OBSOLETE dst_field_t;
878
// OBSOLETE 
879
// OBSOLETE /* The field_loc.loffset field is a 30-bit signed value.  Some versions of C do
880
// OBSOLETE    not support signed bit fields.  The following macro will extract that field
881
// OBSOLETE    as a signed value:
882
// OBSOLETE  */
883
// OBSOLETE #define dst_field_loffset(field_rec) \
884
// OBSOLETE     ( ((int) ((field_rec).f.field_loc.loffset << 2)) >> 2 )
885
// OBSOLETE 
886
// OBSOLETE 
887
// OBSOLETE typedef struct
888
// OBSOLETE   {
889
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to record name string */
890
// OBSOLETE     dst_src_loc_t src_loc;  /* file/line where this record is defined */
891
// OBSOLETE     unsigned short size;    /* storage size (bytes) */
892
// OBSOLETE     unsigned short nfields; /* number of fields in this record */
893
// OBSOLETE     union
894
// OBSOLETE       {
895
// OBSOLETE     dst_field_t fields[dst_dummy_array_size];
896
// OBSOLETE     dst_short_field_t sfields[dst_dummy_array_size];
897
// OBSOLETE     dst_old_field_t ofields[dst_dummy_array_size];
898
// OBSOLETE       }
899
// OBSOLETE     f;                              /* array of fields */
900
// OBSOLETE   }
901
// OBSOLETE dst_rec_record_t ALIGNED1;
902
// OBSOLETE 
903
// OBSOLETE 
904
// OBSOLETE /*-------------
905
// OBSOLETE   FILE record
906
// OBSOLETE   -------------
907
// OBSOLETE   Describes a file type.
908
// OBSOLETE */
909
// OBSOLETE 
910
// OBSOLETE typedef struct
911
// OBSOLETE   {
912
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to name string */
913
// OBSOLETE     dst_src_loc_t src_loc;  /* file/line where type was defined */
914
// OBSOLETE     dst_type_t type_desc;   /* file element type */
915
// OBSOLETE   }
916
// OBSOLETE dst_rec_file_t ALIGNED1;
917
// OBSOLETE 
918
// OBSOLETE 
919
// OBSOLETE /*---------------
920
// OBSOLETE   OFFSET record 
921
// OBSOLETE   ---------------
922
// OBSOLETE    Describes a Pascal offset type.
923
// OBSOLETE    (This type, an undocumented Domain Pascal extension, is currently not
924
// OBSOLETE    supported by the debugger)
925
// OBSOLETE */
926
// OBSOLETE 
927
// OBSOLETE typedef struct
928
// OBSOLETE   {
929
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to the name string */
930
// OBSOLETE     dst_src_loc_t src_loc;  /* file/line of definition */
931
// OBSOLETE     dst_type_t area_type_desc;      /* area type */
932
// OBSOLETE     dst_type_t base_type_desc;      /* base type */
933
// OBSOLETE     long lo_bound;          /* low bound of the offset range */
934
// OBSOLETE     long hi_bound;          /* high bound of the offset range */
935
// OBSOLETE     long bias;                      /* bias */
936
// OBSOLETE     unsigned short scale;   /* scale factor */
937
// OBSOLETE     unsigned short size;    /* storage size (bytes) */
938
// OBSOLETE   }
939
// OBSOLETE dst_rec_offset_t ALIGNED1;
940
// OBSOLETE 
941
// OBSOLETE 
942
// OBSOLETE /*--------------
943
// OBSOLETE   ALIAS record 
944
// OBSOLETE   --------------
945
// OBSOLETE   Describes a type alias (e.g., typedef).
946
// OBSOLETE */
947
// OBSOLETE 
948
// OBSOLETE typedef struct
949
// OBSOLETE   {
950
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to name string */
951
// OBSOLETE     dst_src_loc_t src_loc;  /* file/line of definition */
952
// OBSOLETE     dst_type_t type_desc;   /* parent type */
953
// OBSOLETE   }
954
// OBSOLETE dst_rec_alias_t ALIGNED1;
955
// OBSOLETE 
956
// OBSOLETE 
957
// OBSOLETE /*------------------
958
// OBSOLETE   SIGNATURE record
959
// OBSOLETE   ------------------
960
// OBSOLETE   Describes a procedure/function type.
961
// OBSOLETE */
962
// OBSOLETE 
963
// OBSOLETE /* Enumeration of argument semantics.  Note that most are mutually
964
// OBSOLETE    exclusive.
965
// OBSOLETE  */
966
// OBSOLETE typedef enum
967
// OBSOLETE   {
968
// OBSOLETE     dst_arg_attr_val,               /* passed by value */
969
// OBSOLETE     dst_arg_attr_ref,               /* passed by reference */
970
// OBSOLETE     dst_arg_attr_name,              /* passed by name */
971
// OBSOLETE     dst_arg_attr_in,                /* readable in the callee */
972
// OBSOLETE     dst_arg_attr_out,               /* writable in the callee */
973
// OBSOLETE     dst_arg_attr_hidden,    /* not visible in the caller */
974
// OBSOLETE     dst_arg_attr_END_OF_ENUM
975
// OBSOLETE   }
976
// OBSOLETE dst_arg_attr_t;
977
// OBSOLETE 
978
// OBSOLETE /* Argument descriptor.  Actually points to a variable record for most of the
979
// OBSOLETE    information.
980
// OBSOLETE  */
981
// OBSOLETE typedef struct
982
// OBSOLETE   {
983
// OBSOLETE     dst_rel_offset_t var_offset;    /* offset to variable record */
984
// OBSOLETE     unsigned short attributes;      /* a mask of dst_arg_attr_t flags */
985
// OBSOLETE   }
986
// OBSOLETE dst_arg_t ALIGNED1;
987
// OBSOLETE 
988
// OBSOLETE typedef struct
989
// OBSOLETE   {
990
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to name string */
991
// OBSOLETE     dst_src_loc_t src_loc;  /* file/line of function definition */
992
// OBSOLETE     dst_rel_offset_t result;        /* offset to function result variable record */
993
// OBSOLETE     unsigned short nargs;   /* number of arguments */
994
// OBSOLETE     dst_arg_t args[dst_dummy_array_size];
995
// OBSOLETE   }
996
// OBSOLETE dst_rec_signature_t ALIGNED1;
997
// OBSOLETE 
998
// OBSOLETE /*--------------
999
// OBSOLETE   SCOPE record
1000
// OBSOLETE   --------------
1001
// OBSOLETE   Obsolete. Use the new ENTRY type instead.
1002
// OBSOLETE   Old compilers may put this in as the first entry in a function,
1003
// OBSOLETE   terminated by an end of scope entry.
1004
// OBSOLETE */
1005
// OBSOLETE 
1006
// OBSOLETE typedef struct
1007
// OBSOLETE   {
1008
// OBSOLETE     dst_rel_offset_t noffset;       /* Name offset */
1009
// OBSOLETE     dst_src_loc_t start_line;       /* Starting line */
1010
// OBSOLETE     dst_src_loc_t end_line; /* Ending line */
1011
// OBSOLETE   }
1012
// OBSOLETE dst_rec_scope_t ALIGNED1;
1013
// OBSOLETE 
1014
// OBSOLETE /*--------------
1015
// OBSOLETE   ENTRY record
1016
// OBSOLETE   --------------
1017
// OBSOLETE   Describes a procedure/function entry point.  An entry record is to a
1018
// OBSOLETE   signature record roughly as a variable record is to a type descriptor record.
1019
// OBSOLETE 
1020
// OBSOLETE   The entry_number field is keyed to the entry numbers in .lines -- the 
1021
// OBSOLETE   debugger locates the code location of an entry by searching the line
1022
// OBSOLETE   number table for an entry numbered with the value of entry_number.  The
1023
// OBSOLETE   main entry is numbered zero.
1024
// OBSOLETE */
1025
// OBSOLETE 
1026
// OBSOLETE typedef struct
1027
// OBSOLETE   {
1028
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to entry name string */
1029
// OBSOLETE     dst_rel_offset_t loffset;       /* where to jump to call this entry */
1030
// OBSOLETE     dst_src_loc_t src_loc;  /* file/line of definition */
1031
// OBSOLETE     dst_rel_offset_t sig_desc;      /* offset to signature descriptor */
1032
// OBSOLETE     unsigned int entry_number:8;
1033
// OBSOLETE     int pad:8;                      /* must be zero */
1034
// OBSOLETE   }
1035
// OBSOLETE dst_rec_entry_t ALIGNED1;
1036
// OBSOLETE 
1037
// OBSOLETE /*-----------------------
1038
// OBSOLETE   Old format ENTRY record
1039
// OBSOLETE   -----------------------
1040
// OBSOLETE   Supposedly obsolete but still used by some compilers.
1041
// OBSOLETE  */
1042
// OBSOLETE 
1043
// OBSOLETE typedef struct
1044
// OBSOLETE   {
1045
// OBSOLETE     dst_rel_offset_t noffset;       /* Offset to entry name string */
1046
// OBSOLETE     dst_src_loc_t src_loc;  /* Location in source */
1047
// OBSOLETE     dst_rel_offset_t sig_desc;      /* Signature description */
1048
// OBSOLETE     char unknown[36];
1049
// OBSOLETE   }
1050
// OBSOLETE dst_rec_old_entry_t ALIGNED1;
1051
// OBSOLETE 
1052
// OBSOLETE /*--------------
1053
// OBSOLETE   LABEL record 
1054
// OBSOLETE   --------------
1055
// OBSOLETE   Describes a program label.
1056
// OBSOLETE */
1057
// OBSOLETE 
1058
// OBSOLETE typedef struct
1059
// OBSOLETE   {
1060
// OBSOLETE     dst_rel_offset_t noffset;       /* offset to label string */
1061
// OBSOLETE     dst_rel_offset_t loffset;       /* offset to loc string */
1062
// OBSOLETE     dst_src_loc_t src_loc;  /* file/line of definition */
1063
// OBSOLETE   }
1064
// OBSOLETE dst_rec_label_t ALIGNED1;
1065
// OBSOLETE 
1066
// OBSOLETE 
1067
// OBSOLETE /*-----------------------
1068
// OBSOLETE   AUXILIARY SIZE record
1069
// OBSOLETE   -----------------------
1070
// OBSOLETE   May appear in the auxiliary record list of any type or variable record to
1071
// OBSOLETE   modify the default size of the type or variable.
1072
// OBSOLETE */
1073
// OBSOLETE 
1074
// OBSOLETE typedef struct
1075
// OBSOLETE   {
1076
// OBSOLETE     unsigned long size;             /* size (bytes) */
1077
// OBSOLETE   }
1078
// OBSOLETE dst_rec_aux_size_t ALIGNED1;
1079
// OBSOLETE 
1080
// OBSOLETE 
1081
// OBSOLETE /*-----------------------
1082
// OBSOLETE   AUXILIARY ALIGN record
1083
// OBSOLETE   -----------------------
1084
// OBSOLETE   May appear in the auxiliary record list of any type or variable record to
1085
// OBSOLETE   modify the default alignment of the type or variable.
1086
// OBSOLETE */
1087
// OBSOLETE 
1088
// OBSOLETE typedef struct
1089
// OBSOLETE   {
1090
// OBSOLETE     unsigned short alignment;       /* # of low order zero bits */
1091
// OBSOLETE   }
1092
// OBSOLETE dst_rec_aux_align_t ALIGNED1;
1093
// OBSOLETE 
1094
// OBSOLETE 
1095
// OBSOLETE /*-----------------------------
1096
// OBSOLETE   AUXILIARY FIELD SIZE record
1097
// OBSOLETE   -----------------------------
1098
// OBSOLETE   May appear in the auxiliary record list of any RECORD/UNION record to 
1099
// OBSOLETE   modify the default size of a field.
1100
// OBSOLETE */
1101
// OBSOLETE 
1102
// OBSOLETE typedef struct
1103
// OBSOLETE   {
1104
// OBSOLETE     unsigned short field_no;        /* field number */
1105
// OBSOLETE     unsigned long size;             /* size (bits) */
1106
// OBSOLETE   }
1107
// OBSOLETE dst_rec_aux_field_size_t ALIGNED1;
1108
// OBSOLETE 
1109
// OBSOLETE 
1110
// OBSOLETE 
1111
// OBSOLETE /*-----------------------------
1112
// OBSOLETE   AUXILIARY FIELD OFFSET record
1113
// OBSOLETE   -----------------------------
1114
// OBSOLETE   May appear in the auxiliary record list of any RECORD/UNION record to 
1115
// OBSOLETE   specify a field offset larger than 2**16.
1116
// OBSOLETE */
1117
// OBSOLETE 
1118
// OBSOLETE typedef struct
1119
// OBSOLETE   {
1120
// OBSOLETE     unsigned short field_no;        /* field number */
1121
// OBSOLETE     unsigned long foffset;  /* offset */
1122
// OBSOLETE   }
1123
// OBSOLETE dst_rec_aux_field_off_t ALIGNED1;
1124
// OBSOLETE 
1125
// OBSOLETE 
1126
// OBSOLETE /*-----------------------------
1127
// OBSOLETE   AUXILIARY FIELD ALIGN record
1128
// OBSOLETE   -----------------------------
1129
// OBSOLETE   May appear in the auxiliary record list of any RECORD/UNION record to 
1130
// OBSOLETE   modify the default alignment of a field.
1131
// OBSOLETE */
1132
// OBSOLETE 
1133
// OBSOLETE typedef struct
1134
// OBSOLETE   {
1135
// OBSOLETE     unsigned short field_no;        /* field number */
1136
// OBSOLETE     unsigned short alignment;       /* number of low order zero bits */
1137
// OBSOLETE   }
1138
// OBSOLETE dst_rec_aux_field_align_t ALIGNED1;
1139
// OBSOLETE 
1140
// OBSOLETE 
1141
// OBSOLETE /*----------------------------
1142
// OBSOLETE   AUXILIARY VAR BOUND record
1143
// OBSOLETE   ----------------------------
1144
// OBSOLETE   May appear in the auxiliary record list of any ARRAY, SUBRANGE or STRING
1145
// OBSOLETE   record to describe a variable bound for the range of the type.
1146
// OBSOLETE */
1147
// OBSOLETE 
1148
// OBSOLETE typedef enum
1149
// OBSOLETE   {
1150
// OBSOLETE     dst_low_bound,          /* the low bound is variable */
1151
// OBSOLETE     dst_high_bound,         /* the high bound is variable */
1152
// OBSOLETE     dst_var_bound_END_OF_ENUM
1153
// OBSOLETE   }
1154
// OBSOLETE dst_var_bound_t;
1155
// OBSOLETE 
1156
// OBSOLETE typedef struct
1157
// OBSOLETE   {
1158
// OBSOLETE     unsigned short which;   /* which bound */
1159
// OBSOLETE     dst_rel_offset_t voffset ALIGNED1;      /* variable that defines bound */
1160
// OBSOLETE   }
1161
// OBSOLETE dst_rec_aux_var_bound_t ALIGNED1;
1162
// OBSOLETE 
1163
// OBSOLETE 
1164
// OBSOLETE /*----------------------------------
1165
// OBSOLETE   AUXILIARY TYPE DERIVATION record 
1166
// OBSOLETE   ----------------------------------
1167
// OBSOLETE   May appear in the auxiliary record list of any RECORD/UNION record to denote
1168
// OBSOLETE   class inheritance of that type from a parent type.
1169
// OBSOLETE 
1170
// OBSOLETE   Inheritance implies that it is possible to convert the inheritor type to the
1171
// OBSOLETE   inherited type, retaining those fields which were inherited.  To allow this,
1172
// OBSOLETE   orig_field_no, a field number into the record type, is provided.  If 
1173
// OBSOLETE   orig_is_pointer is false, then the start of the inherited record is located
1174
// OBSOLETE   at the location of the field indexed by orig_field_no.  If orig_is_pointer
1175
// OBSOLETE   is true, then it is located at the address contained in the field indexed
1176
// OBSOLETE   by orig_field_no (assumed to be a pointer).
1177
// OBSOLETE */
1178
// OBSOLETE 
1179
// OBSOLETE typedef struct
1180
// OBSOLETE   {
1181
// OBSOLETE     dst_type_t parent_type; /* reference to inherited type */
1182
// OBSOLETE     unsigned short orig_field_no;
1183
// OBSOLETE     boolean orig_is_pointer:1;
1184
// OBSOLETE     int unused:15;          /* must be zero */
1185
// OBSOLETE   }
1186
// OBSOLETE dst_rec_aux_type_deriv_t ALIGNED1;
1187
// OBSOLETE 
1188
// OBSOLETE 
1189
// OBSOLETE /*------------------------------------
1190
// OBSOLETE   AUXILIARY VARIABLE LIFETIME record
1191
// OBSOLETE   ------------------------------------
1192
// OBSOLETE   May appear in the auxiliary record list of a VARIABLE record to add location
1193
// OBSOLETE   information for an additional variable lifetime.
1194
// OBSOLETE */
1195
// OBSOLETE 
1196
// OBSOLETE typedef struct
1197
// OBSOLETE   {
1198
// OBSOLETE     dst_rel_offset_t loffset;
1199
// OBSOLETE   }
1200
// OBSOLETE dst_rec_aux_lifetime_t ALIGNED1;
1201
// OBSOLETE 
1202
// OBSOLETE 
1203
// OBSOLETE /*-------------------------------
1204
// OBSOLETE   AUXILIARY POINTER BASE record 
1205
// OBSOLETE   -------------------------------
1206
// OBSOLETE   May appear in the auxiliary record list of a VARIABLE record to provide a
1207
// OBSOLETE   pointer base to substitute for references to any such bases in the location
1208
// OBSOLETE   string of the variable.  A pointer base is another VARIABLE record.  When
1209
// OBSOLETE   the variable is evaluated by the debugger, it uses the current value of the
1210
// OBSOLETE   pointer base variable in computing its location.
1211
// OBSOLETE 
1212
// OBSOLETE   This is useful for representing FORTRAN pointer-based variables.
1213
// OBSOLETE */
1214
// OBSOLETE 
1215
// OBSOLETE typedef struct
1216
// OBSOLETE   {
1217
// OBSOLETE     dst_rel_offset_t voffset;
1218
// OBSOLETE   }
1219
// OBSOLETE dst_rec_aux_ptr_base_t ALIGNED1;
1220
// OBSOLETE 
1221
// OBSOLETE 
1222
// OBSOLETE /*---------------------------------
1223
// OBSOLETE   AUXILIARY REGISTER VALUE record 
1224
// OBSOLETE   ---------------------------------
1225
// OBSOLETE   May appear in the auxiliary record list of an ENTRY record to specify
1226
// OBSOLETE   a register that must be set to a specific value before jumping to the entry
1227
// OBSOLETE   point in a debugger "call".  The debugger must set the debuggee register,
1228
// OBSOLETE   specified by the register code, to the value of the *address* to which the
1229
// OBSOLETE   location string resolves.  If the address is register-relative, then the
1230
// OBSOLETE   call cannot be made unless the current stack frame is the lexical parent
1231
// OBSOLETE   of the entry.  An example of this is when a (Pascal) nested procedure
1232
// OBSOLETE   contains references to its parent's variables, which it accesses through
1233
// OBSOLETE   a static link register.  The static link register must be set to some
1234
// OBSOLETE   address relative to the parent's stack base register.
1235
// OBSOLETE */
1236
// OBSOLETE 
1237
// OBSOLETE typedef struct
1238
// OBSOLETE   {
1239
// OBSOLETE     unsigned short reg;             /* identifies register to set (isp enum) */
1240
// OBSOLETE     dst_rel_offset_t loffset;       /* references a location string */
1241
// OBSOLETE   }
1242
// OBSOLETE dst_rec_aux_reg_val_t ALIGNED1;
1243
// OBSOLETE 
1244
// OBSOLETE 
1245
// OBSOLETE /*==========================================================*/
1246
// OBSOLETE /*========== RECORDS USED IN .blocks AND .symbols ==========*/
1247
// OBSOLETE /*==========================================================*/
1248
// OBSOLETE 
1249
// OBSOLETE /*---------------------
1250
// OBSOLETE   STRING TABLE record
1251
// OBSOLETE   ---------------------
1252
// OBSOLETE   A string table record contains any number of null-terminated, variable length
1253
// OBSOLETE   strings.   The length field gives the size in bytes of the text field, which
1254
// OBSOLETE   can be any size.
1255
// OBSOLETE 
1256
// OBSOLETE   The global name table shares this format.  This record appears in the
1257
// OBSOLETE   .blocks section.  Each string in the table identifies a global defined in
1258
// OBSOLETE   the current compilation unit.
1259
// OBSOLETE 
1260
// OBSOLETE   The loc pool record shares this format as well.  Loc strings are described
1261
// OBSOLETE   elsewhere.
1262
// OBSOLETE */
1263
// OBSOLETE 
1264
// OBSOLETE typedef struct
1265
// OBSOLETE   {
1266
// OBSOLETE     unsigned long length;
1267
// OBSOLETE     char text[dst_dummy_array_size];
1268
// OBSOLETE   }
1269
// OBSOLETE dst_rec_string_tab_t ALIGNED1;
1270
// OBSOLETE 
1271
// OBSOLETE 
1272
// OBSOLETE /*-----------------------
1273
// OBSOLETE   AUXILIARY QUAL record 
1274
// OBSOLETE   -----------------------
1275
// OBSOLETE   May appear in the auxiliary record list of any BLOCK, VARIABLE, or type record
1276
// OBSOLETE   to provide it with a fully-qualified, language-dependent name.
1277
// OBSOLETE */
1278
// OBSOLETE 
1279
// OBSOLETE typedef struct
1280
// OBSOLETE   {
1281
// OBSOLETE     dst_rel_offset_t lang_qual_name;
1282
// OBSOLETE   }
1283
// OBSOLETE dst_rec_aux_qual_t ALIGNED1;
1284
// OBSOLETE 
1285
// OBSOLETE 
1286
// OBSOLETE /*----------------
1287
// OBSOLETE   FORWARD record
1288
// OBSOLETE   ----------------
1289
// OBSOLETE   Reference to a record somewhere else.  This allows identical definitions in
1290
// OBSOLETE   different scopes to share data.
1291
// OBSOLETE */
1292
// OBSOLETE 
1293
// OBSOLETE typedef struct
1294
// OBSOLETE   {
1295
// OBSOLETE     dst_rel_offset_t rec_off;
1296
// OBSOLETE   }
1297
// OBSOLETE dst_rec_forward_t ALIGNED1;
1298
// OBSOLETE 
1299
// OBSOLETE 
1300
// OBSOLETE /*-------------------------------
1301
// OBSOLETE   AUXILIARY SOURCE RANGE record
1302
// OBSOLETE   -------------------------------
1303
// OBSOLETE   May appear in the auxiliary record list of any BLOCK record to specify a
1304
// OBSOLETE   range of source lines over which the block is active.
1305
// OBSOLETE */
1306
// OBSOLETE 
1307
// OBSOLETE typedef struct
1308
// OBSOLETE   {
1309
// OBSOLETE     dst_src_loc_t first_line;       /* first source line */
1310
// OBSOLETE     dst_src_loc_t last_line;        /* last source line */
1311
// OBSOLETE   }
1312
// OBSOLETE dst_rec_aux_src_range_t ALIGNED1;
1313
// OBSOLETE 
1314
// OBSOLETE 
1315
// OBSOLETE /*------------------
1316
// OBSOLETE   EXTENSION record 
1317
// OBSOLETE   ------------------
1318
// OBSOLETE   Provision for "foreign" records, such as might be generated by a non-Apollo
1319
// OBSOLETE   compiler.  Apollo software will ignore these.
1320
// OBSOLETE */
1321
// OBSOLETE 
1322
// OBSOLETE typedef struct
1323
// OBSOLETE   {
1324
// OBSOLETE     unsigned short rec_size;        /* record size (bytes) */
1325
// OBSOLETE     unsigned short ext_type;        /* defined by whoever generates it */
1326
// OBSOLETE     unsigned short ext_data;        /* place-holder for arbitrary amount of data */
1327
// OBSOLETE   }
1328
// OBSOLETE dst_rec_extension_t ALIGNED1;
1329
// OBSOLETE 
1330
// OBSOLETE 
1331
// OBSOLETE /*
1332
// OBSOLETE    ** DEBUG SYMBOL record -- The wrapper for all .blocks and .symbols records.
1333
// OBSOLETE    **
1334
// OBSOLETE    ** This record ties together all previous .blocks and .symbols records 
1335
// OBSOLETE    ** together in a union with a common header.  The rec_type field of the
1336
// OBSOLETE    ** header identifies the record type.  The rec_flags field currently only
1337
// OBSOLETE    ** defines auxiliary record lists. 
1338
// OBSOLETE    **
1339
// OBSOLETE    ** If a record carries with it a non-null auxiliary record list, its
1340
// OBSOLETE    ** dst_flag_has_aux_recs flag is set, and each of the records that follow
1341
// OBSOLETE    ** it are treated as its auxiliary records, until the end of the compilation
1342
// OBSOLETE    ** unit or scope is reached, or until an auxiliary record with its
1343
// OBSOLETE    ** dst_flag_last_aux_rec flag set is reached.
1344
// OBSOLETE  */
1345
// OBSOLETE 
1346
// OBSOLETE typedef enum
1347
// OBSOLETE   {
1348
// OBSOLETE     dst_flag_has_aux_recs,
1349
// OBSOLETE     dst_flag_last_aux_rec,
1350
// OBSOLETE     dst_rec_flag_END_OF_ENUM
1351
// OBSOLETE   }
1352
// OBSOLETE dst_rec_flags_t;
1353
// OBSOLETE 
1354
// OBSOLETE typedef struct
1355
// OBSOLETE   {
1356
// OBSOLETE     dst_rec_type_t rec_type:8;      /* record type */
1357
// OBSOLETE     int rec_flags:8;                /* mask of dst_rec_flags_t */
1358
// OBSOLETE     union                   /* switched on rec_type field above */
1359
// OBSOLETE       {
1360
// OBSOLETE     /* dst_typ_pad requires no additional fields */
1361
// OBSOLETE     dst_rec_comp_unit_t comp_unit_;
1362
// OBSOLETE     dst_rec_section_tab_t section_tab_;
1363
// OBSOLETE     dst_rec_file_tab_t file_tab_;
1364
// OBSOLETE     dst_rec_block_t block_;
1365
// OBSOLETE     dst_rec_var_t var_;
1366
// OBSOLETE     dst_rec_pointer_t pointer_;
1367
// OBSOLETE     dst_rec_array_t array_;
1368
// OBSOLETE     dst_rec_subrange_t subrange_;
1369
// OBSOLETE     dst_rec_set_t set_;
1370
// OBSOLETE     dst_rec_implicit_enum_t implicit_enum_;
1371
// OBSOLETE     dst_rec_explicit_enum_t explicit_enum_;
1372
// OBSOLETE     /* dst_typ_short_{rec,union} are represented by 'rec' (below) */
1373
// OBSOLETE     dst_rec_file_t file_;
1374
// OBSOLETE     dst_rec_offset_t offset_;
1375
// OBSOLETE     dst_rec_alias_t alias_;
1376
// OBSOLETE     dst_rec_signature_t signature_;
1377
// OBSOLETE     dst_rec_old_label_t old_label_;
1378
// OBSOLETE     dst_rec_scope_t scope_;
1379
// OBSOLETE     /* dst_typ_end_scope requires no additional fields */
1380
// OBSOLETE     dst_rec_string_tab_t string_tab_;
1381
// OBSOLETE     /* dst_typ_global_name_tab is represented by 'string_tab' (above) */
1382
// OBSOLETE     dst_rec_forward_t forward_;
1383
// OBSOLETE     dst_rec_aux_size_t aux_size_;
1384
// OBSOLETE     dst_rec_aux_align_t aux_align_;
1385
// OBSOLETE     dst_rec_aux_field_size_t aux_field_size_;
1386
// OBSOLETE     dst_rec_aux_field_off_t aux_field_off_;
1387
// OBSOLETE     dst_rec_aux_field_align_t aux_field_align_;
1388
// OBSOLETE     dst_rec_aux_qual_t aux_qual_;
1389
// OBSOLETE     dst_rec_aux_var_bound_t aux_var_bound_;
1390
// OBSOLETE     dst_rec_extension_t extension_;
1391
// OBSOLETE     dst_rec_string_t string_;
1392
// OBSOLETE     dst_rec_const_t const_;
1393
// OBSOLETE     /* dst_typ_reference is represented by 'pointer' (above) */
1394
// OBSOLETE     dst_rec_record_t record_;
1395
// OBSOLETE     /* dst_typ_union is represented by 'record' (above) */
1396
// OBSOLETE     dst_rec_aux_type_deriv_t aux_type_deriv_;
1397
// OBSOLETE     /* dst_typ_locpool is represented by 'string_tab' (above) */
1398
// OBSOLETE     dst_rec_variable_t variable_;
1399
// OBSOLETE     dst_rec_label_t label_;
1400
// OBSOLETE     dst_rec_entry_t entry_;
1401
// OBSOLETE     dst_rec_aux_lifetime_t aux_lifetime_;
1402
// OBSOLETE     dst_rec_aux_ptr_base_t aux_ptr_base_;
1403
// OBSOLETE     dst_rec_aux_src_range_t aux_src_range_;
1404
// OBSOLETE     dst_rec_aux_reg_val_t aux_reg_val_;
1405
// OBSOLETE     dst_rec_name_tab_t aux_unit_names_;
1406
// OBSOLETE     dst_rec_sect_info_tab_t aux_sect_info_;
1407
// OBSOLETE       }
1408
// OBSOLETE     rec_data ALIGNED1;
1409
// OBSOLETE   }
1410
// OBSOLETE dst_rec_t, *dst_rec_ptr_t;
1411
// OBSOLETE 
1412
// OBSOLETE 
1413
// OBSOLETE /*===============================================*/
1414
// OBSOLETE /*========== .lines SECTION DEFINITIONS =========*/
1415
// OBSOLETE /*===============================================*/
1416
// OBSOLETE /*
1417
// OBSOLETE    The .lines section contains a sequence of line number tables.  There is no
1418
// OBSOLETE    record structure within the section.  The start of the table for a routine
1419
// OBSOLETE    is pointed to by the block record, and the end of the table is signaled by
1420
// OBSOLETE    an escape code.
1421
// OBSOLETE 
1422
// OBSOLETE    A line number table is a sequence of bytes.  The default entry contains a line
1423
// OBSOLETE    number delta (-7..+7) in the high 4 bits and a pc delta (0..15) in the low 4 
1424
// OBSOLETE    bits. Special cases, including when one or both of the values is too large
1425
// OBSOLETE    to fit in 4 bits and other special cases are handled through escape entries.
1426
// OBSOLETE    Escape entries are identified by the value 0x8 in the high 4 bits.  The low 4
1427
// OBSOLETE    bits are occupied by a function code.  Some escape entries are followed by
1428
// OBSOLETE    additional arguments, which may be bytes, words, or longwords.  This data is
1429
// OBSOLETE    not aligned. 
1430
// OBSOLETE 
1431
// OBSOLETE    The initial PC offset, file number and line number are zero.  Normally, the
1432
// OBSOLETE    table begins with a dst_ln_file escape which establishes the initial file
1433
// OBSOLETE    and line number.  All PC deltas are unsigned (thus the table is ordered by
1434
// OBSOLETE    increasing PC); line number deltas are signed.  The table ends with a 
1435
// OBSOLETE    dst_ln_end escape, which is followed by a final table entry whose PC delta
1436
// OBSOLETE    gives the code size of the last statement.
1437
// OBSOLETE 
1438
// OBSOLETE    Escape     Semantic
1439
// OBSOLETE    ---------  ------------------------------------------------------------
1440
// OBSOLETE    file       Changes file state.  The current source file remains constant
1441
// OBSOLETE    until another file escape.  Though the line number state is
1442
// OBSOLETE    also updated by a file escape, a file escape does NOT 
1443
// OBSOLETE    constitute a line table entry.
1444
// OBSOLETE 
1445
// OBSOLETE    statement  Alters the statement number of the next table entry.  By 
1446
// OBSOLETE    default, all table entries refer to the first statement on a
1447
// OBSOLETE    line.  Statement number one is the second statement, and so on.
1448
// OBSOLETE 
1449
// OBSOLETE    entry      Identifies the next table entry as the position of an entry 
1450
// OBSOLETE    point for the current block.  The PC position should follow 
1451
// OBSOLETE    any procedure prologue code.  An argument specifies the entry
1452
// OBSOLETE    number, which is keyed to the entry number of the corresponding
1453
// OBSOLETE    .symbols ENTRY record.
1454
// OBSOLETE 
1455
// OBSOLETE    exit       Identifies the next table entry as the last position within 
1456
// OBSOLETE    the current block before a procedure epiloge and subsequent
1457
// OBSOLETE    procedure exit.
1458
// OBSOLETE 
1459
// OBSOLETE    gap        By default, the executable code corresponding to a table entry 
1460
// OBSOLETE    is assumed to extend to the beginning of the next table entry.
1461
// OBSOLETE    If this is not the case--there is a "hole" in the table--then
1462
// OBSOLETE    a gap escape should follow the first table entry to specify
1463
// OBSOLETE    where the code for that entry ends.
1464
// OBSOLETE  */
1465
// OBSOLETE 
1466
// OBSOLETE #define dst_ln_escape_flag    -8
1467
// OBSOLETE 
1468
// OBSOLETE /*
1469
// OBSOLETE    Escape function codes:
1470
// OBSOLETE  */
1471
// OBSOLETE typedef enum
1472
// OBSOLETE   {
1473
// OBSOLETE     dst_ln_pad,                     /* pad byte */
1474
// OBSOLETE     dst_ln_file,            /* file escape.  Next 4 bytes are a dst_src_loc_t */
1475
// OBSOLETE     dst_ln_dln1_dpc1,               /* 1 byte line delta, 1 byte pc delta */
1476
// OBSOLETE     dst_ln_dln2_dpc2,               /* 2 bytes line delta, 2 bytes pc delta */
1477
// OBSOLETE     dst_ln_ln4_pc4,         /* 4 bytes ABSOLUTE line number, 4 bytes ABSOLUTE pc */
1478
// OBSOLETE     dst_ln_dln1_dpc0,               /* 1 byte line delta, pc delta = 0 */
1479
// OBSOLETE     dst_ln_ln_off_1,                /* statement escape, stmt # = 1 (2nd stmt on line) */
1480
// OBSOLETE     dst_ln_ln_off,          /* statement escape, stmt # = next byte */
1481
// OBSOLETE     dst_ln_entry,           /* entry escape, next byte is entry number */
1482
// OBSOLETE     dst_ln_exit,            /* exit escape */
1483
// OBSOLETE     dst_ln_stmt_end,                /* gap escape, 4 bytes pc delta */
1484
// OBSOLETE     dst_ln_escape_11,               /* reserved */
1485
// OBSOLETE     dst_ln_escape_12,               /* reserved */
1486
// OBSOLETE     dst_ln_escape_13,               /* reserved */
1487
// OBSOLETE     dst_ln_nxt_byte,                /* next byte contains the real escape code */
1488
// OBSOLETE     dst_ln_end,                     /* end escape, final entry follows */
1489
// OBSOLETE     dst_ln_escape_END_OF_ENUM
1490
// OBSOLETE   }
1491
// OBSOLETE dst_ln_escape_t;
1492
// OBSOLETE 
1493
// OBSOLETE /*
1494
// OBSOLETE    Line number table entry
1495
// OBSOLETE  */
1496
// OBSOLETE typedef union
1497
// OBSOLETE   {
1498
// OBSOLETE     struct
1499
// OBSOLETE       {
1500
// OBSOLETE     unsigned int ln_delta:4;        /* 4 bit line number delta */
1501
// OBSOLETE     unsigned int pc_delta:4;        /* 4 bit pc delta */
1502
// OBSOLETE       }
1503
// OBSOLETE     delta;
1504
// OBSOLETE 
1505
// OBSOLETE     struct
1506
// OBSOLETE       {
1507
// OBSOLETE     unsigned int esc_flag:4;        /* alias for ln_delta */
1508
// OBSOLETE     dst_ln_escape_t esc_code:4;     /* escape function code */
1509
// OBSOLETE       }
1510
// OBSOLETE     esc;
1511
// OBSOLETE 
1512
// OBSOLETE     char sdata;                     /* signed data byte */
1513
// OBSOLETE     unsigned char udata;    /* unsigned data byte */
1514
// OBSOLETE   }
1515
// OBSOLETE dst_ln_entry_t,
1516
// OBSOLETE  *dst_ln_entry_ptr_t,
1517
// OBSOLETE   dst_ln_table_t[dst_dummy_array_size];
1518
// OBSOLETE 
1519
// OBSOLETE /* The following macro will extract the ln_delta field as a signed value:
1520
// OBSOLETE  */
1521
// OBSOLETE #define dst_ln_ln_delta(ln_rec) \
1522
// OBSOLETE     ( ((short) ((ln_rec).delta.ln_delta << 12)) >> 12 )
1523
// OBSOLETE 
1524
// OBSOLETE 
1525
// OBSOLETE 
1526
// OBSOLETE 
1527
// OBSOLETE typedef struct dst_sec_struct
1528
// OBSOLETE   {
1529
// OBSOLETE     char *buffer;
1530
// OBSOLETE     long position;
1531
// OBSOLETE     long size;
1532
// OBSOLETE     long base;
1533
// OBSOLETE   }
1534
// OBSOLETE dst_sec;
1535
// OBSOLETE 
1536
// OBSOLETE 
1537
// OBSOLETE /* Macros for access to the data */
1538
// OBSOLETE 
1539
// OBSOLETE #define DST_comp_unit(x)    ((x)->rec_data.comp_unit_)
1540
// OBSOLETE #define DST_section_tab(x)  ((x)->rec_data.section_tab_)
1541
// OBSOLETE #define DST_file_tab(x)     ((x)->rec_data.file_tab_)
1542
// OBSOLETE #define DST_block(x)                ((x)->rec_data.block_)
1543
// OBSOLETE #define     DST_var(x)              ((x)->rec_data.var_)
1544
// OBSOLETE #define DST_pointer(x)              ((x)->rec_data.pointer_)
1545
// OBSOLETE #define DST_array(x)                ((x)->rec_data.array_)
1546
// OBSOLETE #define DST_subrange(x)     ((x)->rec_data.subrange_)
1547
// OBSOLETE #define DST_set(x)          ((x)->rec_data.set_)
1548
// OBSOLETE #define DST_implicit_enum(x)        ((x)->rec_data.implicit_enum_)
1549
// OBSOLETE #define DST_explicit_enum(x)        ((x)->rec_data.explicit_enum_)
1550
// OBSOLETE #define DST_short_rec(x)    ((x)->rec_data.record_)
1551
// OBSOLETE #define DST_short_union(x)  ((x)->rec_data.record_)
1552
// OBSOLETE #define DST_file(x)                 ((x)->rec_data.file_)
1553
// OBSOLETE #define DST_offset(x)               ((x)->rec_data.offset_)
1554
// OBSOLETE #define DST_alias(x)                ((x)->rec_data.alias_)
1555
// OBSOLETE #define DST_signature(x)    ((x)->rec_data.signature_)
1556
// OBSOLETE #define DST_old_label(x)    ((x)->rec_data.old_label_)
1557
// OBSOLETE #define DST_scope(x)                ((x)->rec_data.scope_)
1558
// OBSOLETE #define DST_string_tab(x)   ((x)->rec_data.string_tab_)
1559
// OBSOLETE #define DST_global_name_tab(x)      ((x)->rec_data.string_tab_)
1560
// OBSOLETE #define DST_forward(x)              ((x)->rec_data.forward_)
1561
// OBSOLETE #define DST_aux_size(x)     ((x)->rec_data.aux_size_)
1562
// OBSOLETE #define DST_aux_align(x)    ((x)->rec_data.aux_align_)
1563
// OBSOLETE #define DST_aux_field_size(x)       ((x)->rec_data.aux_field_size_)
1564
// OBSOLETE #define DST_aux_field_off(x)        ((x)->rec_data.aux_field_off_)
1565
// OBSOLETE #define DST_aux_field_align(x)      ((x)->rec_data.aux_field_align_)
1566
// OBSOLETE #define DST_aux_qual(x)     ((x)->rec_data.aux_qual_)
1567
// OBSOLETE #define DST_aux_var_bound(x)        ((x)->rec_data.aux_var_bound_)
1568
// OBSOLETE #define DST_extension(x)    ((x)->rec_data.extension_)
1569
// OBSOLETE #define DST_string(x)               ((x)->rec_data.string_)
1570
// OBSOLETE #define DST_const(x)                ((x)->rec_data.const_)
1571
// OBSOLETE #define DST_reference(x)    ((x)->rec_data.pointer_)
1572
// OBSOLETE #define DST_record(x)               ((x)->rec_data.record_)
1573
// OBSOLETE #define DST_union(x)                ((x)->rec_data.record_)
1574
// OBSOLETE #define DST_aux_type_deriv(x)       ((x)->rec_data.aux_type_deriv_)
1575
// OBSOLETE #define DST_locpool(x)              ((x)->rec_data.string_tab_)
1576
// OBSOLETE #define DST_variable(x)     ((x)->rec_data.variable_)
1577
// OBSOLETE #define DST_label(x)                ((x)->rec_data.label_)
1578
// OBSOLETE #define DST_entry(x)                ((x)->rec_data.entry_)
1579
// OBSOLETE #define DST_aux_lifetime(x)         ((x)->rec_data.aux_lifetime_)
1580
// OBSOLETE #define DST_aux_ptr_base(x)         ((x)->rec_data.aux_ptr_base_)
1581
// OBSOLETE #define DST_aux_src_range(x)        ((x)->rec_data.aux_src_range_)
1582
// OBSOLETE #define DST_aux_reg_val(x)  ((x)->rec_data.aux_reg_val_)
1583
// OBSOLETE #define DST_aux_unit_names(x)       ((x)->rec_data.aux_unit_names_)
1584
// OBSOLETE #define DST_aux_sect_info(x)        ((x)->rec_data.aux_sect_info_)
1585
// OBSOLETE 
1586
// OBSOLETE 
1587
// OBSOLETE /*
1588
// OBSOLETE  * Type codes for loc strings. I'm not entirely certain about all of
1589
// OBSOLETE  * these, but they seem to work.
1590
// OBSOLETE  *                              troy@cbme.unsw.EDU.AU
1591
// OBSOLETE  * If you find a variable whose location can't be decoded, you should
1592
// OBSOLETE  * find out it's code using "dstdump -s filename". It will record an
1593
// OBSOLETE  * entry for the variable, and give a text representation of what
1594
// OBSOLETE  * the locstring means. Before that explaination there will be a
1595
// OBSOLETE  * number. In the LOCSTRING table, that number will appear before
1596
// OBSOLETE  * the start of the location string. Location string codes are
1597
// OBSOLETE  * five bit codes with a 3 bit argument. Check the high 5 bits of
1598
// OBSOLETE  * the one byte code, and figure out where it goes in here.
1599
// OBSOLETE  * Then figure out exactly what the meaning is and code it in
1600
// OBSOLETE  * dstread.c
1601
// OBSOLETE  *
1602
// OBSOLETE  * Note that ranged locs mean that the variable is in different locations
1603
// OBSOLETE  * depending on the current PC. We ignore these because (a) gcc can't handle
1604
// OBSOLETE  * them, and (b), If you don't use high levels of optimisation they won't
1605
// OBSOLETE  * occur.
1606
// OBSOLETE  */
1607
// OBSOLETE typedef enum
1608
// OBSOLETE   {
1609
// OBSOLETE     dst_lsc_end,            /* End of string */
1610
// OBSOLETE     dst_lsc_indirect,               /* Indirect through previous. Arg == 6 */
1611
// OBSOLETE     /* Or register ax (x=arg) */
1612
// OBSOLETE     dst_lsc_dreg,           /* register dx (x=arg) */
1613
// OBSOLETE     dst_lsc_03,
1614
// OBSOLETE     dst_lsc_section,                /* Section (arg+1) */
1615
// OBSOLETE     dst_lsc_05,
1616
// OBSOLETE     dst_lsc_06,
1617
// OBSOLETE     dst_lsc_add,            /* Add (arg+1)*2 */
1618
// OBSOLETE     dst_lsc_sub,            /* Subtract (arg+1)*2 */
1619
// OBSOLETE     dst_lsc_09,
1620
// OBSOLETE     dst_lsc_0a,
1621
// OBSOLETE     dst_lsc_sec_byte,               /* Section of next byte+1 */
1622
// OBSOLETE     dst_lsc_add_byte,               /* Add next byte (arg == 5) or next word
1623
// OBSOLETE                              * (arg == 6)
1624
// OBSOLETE                              */
1625
// OBSOLETE     dst_lsc_sub_byte,               /* Subtract next byte. (arg == 1) or next
1626
// OBSOLETE                              * word (arg == 6 ?)
1627
// OBSOLETE                              */
1628
// OBSOLETE     dst_lsc_sbreg,          /* Stack base register (frame pointer). Arg==0 */
1629
// OBSOLETE     dst_lsc_0f,
1630
// OBSOLETE     dst_lsc_ranged,         /* location is pc dependent */
1631
// OBSOLETE     dst_lsc_11,
1632
// OBSOLETE     dst_lsc_12,
1633
// OBSOLETE     dst_lsc_13,
1634
// OBSOLETE     dst_lsc_14,
1635
// OBSOLETE     dst_lsc_15,
1636
// OBSOLETE     dst_lsc_16,
1637
// OBSOLETE     dst_lsc_17,
1638
// OBSOLETE     dst_lsc_18,
1639
// OBSOLETE     dst_lsc_19,
1640
// OBSOLETE     dst_lsc_1a,
1641
// OBSOLETE     dst_lsc_1b,
1642
// OBSOLETE     dst_lsc_1c,
1643
// OBSOLETE     dst_lsc_1d,
1644
// OBSOLETE     dst_lsc_1e,
1645
// OBSOLETE     dst_lsc_1f
1646
// OBSOLETE   }
1647
// OBSOLETE dst_loc_string_code_t;
1648
// OBSOLETE 
1649
// OBSOLETE /* If the following occurs after an addition/subtraction, that addition
1650
// OBSOLETE  * or subtraction should be multiplied by 256. It's a complete byte, not
1651
// OBSOLETE  * a code.
1652
// OBSOLETE  */
1653
// OBSOLETE 
1654
// OBSOLETE #define     dst_multiply_256        ((char) 0x73)
1655
// OBSOLETE 
1656
// OBSOLETE typedef struct
1657
// OBSOLETE   {
1658
// OBSOLETE     char code:5;
1659
// OBSOLETE     char arg:3;
1660
// OBSOLETE   }
1661
// OBSOLETE dst_loc_header_t ALIGNED1;
1662
// OBSOLETE 
1663
// OBSOLETE typedef union
1664
// OBSOLETE   {
1665
// OBSOLETE     dst_loc_header_t header;
1666
// OBSOLETE     char data;
1667
// OBSOLETE   }
1668
// OBSOLETE dst_loc_entry_t ALIGNED1;
1669
// OBSOLETE 
1670
// OBSOLETE #undef ALIGNED1
1671
// OBSOLETE #endif /* apollo_dst_h */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.