1("cs" 0x0
2 (("size") (1 byte) ("size"))
3
4 (("hd") (1 byte) ("hd"))
5 (("hs") (1 byte) ("hs"))
6 (("un") (1 byte) ("un"))
7 (("us") (1 byte) ("us"))
8
9 (("sc") (1 byte) ("sc"))
10 (("ss") (1 byte) ("ss"))
11 (("er") (1 byte) ("er"))
12 (("ed") (1 byte) ("ed"))
13
14 (("sh") (1 byte) ("sh"))
15 (("ob") (1 byte) ("ob"))
16 (("rl") (1 byte) ("rl"))
17 (("du") (1 byte) ("du"))
18
19 (("dps") (1 byte) ("dps"))
20 (("dsy") (1 byte) ("dsy"))
21 (("dty") (1 byte) ("dty"))
22 (("dln") (1 byte) ("dln"))
23
24 (("dso") (1 byte) ("dso"))
25 (("dus") (1 byte) ("dus"))
26 (("dss") (1 byte) ("dss"))
27 (("dbt") (1 byte) ("dbt"))
28
29 (("dpp") (1 byte) ("dpp"))
30 (("dfp") (1 byte) ("dfp"))
31 (("den") (1 byte) ("den"))
32 (("dds") (1 byte) ("dds"))
33
34 (("dar") (1 byte) ("dar"))
35 (("dpt") (1 byte) ("dpt"))
36 (("dul") (1 byte) ("dul"))
37 (("dse") (1 byte) ("dse"))
38
39 (("dot") (1 byte) ("dot")))
40
41
42("hd" 0x04
43 (("module type") (4 bits) ("mt")
44  (("MTYPE_ABS_LM" 	"0")
45   ("MTYPE_REL_LM" 	"1")
46   ("MTYPE_OMS_OR_LMS" 	"2")
47   ("MTYPE_UNSPEC" 	"0xf")))
48 (("spare")(4 bits) ("spare1"))
49 (("creation date")( chars 12 bytes)( "cd"))
50 (("number of units") (2 bytes) ("nu"))
51 (("code") (1 byte) ("code"))
52 (("version") (chars 4 bytes) ("ver"))
53 (("address update") (1 byte) ("au"))
54 (("segment identifier") (1 bit) ("si"))
55 (("address field length") (4 bits) ("afl"))
56 (("spare")(3 bits) ("spare2"))
57 (("space size within segment") (1 byte) ("spcsz"))
58 (("segment size")  	(1 byte) ("segsz"))
59 (("segment shift") 	(1 byte) ("segsh"))
60 (("entry point") 	(1 byte) ("ep"))
61 (cond "ptr->ep"
62       (cond "ptr->mt != MTYPE_ABS_LM"
63	     (("unit appearance number") (2 bytes) ("uan"))
64	     (("section appearance number") (2 bytes) ("sa")))
65       (cond "segmented_p"
66	     (("segment address") (segsize bytes) ("sad")))
67       (("address") (addrsize bytes) ("address")))
68 (("os name") (chars variable bytes) ("os"))
69 (("sys name") (chars variable bytes) ("sys"))
70 (("module name") (chars variable bytes) ("mn"))
71 (("cpu") (chars variable bytes) ("cpu")))
72
73
74("hs" 0x05
75 (("neg number") (2 bytes) ("neg")))
76
77
78("un" 0x06
79 (("format") (2 bits) ("format")
80  (("FORMAT_LM" "0")
81   ("FORMAT_OM" "1")
82   ("FORMAT_OMS_OR_LMS" "2")))
83 (("spare") (6 bits) ("spare1"))
84 (("number of sections") (2 bytes) ("nsections"))
85 (("number of external refs") (2 bytes) ("nextrefs"))
86 (("number of external defs") (2 bytes) ("nextdefs"))
87 (("unit name") (chars variable byte) ("name"))
88 (("tool name") (chars variable byte) ("tool"))
89 (("creation date") (chars 12 bytes) ("tcd"))
90 (("linker name") (chars variable byte) ("linker"))
91 (("creation date") (chars 12 bytes) ("lcd")))
92
93
94("us" 0x07
95 (("negotiation number") (2 bytes) ("neg")))
96
97
98("sc" 0x08
99 (("format") (2 bits) ("format"))
100 (("spare") (6 bits) ("spare"))
101 (("segment address") (segsize bytes) ("segadd"))
102 (("address") (addrsize bytes) ("addr"))
103 (("length") (addrsize bytes) ("length"))
104 (("alignment") (addrsize bytes) ("align"))
105 (("contents") (4 bits) ("contents")
106  (("CONTENTS_CODE" "0")
107   ("CONTENTS_DATA" "1")
108   ("CONTENTS_STACK" "2")
109   ("CONTENTS_DUMMY" "3")
110   ("CONTENTS_SPECIAL" "4")
111   ("CONTENTS_NONSPEC" "0xf")))
112 (("concat") (4 bits) ("concat")
113  (("CONCAT_SIMPLE" "0")
114   ("CONCAT_SHAREDC" "1")
115   ("CONCAT_DUMMY" "2")
116   ("CONCAT_GROUP" "3")
117   ("CONCAT_SHARED" "4")
118   ("CONCAT_PRIVATE" "5")
119   ("CONCAT_UNSPEC" "0xf")))
120 (("read") (2 bits) ("read"))
121 (("write") (2 bits) ("write"))
122 (("exec") (2 bits) ("exec"))
123 (("initialized") (2 bits) ("init"))
124 (("mode") (2 bits) ("mode"))
125 (("spare") (6 bits) ("spare1"))
126 (("name") (chars variable byte) ("name")))
127
128
129("ss" 0x09
130 (("neg number") (2 bytes) ("neg")))
131
132
133("er" 0x0c
134 (("symbol type") (2 bits) ("type")
135  (("ER_ENTRY" "0")
136   ("ER_DATA" "1")
137   ("ER_NOTDEF" "2")
138   ("ER_NOTSPEC" "3")))
139 (("spare") (6 bits) ("spare"))
140 (("symbol name") (chars variable byte) ("name")))
141
142
143("ed" 0x14
144 (("section appearance number") (2 bytes) ("section"))
145 (("symbol type") (3 bits) ("type")
146  (("ED_TYPE_ENTRY" "0")
147   ("ED_TYPE_DATA" "1")
148   ("ED_TYPE_CONST" "2")
149   ("ED_TYPE_NOTSPEC" "7")))
150 (("spare") (5 bits) ("spare"))
151 (cond "ptr->type==ED_TYPE_ENTRY || ptr->type==ED_TYPE_DATA"
152       (("symbol address") (addrsize bytes) ("address")))
153 (cond "ptr->type==ED_TYPE_CONST"
154       (("constant value") (addrsize bytes) ("constant")))
155 (("symbol name") (chars variable byte) ("name")))
156
157
158("sh" 0x1a
159 (("unit appearance number") (2 bytes) ("unit"))
160 (("section appearance number") (2 bytes) ("section")))
161
162
163("ob" 0x1c
164 (("starting address flag") (1 bit) ("saf"))
165 (("compression flag") (1 bit) ("cpf"))
166 (("spare") (6 bits) ("spare"))
167 (cond "ptr->saf"
168       ( ("starting address") (addrsize bytes) ("address")))
169 (cond "ptr->cpf"
170       (("comp reps") (addrsize bytes) ("compreps")))
171 (("data") (barray counted byte) ("data")))
172
173
174("rl" 0x20
175 (("boundary of relocatable area") (4 bits) ("boundary"))
176 (("address polarity") (1 bit) ("apol"))
177 (("segment number") (1 bit) ("segment"))
178 (("sign of relocation") (1 bit) ("sign"))
179 (("check range") (1 bit) ("check"))
180 (("reloc address") (addrsize bytes) ("addr"))
181
182 (("bit loc") (1 byte) ("bitloc"))
183 (("field length") (1 byte) ("flen"))
184 (("bcount") (1 byte) ("bcount"))
185 (("operator") (1 byte) ("op")
186  (("OP_RELOC_ADDR" "1")
187   ("OP_SEC_REF" "0")
188   ("OP_EXT_REF" "2")))
189 (cond "ptr->op == OP_EXT_REF"
190       (("symbol number") (2 bytes) ("symn"))	)
191
192 (cond "ptr->op == OP_SEC_REF"
193       (("section number") (2 bytes) ("secn"))
194       (("const opcode") (1 byte) ("copcode_is_3"))
195       (("addend length") (1 byte) ("alength_is_4"))
196       (("addend") (4 byte) ("addend"))
197       (("plus opcode") (1 byte) ("aopcode_is_0x20")))
198
199 (cond "ptr->op == OP_RELOC_ADDR"
200       (("dunno") (2 bytes) ("dunno")))
201
202 (("end")  (1 byte) ("end")))
203
204
205("du" 0x30
206 (("format") (2 bits) ("format"))
207 (("optimized") (1 bit) ("optimized"))
208 (("stackfrmt") (2 bits) ("stackfrmt"))
209 (("spare") (3 bits) ("spare"))
210 (("unit number") (2 bytes) ("unit"))
211 (("sections") (2 bytes) ("sections"))
212 (repeat "ptr->sections"
213	 (("section appearance number") (2 bytes) ("san"))
214	 (("address") (addrsize bytes) ("address"))
215	 (("section length") (addrsize bytes) ("length")))
216 (("tool name") (chars variable byte) ("tool"))
217 (("creation date") (chars 12 bytes) ("date")))
218
219
220("dsy" 0x34
221 (("symbol type") (7 bits) ("type")
222  (("STYPE_VAR" "0")
223   ("STYPE_LAB" "1")
224   ("STYPE_PROC" "2")
225   ("STYPE_FUNC" "3")
226   ("STYPE_TYPE" "4")
227   ("STYPE_CONST" "5")
228   ("STYPE_ENTRY" "6")
229   ("STYPE_MEMBER" "7")
230   ("STYPE_ENUM" "8")
231   ("STYPE_TAG" "9")
232   ("STYPE_PACKAGE" "10")
233   ("STYPE_GENERIC" "11")
234   ("STYPE_TASK" "12")
235   ("STYPE_EXCEPTION" "13")
236   ("STYPE_PARAMETER" "14")
237   ("STYPE_EQUATE" "15")
238   ("STYPE_UNSPEC" "0x7f")))
239 (("assignment info") (1 bit) ("assign"))
240 (("symbol id") (2 bytes) ("snumber"))
241 (("symbol name") (chars variable bytes) ("sname"))
242 (("nesting level") (2 bytes) ("nesting"))
243 (cond "ptr->assign"
244       (("assignment type") (1 byte)  ("ainfo")
245	(("AINFO_REG" "1")
246	 ("AINFO_STATIC_EXT_DEF" "2")
247	 ("AINFO_STATIC_EXT_REF" "3")
248	 ("AINFO_STATIC_INT" "4")
249	 ("AINFO_STATIC_COM" "5")
250	 ("AINFO_AUTO" "6")
251	 ("AINFO_CONST" "7")
252	 ("AINFO_UNSPEC" "0xff")))
253       (("data length") (addrsize bytes) ("dlength"))
254       (cond "ptr->ainfo == AINFO_STATIC_EXT_DEF
255            || ptr->ainfo == AINFO_STATIC_INT
256            || ptr->ainfo == AINFO_STATIC_COM"
257	     (("section number")  (2 bytes) ("section")))
258       (cond "ptr->ainfo == AINFO_STATIC_EXT_DEF
259            || ptr->ainfo == AINFO_STATIC_INT
260            || ptr->ainfo == AINFO_STATIC_COM
261            || ptr->ainfo == AINFO_AUTO"
262	     (("address") (addrsize bytes) ("address")))
263       (cond "ptr->ainfo == AINFO_REG"
264	     (("register name") (chars variable bytes) ("reg")))
265       (cond "ptr->ainfo == AINFO_STATIC_EXT_DEF
266	    || ptr->ainfo == AINFO_STATIC_EXT_REF"
267	     (("external name") (chars variable bytes) ("ename")))
268       (cond "ptr->ainfo == AINFO_CONST"
269	     (("constant") (chars variable bytes) ("constant"))))
270 (cond "ptr->type == STYPE_MEMBER"
271       (("assignment unit") (1 bit) ("bitunit"))
272       (("spare") (7 bits) ("spare2"))
273       (("field length") (addrsize bytes) ("field_len"))
274       (("field offset") (addrsize bytes) ("field_off"))
275       (cond "ptr->bitunit"
276	     (("bit offset") (addrsize bytes) ("field_bitoff"))))
277 (cond "ptr->type== STYPE_ENUM"
278       (("value length") (1 byte) ("evallen"))
279       (("value") (4 bytes) ("evalue")))
280 (cond "ptr->type == STYPE_CONST"
281       (("value") (chars variable bytes) ("cvalue")))
282 (cond "ptr->type == STYPE_EQUATE"
283       (("value length") (1 byte) ("qvallen"))
284       (("value") (4 bytes) ("qvalue"))
285       (("basic type") (1 byte) ("btype"))
286       (("size information") (addrsize bytes) ("sizeinfo"))
287       (("sign") (2 bits) ("sign"))
288       (("floating point type") (6 bits) ("flt_type")))
289 (("source file number") (2 bytes) ("sfn"))
290 (("source line number") (2 bytes) ("sln"))
291 (("negotiation number") (2 bytes) ("neg"))
292 (cond "ptr->type == STYPE_TAG"
293       (("magic") (1 byte) ("magic"))))
294
295
296
297("dul" 0x52
298 (("max declaration type flag") (1 bit) ("max_variable"))
299 (("max spare") (7 bits) ("maxspare"))
300 (cond "ptr->max_variable == 0"
301       (("maximum") (addrsize bytes) ("max"))
302       (("max mode") (chars variable bytes) ("maxmode")))
303
304 (("min declaration type flag") (1 bit) ("min_variable"))
305 (("min spare") (7 bits) ("minspare"))
306 (cond "ptr->min_variable == 0"
307       (("minimum") (addrsize bytes) ("min"))
308       (("min mode") (chars variable bytes) ("minmode"))))
309
310
311("dty" 0x36
312 (("end flag") (1 bit) ("end"))
313 (("spare") (7 bits) ("spare"))
314 (cond "!ptr->end"
315       (("negotiation") (2 bytes) ("neg"))))
316
317
318("dbt" 0x44
319 (("basic type") (1 byte) ("btype")
320  (("BTYPE_VOID" "0")
321   ("BTYPE_UNDEF" "1")
322   ("BTYPE_CHAR" "2")
323   ("BTYPE_INT" "3")
324   ("BTYPE_FLOAT" "4")
325   ("BTYPE_BIT" "5")
326   ("BTYPE_STRING" "6")
327   ("BTYPE_DECIMAL" "7")
328   ("BTYPE_ENUM" "8")
329   ("BTYPE_STRUCT" "9")
330   ("BTYPE_TYPE" "10")
331   ("BTYPE_TAG" "11")
332   ("BTYPE_UNSPEC" "0xff")))
333 (("size info") (addrsize bytes) ("bitsize"))
334 (("sign") (2 bits) ("sign")
335  (("SIGN_SIGNED" "0")
336   ("SIGN_UNSIGNED" "1")
337   ("SIGN_UNSPEC" "3")))
338 (("floating point type") (6 bits) ("fptype")
339  (("FPTYPE_SINGLE" "0")
340   ("FPTYPE_DOUBLE" "1")
341   ("FPTYPE_EXTENDED" "2")
342   ("FPTYPE_NOTSPEC" "0x3f")))
343 (cond "ptr->btype==BTYPE_TAG || ptr->btype == BTYPE_TYPE"
344       (("symbol id") (2 bytes) ("sid")))
345 (("negotiation") (2 bytes) ("neg")))
346
347("dar" 0x4e
348 (("element length" ) (addrsize bytes) ("length"))
349 (("dims") (1 byte) ("dims"))
350 (repeat "ptr->dims"
351	 (("variable flag") (1 bit) ("variable")
352	  (("VARIABLE_FIXED" "0")
353	   ("VARIABLE_VARIABLE" "1")))
354
355	 (("subscript type") (1 bit) ("subtype")
356	  (("SUB_INTEGER" "0")
357	   ("SUB_TYPE"    "1")))
358
359	 (("spare") (6 bits) ("spare"))
360
361	 (cond "ptr->subtype[n] == SUB_TYPE"
362	       (("sub symbol id") (2 bytes) ("sid")))
363
364	 (cond "ptr->subtype[n] == SUB_INTEGER"
365	       (("max declaration type flag") (1 bit) ("max_variable"))
366	       (("max spare") (7 bits) ("maxspare"))
367	       ;; FIXME: next field should be conditional on max_variable,
368	       (("maximum") (addrsize bytes) ("max"))
369
370	       (("min declaration type flag") (1 bit) ("min_variable"))
371	       (("min spare") (7 bits) ("minspare"))
372	       ;; FIXME: next field should be conditional on min_variable
373	       (("minimum") (addrsize bytes) ("min"))))
374 (("negotiation") (2 bytes) ("neg")))
375
376
377("dso" 0x3a
378 (("function name") (2 bytes) ("sid"))
379 (("sp update count") (4 bytes) ("spupdates"))
380 (repeat "ptr->spupdates"
381	 (("update address") (addrsize bytes) ("address"))
382	 (("offset") (addrsize bytes) ("offset"))))
383
384("dln" 0x38
385 (("number of lines") (2 bytes) ("nln"))
386 (repeat "ptr->nln"
387	 (("source file number") (2 bytes) ("sfn"))
388	 (("source line number") (2 bytes) ("sln"))
389	 (("section number") (2 bytes) ("section"))
390	 (("from address") (addrsize bytes) ("from_address"))
391	 (("to address") (addrsize bytes) ("to_address"))
392	 (("call count") (2 bytes) ("cc"))
393	 )
394 (("neg") (2 bytes) ("neg")))
395
396("dpp" 0x46
397 (("start/end") (1 bit) ("end"))
398 (("spare") (7 bits) ("spare"))
399 (cond "!ptr->end"
400       (("params") (1 byte) ("params"))
401       (("neg number") (2 bytes) ("neg"))))
402
403("den" 0x4a
404 (("start/end") (1 bit) ("end"))
405 (("spare") (7 bits) ("spare"))
406 (cond "!ptr->end"
407       (("neg number") (2 bytes) ("neg"))))
408
409("dfp" 0x48
410 (("start/end flag") (1 bit) ("end"))
411 (("spare") (7 bits) ("spare"))
412 (cond "!ptr->end"
413       (("number of parameters") (1 byte) ("nparams"))
414       (("neg number") (2 bytes) ("neg"))))
415
416("dds" 0x4c
417 (("start/end") (1 bit) ("end"))
418 (("spare") (7 bits) ("spare"))
419 (cond "!ptr->end"
420       (("neg number") (2 bytes) ("neg"))))
421
422("dpt" 0x50
423 (("neg number") (2 bytes) ("neg"))
424 (("dunno") (1 byte) ("dunno")))
425
426("dse" 0x54
427 (("neg number") (2 bytes) ("neg"))
428 (("dunno") (1 byte) ("dunno")))
429
430("dot" 0x56
431 (("unknown") (1 byte) ("unknown")))
432; FIXME: unknown field should be repeated symbol number?
433
434
435("dss" 0x42
436 (("type") (1 byte) ("type"))
437 (("external/internal") (1 bit) ("internal"))
438 (("spare") (7 bits) ("spare"))
439 (cond "!ptr->internal"
440       (  ("package name") (chars variable byte) ("package")))
441 (cond "ptr->internal"
442       (("symbol id") (2 bytes) ("id")))
443 (("record type") (2 bytes) ("record"))
444 (("rules") (chars variable byte) ("rules"))
445 (("number of symbols") (2 bytes) ("nsymbols"))
446 (("unknown" ) (2 bytes) ("fixme")))
447
448("pss" 0x40
449 (("negotiation number") (2 bytes) ("efn"))
450 (("number of source files") (2 bytes) ("ns"))
451 (repeat "ptr->ns"
452	 (("directory reference bit") (1 bit) ("drb"))
453	 (("spare") (7 bits) ("spare"))
454	 (("completed file name") (chars variable byte) ("fname"))
455	 (cond "ptr->drb[n]"
456	       (("directory apperance number") (2 bytes) ("dan"))))
457
458 (("number of directories") (2 bytes) ("ndir"))
459 (repeat "ptr->ndir"
460	 (("directory name") (chars variable bytes) ("dname"))))
461
462
463; FIXME: the tr block has no contents. sysinfo, etc. aren't prepared
464; to deal with that.
465; ("tr" 0x7f)
466
467
468("dus" 0x40
469 (("negotiation number") (2 bytes) ("efn"))
470 (("number of source files") (2 bytes) ("ns"))
471 (repeat "ptr->ns"
472	 (("directory reference bit") (1 bit) ("drb"))
473	 (("spare") (7 bits) ("spare"))
474	 (("completed file name") (chars variable byte) ("fname"))
475	 (cond "ptr->drb[n]"
476	       (("directory apperance number") (2 bytes) ("dan"))))
477 (("number of directories") (2 bytes) ("ndir"))
478 (repeat "ptr->ndir"
479	 (("directory name") (chars variable bytes) ("dname"))))
480
481
482("dps" 0x32
483 (("start/end flag") (1 bit) ("end"))
484 (("block type") (7 bits) ("type")
485  (("BLOCK_TYPE_COMPUNIT" "0")
486   ("BLOCK_TYPE_PROCEDURE" "2")
487   ("BLOCK_TYPE_FUNCTION" "3")
488   ("BLOCK_TYPE_BLOCK" "4")
489   ("BLOCK_TYPE_BASIC" "9")))
490 (cond "!ptr->end"
491       (("optimization") (1 byte) ("opt"))
492       (("section number") (2 bytes) ("san"))
493       (("address") (addrsize bytes) ("address"))
494       (("block size") (addrsize bytes) ("block_size"))
495       (("nesting") (1 byte) ("nesting"))
496       (cond "ptr->type == BLOCK_TYPE_PROCEDURE
497	    || ptr->type == BLOCK_TYPE_FUNCTION"
498	     (("return address") (1 bit) ("retaddr"))
499	     (("interrupt function flag") (1 bit) ("intrflag"))
500	     (("stack update flag") (1 bit) ("stackflag"))
501	     (("intra page JMP") (1 bit) ("intrpagejmp"))
502	     (("spare") (4 bits) ("spare")))
503       (("neg number") (2 bytes) ("neg"))))
504
505