@isopodlabs/binary_libs 1.1.1 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cvinfo.js ADDED
@@ -0,0 +1,930 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.CV_SSHIFT = exports.CV_TSHIFT = exports.CV_MSHIFT = exports.CV_SMASK = exports.CV_TMASK = exports.CV_MMASK = exports.Decimal = void 0;
27
+ exports.CV_MODE = CV_MODE;
28
+ exports.CV_TYPE = CV_TYPE;
29
+ exports.CV_SUBT = CV_SUBT;
30
+ const binary = __importStar(require("@isopodlabs/binary"));
31
+ function field(f) {
32
+ return (s) => s.obj[f];
33
+ }
34
+ const uint8 = binary.UINT8;
35
+ const uint16 = binary.UINT16_LE;
36
+ const uint32 = binary.UINT32_LE;
37
+ const uint64 = binary.UINT64_LE;
38
+ const int8 = binary.INT8;
39
+ const int16 = binary.INT16;
40
+ const int32 = binary.INT32;
41
+ const int64 = binary.INT64;
42
+ const type16_t = uint16;
43
+ const type_t = uint32;
44
+ const token_t = uint32;
45
+ const ItemId = type_t;
46
+ const octword = binary.Buffer(32);
47
+ const uoctword = binary.Buffer(32);
48
+ const date = binary.Float64_LE; // double
49
+ const stringz = binary.NullTerminatedStringType();
50
+ // 96-bit unsigned integer with power of 10 scaling factor
51
+ class Decimal extends binary.Class({
52
+ reserved: uint16,
53
+ scale: uint8,
54
+ sign: uint8,
55
+ mhi: uint32,
56
+ mlo: uint64,
57
+ }) {
58
+ /* constructor(value?: number) {
59
+ if (value !== undefined) {
60
+ this.sign = value < 0 ? 0x80 : 0;
61
+ this.scale = 0;
62
+ let d = Math.abs(value);
63
+ while (d % 1 !== 0) {
64
+ d *= 10;
65
+ this.scale++;
66
+ }
67
+ this.mhi = Math.floor(d / Math.pow(2, 64));
68
+ this.mlo = BigInt(Math.floor(d - this.mhi * Math.pow(2, 64)));
69
+ } else {
70
+ this.scale = 0;
71
+ this.sign = 0;
72
+ this.mhi = 0;
73
+ this.mlo = 0n;
74
+ }
75
+ }
76
+ */
77
+ toNumber() {
78
+ const value = this.mhi * Math.pow(2, 64) + Number(this.mlo);
79
+ return value / Math.pow(10, this.scale);
80
+ }
81
+ }
82
+ exports.Decimal = Decimal;
83
+ // Constants
84
+ const CV_SIGNATURE_C6 = 0;
85
+ const CV_SIGNATURE_C7 = 1;
86
+ const CV_SIGNATURE_C11 = 2;
87
+ const CV_SIGNATURE_C13 = 4;
88
+ const CV_SIGNATURE_RESERVED = 5;
89
+ const CV_MAXOFFSET = 0xffffffff;
90
+ // Compression functions
91
+ const CVCompressed = {
92
+ get(s) {
93
+ const buffer = s.remainder();
94
+ const b0 = buffer[0];
95
+ if ((b0 & 0x80) === 0x00) {
96
+ s.skip(1);
97
+ return b0;
98
+ }
99
+ else if ((b0 & 0xC0) === 0x80) {
100
+ s.skip(2);
101
+ return ((b0 & 0x3f) << 8) | buffer[1];
102
+ }
103
+ else if ((b0 & 0xE0) === 0xC0) {
104
+ s.skip(4);
105
+ return ((b0 & 0x1f) << 24) |
106
+ (buffer[1] << 16) |
107
+ (buffer[2] << 8) |
108
+ buffer[3];
109
+ }
110
+ throw new Error("Invalid compressed data");
111
+ },
112
+ put(s, v) {
113
+ if (v <= 0x7F) {
114
+ s.write_buffer(new Uint8Array([v]));
115
+ }
116
+ else if (v <= 0x3FFF) {
117
+ s.write_buffer(new Uint8Array([
118
+ ((v >> 8) | 0x80) & 0xFF,
119
+ v & 0xFF
120
+ ]));
121
+ }
122
+ else if (v <= 0x1FFFFFFF) {
123
+ s.write_buffer(new Uint8Array([
124
+ ((v >> 24) | 0xC0) & 0xFF,
125
+ (v >> 16) & 0xFF,
126
+ (v >> 8) & 0xFF,
127
+ v & 0xFF
128
+ ]));
129
+ }
130
+ }
131
+ };
132
+ function EncodeSignedInt32(input) {
133
+ return input >= 0 ? input << 1 : ((-input) << 1) | 1;
134
+ }
135
+ function DecodeSignedInt32(input) {
136
+ return (input & 1) ? -(input >> 1) : (input >> 1);
137
+ }
138
+ // Type masks and shifts
139
+ exports.CV_MMASK = 0x700;
140
+ exports.CV_TMASK = 0x0f0;
141
+ exports.CV_SMASK = 0x00f;
142
+ exports.CV_MSHIFT = 8;
143
+ exports.CV_TSHIFT = 4;
144
+ exports.CV_SSHIFT = 0;
145
+ // Macros as functions
146
+ function CV_MODE(typ) {
147
+ return (typ & exports.CV_MMASK) >> exports.CV_MSHIFT;
148
+ }
149
+ function CV_TYPE(typ) {
150
+ return (typ & exports.CV_TMASK) >> exports.CV_TSHIFT;
151
+ }
152
+ function CV_SUBT(typ) {
153
+ return (typ & exports.CV_SMASK) >> exports.CV_SSHIFT;
154
+ }
155
+ // Leaf enumeration
156
+ var LEAF_ENUM_e;
157
+ (function (LEAF_ENUM_e) {
158
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_MODIFIER_16t"] = 1] = "LF_MODIFIER_16t";
159
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_POINTER_16t"] = 2] = "LF_POINTER_16t";
160
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_ARRAY_16t"] = 3] = "LF_ARRAY_16t";
161
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_CLASS_16t"] = 4] = "LF_CLASS_16t";
162
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_STRUCTURE_16t"] = 5] = "LF_STRUCTURE_16t";
163
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_UNION_16t"] = 6] = "LF_UNION_16t";
164
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_ENUM_16t"] = 7] = "LF_ENUM_16t";
165
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_PROCEDURE_16t"] = 8] = "LF_PROCEDURE_16t";
166
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_MFUNCTION_16t"] = 9] = "LF_MFUNCTION_16t";
167
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_VTSHAPE"] = 10] = "LF_VTSHAPE";
168
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_COBOL0_16t"] = 11] = "LF_COBOL0_16t";
169
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_COBOL1"] = 12] = "LF_COBOL1";
170
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_BARRAY_16t"] = 13] = "LF_BARRAY_16t";
171
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_LABEL"] = 14] = "LF_LABEL";
172
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_NULL"] = 15] = "LF_NULL";
173
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_NOTTRAN"] = 16] = "LF_NOTTRAN";
174
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_DIMARRAY_16t"] = 17] = "LF_DIMARRAY_16t";
175
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_VFTPATH_16t"] = 18] = "LF_VFTPATH_16t";
176
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_PRECOMP_16t"] = 19] = "LF_PRECOMP_16t";
177
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_ENDPRECOMP"] = 20] = "LF_ENDPRECOMP";
178
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_OEM_16t"] = 21] = "LF_OEM_16t";
179
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_TYPESERVER_ST"] = 22] = "LF_TYPESERVER_ST";
180
+ // 32-bit versions
181
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_TI16_MAX"] = 4096] = "LF_TI16_MAX";
182
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_MODIFIER"] = 4097] = "LF_MODIFIER";
183
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_POINTER"] = 4098] = "LF_POINTER";
184
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_ARRAY_ST"] = 4099] = "LF_ARRAY_ST";
185
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_CLASS_ST"] = 4100] = "LF_CLASS_ST";
186
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_STRUCTURE_ST"] = 4101] = "LF_STRUCTURE_ST";
187
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_UNION_ST"] = 4102] = "LF_UNION_ST";
188
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_ENUM_ST"] = 4103] = "LF_ENUM_ST";
189
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_PROCEDURE"] = 4104] = "LF_PROCEDURE";
190
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_MFUNCTION"] = 4105] = "LF_MFUNCTION";
191
+ // Numeric leaves
192
+ //LF_NUMERIC = 0x8000,
193
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_CHAR"] = 32768] = "LF_CHAR";
194
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_SHORT"] = 32769] = "LF_SHORT";
195
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_USHORT"] = 32770] = "LF_USHORT";
196
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_LONG"] = 32771] = "LF_LONG";
197
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_ULONG"] = 32772] = "LF_ULONG";
198
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_REAL32"] = 32773] = "LF_REAL32";
199
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_REAL64"] = 32774] = "LF_REAL64";
200
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_REAL80"] = 32775] = "LF_REAL80";
201
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_REAL128"] = 32776] = "LF_REAL128";
202
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_QUADWORD"] = 32777] = "LF_QUADWORD";
203
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_UQUADWORD"] = 32778] = "LF_UQUADWORD";
204
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_DECIMAL"] = 32793] = "LF_DECIMAL";
205
+ LEAF_ENUM_e[LEAF_ENUM_e["LF_DATE"] = 32794] = "LF_DATE";
206
+ })(LEAF_ENUM_e || (LEAF_ENUM_e = {}));
207
+ // Value structure for numeric leaves
208
+ const Value = binary.Switch(uint16, {
209
+ [LEAF_ENUM_e.LF_CHAR]: int8,
210
+ [LEAF_ENUM_e.LF_SHORT]: int16,
211
+ [LEAF_ENUM_e.LF_USHORT]: uint16,
212
+ [LEAF_ENUM_e.LF_LONG]: int32,
213
+ [LEAF_ENUM_e.LF_ULONG]: uint32,
214
+ [LEAF_ENUM_e.LF_REAL32]: binary.Float32,
215
+ [LEAF_ENUM_e.LF_REAL64]: binary.Float64,
216
+ [LEAF_ENUM_e.LF_QUADWORD]: uint64,
217
+ [LEAF_ENUM_e.LF_UQUADWORD]: uint64,
218
+ [LEAF_ENUM_e.LF_DECIMAL]: Decimal,
219
+ [LEAF_ENUM_e.LF_DATE]: date,
220
+ });
221
+ // Property structure for classes/structs/unions
222
+ const prop_t = binary.as(uint16, binary.BitFields({
223
+ packed: 1,
224
+ ctor: 1,
225
+ ovlops: 1,
226
+ isnested: 1,
227
+ cnested: 1,
228
+ opassign: 1,
229
+ opcast: 1,
230
+ fwdref: 1,
231
+ scoped: 1,
232
+ hasuniquename: 1,
233
+ sealed: 1,
234
+ hfa: [2, binary.Enum({ none: 0, float: 1, double: 2, other: 3 })],
235
+ intrinsic: 1,
236
+ mocom: [2, binary.Enum({ NONAME: 0, ref: 1, Value: 2, 'interface': 3 })],
237
+ }));
238
+ // Field attribute structure
239
+ const fldattr_t = binary.as(uint16, binary.BitFields({
240
+ access: 2,
241
+ mprop: 3,
242
+ pseudo: 1,
243
+ noinherit: 1,
244
+ noconstruct: 1,
245
+ compgenx: 1,
246
+ sealed: 1
247
+ }));
248
+ // Function attribute structure
249
+ const funcattr_t = binary.as(uint8, binary.BitFields({
250
+ cxxreturnudt: 1,
251
+ ctor: 1,
252
+ ctorvbase: 1,
253
+ }));
254
+ const modifier_t = binary.as(uint16, binary.BitFields({
255
+ constant: 1,
256
+ volatile: 1,
257
+ unaligned: 1,
258
+ }));
259
+ // MODIFIER
260
+ const Modifier_16t = {
261
+ attr: modifier_t,
262
+ type: type16_t,
263
+ };
264
+ const Modifier = {
265
+ type: type_t,
266
+ attr: modifier_t,
267
+ };
268
+ // POINTER
269
+ // type for pointer records
270
+ var ptrtype_e;
271
+ (function (ptrtype_e) {
272
+ ptrtype_e[ptrtype_e["PTR_NEAR"] = 0] = "PTR_NEAR";
273
+ ptrtype_e[ptrtype_e["PTR_FAR"] = 1] = "PTR_FAR";
274
+ ptrtype_e[ptrtype_e["PTR_HUGE"] = 2] = "PTR_HUGE";
275
+ ptrtype_e[ptrtype_e["PTR_BASE_SEG"] = 3] = "PTR_BASE_SEG";
276
+ ptrtype_e[ptrtype_e["PTR_BASE_VAL"] = 4] = "PTR_BASE_VAL";
277
+ ptrtype_e[ptrtype_e["PTR_BASE_SEGVAL"] = 5] = "PTR_BASE_SEGVAL";
278
+ ptrtype_e[ptrtype_e["PTR_BASE_ADDR"] = 6] = "PTR_BASE_ADDR";
279
+ ptrtype_e[ptrtype_e["PTR_BASE_SEGADDR"] = 7] = "PTR_BASE_SEGADDR";
280
+ ptrtype_e[ptrtype_e["PTR_BASE_TYPE"] = 8] = "PTR_BASE_TYPE";
281
+ ptrtype_e[ptrtype_e["PTR_BASE_SELF"] = 9] = "PTR_BASE_SELF";
282
+ ptrtype_e[ptrtype_e["PTR_NEAR32"] = 10] = "PTR_NEAR32";
283
+ ptrtype_e[ptrtype_e["PTR_FAR32"] = 11] = "PTR_FAR32";
284
+ ptrtype_e[ptrtype_e["PTR_64"] = 12] = "PTR_64";
285
+ ptrtype_e[ptrtype_e["PTR_UNUSEDPTR"] = 13] = "PTR_UNUSEDPTR"; // first unused pointer type
286
+ })(ptrtype_e || (ptrtype_e = {}));
287
+ ;
288
+ // modes for pointers
289
+ var ptrmode_e;
290
+ (function (ptrmode_e) {
291
+ ptrmode_e[ptrmode_e["PTR_MODE_PTR"] = 0] = "PTR_MODE_PTR";
292
+ ptrmode_e[ptrmode_e["PTR_MODE_REF"] = 1] = "PTR_MODE_REF";
293
+ // PTR_MODE_LVREF = 0x01, // l-value reference
294
+ ptrmode_e[ptrmode_e["PTR_MODE_PMEM"] = 2] = "PTR_MODE_PMEM";
295
+ ptrmode_e[ptrmode_e["PTR_MODE_PMFUNC"] = 3] = "PTR_MODE_PMFUNC";
296
+ ptrmode_e[ptrmode_e["PTR_MODE_RVREF"] = 4] = "PTR_MODE_RVREF";
297
+ ptrmode_e[ptrmode_e["PTR_MODE_RESERVED"] = 5] = "PTR_MODE_RESERVED"; // first unused pointer mode
298
+ })(ptrmode_e || (ptrmode_e = {}));
299
+ ;
300
+ // pointer-to-member types
301
+ var pmtype_e;
302
+ (function (pmtype_e) {
303
+ pmtype_e[pmtype_e["PMTYPE_Undef"] = 0] = "PMTYPE_Undef";
304
+ pmtype_e[pmtype_e["PMTYPE_D_Single"] = 1] = "PMTYPE_D_Single";
305
+ pmtype_e[pmtype_e["PMTYPE_D_Multiple"] = 2] = "PMTYPE_D_Multiple";
306
+ pmtype_e[pmtype_e["PMTYPE_D_Virtual"] = 3] = "PMTYPE_D_Virtual";
307
+ pmtype_e[pmtype_e["PMTYPE_D_General"] = 4] = "PMTYPE_D_General";
308
+ pmtype_e[pmtype_e["PMTYPE_F_Single"] = 5] = "PMTYPE_F_Single";
309
+ pmtype_e[pmtype_e["PMTYPE_F_Multiple"] = 6] = "PMTYPE_F_Multiple";
310
+ pmtype_e[pmtype_e["PMTYPE_F_Virtual"] = 7] = "PMTYPE_F_Virtual";
311
+ pmtype_e[pmtype_e["PMTYPE_F_General"] = 8] = "PMTYPE_F_General";
312
+ })(pmtype_e || (pmtype_e = {}));
313
+ ;
314
+ const Pointer_16t = {
315
+ attr: binary.as(uint32, binary.BitFields({
316
+ ptrtype: [5, binary.Enum(ptrtype_e)],
317
+ ptrmode: [3, binary.Enum(ptrmode_e)],
318
+ isflat32: 1,
319
+ isvolatile: 1,
320
+ isconst: 1,
321
+ isunaligned: 1,
322
+ })),
323
+ utype: type16_t,
324
+ pbase: binary.Switch((s) => s.obj.attr.ptrtype, {
325
+ PTR_BASE_SEG: {
326
+ bseg: uint16,
327
+ },
328
+ PTR_BASE_TYPE: {
329
+ index: type16_t,
330
+ name: stringz,
331
+ },
332
+ } /*, binary.Switch((s: binary._stream) => s.obj.attr.ptrmode, {
333
+ PTR_MODE_PMEM: {
334
+ pmclass: type16_t, // index of containing class for pointer to member
335
+ pmenum: binary.asEnum(uint16, pmtype_e), // enumeration specifying pm format (pmtype_e)
336
+ }
337
+ })*/)
338
+ };
339
+ const Pointer = {
340
+ utype: type_t,
341
+ attr: binary.as(uint32, binary.BitFields({
342
+ ptrtype: [5, binary.Enum(ptrtype_e)],
343
+ ptrmode: [3, binary.Enum(ptrmode_e)],
344
+ isflat32: 1,
345
+ isvolatile: 1,
346
+ isconst: 1,
347
+ isunaligned: 1,
348
+ isrestrict: 1,
349
+ size: 6, // 6 bits
350
+ ismocom: 1,
351
+ islref: 1,
352
+ isrref: 1,
353
+ })),
354
+ pbase: binary.Switch((s) => s.obj.attr.ptrtype, {
355
+ PTR_BASE_SEG: {
356
+ bseg: uint16,
357
+ },
358
+ PTR_BASE_TYPE: {
359
+ index: type16_t,
360
+ name: stringz,
361
+ },
362
+ } /*, binary.Switch((s: binary._stream) => s.obj.attr.ptrmode, {
363
+ PTR_MODE_PMEM: {
364
+ pmclass: type16_t, // index of containing class for pointer to member
365
+ pmenum: binary.asEnum(uint16, pmtype_e), // enumeration specifying pm format (pmtype_e)
366
+ }
367
+ })*/)
368
+ };
369
+ // ARRAY
370
+ const Array_16t = {
371
+ elemtype: type16_t,
372
+ idxtype: type16_t,
373
+ size: Value,
374
+ name: stringz,
375
+ };
376
+ const Array = {
377
+ elemtype: type_t,
378
+ idxtype: type_t,
379
+ size: Value,
380
+ name: stringz,
381
+ };
382
+ const StridedArray = {
383
+ elemtype: type_t,
384
+ idxtype: type_t,
385
+ stride: uint32,
386
+ size: Value,
387
+ name: stringz,
388
+ };
389
+ // VECTOR
390
+ const Vector = {
391
+ elemtype: type_t,
392
+ count: uint32,
393
+ size: Value,
394
+ name: stringz,
395
+ };
396
+ // MATRIX
397
+ const Matrix = {
398
+ elemtype: type_t,
399
+ rows: uint32,
400
+ cols: uint32,
401
+ majorStride: uint32,
402
+ _: binary.as(uint32, binary.BitFields({
403
+ row_major: 1,
404
+ unused: 7,
405
+ })),
406
+ size: Value,
407
+ name: stringz,
408
+ };
409
+ // CLASS, STRUCTURE
410
+ const Class_16t = {
411
+ count: uint16,
412
+ field: type16_t,
413
+ property: prop_t,
414
+ derived: type16_t,
415
+ vshape: type16_t,
416
+ size: Value,
417
+ name: stringz,
418
+ };
419
+ const Class = {
420
+ count: uint16,
421
+ property: prop_t,
422
+ field: type_t,
423
+ derived: type_t,
424
+ vshape: type_t,
425
+ size: Value,
426
+ name: stringz,
427
+ };
428
+ // Union structure
429
+ const Union_16t = {
430
+ count: uint16,
431
+ field: type16_t,
432
+ property: prop_t,
433
+ size: Value,
434
+ name: stringz,
435
+ };
436
+ const Union = {
437
+ count: uint16,
438
+ property: prop_t,
439
+ field: type_t,
440
+ size: Value,
441
+ name: stringz,
442
+ };
443
+ // Enum structure
444
+ const Enum_16t = {
445
+ count: uint16,
446
+ utype: type16_t,
447
+ field: type16_t,
448
+ property: prop_t,
449
+ name: stringz,
450
+ };
451
+ const Enum = {
452
+ count: uint16,
453
+ property: prop_t,
454
+ utype: type_t,
455
+ field: type_t,
456
+ name: stringz,
457
+ };
458
+ // PROCEDURE
459
+ const Proc_16t = {
460
+ rvtype: type16_t, // type index of return value
461
+ calltype: uint8, // calling convention (call_t)
462
+ funcattr: funcattr_t, // attributes
463
+ parmcount: uint16, // number of parameters
464
+ arglist: type16_t, // type index of argument list
465
+ };
466
+ const Proc = {
467
+ rvtype: type_t, // type index of return value
468
+ calltype: uint8, // calling convention (call_t)
469
+ funcattr: funcattr_t, // attributes
470
+ parmcount: uint16, // number of parameters
471
+ arglist: type_t, // type index of argument list
472
+ };
473
+ // member function
474
+ const MFunc_16t = {
475
+ rvtype: type16_t, // type index of return value
476
+ classtype: type16_t, // type index of containing class
477
+ thistype: type16_t, // type index of this pointer (model specific)
478
+ calltype: uint8, // calling convention (call_t)
479
+ funcattr: funcattr_t, // attributes
480
+ parmcount: uint16, // number of parameters
481
+ arglist: type16_t, // type index of argument list
482
+ thisadjust: uint32, // this adjuster (long because pad required anyway)
483
+ };
484
+ const MFunc = {
485
+ rvtype: type_t, // type index of return value
486
+ classtype: type_t, // type index of containing class
487
+ thistype: type_t, // type index of this pointer (model specific)
488
+ calltype: uint8, // calling convention (call_t)
489
+ funcattr: funcattr_t, // attributes
490
+ parmcount: uint16, // number of parameters
491
+ arglist: type_t, // type index of argument list
492
+ thisadjust: uint32, // this adjuster (long because pad required anyway)
493
+ };
494
+ // ALIAS
495
+ const Alias = {
496
+ utype: type_t,
497
+ name: stringz,
498
+ };
499
+ function ST(x) {
500
+ return x;
501
+ }
502
+ // Base leaf structure
503
+ const Leaf = binary.Switch(uint16, {
504
+ LF_MODIFIER_16t: Modifier_16t,
505
+ LF_POINTER_16t: Pointer_16t,
506
+ LF_ARRAY_16t: Array_16t,
507
+ LF_CLASS_16t: Class_16t,
508
+ LF_STRUCTURE_16t: Class_16t,
509
+ LF_UNION_16t: Union_16t,
510
+ LF_ENUM_16t: Enum_16t,
511
+ LF_PROCEDURE_16t: Proc_16t,
512
+ LF_MFUNCTION_16t: MFunc_16t,
513
+ // LF_VTSHAPE: VTShape,
514
+ // LF_COBOL0_16t: Cobol0_16t,
515
+ // LF_COBOL1: Cobol1,
516
+ // LF_BARRAY_16t: BArray_16t,
517
+ // LF_LABEL: Label,
518
+ // LF_NULL:
519
+ // LF_NOTTRAN:
520
+ // LF_DIMARRAY_16t: DimArray_16t,
521
+ // LF_VFTPATH_16t: VFTPath_16t,
522
+ // LF_PRECOMP_16t: PreComp_16t,
523
+ // LF_ENDPRECOMP: EndPreComp,
524
+ // LF_OEM_16t:
525
+ // LF_TYPESERVER_ST:
526
+ // LF_SKIP_16t: Skip_16t,
527
+ // LF_ARGLIST_16t: ArgList_16t,
528
+ // LF_DEFARG_16t: DefArg_16t,
529
+ // LF_LIST: List,
530
+ // LF_FIELDLIST_16t: FieldList_16t,
531
+ // LF_DERIVED_16t: Derived_16t,
532
+ // LF_BITFIELD_16t: Bitfield_16t,
533
+ // LF_METHODLIST_16t: MethodList_16t,
534
+ // LF_DIMCONU_16t: DimCon_16t,
535
+ // LF_DIMCONLU_16t: DimCon_16t,
536
+ // LF_DIMVARU_16t: DimVar_16t,
537
+ // LF_DIMVARLU_16t: DimVar_16t,
538
+ // LF_REFSYM: RefSym,
539
+ // LF_BCLASS_16t: BClass_16t,
540
+ // LF_VBCLASS_16t: VBClass_16t,
541
+ // LF_IVBCLASS_16t: VBClass_16t,
542
+ // LF_ENUMERATE_ST: ST(Enumerate),
543
+ // LF_FRIENDFCN_16t: FriendFcn_16t,
544
+ // LF_INDEX_16t: Index_16t,
545
+ // LF_MEMBER_16t: Member_16t,
546
+ // LF_STMEMBER_16t: STMember_16t,
547
+ // LF_METHOD_16t: Method_16t,
548
+ // LF_NESTTYPE_16t: NestType_16t,
549
+ // LF_VFUNCTAB_16t: VFuncTab_16t,
550
+ // LF_FRIENDCLS_16t: FriendCls_16t,
551
+ // LF_ONEMETHOD_16t: OneMethod_16t,
552
+ // LF_VFUNCOFF_16t: VFuncOff_16t,
553
+ LF_MODIFIER: Modifier,
554
+ LF_POINTER: Pointer,
555
+ LF_ARRAY_ST: Array,
556
+ LF_CLASS_ST: ST(Class),
557
+ LF_STRUCTURE_ST: ST(Class),
558
+ LF_UNION_ST: ST(Union),
559
+ LF_ENUM_ST: ST(Enum),
560
+ LF_PROCEDURE: Proc,
561
+ LF_MFUNCTION: MFunc,
562
+ // LF_COBOL0: Cobol0,
563
+ // LF_BARRAY: BArray,
564
+ // LF_DIMARRAY_ST: ST(DimArray),
565
+ // LF_VFTPATH: VFTPath,
566
+ // LF_PRECOMP_ST: ST(PreComp),
567
+ // LF_OEM:
568
+ LF_ALIAS_ST: ST(Alias),
569
+ // LF_OEM2:
570
+ // LF_SKIP: Skip,
571
+ // LF_ARGLIST: ArgList,
572
+ // LF_DEFARG_ST: DefArg,
573
+ // LF_FIELDLIST: FieldList,
574
+ // LF_DERIVED: Derived,
575
+ // LF_BITFIELD: Bitfield,
576
+ // LF_METHODLIST: MethodList,
577
+ // LF_DIMCONU: DimCon,
578
+ // LF_DIMCONLU: DimCon,
579
+ // LF_DIMVARU: DimVar,
580
+ // LF_DIMVARLU: DimVar,
581
+ // LF_BCLASS: BClass,
582
+ // LF_VBCLASS: VBClass,
583
+ // LF_IVBCLASS: VBClass,
584
+ // LF_FRIENDFCN_ST: ST(FriendFcn),
585
+ // LF_INDEX: Index,
586
+ // LF_MEMBER_ST: ST(Member),
587
+ // LF_STMEMBER_ST: ST(STMember),
588
+ // LF_METHOD_ST: ST(Method),
589
+ // LF_NESTTYPE_ST: ST(NestType),
590
+ // LF_VFUNCTAB: VFuncTab,
591
+ // LF_FRIENDCLS: FriendCls,
592
+ // LF_ONEMETHOD_ST: ST(OneMethod),
593
+ // LF_VFUNCOFF: VFuncOff,
594
+ // LF_NESTTYPEEX_ST: ST(NestTypeEx),
595
+ // LF_MEMBERMODIFY_ST: ST(MemberModify),
596
+ // LF_MANAGED_ST: ST(Managed),
597
+ // LF_TYPESERVER: TypeServer,
598
+ // LF_ENUMERATE: Enumerate,
599
+ LF_ARRAY: Array,
600
+ LF_CLASS: Class,
601
+ LF_STRUCTURE: Class,
602
+ LF_UNION: Union,
603
+ LF_ENUM: Enum,
604
+ // LF_DIMARRAY: DimArray,
605
+ // LF_PRECOMP: PreComp,
606
+ LF_ALIAS: Alias,
607
+ // LF_DEFARG: DefArg,
608
+ // LF_FRIENDFCN: FriendFcn,
609
+ // LF_MEMBER: Member,
610
+ // LF_STMEMBER: STMember,
611
+ // LF_METHOD: Method,
612
+ // LF_NESTTYPE: NestType,
613
+ // LF_ONEMETHOD: OneMethod,
614
+ // LF_NESTTYPEEX: NestTypeEx,
615
+ // LF_MEMBERMODIFY: MemberModify,
616
+ // LF_MANAGED: Managed,
617
+ // LF_TYPESERVER2: TypeServer2,
618
+ LF_STRIDED_ARRAY: StridedArray,
619
+ // LF_HLSL: HLSL,
620
+ // LF_MODIFIER_EX: ModifierEx,
621
+ // LF_INTERFACE: Interface,
622
+ // LF_BINTERFACE: BInterface,
623
+ LF_VECTOR: Vector,
624
+ LF_MATRIX: Matrix,
625
+ // LF_VFTABLE: Vftable,
626
+ // LF_FUNC_ID: FuncId,
627
+ // LF_MFUNC_ID: MFuncId,
628
+ // LF_BUILDINFO: BuildInfo,
629
+ // LF_SUBSTR_LIST: ArgList,
630
+ // LF_STRING_ID: StringId,
631
+ // LF_UDT_SRC_LINE: UdtSrcLine,
632
+ // LF_UDT_MOD_SRC_LINE: UdtModSrcLine,
633
+ // default: return proc(*type);
634
+ });
635
+ // Symbol enumeration - Complete list
636
+ var SYM_ENUM_e;
637
+ (function (SYM_ENUM_e) {
638
+ SYM_ENUM_e[SYM_ENUM_e["S_COMPILE"] = 1] = "S_COMPILE";
639
+ SYM_ENUM_e[SYM_ENUM_e["S_REGISTER_16t"] = 2] = "S_REGISTER_16t";
640
+ SYM_ENUM_e[SYM_ENUM_e["S_CONSTANT_16t"] = 3] = "S_CONSTANT_16t";
641
+ SYM_ENUM_e[SYM_ENUM_e["S_UDT_16t"] = 4] = "S_UDT_16t";
642
+ SYM_ENUM_e[SYM_ENUM_e["S_SSEARCH"] = 5] = "S_SSEARCH";
643
+ SYM_ENUM_e[SYM_ENUM_e["S_END"] = 6] = "S_END";
644
+ SYM_ENUM_e[SYM_ENUM_e["S_SKIP"] = 7] = "S_SKIP";
645
+ SYM_ENUM_e[SYM_ENUM_e["S_CVRESERVE"] = 8] = "S_CVRESERVE";
646
+ SYM_ENUM_e[SYM_ENUM_e["S_OBJNAME_ST"] = 9] = "S_OBJNAME_ST";
647
+ SYM_ENUM_e[SYM_ENUM_e["S_ENDARG"] = 10] = "S_ENDARG";
648
+ SYM_ENUM_e[SYM_ENUM_e["S_COBOLUDT_16t"] = 11] = "S_COBOLUDT_16t";
649
+ SYM_ENUM_e[SYM_ENUM_e["S_MANYREG_16t"] = 12] = "S_MANYREG_16t";
650
+ SYM_ENUM_e[SYM_ENUM_e["S_RETURN"] = 13] = "S_RETURN";
651
+ SYM_ENUM_e[SYM_ENUM_e["S_ENTRYTHIS"] = 14] = "S_ENTRYTHIS";
652
+ SYM_ENUM_e[SYM_ENUM_e["S_BPREL16"] = 256] = "S_BPREL16";
653
+ SYM_ENUM_e[SYM_ENUM_e["S_LDATA16"] = 257] = "S_LDATA16";
654
+ SYM_ENUM_e[SYM_ENUM_e["S_GDATA16"] = 258] = "S_GDATA16";
655
+ SYM_ENUM_e[SYM_ENUM_e["S_PUB16"] = 259] = "S_PUB16";
656
+ SYM_ENUM_e[SYM_ENUM_e["S_LPROC16"] = 260] = "S_LPROC16";
657
+ SYM_ENUM_e[SYM_ENUM_e["S_GPROC16"] = 261] = "S_GPROC16";
658
+ SYM_ENUM_e[SYM_ENUM_e["S_THUNK16"] = 262] = "S_THUNK16";
659
+ SYM_ENUM_e[SYM_ENUM_e["S_BLOCK16"] = 263] = "S_BLOCK16";
660
+ SYM_ENUM_e[SYM_ENUM_e["S_WITH16"] = 264] = "S_WITH16";
661
+ SYM_ENUM_e[SYM_ENUM_e["S_LABEL16"] = 265] = "S_LABEL16";
662
+ SYM_ENUM_e[SYM_ENUM_e["S_CEXMODEL16"] = 266] = "S_CEXMODEL16";
663
+ SYM_ENUM_e[SYM_ENUM_e["S_VFTABLE16"] = 267] = "S_VFTABLE16";
664
+ SYM_ENUM_e[SYM_ENUM_e["S_REGREL16"] = 268] = "S_REGREL16";
665
+ SYM_ENUM_e[SYM_ENUM_e["S_BPREL32_16t"] = 512] = "S_BPREL32_16t";
666
+ SYM_ENUM_e[SYM_ENUM_e["S_LDATA32_16t"] = 513] = "S_LDATA32_16t";
667
+ SYM_ENUM_e[SYM_ENUM_e["S_GDATA32_16t"] = 514] = "S_GDATA32_16t";
668
+ SYM_ENUM_e[SYM_ENUM_e["S_PUB32_16t"] = 515] = "S_PUB32_16t";
669
+ SYM_ENUM_e[SYM_ENUM_e["S_LPROC32_16t"] = 516] = "S_LPROC32_16t";
670
+ SYM_ENUM_e[SYM_ENUM_e["S_GPROC32_16t"] = 517] = "S_GPROC32_16t";
671
+ SYM_ENUM_e[SYM_ENUM_e["S_THUNK32_ST"] = 518] = "S_THUNK32_ST";
672
+ SYM_ENUM_e[SYM_ENUM_e["S_BLOCK32_ST"] = 519] = "S_BLOCK32_ST";
673
+ SYM_ENUM_e[SYM_ENUM_e["S_WITH32_ST"] = 520] = "S_WITH32_ST";
674
+ SYM_ENUM_e[SYM_ENUM_e["S_LABEL32_ST"] = 521] = "S_LABEL32_ST";
675
+ SYM_ENUM_e[SYM_ENUM_e["S_CEXMODEL32"] = 522] = "S_CEXMODEL32";
676
+ SYM_ENUM_e[SYM_ENUM_e["S_VFTABLE32_16t"] = 523] = "S_VFTABLE32_16t";
677
+ SYM_ENUM_e[SYM_ENUM_e["S_REGREL32_16t"] = 524] = "S_REGREL32_16t";
678
+ SYM_ENUM_e[SYM_ENUM_e["S_LTHREAD32_16t"] = 525] = "S_LTHREAD32_16t";
679
+ SYM_ENUM_e[SYM_ENUM_e["S_GTHREAD32_16t"] = 526] = "S_GTHREAD32_16t";
680
+ SYM_ENUM_e[SYM_ENUM_e["S_SLINK32"] = 527] = "S_SLINK32";
681
+ SYM_ENUM_e[SYM_ENUM_e["S_LPROCMIPS_16t"] = 768] = "S_LPROCMIPS_16t";
682
+ SYM_ENUM_e[SYM_ENUM_e["S_GPROCMIPS_16t"] = 769] = "S_GPROCMIPS_16t";
683
+ SYM_ENUM_e[SYM_ENUM_e["S_PROCREF_ST"] = 1024] = "S_PROCREF_ST";
684
+ SYM_ENUM_e[SYM_ENUM_e["S_DATAREF_ST"] = 1025] = "S_DATAREF_ST";
685
+ SYM_ENUM_e[SYM_ENUM_e["S_ALIGN"] = 1026] = "S_ALIGN";
686
+ SYM_ENUM_e[SYM_ENUM_e["S_LPROCREF_ST"] = 1027] = "S_LPROCREF_ST";
687
+ SYM_ENUM_e[SYM_ENUM_e["S_OEM"] = 1028] = "S_OEM";
688
+ // 32-bit symbols
689
+ SYM_ENUM_e[SYM_ENUM_e["S_TI16_MAX"] = 4096] = "S_TI16_MAX";
690
+ SYM_ENUM_e[SYM_ENUM_e["S_REGISTER_ST"] = 4097] = "S_REGISTER_ST";
691
+ SYM_ENUM_e[SYM_ENUM_e["S_CONSTANT_ST"] = 4098] = "S_CONSTANT_ST";
692
+ SYM_ENUM_e[SYM_ENUM_e["S_UDT_ST"] = 4099] = "S_UDT_ST";
693
+ SYM_ENUM_e[SYM_ENUM_e["S_COBOLUDT_ST"] = 4100] = "S_COBOLUDT_ST";
694
+ SYM_ENUM_e[SYM_ENUM_e["S_MANYREG_ST"] = 4101] = "S_MANYREG_ST";
695
+ SYM_ENUM_e[SYM_ENUM_e["S_BPREL32_ST"] = 4102] = "S_BPREL32_ST";
696
+ SYM_ENUM_e[SYM_ENUM_e["S_LDATA32_ST"] = 4103] = "S_LDATA32_ST";
697
+ SYM_ENUM_e[SYM_ENUM_e["S_GDATA32_ST"] = 4104] = "S_GDATA32_ST";
698
+ SYM_ENUM_e[SYM_ENUM_e["S_PUB32_ST"] = 4105] = "S_PUB32_ST";
699
+ SYM_ENUM_e[SYM_ENUM_e["S_LPROC32_ST"] = 4106] = "S_LPROC32_ST";
700
+ SYM_ENUM_e[SYM_ENUM_e["S_GPROC32_ST"] = 4107] = "S_GPROC32_ST";
701
+ SYM_ENUM_e[SYM_ENUM_e["S_VFTABLE32"] = 4108] = "S_VFTABLE32";
702
+ SYM_ENUM_e[SYM_ENUM_e["S_REGREL32_ST"] = 4109] = "S_REGREL32_ST";
703
+ SYM_ENUM_e[SYM_ENUM_e["S_LTHREAD32_ST"] = 4110] = "S_LTHREAD32_ST";
704
+ SYM_ENUM_e[SYM_ENUM_e["S_GTHREAD32_ST"] = 4111] = "S_GTHREAD32_ST";
705
+ SYM_ENUM_e[SYM_ENUM_e["S_LPROCMIPS_ST"] = 4112] = "S_LPROCMIPS_ST";
706
+ SYM_ENUM_e[SYM_ENUM_e["S_GPROCMIPS_ST"] = 4113] = "S_GPROCMIPS_ST";
707
+ SYM_ENUM_e[SYM_ENUM_e["S_FRAMEPROC"] = 4114] = "S_FRAMEPROC";
708
+ SYM_ENUM_e[SYM_ENUM_e["S_COMPILE2_ST"] = 4115] = "S_COMPILE2_ST";
709
+ SYM_ENUM_e[SYM_ENUM_e["S_MANYREG2_ST"] = 4116] = "S_MANYREG2_ST";
710
+ SYM_ENUM_e[SYM_ENUM_e["S_LPROCIA64_ST"] = 4117] = "S_LPROCIA64_ST";
711
+ SYM_ENUM_e[SYM_ENUM_e["S_GPROCIA64_ST"] = 4118] = "S_GPROCIA64_ST";
712
+ SYM_ENUM_e[SYM_ENUM_e["S_LOCALSLOT_ST"] = 4119] = "S_LOCALSLOT_ST";
713
+ SYM_ENUM_e[SYM_ENUM_e["S_PARAMSLOT_ST"] = 4120] = "S_PARAMSLOT_ST";
714
+ SYM_ENUM_e[SYM_ENUM_e["S_ANNOTATION"] = 4121] = "S_ANNOTATION";
715
+ SYM_ENUM_e[SYM_ENUM_e["S_GMANPROC_ST"] = 4122] = "S_GMANPROC_ST";
716
+ SYM_ENUM_e[SYM_ENUM_e["S_LMANPROC_ST"] = 4123] = "S_LMANPROC_ST";
717
+ SYM_ENUM_e[SYM_ENUM_e["S_RESERVED1"] = 4124] = "S_RESERVED1";
718
+ SYM_ENUM_e[SYM_ENUM_e["S_RESERVED2"] = 4125] = "S_RESERVED2";
719
+ SYM_ENUM_e[SYM_ENUM_e["S_RESERVED3"] = 4126] = "S_RESERVED3";
720
+ SYM_ENUM_e[SYM_ENUM_e["S_RESERVED4"] = 4127] = "S_RESERVED4";
721
+ SYM_ENUM_e[SYM_ENUM_e["S_LMANDATA_ST"] = 4128] = "S_LMANDATA_ST";
722
+ SYM_ENUM_e[SYM_ENUM_e["S_GMANDATA_ST"] = 4129] = "S_GMANDATA_ST";
723
+ SYM_ENUM_e[SYM_ENUM_e["S_MANFRAMEREL_ST"] = 4130] = "S_MANFRAMEREL_ST";
724
+ SYM_ENUM_e[SYM_ENUM_e["S_MANREGISTER_ST"] = 4131] = "S_MANREGISTER_ST";
725
+ SYM_ENUM_e[SYM_ENUM_e["S_MANSLOT_ST"] = 4132] = "S_MANSLOT_ST";
726
+ SYM_ENUM_e[SYM_ENUM_e["S_MANMANYREG_ST"] = 4133] = "S_MANMANYREG_ST";
727
+ SYM_ENUM_e[SYM_ENUM_e["S_MANREGREL_ST"] = 4134] = "S_MANREGREL_ST";
728
+ SYM_ENUM_e[SYM_ENUM_e["S_MANMANYREG2_ST"] = 4135] = "S_MANMANYREG2_ST";
729
+ SYM_ENUM_e[SYM_ENUM_e["S_MANTYPREF"] = 4136] = "S_MANTYPREF";
730
+ SYM_ENUM_e[SYM_ENUM_e["S_UNAMESPACE_ST"] = 4137] = "S_UNAMESPACE_ST";
731
+ // Modern symbols
732
+ SYM_ENUM_e[SYM_ENUM_e["S_ST_MAX"] = 4352] = "S_ST_MAX";
733
+ SYM_ENUM_e[SYM_ENUM_e["S_OBJNAME"] = 4353] = "S_OBJNAME";
734
+ SYM_ENUM_e[SYM_ENUM_e["S_THUNK32"] = 4354] = "S_THUNK32";
735
+ SYM_ENUM_e[SYM_ENUM_e["S_BLOCK32"] = 4355] = "S_BLOCK32";
736
+ SYM_ENUM_e[SYM_ENUM_e["S_WITH32"] = 4356] = "S_WITH32";
737
+ SYM_ENUM_e[SYM_ENUM_e["S_LABEL32"] = 4357] = "S_LABEL32";
738
+ SYM_ENUM_e[SYM_ENUM_e["S_REGISTER"] = 4358] = "S_REGISTER";
739
+ SYM_ENUM_e[SYM_ENUM_e["S_CONSTANT"] = 4359] = "S_CONSTANT";
740
+ SYM_ENUM_e[SYM_ENUM_e["S_UDT"] = 4360] = "S_UDT";
741
+ SYM_ENUM_e[SYM_ENUM_e["S_COBOLUDT"] = 4361] = "S_COBOLUDT";
742
+ SYM_ENUM_e[SYM_ENUM_e["S_MANYREG"] = 4362] = "S_MANYREG";
743
+ SYM_ENUM_e[SYM_ENUM_e["S_BPREL32"] = 4363] = "S_BPREL32";
744
+ SYM_ENUM_e[SYM_ENUM_e["S_LDATA32"] = 4364] = "S_LDATA32";
745
+ SYM_ENUM_e[SYM_ENUM_e["S_GDATA32"] = 4365] = "S_GDATA32";
746
+ SYM_ENUM_e[SYM_ENUM_e["S_PUB32"] = 4366] = "S_PUB32";
747
+ SYM_ENUM_e[SYM_ENUM_e["S_LPROC32"] = 4367] = "S_LPROC32";
748
+ SYM_ENUM_e[SYM_ENUM_e["S_GPROC32"] = 4368] = "S_GPROC32";
749
+ SYM_ENUM_e[SYM_ENUM_e["S_REGREL32"] = 4369] = "S_REGREL32";
750
+ SYM_ENUM_e[SYM_ENUM_e["S_LTHREAD32"] = 4370] = "S_LTHREAD32";
751
+ SYM_ENUM_e[SYM_ENUM_e["S_GTHREAD32"] = 4371] = "S_GTHREAD32";
752
+ SYM_ENUM_e[SYM_ENUM_e["S_LPROCMIPS"] = 4372] = "S_LPROCMIPS";
753
+ SYM_ENUM_e[SYM_ENUM_e["S_GPROCMIPS"] = 4373] = "S_GPROCMIPS";
754
+ SYM_ENUM_e[SYM_ENUM_e["S_COMPILE2"] = 4374] = "S_COMPILE2";
755
+ SYM_ENUM_e[SYM_ENUM_e["S_MANYREG2"] = 4375] = "S_MANYREG2";
756
+ SYM_ENUM_e[SYM_ENUM_e["S_LPROCIA64"] = 4376] = "S_LPROCIA64";
757
+ SYM_ENUM_e[SYM_ENUM_e["S_GPROCIA64"] = 4377] = "S_GPROCIA64";
758
+ SYM_ENUM_e[SYM_ENUM_e["S_LOCALSLOT"] = 4378] = "S_LOCALSLOT";
759
+ // S_SLOT = 0x111a, // alias
760
+ SYM_ENUM_e[SYM_ENUM_e["S_PARAMSLOT"] = 4379] = "S_PARAMSLOT";
761
+ SYM_ENUM_e[SYM_ENUM_e["S_LMANDATA"] = 4380] = "S_LMANDATA";
762
+ SYM_ENUM_e[SYM_ENUM_e["S_GMANDATA"] = 4381] = "S_GMANDATA";
763
+ SYM_ENUM_e[SYM_ENUM_e["S_MANFRAMEREL"] = 4382] = "S_MANFRAMEREL";
764
+ SYM_ENUM_e[SYM_ENUM_e["S_MANREGISTER"] = 4383] = "S_MANREGISTER";
765
+ SYM_ENUM_e[SYM_ENUM_e["S_MANSLOT"] = 4384] = "S_MANSLOT";
766
+ SYM_ENUM_e[SYM_ENUM_e["S_MANMANYREG"] = 4385] = "S_MANMANYREG";
767
+ SYM_ENUM_e[SYM_ENUM_e["S_MANREGREL"] = 4386] = "S_MANREGREL";
768
+ SYM_ENUM_e[SYM_ENUM_e["S_MANMANYREG2"] = 4387] = "S_MANMANYREG2";
769
+ SYM_ENUM_e[SYM_ENUM_e["S_UNAMESPACE"] = 4388] = "S_UNAMESPACE";
770
+ SYM_ENUM_e[SYM_ENUM_e["S_PROCREF"] = 4389] = "S_PROCREF";
771
+ SYM_ENUM_e[SYM_ENUM_e["S_DATAREF"] = 4390] = "S_DATAREF";
772
+ SYM_ENUM_e[SYM_ENUM_e["S_LPROCREF"] = 4391] = "S_LPROCREF";
773
+ SYM_ENUM_e[SYM_ENUM_e["S_ANNOTATIONREF"] = 4392] = "S_ANNOTATIONREF";
774
+ SYM_ENUM_e[SYM_ENUM_e["S_TOKENREF"] = 4393] = "S_TOKENREF";
775
+ SYM_ENUM_e[SYM_ENUM_e["S_GMANPROC"] = 4394] = "S_GMANPROC";
776
+ SYM_ENUM_e[SYM_ENUM_e["S_LMANPROC"] = 4395] = "S_LMANPROC";
777
+ SYM_ENUM_e[SYM_ENUM_e["S_TRAMPOLINE"] = 4396] = "S_TRAMPOLINE";
778
+ SYM_ENUM_e[SYM_ENUM_e["S_MANCONSTANT"] = 4397] = "S_MANCONSTANT";
779
+ SYM_ENUM_e[SYM_ENUM_e["S_ATTR_FRAMEREL"] = 4398] = "S_ATTR_FRAMEREL";
780
+ SYM_ENUM_e[SYM_ENUM_e["S_ATTR_REGISTER"] = 4399] = "S_ATTR_REGISTER";
781
+ SYM_ENUM_e[SYM_ENUM_e["S_ATTR_REGREL"] = 4400] = "S_ATTR_REGREL";
782
+ SYM_ENUM_e[SYM_ENUM_e["S_ATTR_MANYREG"] = 4401] = "S_ATTR_MANYREG";
783
+ SYM_ENUM_e[SYM_ENUM_e["S_SEPCODE"] = 4402] = "S_SEPCODE";
784
+ SYM_ENUM_e[SYM_ENUM_e["S_LOCAL_2005"] = 4403] = "S_LOCAL_2005";
785
+ SYM_ENUM_e[SYM_ENUM_e["S_DEFRANGE_2005"] = 4404] = "S_DEFRANGE_2005";
786
+ SYM_ENUM_e[SYM_ENUM_e["S_DEFRANGE2_2005"] = 4405] = "S_DEFRANGE2_2005";
787
+ SYM_ENUM_e[SYM_ENUM_e["S_SECTION"] = 4406] = "S_SECTION";
788
+ SYM_ENUM_e[SYM_ENUM_e["S_COFFGROUP"] = 4407] = "S_COFFGROUP";
789
+ SYM_ENUM_e[SYM_ENUM_e["S_EXPORT"] = 4408] = "S_EXPORT";
790
+ SYM_ENUM_e[SYM_ENUM_e["S_CALLSITEINFO"] = 4409] = "S_CALLSITEINFO";
791
+ SYM_ENUM_e[SYM_ENUM_e["S_FRAMECOOKIE"] = 4410] = "S_FRAMECOOKIE";
792
+ SYM_ENUM_e[SYM_ENUM_e["S_DISCARDED"] = 4411] = "S_DISCARDED";
793
+ SYM_ENUM_e[SYM_ENUM_e["S_COMPILE3"] = 4412] = "S_COMPILE3";
794
+ SYM_ENUM_e[SYM_ENUM_e["S_ENVBLOCK"] = 4413] = "S_ENVBLOCK";
795
+ SYM_ENUM_e[SYM_ENUM_e["S_LOCAL"] = 4414] = "S_LOCAL";
796
+ SYM_ENUM_e[SYM_ENUM_e["S_DEFRANGE"] = 4415] = "S_DEFRANGE";
797
+ SYM_ENUM_e[SYM_ENUM_e["S_DEFRANGE_SUBFIELD"] = 4416] = "S_DEFRANGE_SUBFIELD";
798
+ SYM_ENUM_e[SYM_ENUM_e["S_DEFRANGE_REGISTER"] = 4417] = "S_DEFRANGE_REGISTER";
799
+ SYM_ENUM_e[SYM_ENUM_e["S_DEFRANGE_FRAMEPOINTER_REL"] = 4418] = "S_DEFRANGE_FRAMEPOINTER_REL";
800
+ SYM_ENUM_e[SYM_ENUM_e["S_DEFRANGE_SUBFIELD_REGISTER"] = 4419] = "S_DEFRANGE_SUBFIELD_REGISTER";
801
+ SYM_ENUM_e[SYM_ENUM_e["S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE"] = 4420] = "S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE";
802
+ SYM_ENUM_e[SYM_ENUM_e["S_DEFRANGE_REGISTER_REL"] = 4421] = "S_DEFRANGE_REGISTER_REL";
803
+ SYM_ENUM_e[SYM_ENUM_e["S_LPROC32_ID"] = 4422] = "S_LPROC32_ID";
804
+ SYM_ENUM_e[SYM_ENUM_e["S_GPROC32_ID"] = 4423] = "S_GPROC32_ID";
805
+ SYM_ENUM_e[SYM_ENUM_e["S_LPROCMIPS_ID"] = 4424] = "S_LPROCMIPS_ID";
806
+ SYM_ENUM_e[SYM_ENUM_e["S_GPROCMIPS_ID"] = 4425] = "S_GPROCMIPS_ID";
807
+ SYM_ENUM_e[SYM_ENUM_e["S_LPROCIA64_ID"] = 4426] = "S_LPROCIA64_ID";
808
+ SYM_ENUM_e[SYM_ENUM_e["S_GPROCIA64_ID"] = 4427] = "S_GPROCIA64_ID";
809
+ SYM_ENUM_e[SYM_ENUM_e["S_BUILDINFO"] = 4428] = "S_BUILDINFO";
810
+ SYM_ENUM_e[SYM_ENUM_e["S_INLINESITE"] = 4429] = "S_INLINESITE";
811
+ SYM_ENUM_e[SYM_ENUM_e["S_INLINESITE_END"] = 4430] = "S_INLINESITE_END";
812
+ SYM_ENUM_e[SYM_ENUM_e["S_PROC_ID_END"] = 4431] = "S_PROC_ID_END";
813
+ SYM_ENUM_e[SYM_ENUM_e["S_DEFRANGE_HLSL"] = 4432] = "S_DEFRANGE_HLSL";
814
+ SYM_ENUM_e[SYM_ENUM_e["S_GDATA_HLSL"] = 4433] = "S_GDATA_HLSL";
815
+ SYM_ENUM_e[SYM_ENUM_e["S_LDATA_HLSL"] = 4434] = "S_LDATA_HLSL";
816
+ SYM_ENUM_e[SYM_ENUM_e["S_FILESTATIC"] = 4435] = "S_FILESTATIC";
817
+ SYM_ENUM_e[SYM_ENUM_e["S_ARMSWITCHTABLE"] = 4441] = "S_ARMSWITCHTABLE";
818
+ SYM_ENUM_e[SYM_ENUM_e["S_CALLEES"] = 4442] = "S_CALLEES";
819
+ SYM_ENUM_e[SYM_ENUM_e["S_CALLERS"] = 4443] = "S_CALLERS";
820
+ SYM_ENUM_e[SYM_ENUM_e["S_POGODATA"] = 4444] = "S_POGODATA";
821
+ SYM_ENUM_e[SYM_ENUM_e["S_INLINESITE2"] = 4445] = "S_INLINESITE2";
822
+ SYM_ENUM_e[SYM_ENUM_e["S_HEAPALLOCSITE"] = 4446] = "S_HEAPALLOCSITE";
823
+ SYM_ENUM_e[SYM_ENUM_e["S_MOD_TYPEREF"] = 4447] = "S_MOD_TYPEREF";
824
+ SYM_ENUM_e[SYM_ENUM_e["S_REF_MINIPDB"] = 4448] = "S_REF_MINIPDB";
825
+ SYM_ENUM_e[SYM_ENUM_e["S_PDBMAP"] = 4449] = "S_PDBMAP";
826
+ SYM_ENUM_e[SYM_ENUM_e["S_GDATA_HLSL32"] = 4450] = "S_GDATA_HLSL32";
827
+ SYM_ENUM_e[SYM_ENUM_e["S_LDATA_HLSL32"] = 4451] = "S_LDATA_HLSL32";
828
+ SYM_ENUM_e[SYM_ENUM_e["S_GDATA_HLSL32_EX"] = 4452] = "S_GDATA_HLSL32_EX";
829
+ SYM_ENUM_e[SYM_ENUM_e["S_LDATA_HLSL32_EX"] = 4453] = "S_LDATA_HLSL32_EX";
830
+ SYM_ENUM_e[SYM_ENUM_e["S_FASTLINK"] = 4455] = "S_FASTLINK";
831
+ SYM_ENUM_e[SYM_ENUM_e["S_INLINEES"] = 4456] = "S_INLINEES";
832
+ SYM_ENUM_e[SYM_ENUM_e["S_RECTYPE_MAX"] = 4457] = "S_RECTYPE_MAX";
833
+ // S_RECTYPE_LAST = 0x1168,
834
+ SYM_ENUM_e[SYM_ENUM_e["S_RECTYPE_PAD"] = 4713] = "S_RECTYPE_PAD";
835
+ })(SYM_ENUM_e || (SYM_ENUM_e = {}));
836
+ // Base symbol structure
837
+ const SYMTYPE = {
838
+ reclen: uint16,
839
+ rectyp: binary.asEnum(uint16, SYM_ENUM_e),
840
+ data: binary.SizeType(field('reclen'), binary.Switch(field('rectype'), {
841
+ // Register symbol
842
+ S_REGSYM: {
843
+ typind: type_t,
844
+ reg: uint16,
845
+ name: stringz,
846
+ },
847
+ // Constant symbol
848
+ S_CONSTSYM: {
849
+ typind: type_t,
850
+ value: Value,
851
+ name: stringz,
852
+ },
853
+ // UDT symbol
854
+ S_UDTSYM: {
855
+ typind: type_t,
856
+ name: stringz,
857
+ },
858
+ // Data symbol
859
+ S_DATASYM32: {
860
+ typind: type_t,
861
+ addr: {
862
+ off: uint32,
863
+ seg: uint16,
864
+ },
865
+ name: stringz,
866
+ },
867
+ // Procedure symbol
868
+ S_PROCSYM32: {
869
+ pParent: uint32,
870
+ pEnd: uint32,
871
+ pNext: uint32,
872
+ len: uint32,
873
+ DbgStart: uint32,
874
+ DbgEnd: uint32,
875
+ typind: type_t,
876
+ addr: {
877
+ off: uint32,
878
+ seg: uint16,
879
+ },
880
+ flags: binary.as(uint8, binary.BitFields({
881
+ PFLAG_NOFPO: 1,
882
+ PFLAG_INT: 1,
883
+ PFLAG_FAR: 1,
884
+ PFLAG_NEVER: 1,
885
+ PFLAG_NOTREACHED: 1,
886
+ PFLAG_CUST_CALL: 1,
887
+ PFLAG_NOINLINE: 1,
888
+ PFLAG_OPTDBGINFO: 1,
889
+ })),
890
+ name: stringz,
891
+ },
892
+ }))
893
+ };
894
+ // Subsection types
895
+ var DEBUG_S;
896
+ (function (DEBUG_S) {
897
+ DEBUG_S[DEBUG_S["IGNORE"] = 2147483648] = "IGNORE";
898
+ DEBUG_S[DEBUG_S["SYMBOLS"] = 241] = "SYMBOLS";
899
+ DEBUG_S[DEBUG_S["LINES"] = 242] = "LINES";
900
+ DEBUG_S[DEBUG_S["STRINGTABLE"] = 243] = "STRINGTABLE";
901
+ DEBUG_S[DEBUG_S["FILECHKSMS"] = 244] = "FILECHKSMS";
902
+ DEBUG_S[DEBUG_S["FRAMEDATA"] = 245] = "FRAMEDATA";
903
+ DEBUG_S[DEBUG_S["INLINEELINES"] = 246] = "INLINEELINES";
904
+ DEBUG_S[DEBUG_S["CROSSSCOPEIMPORTS"] = 247] = "CROSSSCOPEIMPORTS";
905
+ DEBUG_S[DEBUG_S["CROSSSCOPEEXPORTS"] = 248] = "CROSSSCOPEEXPORTS";
906
+ })(DEBUG_S || (DEBUG_S = {}));
907
+ // Line information
908
+ const LineInfo = {
909
+ offset: uint32,
910
+ _: binary.as(uint32, binary.BitFields({
911
+ linenumStart: 24,
912
+ deltaLineEnd: 7,
913
+ fStatement: 1,
914
+ })),
915
+ };
916
+ // Subsection base structure
917
+ const SubSection = {
918
+ type: uint32,
919
+ data: binary.SizeType(int32, binary.Switch(field('type'), {
920
+ [DEBUG_S.SYMBOLS]: binary.RemainingArrayType(SYMTYPE),
921
+ [DEBUG_S.LINES]: binary.RemainingArrayType(LineInfo),
922
+ [DEBUG_S.STRINGTABLE]: binary.RemainingArrayType(stringz),
923
+ [DEBUG_S.FILECHKSMS]: binary.Remainder,
924
+ [DEBUG_S.FRAMEDATA]: binary.Remainder,
925
+ [DEBUG_S.INLINEELINES]: binary.Remainder,
926
+ [DEBUG_S.CROSSSCOPEIMPORTS]: binary.Remainder,
927
+ [DEBUG_S.CROSSSCOPEEXPORTS]: binary.Remainder,
928
+ }))
929
+ };
930
+ //# sourceMappingURL=cvinfo.js.map