sol-dbg 0.0.0
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/LICENSE +201 -0
- package/README.md +105 -0
- package/dist/artifacts/helpers.d.ts +14 -0
- package/dist/artifacts/helpers.d.ts.map +1 -0
- package/dist/artifacts/helpers.js +111 -0
- package/dist/artifacts/helpers.js.map +1 -0
- package/dist/artifacts/index.d.ts +3 -0
- package/dist/artifacts/index.d.ts.map +1 -0
- package/dist/artifacts/index.js +19 -0
- package/dist/artifacts/index.js.map +1 -0
- package/dist/artifacts/solc.d.ts +44 -0
- package/dist/artifacts/solc.d.ts.map +1 -0
- package/dist/artifacts/solc.js +3 -0
- package/dist/artifacts/solc.js.map +1 -0
- package/dist/debug/abi.d.ts +30 -0
- package/dist/debug/abi.d.ts.map +1 -0
- package/dist/debug/abi.js +183 -0
- package/dist/debug/abi.js.map +1 -0
- package/dist/debug/artifact_manager.d.ts +68 -0
- package/dist/debug/artifact_manager.d.ts.map +1 -0
- package/dist/debug/artifact_manager.js +182 -0
- package/dist/debug/artifact_manager.js.map +1 -0
- package/dist/debug/decoding/calldata.d.ts +6 -0
- package/dist/debug/decoding/calldata.d.ts.map +1 -0
- package/dist/debug/decoding/calldata.js +228 -0
- package/dist/debug/decoding/calldata.js.map +1 -0
- package/dist/debug/decoding/general.d.ts +9 -0
- package/dist/debug/decoding/general.d.ts.map +1 -0
- package/dist/debug/decoding/general.js +114 -0
- package/dist/debug/decoding/general.js.map +1 -0
- package/dist/debug/decoding/index.d.ts +6 -0
- package/dist/debug/decoding/index.d.ts.map +1 -0
- package/dist/debug/decoding/index.js +22 -0
- package/dist/debug/decoding/index.js.map +1 -0
- package/dist/debug/decoding/memory.d.ts +4 -0
- package/dist/debug/decoding/memory.d.ts.map +1 -0
- package/dist/debug/decoding/memory.js +216 -0
- package/dist/debug/decoding/memory.js.map +1 -0
- package/dist/debug/decoding/stack.d.ts +9 -0
- package/dist/debug/decoding/stack.d.ts.map +1 -0
- package/dist/debug/decoding/stack.js +85 -0
- package/dist/debug/decoding/stack.js.map +1 -0
- package/dist/debug/decoding/storage.d.ts +4 -0
- package/dist/debug/decoding/storage.d.ts.map +1 -0
- package/dist/debug/decoding/storage.js +333 -0
- package/dist/debug/decoding/storage.js.map +1 -0
- package/dist/debug/index.d.ts +7 -0
- package/dist/debug/index.d.ts.map +1 -0
- package/dist/debug/index.js +23 -0
- package/dist/debug/index.js.map +1 -0
- package/dist/debug/opcodes.d.ts +302 -0
- package/dist/debug/opcodes.d.ts.map +1 -0
- package/dist/debug/opcodes.js +2909 -0
- package/dist/debug/opcodes.js.map +1 -0
- package/dist/debug/sol_debugger.d.ts +247 -0
- package/dist/debug/sol_debugger.d.ts.map +1 -0
- package/dist/debug/sol_debugger.js +443 -0
- package/dist/debug/sol_debugger.js.map +1 -0
- package/dist/debug/types.d.ts +33 -0
- package/dist/debug/types.d.ts.map +1 -0
- package/dist/debug/types.js +3 -0
- package/dist/debug/types.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/immutable_map.d.ts +13 -0
- package/dist/utils/immutable_map.d.ts.map +1 -0
- package/dist/utils/immutable_map.js +56 -0
- package/dist/utils/immutable_map.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +20 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/misc.d.ts +48 -0
- package/dist/utils/misc.d.ts.map +1 -0
- package/dist/utils/misc.js +221 -0
- package/dist/utils/misc.js.map +1 -0
- package/dist/utils/srcmap.d.ts +8 -0
- package/dist/utils/srcmap.d.ts.map +1 -0
- package/dist/utils/srcmap.js +28 -0
- package/dist/utils/srcmap.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cd_decodeValue = exports.cd_decodeArrayContents = void 0;
|
|
4
|
+
const ethereumjs_util_1 = require("ethereumjs-util");
|
|
5
|
+
const solc_typed_ast_1 = require("solc-typed-ast");
|
|
6
|
+
const __1 = require("..");
|
|
7
|
+
const __2 = require("../..");
|
|
8
|
+
function cd_decodeInt(typ, loc, calldata) {
|
|
9
|
+
const numAddr = (0, __2.checkAddrOoB)(loc.address, calldata);
|
|
10
|
+
// OoB access
|
|
11
|
+
if (numAddr === undefined) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
let res = (0, __2.bigEndianBufToBigint)(calldata.slice(numAddr, numAddr + 32));
|
|
15
|
+
// Convert signed negative 2's complement values
|
|
16
|
+
if (typ.signed && (res & (BigInt(1) << BigInt(typ.nBits - 1))) !== BigInt(0)) {
|
|
17
|
+
// Mask out any 1's above the number's size
|
|
18
|
+
res = res & ((BigInt(1) << BigInt(typ.nBits)) - BigInt(1));
|
|
19
|
+
res = -((BigInt(1) << BigInt(typ.nBits)) - res);
|
|
20
|
+
}
|
|
21
|
+
(0, solc_typed_ast_1.assert)((0, __2.fits)(res, typ), `Decoded value ${res} from ${loc} doesn't fit in expected type ${typ.pp()}`);
|
|
22
|
+
return [res, 32];
|
|
23
|
+
}
|
|
24
|
+
function cd_decodeAddress(loc, calldata) {
|
|
25
|
+
const numAddr = (0, __2.checkAddrOoB)(loc.address, calldata);
|
|
26
|
+
if (numAddr === undefined) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
const res = new ethereumjs_util_1.Address(calldata.slice(numAddr + 12, numAddr + 32));
|
|
30
|
+
return [res, 32];
|
|
31
|
+
}
|
|
32
|
+
function cd_decodeFixedBytes(typ, loc, calldata) {
|
|
33
|
+
const numAddr = (0, __2.checkAddrOoB)(loc.address, calldata);
|
|
34
|
+
if (numAddr === undefined) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
const res = calldata.slice(numAddr, numAddr + typ.size);
|
|
38
|
+
return [res, 32];
|
|
39
|
+
}
|
|
40
|
+
function cd_decodeBool(loc, calldata) {
|
|
41
|
+
const numAddr = (0, __2.checkAddrOoB)(loc.address, calldata);
|
|
42
|
+
if (numAddr === undefined) {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
const res = (0, __2.bigEndianBufToBigint)(calldata.slice(numAddr, numAddr + 32)) !== BigInt(0);
|
|
46
|
+
return [res, 32];
|
|
47
|
+
}
|
|
48
|
+
function cd_decodeBytes(loc, calldata) {
|
|
49
|
+
let res = undefined;
|
|
50
|
+
let bytesOffset = loc.address;
|
|
51
|
+
let bytesSize = 0;
|
|
52
|
+
const bytesLoc = loc.kind;
|
|
53
|
+
const len = cd_decodeInt(__2.uint256, { kind: bytesLoc, address: bytesOffset }, calldata);
|
|
54
|
+
if (len == undefined) {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
if (len[0] >= __2.MAX_ARR_DECODE_LIMIT) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
const numLen = Number(len[0]);
|
|
61
|
+
bytesOffset += BigInt(len[1]);
|
|
62
|
+
bytesSize += len[1];
|
|
63
|
+
bytesSize += numLen + (numLen % 32 === 0 ? 0 : 1 - (numLen % 32));
|
|
64
|
+
const checkedArrDynOffset = (0, __2.checkAddrOoB)(bytesOffset, calldata);
|
|
65
|
+
if (checkedArrDynOffset === undefined) {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
if (checkedArrDynOffset + numLen > calldata.length) {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
res = calldata.slice(checkedArrDynOffset, checkedArrDynOffset + numLen);
|
|
72
|
+
return [res, bytesSize];
|
|
73
|
+
}
|
|
74
|
+
function cd_decodeString(loc, calldata) {
|
|
75
|
+
const bytes = cd_decodeBytes(loc, calldata);
|
|
76
|
+
if (bytes === undefined) {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
const str = bytes[0].toString("utf-8");
|
|
80
|
+
return [str, bytes[1]];
|
|
81
|
+
}
|
|
82
|
+
function cd_decodeArrayContents(abiType, origType, arrOffset, numLen, calldata) {
|
|
83
|
+
let arrBytesSize = 0;
|
|
84
|
+
const arrBaseOffset = arrOffset;
|
|
85
|
+
const res = [];
|
|
86
|
+
const elT = origType !== undefined ? origType.elementT : undefined;
|
|
87
|
+
for (let i = 0; i < numLen; i++) {
|
|
88
|
+
const elementTuple = cd_decodeValue(abiType.elementT, elT, { kind: __1.DataLocationKind.CallData, address: arrOffset }, calldata, arrBaseOffset);
|
|
89
|
+
if (elementTuple === undefined) {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
const [elementVal, elementSize] = elementTuple;
|
|
93
|
+
res.push(elementVal);
|
|
94
|
+
arrOffset += BigInt(elementSize);
|
|
95
|
+
arrBytesSize += elementSize;
|
|
96
|
+
}
|
|
97
|
+
return [res, arrBytesSize];
|
|
98
|
+
}
|
|
99
|
+
exports.cd_decodeArrayContents = cd_decodeArrayContents;
|
|
100
|
+
function cd_decodeArray(abiType, origType, loc, calldata) {
|
|
101
|
+
let arrOffset = loc.address;
|
|
102
|
+
let arrBytesSize = 0;
|
|
103
|
+
const len = cd_decodeInt(__2.uint256, loc, calldata);
|
|
104
|
+
if (len == undefined) {
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
if (len[0] >= __2.MAX_ARR_DECODE_LIMIT) {
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
const numLen = Number(len[0]);
|
|
111
|
+
arrOffset += BigInt(len[1]);
|
|
112
|
+
arrBytesSize += len[1];
|
|
113
|
+
const contentsRes = cd_decodeArrayContents(abiType, origType, arrOffset, numLen, calldata);
|
|
114
|
+
if (contentsRes === undefined) {
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
return [contentsRes[0], arrBytesSize + contentsRes[1]];
|
|
118
|
+
}
|
|
119
|
+
function cd_decodeTuple(abiType, origType, loc, calldata) {
|
|
120
|
+
let tupleOffset = loc.address;
|
|
121
|
+
let size = 0;
|
|
122
|
+
const tupleRes = [];
|
|
123
|
+
const tupleBase = tupleOffset;
|
|
124
|
+
let origElementTs = undefined;
|
|
125
|
+
if (origType instanceof solc_typed_ast_1.PointerType) {
|
|
126
|
+
origType = origType.to;
|
|
127
|
+
}
|
|
128
|
+
if (origType instanceof solc_typed_ast_1.ArrayType) {
|
|
129
|
+
(0, solc_typed_ast_1.assert)(origType.size !== undefined && Number(origType.size) === abiType.elements.length, `Expected original type to be a fixed size array of size ${abiType.elements.length} not {0}`, origType);
|
|
130
|
+
origElementTs = origType.elementT;
|
|
131
|
+
}
|
|
132
|
+
else if (origType instanceof solc_typed_ast_1.UserDefinedType) {
|
|
133
|
+
const def = origType.definition;
|
|
134
|
+
(0, solc_typed_ast_1.assert)(def instanceof solc_typed_ast_1.StructDefinition && def.vMembers.length === abiType.elements.length, `Expected struct with ${abiType.elements.length} fields not {0}`, origType);
|
|
135
|
+
try {
|
|
136
|
+
origElementTs = def.vMembers.map((fieldDef) => (0, __1.changeToLocation)((0, solc_typed_ast_1.variableDeclarationToTypeNode)(fieldDef), solc_typed_ast_1.DataLocation.CallData));
|
|
137
|
+
}
|
|
138
|
+
catch (e) {
|
|
139
|
+
return undefined;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
else if (origType !== undefined) {
|
|
143
|
+
throw new Error(`Unexpected original type ${origType.pp()} for abi tuple type ${abiType.pp()}`);
|
|
144
|
+
}
|
|
145
|
+
for (let i = 0; i < abiType.elements.length; i++) {
|
|
146
|
+
const fieldT = abiType.elements[i];
|
|
147
|
+
const origElementT = origElementTs === undefined
|
|
148
|
+
? undefined
|
|
149
|
+
: origElementTs instanceof solc_typed_ast_1.TypeNode
|
|
150
|
+
? origElementTs
|
|
151
|
+
: origElementTs[i];
|
|
152
|
+
const decodeRes = cd_decodeValue(fieldT, origElementT, { kind: loc.kind, address: tupleOffset }, calldata, tupleBase);
|
|
153
|
+
if (decodeRes === undefined) {
|
|
154
|
+
return undefined;
|
|
155
|
+
}
|
|
156
|
+
const [elVal, elementSize] = decodeRes;
|
|
157
|
+
tupleOffset += BigInt(elementSize);
|
|
158
|
+
size += elementSize;
|
|
159
|
+
tupleRes.push(elVal);
|
|
160
|
+
}
|
|
161
|
+
if (origType === undefined || origType instanceof solc_typed_ast_1.ArrayType) {
|
|
162
|
+
return [tupleRes, size];
|
|
163
|
+
}
|
|
164
|
+
const fields = origType.definition.vMembers;
|
|
165
|
+
const structRes = {};
|
|
166
|
+
for (let i = 0; i < fields.length; i++) {
|
|
167
|
+
structRes[fields[i].name] = tupleRes[i];
|
|
168
|
+
}
|
|
169
|
+
return [structRes, size];
|
|
170
|
+
}
|
|
171
|
+
function cd_decodePointer(abiType, origType, loc, calldata, callDataBaseOff) {
|
|
172
|
+
const offRes = cd_decodeInt(__2.uint256, loc, calldata);
|
|
173
|
+
if (offRes === undefined) {
|
|
174
|
+
return undefined;
|
|
175
|
+
}
|
|
176
|
+
// Adjust relative pointers read **FROM** calldata by the current base offset
|
|
177
|
+
const off = offRes[0] + callDataBaseOff;
|
|
178
|
+
const size = offRes[1];
|
|
179
|
+
const pointedToLoc = {
|
|
180
|
+
kind: __1.DataLocationKind.CallData,
|
|
181
|
+
address: off
|
|
182
|
+
};
|
|
183
|
+
const origPointedToType = origType === undefined ? undefined : origType.to;
|
|
184
|
+
const pointedToValue = cd_decodeValue(abiType.to, origPointedToType, pointedToLoc, calldata, callDataBaseOff);
|
|
185
|
+
if (pointedToValue === undefined) {
|
|
186
|
+
return undefined;
|
|
187
|
+
}
|
|
188
|
+
return [pointedToValue[0], size];
|
|
189
|
+
}
|
|
190
|
+
function cd_decodeValue(abiType, origType, loc, calldata, callDataBaseOff = BigInt(4)) {
|
|
191
|
+
/*
|
|
192
|
+
console.error(
|
|
193
|
+
`cd_decodeValue(${abiType.pp()}, ${origType ? origType.pp() : undefined}, ${ppLoc(loc)})`
|
|
194
|
+
);
|
|
195
|
+
*/
|
|
196
|
+
if (abiType instanceof solc_typed_ast_1.IntType) {
|
|
197
|
+
return cd_decodeInt(abiType, loc, calldata);
|
|
198
|
+
}
|
|
199
|
+
if (abiType instanceof solc_typed_ast_1.AddressType) {
|
|
200
|
+
return cd_decodeAddress(loc, calldata);
|
|
201
|
+
}
|
|
202
|
+
if (abiType instanceof solc_typed_ast_1.FixedBytesType) {
|
|
203
|
+
return cd_decodeFixedBytes(abiType, loc, calldata);
|
|
204
|
+
}
|
|
205
|
+
if (abiType instanceof solc_typed_ast_1.BoolType) {
|
|
206
|
+
return cd_decodeBool(loc, calldata);
|
|
207
|
+
}
|
|
208
|
+
if (abiType instanceof solc_typed_ast_1.ArrayType) {
|
|
209
|
+
(0, solc_typed_ast_1.assert)(origType === undefined || origType instanceof solc_typed_ast_1.ArrayType, `Unexpected original type {0}`, origType);
|
|
210
|
+
return cd_decodeArray(abiType, origType, loc, calldata);
|
|
211
|
+
}
|
|
212
|
+
if (abiType instanceof solc_typed_ast_1.BytesType) {
|
|
213
|
+
return cd_decodeBytes(loc, calldata);
|
|
214
|
+
}
|
|
215
|
+
if (abiType instanceof solc_typed_ast_1.StringType) {
|
|
216
|
+
return cd_decodeString(loc, calldata);
|
|
217
|
+
}
|
|
218
|
+
if (abiType instanceof solc_typed_ast_1.TupleType) {
|
|
219
|
+
return cd_decodeTuple(abiType, origType, loc, calldata);
|
|
220
|
+
}
|
|
221
|
+
if (abiType instanceof solc_typed_ast_1.PointerType) {
|
|
222
|
+
(0, solc_typed_ast_1.assert)(origType === undefined || origType instanceof solc_typed_ast_1.PointerType, `Unexpected original type {0}`, origType);
|
|
223
|
+
return cd_decodePointer(abiType, origType, loc, calldata, callDataBaseOff);
|
|
224
|
+
}
|
|
225
|
+
throw new Error(`NYI decoding ${abiType.pp()}`);
|
|
226
|
+
}
|
|
227
|
+
exports.cd_decodeValue = cd_decodeValue;
|
|
228
|
+
//# sourceMappingURL=calldata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calldata.js","sourceRoot":"","sources":["../../../src/debug/decoding/calldata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TypeNode } from "solc-typed-ast";
|
|
2
|
+
import { DataView, StepState } from "..";
|
|
3
|
+
export declare function isCalldataType2Slots(typ: TypeNode): boolean;
|
|
4
|
+
/**
|
|
5
|
+
* Decode a generic value expressed as a `DataView` (i.e. a tuple of type and location) given
|
|
6
|
+
* the dbg state `state` at some step.
|
|
7
|
+
*/
|
|
8
|
+
export declare function decodeValue(view: DataView, state: StepState): any;
|
|
9
|
+
//# sourceMappingURL=general.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../../src/debug/decoding/general.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,QAAQ,EACX,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAGH,QAAQ,EAIR,SAAS,EAGZ,MAAM,IAAI,CAAC;AAmDZ,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAO3D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,GAAG,GAAG,CAqFjE"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.decodeValue = exports.isCalldataType2Slots = void 0;
|
|
4
|
+
const solc_typed_ast_1 = require("solc-typed-ast");
|
|
5
|
+
const abi_1 = require("solc-typed-ast/dist/types/abi");
|
|
6
|
+
const __1 = require("..");
|
|
7
|
+
const __2 = require("../..");
|
|
8
|
+
const calldata_1 = require("./calldata");
|
|
9
|
+
const memory_1 = require("./memory");
|
|
10
|
+
const stack_1 = require("./stack");
|
|
11
|
+
const storage_1 = require("./storage");
|
|
12
|
+
function solLocToDataKind(loc) {
|
|
13
|
+
if (loc === solc_typed_ast_1.DataLocation.Default) {
|
|
14
|
+
return __1.DataLocationKind.Memory;
|
|
15
|
+
}
|
|
16
|
+
return loc;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Helper to dispatch the decoding of a given type `typ` at a given data location `loc` in a given `state`.
|
|
20
|
+
* to the proper decoding logic (memory, calldata, storage, stack)
|
|
21
|
+
*/
|
|
22
|
+
function decodeValInt(typ, loc, state) {
|
|
23
|
+
if (loc.kind === __1.DataLocationKind.Memory) {
|
|
24
|
+
const res = (0, memory_1.mem_decodeValue)(typ, loc, state.memory);
|
|
25
|
+
return res === undefined ? res : res[0];
|
|
26
|
+
}
|
|
27
|
+
if (loc.kind === __1.DataLocationKind.CallData) {
|
|
28
|
+
const lastExtFrame = (0, __1.lastExternalFrame)(state.stack);
|
|
29
|
+
let abiType;
|
|
30
|
+
try {
|
|
31
|
+
abiType = (0, __1.toABIEncodedType)(typ, abi_1.ABIEncoderVersion.V2);
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
const res = (0, calldata_1.cd_decodeValue)(abiType, typ, loc, lastExtFrame.msgData, BigInt(4));
|
|
37
|
+
return res === undefined ? res : res[0];
|
|
38
|
+
}
|
|
39
|
+
if (loc.kind === __1.DataLocationKind.Stack) {
|
|
40
|
+
return (0, stack_1.st_decodeValue)(typ, loc, state.evmStack);
|
|
41
|
+
}
|
|
42
|
+
const res = (0, storage_1.stor_decodeValue)(typ, loc, state.storage);
|
|
43
|
+
return res === undefined ? res : res[0];
|
|
44
|
+
}
|
|
45
|
+
function isCalldataType2Slots(typ) {
|
|
46
|
+
return (typ instanceof solc_typed_ast_1.PointerType &&
|
|
47
|
+
typ.to instanceof solc_typed_ast_1.ArrayType &&
|
|
48
|
+
typ.location === solc_typed_ast_1.DataLocation.CallData &&
|
|
49
|
+
typ.to.size === undefined);
|
|
50
|
+
}
|
|
51
|
+
exports.isCalldataType2Slots = isCalldataType2Slots;
|
|
52
|
+
/**
|
|
53
|
+
* Decode a generic value expressed as a `DataView` (i.e. a tuple of type and location) given
|
|
54
|
+
* the dbg state `state` at some step.
|
|
55
|
+
*/
|
|
56
|
+
function decodeValue(view, state) {
|
|
57
|
+
//console.error(`decodeValue(${ppView(view)})`);
|
|
58
|
+
const typ = view.type;
|
|
59
|
+
const loc = view.loc;
|
|
60
|
+
/**
|
|
61
|
+
* The only case where a pointer from one area of the state crosses into another
|
|
62
|
+
* area of the state are pointers in the stack. All other pointers stay in their
|
|
63
|
+
* own memory region
|
|
64
|
+
*/
|
|
65
|
+
if (typ instanceof solc_typed_ast_1.PointerType && loc.kind === __1.DataLocationKind.Stack) {
|
|
66
|
+
const off = (0, stack_1.st_decodeInt)(__2.uint256, loc, state.evmStack);
|
|
67
|
+
if (off === undefined) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
const kind = solLocToDataKind(typ.location);
|
|
71
|
+
let pointedToLoc;
|
|
72
|
+
if (isCalldataType2Slots(typ)) {
|
|
73
|
+
const lastExtFrame = (0, __1.lastExternalFrame)(state.stack);
|
|
74
|
+
let abiType;
|
|
75
|
+
try {
|
|
76
|
+
abiType = (0, __1.toABIEncodedType)(typ, abi_1.ABIEncoderVersion.V2);
|
|
77
|
+
}
|
|
78
|
+
catch (e) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
(0, solc_typed_ast_1.assert)(abiType instanceof solc_typed_ast_1.PointerType && abiType.to instanceof solc_typed_ast_1.ArrayType, `InternalError`);
|
|
82
|
+
const len = (0, stack_1.st_decodeInt)(__2.uint256, { kind: loc.kind, offsetFromTop: loc.offsetFromTop - 1 }, state.evmStack);
|
|
83
|
+
if (len === undefined) {
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
if (len > __2.MAX_ARR_DECODE_LIMIT) {
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
const res = (0, calldata_1.cd_decodeArrayContents)(abiType.to, typ.to, off, Number(len), lastExtFrame.msgData);
|
|
90
|
+
return res === undefined ? res : res[0];
|
|
91
|
+
}
|
|
92
|
+
if (kind === __1.DataLocationKind.Storage) {
|
|
93
|
+
pointedToLoc = {
|
|
94
|
+
kind,
|
|
95
|
+
address: off,
|
|
96
|
+
endOffsetInWord: 32
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
pointedToLoc = {
|
|
101
|
+
kind,
|
|
102
|
+
address: off
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
const res = decodeValInt(typ.to, pointedToLoc, state);
|
|
106
|
+
//console.error(`decodeValue: res ${res}`);
|
|
107
|
+
return res;
|
|
108
|
+
}
|
|
109
|
+
const res = decodeValInt(typ, loc, state);
|
|
110
|
+
//console.error(`decodeValue: res ${res}`);
|
|
111
|
+
return res;
|
|
112
|
+
}
|
|
113
|
+
exports.decodeValue = decodeValue;
|
|
114
|
+
//# sourceMappingURL=general.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"general.js","sourceRoot":"","sources":["../../../src/debug/decoding/general.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/debug/decoding/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./calldata"), exports);
|
|
18
|
+
__exportStar(require("./general"), exports);
|
|
19
|
+
__exportStar(require("./memory"), exports);
|
|
20
|
+
__exportStar(require("./stack"), exports);
|
|
21
|
+
__exportStar(require("./storage"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/debug/decoding/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,4CAA0B;AAC1B,2CAAyB;AACzB,0CAAwB;AACxB,4CAA0B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/debug/decoding/memory.ts"],"names":[],"mappings":"AACA,OAAO,EAmBH,QAAQ,EAGX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAkC,oBAAoB,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAqRlF,wBAAgB,eAAe,CAC3B,GAAG,EAAE,QAAQ,EACb,GAAG,EAAE,oBAAoB,EACzB,MAAM,EAAE,MAAM,GACf,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CA+D3B"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mem_decodeValue = void 0;
|
|
4
|
+
const ethereumjs_util_1 = require("ethereumjs-util");
|
|
5
|
+
const solc_typed_ast_1 = require("solc-typed-ast");
|
|
6
|
+
const __1 = require("..");
|
|
7
|
+
const __2 = require("../..");
|
|
8
|
+
function mem_decodeInt(typ, loc, memory) {
|
|
9
|
+
const numAddr = (0, __2.checkAddrOoB)(loc.address, memory);
|
|
10
|
+
// OoB access
|
|
11
|
+
if (numAddr === undefined) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
let res = (0, __2.bigEndianBufToBigint)(memory.slice(numAddr, numAddr + 32));
|
|
15
|
+
// Convert signed negative 2's complement values
|
|
16
|
+
if (typ.signed && (res & (BigInt(1) << BigInt(typ.nBits - 1))) !== BigInt(0)) {
|
|
17
|
+
// Mask out any 1's above the number's size
|
|
18
|
+
res = res & ((BigInt(1) << BigInt(typ.nBits)) - BigInt(1));
|
|
19
|
+
res = -((BigInt(1) << BigInt(typ.nBits)) - res);
|
|
20
|
+
}
|
|
21
|
+
(0, solc_typed_ast_1.assert)((0, __2.fits)(res, typ), `Decoded value ${res} from ${loc} doesn't fit in expected type ${typ.pp()}`);
|
|
22
|
+
return [res, 32];
|
|
23
|
+
}
|
|
24
|
+
function mem_decodeAddress(loc, memory) {
|
|
25
|
+
const numAddr = (0, __2.checkAddrOoB)(loc.address, memory);
|
|
26
|
+
if (numAddr === undefined) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
return [new ethereumjs_util_1.Address(memory.slice(numAddr + 12, numAddr + 32)), 32];
|
|
30
|
+
}
|
|
31
|
+
function mem_decodeFixedBytes(typ, loc, memory) {
|
|
32
|
+
const numAddr = (0, __2.checkAddrOoB)(loc.address, memory);
|
|
33
|
+
if (numAddr === undefined) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
return [memory.slice(numAddr, numAddr + typ.size), 32];
|
|
37
|
+
}
|
|
38
|
+
function mem_decodeBool(loc, memory) {
|
|
39
|
+
const numAddr = (0, __2.checkAddrOoB)(loc.address, memory);
|
|
40
|
+
if (numAddr === undefined) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
const res = (0, __2.bigEndianBufToBigint)(memory.slice(numAddr, numAddr + 32)) !== BigInt(0);
|
|
44
|
+
return [res, 32];
|
|
45
|
+
}
|
|
46
|
+
function mem_decodeEnum(def, loc, memory) {
|
|
47
|
+
const intType = (0, solc_typed_ast_1.enumToIntType)(def);
|
|
48
|
+
return mem_decodeInt(intType, loc, memory);
|
|
49
|
+
}
|
|
50
|
+
function mem_decodeBytes(loc, memory) {
|
|
51
|
+
let bytesOffset = loc.address;
|
|
52
|
+
let bytesSize = 0;
|
|
53
|
+
const lenRes = mem_decodeInt(__2.uint256, loc, memory);
|
|
54
|
+
if (lenRes == undefined) {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
if (lenRes[0] >= __2.MAX_ARR_DECODE_LIMIT) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
const numLen = Number(lenRes[0]);
|
|
61
|
+
bytesOffset += BigInt(lenRes[1]);
|
|
62
|
+
bytesSize += lenRes[1];
|
|
63
|
+
bytesSize += numLen + (numLen % 32 === 0 ? 0 : 1 - (numLen % 32));
|
|
64
|
+
const checkedArrDynOffset = (0, __2.checkAddrOoB)(bytesOffset, memory);
|
|
65
|
+
if (checkedArrDynOffset === undefined) {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
if (checkedArrDynOffset + numLen > memory.length) {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
const res = memory.slice(checkedArrDynOffset, checkedArrDynOffset + numLen);
|
|
72
|
+
return [res, bytesSize];
|
|
73
|
+
}
|
|
74
|
+
function mem_decodeString(loc, memory) {
|
|
75
|
+
const bytes = mem_decodeBytes(loc, memory);
|
|
76
|
+
if (bytes === undefined) {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
const str = bytes[0].toString("utf-8");
|
|
80
|
+
return [str, bytes[1]];
|
|
81
|
+
}
|
|
82
|
+
function mem_decodeArray(typ, loc, memory) {
|
|
83
|
+
let arrOffset = loc.address;
|
|
84
|
+
let arrBytesSize = 0;
|
|
85
|
+
let numLen;
|
|
86
|
+
if (typ.size === undefined) {
|
|
87
|
+
const len = mem_decodeInt(__2.uint256, loc, memory);
|
|
88
|
+
if (len == undefined) {
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
if (len[0] >= __2.MAX_ARR_DECODE_LIMIT) {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
numLen = Number(len[0]);
|
|
95
|
+
arrOffset += BigInt(len[1]);
|
|
96
|
+
arrBytesSize += len[1];
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
if (typ.size >= __2.MAX_ARR_DECODE_LIMIT) {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
numLen = Number(typ.size);
|
|
103
|
+
}
|
|
104
|
+
const res = [];
|
|
105
|
+
for (let i = 0; i < numLen; i++) {
|
|
106
|
+
const elementTuple = mem_decodeValue(typ.elementT, { kind: loc.kind, address: arrOffset }, memory);
|
|
107
|
+
if (elementTuple === undefined) {
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
const [elementVal, elementSize] = elementTuple;
|
|
111
|
+
res.push(elementVal);
|
|
112
|
+
arrOffset += BigInt(elementSize);
|
|
113
|
+
arrBytesSize += elementSize;
|
|
114
|
+
}
|
|
115
|
+
return [res, arrBytesSize];
|
|
116
|
+
}
|
|
117
|
+
function mem_decodeTuple(typ, loc, memory) {
|
|
118
|
+
let tupleOffset = loc.address;
|
|
119
|
+
let size = 0;
|
|
120
|
+
const res = [];
|
|
121
|
+
for (const field of typ.elements) {
|
|
122
|
+
const decodeRes = mem_decodeValue(field, { kind: loc.kind, address: tupleOffset }, memory);
|
|
123
|
+
if (decodeRes === undefined) {
|
|
124
|
+
return undefined;
|
|
125
|
+
}
|
|
126
|
+
const [elVal, elementSize] = decodeRes;
|
|
127
|
+
tupleOffset += BigInt(elementSize);
|
|
128
|
+
size += elementSize;
|
|
129
|
+
res.push(elVal);
|
|
130
|
+
}
|
|
131
|
+
return [res, size];
|
|
132
|
+
}
|
|
133
|
+
function mem_decodeStruct(def, loc, memory) {
|
|
134
|
+
const res = {};
|
|
135
|
+
let size = 0;
|
|
136
|
+
let offset = loc.address;
|
|
137
|
+
for (let i = 0; i < def.vMembers.length; i++) {
|
|
138
|
+
const field = def.vMembers[i];
|
|
139
|
+
const fieldT = (0, solc_typed_ast_1.specializeType)((0, solc_typed_ast_1.typeNameToTypeNode)(field.vType), solc_typed_ast_1.DataLocation.Memory);
|
|
140
|
+
const fieldRes = mem_decodeValue(fieldT, { kind: loc.kind, address: offset }, memory);
|
|
141
|
+
if (fieldRes === undefined) {
|
|
142
|
+
return undefined;
|
|
143
|
+
}
|
|
144
|
+
res[field.name] = fieldRes[0];
|
|
145
|
+
size += fieldRes[1];
|
|
146
|
+
offset += BigInt(fieldRes[1]);
|
|
147
|
+
}
|
|
148
|
+
return [res, size];
|
|
149
|
+
}
|
|
150
|
+
function mem_decodePointer(typ, loc, memory) {
|
|
151
|
+
(0, solc_typed_ast_1.assert)(typ.location === solc_typed_ast_1.DataLocation.Memory, `Unexpected pointer to ${typ.location} in memory`);
|
|
152
|
+
const offRes = mem_decodeInt(__2.uint256, loc, memory);
|
|
153
|
+
if (offRes === undefined) {
|
|
154
|
+
return undefined;
|
|
155
|
+
}
|
|
156
|
+
const size = offRes[1];
|
|
157
|
+
const pointedToLoc = {
|
|
158
|
+
kind: __1.DataLocationKind.Memory,
|
|
159
|
+
address: offRes[0]
|
|
160
|
+
};
|
|
161
|
+
const pointedToValue = mem_decodeValue(typ.to, pointedToLoc, memory);
|
|
162
|
+
if (pointedToValue === undefined) {
|
|
163
|
+
return undefined;
|
|
164
|
+
}
|
|
165
|
+
return [pointedToValue[0], size];
|
|
166
|
+
}
|
|
167
|
+
function mem_decodeValue(typ, loc, memory) {
|
|
168
|
+
//console.error(`mem_decodeValue(${typ.pp()}, ${ppLoc(loc)})`);
|
|
169
|
+
if (typ instanceof solc_typed_ast_1.IntType) {
|
|
170
|
+
return mem_decodeInt(typ, loc, memory);
|
|
171
|
+
}
|
|
172
|
+
if (typ instanceof solc_typed_ast_1.AddressType) {
|
|
173
|
+
return mem_decodeAddress(loc, memory);
|
|
174
|
+
}
|
|
175
|
+
if (typ instanceof solc_typed_ast_1.FixedBytesType) {
|
|
176
|
+
return mem_decodeFixedBytes(typ, loc, memory);
|
|
177
|
+
}
|
|
178
|
+
if (typ instanceof solc_typed_ast_1.BoolType) {
|
|
179
|
+
return mem_decodeBool(loc, memory);
|
|
180
|
+
}
|
|
181
|
+
if (typ instanceof solc_typed_ast_1.UserDefinedType) {
|
|
182
|
+
const def = typ.definition;
|
|
183
|
+
if (def instanceof solc_typed_ast_1.EnumDefinition) {
|
|
184
|
+
return mem_decodeEnum(def, loc, memory);
|
|
185
|
+
}
|
|
186
|
+
if (def instanceof solc_typed_ast_1.ContractDefinition) {
|
|
187
|
+
return mem_decodeAddress(loc, memory);
|
|
188
|
+
}
|
|
189
|
+
if (def instanceof solc_typed_ast_1.UserDefinedValueTypeDefinition) {
|
|
190
|
+
const underlyingType = (0, solc_typed_ast_1.typeNameToTypeNode)(def.underlyingType);
|
|
191
|
+
return mem_decodeValue(underlyingType, loc, memory);
|
|
192
|
+
}
|
|
193
|
+
if (def instanceof solc_typed_ast_1.StructDefinition) {
|
|
194
|
+
return mem_decodeStruct(def, loc, memory);
|
|
195
|
+
}
|
|
196
|
+
throw new Error(`NYI decoding user defined type ${typ.pp()}`);
|
|
197
|
+
}
|
|
198
|
+
if (typ instanceof solc_typed_ast_1.ArrayType) {
|
|
199
|
+
return mem_decodeArray(typ, loc, memory);
|
|
200
|
+
}
|
|
201
|
+
if (typ instanceof solc_typed_ast_1.BytesType) {
|
|
202
|
+
return mem_decodeBytes(loc, memory);
|
|
203
|
+
}
|
|
204
|
+
if (typ instanceof solc_typed_ast_1.StringType) {
|
|
205
|
+
return mem_decodeString(loc, memory);
|
|
206
|
+
}
|
|
207
|
+
if (typ instanceof solc_typed_ast_1.TupleType) {
|
|
208
|
+
return mem_decodeTuple(typ, loc, memory);
|
|
209
|
+
}
|
|
210
|
+
if (typ instanceof solc_typed_ast_1.PointerType) {
|
|
211
|
+
return mem_decodePointer(typ, loc, memory);
|
|
212
|
+
}
|
|
213
|
+
throw new Error(`NYI decoding ${typ.pp()}`);
|
|
214
|
+
}
|
|
215
|
+
exports.mem_decodeValue = mem_decodeValue;
|
|
216
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/debug/decoding/memory.ts"],"names":[],"mappings":"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"}
|