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