* ppc-opc.c: Move mbar and msync up. Change mask for mbar and
[deliverable/binutils-gdb.git] / gdb / dst.h
1 // 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 */
This page took 0.067183 seconds and 4 git commands to generate.