sol-dbg 0.6.15 → 0.7.2
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/artifacts/helpers.d.ts +3 -3
- package/dist/artifacts/helpers.d.ts.map +1 -1
- package/dist/artifacts/helpers.js +17 -53
- package/dist/artifacts/helpers.js.map +1 -1
- package/dist/artifacts/solc.d.ts +1 -8
- package/dist/artifacts/solc.d.ts.map +1 -1
- package/dist/debug/abi.d.ts +11 -41
- package/dist/debug/abi.d.ts.map +1 -1
- package/dist/debug/abi.js +60 -294
- package/dist/debug/abi.js.map +1 -1
- package/dist/debug/artifact_manager/artifact_manager.d.ts +17 -42
- package/dist/debug/artifact_manager/artifact_manager.d.ts.map +1 -1
- package/dist/debug/artifact_manager/artifact_manager.js +82 -22
- package/dist/debug/artifact_manager/artifact_manager.js.map +1 -1
- package/dist/debug/artifact_manager/bytecode_templates.d.ts +1 -1
- package/dist/debug/artifact_manager/bytecode_templates.d.ts.map +1 -1
- package/dist/debug/artifact_manager/bytecode_templates.js +4 -3
- package/dist/debug/artifact_manager/bytecode_templates.js.map +1 -1
- package/dist/debug/artifact_manager/index.d.ts +1 -0
- package/dist/debug/artifact_manager/index.d.ts.map +1 -1
- package/dist/debug/artifact_manager/index.js +1 -0
- package/dist/debug/artifact_manager/index.js.map +1 -1
- package/dist/debug/artifact_manager/types.d.ts +129 -0
- package/dist/debug/artifact_manager/types.d.ts.map +1 -0
- package/dist/debug/artifact_manager/types.js +12 -0
- package/dist/debug/artifact_manager/types.js.map +1 -0
- package/dist/debug/decoding/calldata/index.d.ts +2 -0
- package/dist/debug/decoding/calldata/index.d.ts.map +1 -0
- package/dist/debug/decoding/calldata/index.js +6 -0
- package/dist/debug/decoding/calldata/index.js.map +1 -0
- package/dist/debug/decoding/calldata/view.d.ts +75 -0
- package/dist/debug/decoding/calldata/view.d.ts.map +1 -0
- package/dist/debug/decoding/calldata/view.js +400 -0
- package/dist/debug/decoding/calldata/view.js.map +1 -0
- package/dist/debug/decoding/exp_types.d.ts +46 -0
- package/dist/debug/decoding/exp_types.d.ts.map +1 -0
- package/dist/debug/decoding/exp_types.js +202 -0
- package/dist/debug/decoding/exp_types.js.map +1 -0
- package/dist/debug/decoding/general.d.ts +5 -9
- package/dist/debug/decoding/general.d.ts.map +1 -1
- package/dist/debug/decoding/general.js +25 -103
- package/dist/debug/decoding/general.js.map +1 -1
- package/dist/debug/decoding/index.d.ts +1 -0
- package/dist/debug/decoding/index.d.ts.map +1 -1
- package/dist/debug/decoding/index.js +1 -0
- package/dist/debug/decoding/index.js.map +1 -1
- package/dist/debug/decoding/memory/allocator.d.ts +22 -0
- package/dist/debug/decoding/memory/allocator.d.ts.map +1 -0
- package/dist/debug/decoding/memory/allocator.js +47 -0
- package/dist/debug/decoding/memory/allocator.js.map +1 -0
- package/dist/debug/decoding/memory/index.d.ts +2 -0
- package/dist/debug/decoding/memory/index.d.ts.map +1 -0
- package/dist/debug/decoding/memory/index.js +6 -0
- package/dist/debug/decoding/memory/index.js.map +1 -0
- package/dist/debug/decoding/memory/view.d.ts +66 -0
- package/dist/debug/decoding/memory/view.d.ts.map +1 -0
- package/dist/debug/decoding/memory/view.js +283 -0
- package/dist/debug/decoding/memory/view.js.map +1 -0
- package/dist/debug/decoding/stack/index.d.ts +2 -0
- package/dist/debug/decoding/stack/index.d.ts.map +1 -0
- package/dist/debug/decoding/stack/index.js +6 -0
- package/dist/debug/decoding/stack/index.js.map +1 -0
- package/dist/debug/decoding/stack/view.d.ts +36 -0
- package/dist/debug/decoding/stack/view.d.ts.map +1 -0
- package/dist/debug/decoding/stack/view.js +156 -0
- package/dist/debug/decoding/stack/view.js.map +1 -0
- package/dist/debug/decoding/storage/index.d.ts +2 -0
- package/dist/debug/decoding/storage/index.d.ts.map +1 -0
- package/dist/debug/decoding/storage/index.js +6 -0
- package/dist/debug/decoding/storage/index.js.map +1 -0
- package/dist/debug/decoding/storage/view.d.ts +105 -0
- package/dist/debug/decoding/storage/view.d.ts.map +1 -0
- package/dist/debug/decoding/storage/view.js +603 -0
- package/dist/debug/decoding/storage/view.js.map +1 -0
- package/dist/debug/decoding/utils.d.ts +17 -0
- package/dist/debug/decoding/utils.d.ts.map +1 -0
- package/dist/debug/decoding/utils.js +43 -0
- package/dist/debug/decoding/utils.js.map +1 -0
- package/dist/debug/decoding/value.d.ts +50 -0
- package/dist/debug/decoding/value.d.ts.map +1 -0
- package/dist/debug/decoding/value.js +106 -0
- package/dist/debug/decoding/value.js.map +1 -0
- package/dist/debug/decoding/view.d.ts +24 -0
- package/dist/debug/decoding/view.d.ts.map +1 -0
- package/dist/debug/decoding/view.js +22 -0
- package/dist/debug/decoding/view.js.map +1 -0
- package/dist/debug/foundry_cheatcodes.d.ts +15 -15
- package/dist/debug/foundry_cheatcodes.d.ts.map +1 -1
- package/dist/debug/foundry_cheatcodes.js +17 -16
- package/dist/debug/foundry_cheatcodes.js.map +1 -1
- package/dist/debug/layout.d.ts +6 -8
- package/dist/debug/layout.d.ts.map +1 -1
- package/dist/debug/layout.js +14 -78
- package/dist/debug/layout.js.map +1 -1
- package/dist/debug/opcode_interposing.js +5 -5
- package/dist/debug/opcode_interposing.js.map +1 -1
- package/dist/debug/tracers/base_tracer.d.ts +4 -4
- package/dist/debug/tracers/base_tracer.d.ts.map +1 -1
- package/dist/debug/tracers/base_tracer.js +7 -7
- package/dist/debug/tracers/base_tracer.js.map +1 -1
- package/dist/debug/tracers/sol_debugger.d.ts.map +1 -1
- package/dist/debug/tracers/sol_debugger.js +2 -1
- package/dist/debug/tracers/sol_debugger.js.map +1 -1
- package/dist/debug/tracers/storage_decode_tracer.js +1 -1
- package/dist/debug/tracers/storage_decode_tracer.js.map +1 -1
- package/dist/debug/tracers/transformers/basic_info.d.ts +2 -2
- package/dist/debug/tracers/transformers/basic_info.d.ts.map +1 -1
- package/dist/debug/tracers/transformers/basic_info.js +4 -3
- package/dist/debug/tracers/transformers/basic_info.js.map +1 -1
- package/dist/debug/tracers/transformers/events.js +2 -2
- package/dist/debug/tracers/transformers/events.js.map +1 -1
- package/dist/debug/tracers/transformers/exc_info.d.ts +15 -0
- package/dist/debug/tracers/transformers/exc_info.d.ts.map +1 -0
- package/dist/debug/tracers/transformers/exc_info.js +39 -0
- package/dist/debug/tracers/transformers/exc_info.js.map +1 -0
- package/dist/debug/tracers/transformers/ext_stack.d.ts.map +1 -1
- package/dist/debug/tracers/transformers/ext_stack.js +13 -30
- package/dist/debug/tracers/transformers/ext_stack.js.map +1 -1
- package/dist/debug/tracers/transformers/index.d.ts +1 -0
- package/dist/debug/tracers/transformers/index.d.ts.map +1 -1
- package/dist/debug/tracers/transformers/index.js +1 -0
- package/dist/debug/tracers/transformers/index.js.map +1 -1
- package/dist/debug/tracers/transformers/int_stack.d.ts.map +1 -1
- package/dist/debug/tracers/transformers/int_stack.js +5 -13
- package/dist/debug/tracers/transformers/int_stack.js.map +1 -1
- package/dist/debug/tracers/transformers/keccak256_invert.js +4 -4
- package/dist/debug/tracers/transformers/keccak256_invert.js.map +1 -1
- package/dist/debug/tracers/transformers/ret_info.d.ts +1 -1
- package/dist/debug/tracers/transformers/ret_info.d.ts.map +1 -1
- package/dist/debug/tracers/transformers/ret_info.js +22 -46
- package/dist/debug/tracers/transformers/ret_info.js.map +1 -1
- package/dist/debug/types.d.ts +64 -23
- package/dist/debug/types.d.ts.map +1 -1
- package/dist/debug/types.js.map +1 -1
- package/dist/utils/ethereumjs_internal/exceptions.d.ts +2 -2
- package/dist/utils/ethereumjs_internal/opcodes.js +1 -1
- package/dist/utils/immutable_map.d.ts +2 -0
- package/dist/utils/immutable_map.d.ts.map +1 -1
- package/dist/utils/immutable_map.js +21 -0
- package/dist/utils/immutable_map.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/misc.d.ts +19 -11
- package/dist/utils/misc.d.ts.map +1 -1
- package/dist/utils/misc.js +61 -53
- package/dist/utils/misc.js.map +1 -1
- package/dist/utils/pp.d.ts +3 -1
- package/dist/utils/pp.d.ts.map +1 -1
- package/dist/utils/pp.js +10 -27
- package/dist/utils/pp.js.map +1 -1
- package/dist/utils/solidity.d.ts +11 -0
- package/dist/utils/solidity.d.ts.map +1 -0
- package/dist/utils/solidity.js +85 -0
- package/dist/utils/solidity.js.map +1 -0
- package/dist/utils/test_runner.d.ts +9 -6
- package/dist/utils/test_runner.d.ts.map +1 -1
- package/dist/utils/test_runner.js +26 -21
- package/dist/utils/test_runner.js.map +1 -1
- package/dist/utils/trace.d.ts +5 -1
- package/dist/utils/trace.d.ts.map +1 -1
- package/dist/utils/trace.js +16 -0
- package/dist/utils/trace.js.map +1 -1
- package/package.json +19 -14
- package/dist/debug/decoding/calldata.d.ts +0 -6
- package/dist/debug/decoding/calldata.d.ts.map +0 -1
- package/dist/debug/decoding/calldata.js +0 -244
- package/dist/debug/decoding/calldata.js.map +0 -1
- package/dist/debug/decoding/memory.d.ts +0 -4
- package/dist/debug/decoding/memory.d.ts.map +0 -1
- package/dist/debug/decoding/memory.js +0 -216
- package/dist/debug/decoding/memory.js.map +0 -1
- package/dist/debug/decoding/stack.d.ts +0 -9
- package/dist/debug/decoding/stack.d.ts.map +0 -1
- package/dist/debug/decoding/stack.js +0 -84
- package/dist/debug/decoding/stack.js.map +0 -1
- package/dist/debug/decoding/storage.d.ts +0 -7
- package/dist/debug/decoding/storage.d.ts.map +0 -1
- package/dist/debug/decoding/storage.js +0 -393
- package/dist/debug/decoding/storage.js.map +0 -1
|
@@ -4,15 +4,14 @@ exports.topExtFrame = topExtFrame;
|
|
|
4
4
|
exports.getContractInfo = getContractInfo;
|
|
5
5
|
exports.getCode = getCode;
|
|
6
6
|
exports.addExternalFrame = addExternalFrame;
|
|
7
|
-
const util_1 = require("@ethereumjs/util");
|
|
8
7
|
const solc_typed_ast_1 = require("solc-typed-ast");
|
|
9
8
|
const artifacts_1 = require("../../../artifacts");
|
|
10
|
-
const
|
|
11
|
-
const abi_1 = require("../../abi");
|
|
9
|
+
const misc_1 = require("../../../utils/misc");
|
|
12
10
|
const opcodes_1 = require("../../opcodes");
|
|
13
11
|
const types_1 = require("../../types");
|
|
12
|
+
const abi_1 = require("../../abi");
|
|
14
13
|
function topExtFrame(arg) {
|
|
15
|
-
return (0,
|
|
14
|
+
return (0, misc_1.stackTop)(arg.stack);
|
|
16
15
|
}
|
|
17
16
|
function getContractInfo(step) {
|
|
18
17
|
return topExtFrame(step).info;
|
|
@@ -20,35 +19,19 @@ function getContractInfo(step) {
|
|
|
20
19
|
function getCode(step) {
|
|
21
20
|
return topExtFrame(step).code;
|
|
22
21
|
}
|
|
23
|
-
/**
|
|
24
|
-
* Given a contract info and a function selector find the (potentially inherited) entry point (function or public var getter).
|
|
25
|
-
* @param info
|
|
26
|
-
* @param selector
|
|
27
|
-
* @returns
|
|
28
|
-
*/
|
|
29
|
-
function findEntryPoint(info, selector, artifactManager) {
|
|
30
|
-
if (info.ast === undefined) {
|
|
31
|
-
return undefined;
|
|
32
|
-
}
|
|
33
|
-
const contract = info.ast;
|
|
34
|
-
const infer = artifactManager.infer(info.artifact.compilerVersion);
|
|
35
|
-
return (0, abi_1.findMethodBySelector)(selector, contract, infer);
|
|
36
|
-
}
|
|
37
22
|
/**
|
|
38
23
|
* Build a `CallFrame` from the given `sender` address, `receiver` address, `data` `Uint8Array`, (msg.data) and the current trace step number.
|
|
39
24
|
*/
|
|
40
25
|
function makeCallFrame(sender, receiver, codeAddress, data, receiverCode, codeHash, step, artifactManager) {
|
|
41
26
|
const contractInfo = codeHash === undefined ? codeHash : artifactManager.getContractFromMDHash(codeHash);
|
|
42
|
-
const selector = (0, util_1.bytesToHex)(data.slice(0, 4)).slice(2);
|
|
43
27
|
let callee;
|
|
44
28
|
let args;
|
|
45
29
|
if (contractInfo && contractInfo.ast) {
|
|
46
|
-
const abiVersion = contractInfo.artifact.abiEncoderVersion;
|
|
47
30
|
const infer = artifactManager.infer(contractInfo.artifact.compilerVersion);
|
|
48
|
-
callee = findEntryPoint(
|
|
31
|
+
callee = artifactManager.findEntryPoint(data, contractInfo);
|
|
49
32
|
if (callee !== undefined) {
|
|
50
33
|
try {
|
|
51
|
-
args = (0, abi_1.
|
|
34
|
+
args = (0, abi_1.buildMsgViews)(callee, infer);
|
|
52
35
|
}
|
|
53
36
|
catch (e) {
|
|
54
37
|
args = undefined;
|
|
@@ -57,9 +40,9 @@ function makeCallFrame(sender, receiver, codeAddress, data, receiverCode, codeHa
|
|
|
57
40
|
}
|
|
58
41
|
return {
|
|
59
42
|
kind: types_1.FrameKind.Call,
|
|
60
|
-
sender,
|
|
43
|
+
sender,
|
|
61
44
|
msgData: data,
|
|
62
|
-
receiver: receiver,
|
|
45
|
+
receiver: receiver,
|
|
63
46
|
code: receiverCode,
|
|
64
47
|
info: contractInfo,
|
|
65
48
|
callee,
|
|
@@ -88,7 +71,7 @@ function makeCreationFrame(sender, data, step, artifactManager) {
|
|
|
88
71
|
code: data,
|
|
89
72
|
info: contractInfo,
|
|
90
73
|
callee,
|
|
91
|
-
address:
|
|
74
|
+
address: misc_1.ZERO_ADDRESS,
|
|
92
75
|
startStep: step,
|
|
93
76
|
arguments: args,
|
|
94
77
|
codeMdHash: (0, artifacts_1.getCreationCodeHash)(data),
|
|
@@ -111,10 +94,10 @@ function decodeCall(step) {
|
|
|
111
94
|
const stackTop = step.evmStack.length - 1;
|
|
112
95
|
const argStackOff = op.opcode === opcodes_1.OPCODES.CALL || op.opcode === opcodes_1.OPCODES.CALLCODE ? 3 : 2;
|
|
113
96
|
const argSizeStackOff = argStackOff + 1;
|
|
114
|
-
const receiverArg = (0,
|
|
97
|
+
const receiverArg = (0, misc_1.wordToAddress)(step.evmStack[stackTop - 1]);
|
|
115
98
|
const receiver = op.opcode === opcodes_1.OPCODES.DELEGATECALL ? step.address : receiverArg;
|
|
116
99
|
const codeAddr = receiverArg;
|
|
117
|
-
const msgData = (0,
|
|
100
|
+
const msgData = (0, misc_1.mustReadMem)(step.evmStack[stackTop - argStackOff], step.evmStack[stackTop - argSizeStackOff], step.memory);
|
|
118
101
|
return [receiver, codeAddr, msgData];
|
|
119
102
|
}
|
|
120
103
|
/**
|
|
@@ -128,7 +111,7 @@ async function addExternalFrame(vm, step, state, trace, artifactManager, tx) {
|
|
|
128
111
|
extFrame = makeCreationFrame(sender, tx.data, 0, artifactManager);
|
|
129
112
|
}
|
|
130
113
|
else {
|
|
131
|
-
const code = await vm.stateManager.
|
|
114
|
+
const code = await vm.stateManager.getCode(tx.to);
|
|
132
115
|
/// @todo remove - arbitrary restriction, only good for debugging
|
|
133
116
|
(0, solc_typed_ast_1.assert)(code.length > 0, "Missing code for address {0}", tx.to.toString());
|
|
134
117
|
const codeHash = (0, artifacts_1.getCodeHash)(code);
|
|
@@ -153,12 +136,12 @@ async function addExternalFrame(vm, step, state, trace, artifactManager, tx) {
|
|
|
153
136
|
(0, solc_typed_ast_1.assert)((0, opcodes_1.increasesDepth)(lastOp), `Unexpected depth increase on op ${lastOp.mnemonic}`);
|
|
154
137
|
if ((0, opcodes_1.createsContract)(lastOp)) {
|
|
155
138
|
// Contract creation call
|
|
156
|
-
const creationBytecode = (0,
|
|
139
|
+
const creationBytecode = (0, misc_1.mustReadMem)(lastStep.evmStack[lastStackTop - 1], lastStep.evmStack[lastStackTop - 2], lastStep.memory);
|
|
157
140
|
extFrame = makeCreationFrame(lastStep.address, creationBytecode, trace.length, artifactManager);
|
|
158
141
|
}
|
|
159
142
|
else {
|
|
160
143
|
const [receiver, codeAddr, msgData] = decodeCall(lastStep);
|
|
161
|
-
const code = await vm.stateManager.
|
|
144
|
+
const code = await vm.stateManager.getCode(codeAddr);
|
|
162
145
|
const codeHash = (0, artifacts_1.getCodeHash)(code);
|
|
163
146
|
extFrame = await makeCallFrame(lastStep.address, receiver, codeAddr, msgData, code, codeHash, trace.length, artifactManager);
|
|
164
147
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ext_stack.js","sourceRoot":"","sources":["../../../../src/debug/tracers/transformers/ext_stack.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"ext_stack.js","sourceRoot":"","sources":["../../../../src/debug/tracers/transformers/ext_stack.ts"],"names":[],"mappings":";;AAkBA,kCAEC;AAED,0CAEC;AAED,0BAEC;AA0HD,4CAuHC;AAzQD,mDAAiF;AACjF,kDAAsE;AACtE,8CAAyF;AAEzF,2CAAyE;AACzE,uCAA4F;AAG5F,mCAA0C;AAM1C,SAAgB,WAAW,CAAC,GAAsB;IAC9C,OAAO,IAAA,eAAQ,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,SAAgB,eAAe,CAAC,IAAuB;IACnD,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC;AAED,SAAgB,OAAO,CAAC,IAAuB;IAC3C,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAClB,MAAe,EACf,QAAiB,EACjB,WAAoB,EACpB,IAAgB,EAChB,YAAwB,EACxB,QAA+B,EAC/B,IAAY,EACZ,eAAiC;IAEjC,MAAM,YAAY,GACd,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAExF,IAAI,MAA4D,CAAC;IACjE,IAAI,IAAuC,CAAC;IAE5C,IAAI,YAAY,IAAI,YAAY,CAAC,GAAG,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAE3E,MAAM,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAE5D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC;gBACD,IAAI,GAAG,IAAA,mBAAa,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,IAAI,GAAG,SAAS,CAAC;YACrB,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO;QACH,IAAI,EAAE,iBAAS,CAAC,IAAI;QACpB,MAAM;QACN,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,YAAY;QAClB,MAAM;QACN,OAAO,EAAE,QAAQ;QACjB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,QAAQ;QACpB,WAAW;QACX,iBAAiB,EAAE,KAAK;KAC3B,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CACtB,MAAe,EACf,IAAgB,EAChB,IAAY,EACZ,eAAiC;IAEjC,MAAM,YAAY,GAAG,eAAe,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC;IAC3E,IAAI,IAAuC,CAAC;IAC5C,MAAM,MAAM,GAAG,YAAY,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAE5F,IAAI,YAAY,IAAI,MAAM,YAAY,mCAAkB,EAAE,CAAC;QACvD,4EAA4E;IAChF,CAAC;IAED,OAAO;QACH,IAAI,EAAE,iBAAS,CAAC,QAAQ;QACxB,MAAM;QACN,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,YAAY;QAClB,MAAM;QACN,OAAO,EAAE,mBAAY;QACrB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,IAAA,+BAAmB,EAAC,IAAI,CAAC;QACrC,iBAAiB,EAAE,KAAK;KAC3B,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,SAAS,UAAU,CAAC,IAAmB;IACnC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IACnB,IAAA,uBAAM,EACF,EAAE,CAAC,MAAM,KAAK,iBAAO,CAAC,IAAI;QACtB,EAAE,CAAC,MAAM,KAAK,iBAAO,CAAC,QAAQ;QAC9B,EAAE,CAAC,MAAM,KAAK,iBAAO,CAAC,YAAY;QAClC,EAAE,CAAC,MAAM,KAAK,iBAAO,CAAC,UAAU,EACpC,iCAAiC,EACjC,EAAE,CAAC,QAAQ,CACd,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,EAAE,CAAC,MAAM,KAAK,iBAAO,CAAC,IAAI,IAAI,EAAE,CAAC,MAAM,KAAK,iBAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,MAAM,eAAe,GAAG,WAAW,GAAG,CAAC,CAAC;IAExC,MAAM,WAAW,GAAG,IAAA,oBAAa,EAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;IAE/D,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM,KAAK,iBAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;IACjF,MAAM,QAAQ,GAAG,WAAW,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAA,kBAAW,EACvB,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,WAAW,CAAC,EACrC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,eAAe,CAAC,EACzC,IAAI,CAAC,MAAM,CACd,CAAC;IAEF,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,gBAAgB,CAClC,EAAM,EACN,IAAqB,EACrB,KAAQ,EACR,KAAmC,EACnC,eAAiC,EACjC,EAAoB;IAEpB,IAAI,QAAuB,CAAC;IAE5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC;QAErC,IAAI,EAAE,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YACtB,QAAQ,GAAG,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAElD,iEAAiE;YACjE,IAAA,uBAAM,EAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,8BAA8B,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YAE1E,MAAM,QAAQ,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,CAAC;YAEnC,QAAQ,GAAG,aAAa,CACpB,MAAM,EACN,EAAE,CAAC,EAAE,EACL,EAAE,CAAC,EAAE,EACL,EAAE,CAAC,IAAI,EACP,IAAI,EACJ,QAAQ,EACR,CAAC,EACD,eAAe,CAClB,CAAC;QACN,CAAC;QAED,OAAO;YACH,KAAK,EAAE,CAAC,QAAQ,CAAC;YACjB,GAAG,KAAK;SACX,CAAC;IACN,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEzC,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;QACjC,OAAO;YACH,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,GAAG,KAAK;SACX,CAAC;IACN,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC;IAE3B,IAAI,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAA,uBAAM,EACF,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,GAAG,CAAC,EAClC,sDAAsD,EACtD,KAAK,CAAC,MAAM,CACf,CAAC;QACF,IAAA,uBAAM,EAAC,IAAA,wBAAc,EAAC,MAAM,CAAC,EAAE,mCAAmC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAErF,IAAI,IAAA,yBAAe,EAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,yBAAyB;YACzB,MAAM,gBAAgB,GAAG,IAAA,kBAAW,EAChC,QAAQ,CAAC,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC,EACnC,QAAQ,CAAC,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC,EACnC,QAAQ,CAAC,MAAM,CAClB,CAAC;YAEF,QAAQ,GAAG,iBAAiB,CACxB,QAAQ,CAAC,OAAO,EAChB,gBAAgB,EAChB,KAAK,CAAC,MAAM,EACZ,eAAe,CAClB,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;YAE3D,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,QAAQ,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,CAAC;YAEnC,QAAQ,GAAG,MAAM,aAAa,CAC1B,QAAQ,CAAC,OAAO,EAChB,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,KAAK,CAAC,MAAM,EACZ,eAAe,CAClB,CAAC;QACN,CAAC;QAED,OAAO;YACH,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;YACpC,GAAG,KAAK;SACX,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,MAAM,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrC,+BAA+B;QAC/B,IAAI,aAAa,GAAG,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAEjD,qEAAqE;QACrE,wGAAwG;QACxG,OAAO,aAAa,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAE/C,IAAI,QAAQ,CAAC,IAAI,KAAK,iBAAS,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,iBAAS,CAAC,IAAI,EAAE,CAAC;gBAC3E,aAAa,EAAE,CAAC;YACpB,CAAC;YAED,QAAQ,CAAC,GAAG,EAAE,CAAC;QACnB,CAAC;QAED,OAAO;YACH,KAAK,EAAE,QAAQ;YACf,GAAG,KAAK;SACX,CAAC;IACN,CAAC;AACL,CAAC"}
|
|
@@ -4,6 +4,7 @@ export type TransformerF<T extends object, T1 extends T> = (vm: VM, step: Interp
|
|
|
4
4
|
export * from "./basic_info";
|
|
5
5
|
export * from "./contract_lifetime";
|
|
6
6
|
export * from "./events";
|
|
7
|
+
export * from "./exc_info";
|
|
7
8
|
export * from "./ext_stack";
|
|
8
9
|
export * from "./int_stack";
|
|
9
10
|
export * from "./keccak256_invert";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/debug/tracers/transformers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEpC,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,SAAS,CAAC,IAAI,CACvD,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,EAAE,EAAE,KACV,EAAE,CAAC;AAER,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,MAAM,CAAC;AACrB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/debug/tracers/transformers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEpC,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,SAAS,CAAC,IAAI,CACvD,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,EAAE,EAAE,KACV,EAAE,CAAC;AAER,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,MAAM,CAAC;AACrB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
|
|
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./basic_info"), exports);
|
|
18
18
|
__exportStar(require("./contract_lifetime"), exports);
|
|
19
19
|
__exportStar(require("./events"), exports);
|
|
20
|
+
__exportStar(require("./exc_info"), exports);
|
|
20
21
|
__exportStar(require("./ext_stack"), exports);
|
|
21
22
|
__exportStar(require("./int_stack"), exports);
|
|
22
23
|
__exportStar(require("./keccak256_invert"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/debug/tracers/transformers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAUA,+CAA6B;AAC7B,sDAAoC;AACpC,2CAAyB;AACzB,8CAA4B;AAC5B,8CAA4B;AAC5B,qDAAmC;AACnC,uCAAqB;AACrB,6CAA2B;AAC3B,2CAAyB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/debug/tracers/transformers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAUA,+CAA6B;AAC7B,sDAAoC;AACpC,2CAAyB;AACzB,6CAA2B;AAC3B,8CAA4B;AAC5B,8CAA4B;AAC5B,qDAAmC;AACnC,uCAAqB;AACrB,6CAA2B;AAC3B,2CAAyB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"int_stack.d.ts","sourceRoot":"","sources":["../../../../src/debug/tracers/transformers/int_stack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEpC,OAAO,EAAgB,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAGxE,OAAO,
|
|
1
|
+
{"version":3,"file":"int_stack.d.ts","sourceRoot":"","sources":["../../../../src/debug/tracers/transformers/int_stack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEpC,OAAO,EAAgB,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAGxE,OAAO,EAAoB,iBAAiB,EAAS,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAe,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAItC,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CACjC;AA4DD;;GAEG;AACH,wBAAsB,oBAAoB,CACtC,CAAC,SAAS,MAAM,GAAG,aAAa,GAAG,iBAAiB,GAAG,UAAU,EAEjE,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,iBAAiB,CAAC,EACnC,eAAe,EAAE,gBAAgB,EACjC,MAAM,EAAE,OAAO,GAChB,OAAO,CAAC,CAAC,GAAG,iBAAiB,CAAC,CA0HhC"}
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.addInternalFrameInfo = addInternalFrameInfo;
|
|
4
4
|
const solc_typed_ast_1 = require("solc-typed-ast");
|
|
5
|
-
const
|
|
5
|
+
const utils_1 = require("../../decoding/utils");
|
|
6
6
|
const opcodes_1 = require("../../opcodes");
|
|
7
7
|
const types_1 = require("../../types");
|
|
8
8
|
const ext_stack_1 = require("./ext_stack");
|
|
9
|
+
const decoding_1 = require("../../decoding");
|
|
9
10
|
function topFrame(step) {
|
|
10
11
|
if (step.intStack.length > 0) {
|
|
11
12
|
return step.intStack[step.intStack.length - 1];
|
|
@@ -15,7 +16,7 @@ function topFrame(step) {
|
|
|
15
16
|
}
|
|
16
17
|
/**
|
|
17
18
|
* Given a callable (function definition or public state variable) try to build
|
|
18
|
-
* `
|
|
19
|
+
* `View`s for all the callable arguments. On failure return undefined.
|
|
19
20
|
*/
|
|
20
21
|
function buildFunArgViews(callee, stack, contractInfo, artifactManager) {
|
|
21
22
|
const res = [];
|
|
@@ -40,22 +41,13 @@ function buildFunArgViews(callee, stack, contractInfo, artifactManager) {
|
|
|
40
41
|
let offsetFromTop = -1;
|
|
41
42
|
for (let i = formals.length - 1; i >= 0; i--) {
|
|
42
43
|
const [name, typ] = formals[i];
|
|
43
|
-
const stackSize = (0,
|
|
44
|
+
const stackSize = (0, utils_1.isCalldataArrayType)(typ) ? 2 : 1;
|
|
44
45
|
offsetFromTop += stackSize;
|
|
45
46
|
if (offsetFromTop > stack.length) {
|
|
46
47
|
// Stack underflow. Could be due to optimized code?
|
|
47
48
|
return undefined;
|
|
48
49
|
}
|
|
49
|
-
res.unshift([
|
|
50
|
-
name,
|
|
51
|
-
{
|
|
52
|
-
type: typ,
|
|
53
|
-
loc: {
|
|
54
|
-
kind: types_1.DataLocationKind.Stack,
|
|
55
|
-
offsetFromTop
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
]);
|
|
50
|
+
res.unshift([name, (0, decoding_1.makeStackView)((0, decoding_1.simplifyType)(typ, infer, undefined), offsetFromTop)]);
|
|
59
51
|
}
|
|
60
52
|
return res;
|
|
61
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"int_stack.js","sourceRoot":"","sources":["../../../../src/debug/tracers/transformers/int_stack.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"int_stack.js","sourceRoot":"","sources":["../../../../src/debug/tracers/transformers/int_stack.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getKeccakPreimages = getKeccakPreimages;
|
|
4
4
|
exports.getMapKeys = getMapKeys;
|
|
5
5
|
exports.addKeccakInvertInfo = addKeccakInvertInfo;
|
|
6
|
-
const
|
|
6
|
+
const misc_1 = require("../../../utils/misc");
|
|
7
7
|
const opcodes_1 = require("../../opcodes");
|
|
8
8
|
/**
|
|
9
9
|
* Given a trace of contract creation/deletion event compute a gen/kill set summary for the trace.
|
|
@@ -28,7 +28,7 @@ function getMapKeys(preImageMap) {
|
|
|
28
28
|
continue;
|
|
29
29
|
}
|
|
30
30
|
const keySuffix = origKey.slice(-32);
|
|
31
|
-
const slot = (0,
|
|
31
|
+
const slot = (0, misc_1.bigEndianBufToBigint)(keySuffix);
|
|
32
32
|
if (!res.has(slot)) {
|
|
33
33
|
res.set(slot, []);
|
|
34
34
|
}
|
|
@@ -49,9 +49,9 @@ function addKeccakInvertInfo(vm, step, state, trace) {
|
|
|
49
49
|
if (!(lastStep.op.opcode === opcodes_1.OPCODES.SHA3)) {
|
|
50
50
|
return state;
|
|
51
51
|
}
|
|
52
|
-
const res = (0,
|
|
52
|
+
const res = (0, misc_1.bigEndianBufToBigint)(state.evmStack[state.evmStack.length - 1]);
|
|
53
53
|
const lastStepTop = lastStep.evmStack.length - 1;
|
|
54
|
-
const preImage = (0,
|
|
54
|
+
const preImage = (0, misc_1.mustReadMem)(lastStep.evmStack[lastStepTop], lastStep.evmStack[lastStepTop - 1], lastStep.memory);
|
|
55
55
|
return {
|
|
56
56
|
keccak: {
|
|
57
57
|
from: preImage,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keccak256_invert.js","sourceRoot":"","sources":["../../../../src/debug/tracers/transformers/keccak256_invert.ts"],"names":[],"mappings":";;AAiBA,gDAOC;AAYD,gCAuBC;AAKD,kDAgCC;AA9FD,
|
|
1
|
+
{"version":3,"file":"keccak256_invert.js","sourceRoot":"","sources":["../../../../src/debug/tracers/transformers/keccak256_invert.ts"],"names":[],"mappings":";;AAiBA,gDAOC;AAYD,gCAuBC;AAKD,kDAgCC;AA9FD,8CAAwE;AACxE,2CAAwC;AAWxC;;GAEG;AACH,SAAgB,kBAAkB,CAAC,KAA4B;IAC3D,OAAO,KAAK,CAAC,MAAM,CAAoB,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;QAC/C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,CAAC,CAAC;IACb,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AAClB,CAAC;AASD;;GAEG;AACH,SAAgB,UAAU,CAAC,WAA8B;IACrD,MAAM,GAAG,GAAY,IAAI,GAAG,EAAE,CAAC;IAE/B,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,WAAW,EAAE,CAAC;QAC7C,sFAAsF;QACtF,oFAAoF;QACpF,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YACvB,SAAS;QACb,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAA,2BAAoB,EAAC,SAAS,CAAC,CAAC;QAE7C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACjB,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtB,CAAC;QAED,8HAA8H;QAC9H,gBAAgB;QACf,GAAG,CAAC,GAAG,CAAC,IAAI,CAAiC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAC/B,EAAM,EACN,IAAqB,EACrB,KAAQ,EACR,KAAqC;IAErC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEzC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,KAAK,iBAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,GAAG,GAAG,IAAA,2BAAoB,EAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAEjD,MAAM,QAAQ,GAAG,IAAA,kBAAW,EACxB,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC9B,QAAQ,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,EAClC,QAAQ,CAAC,MAAM,CAClB,CAAC;IAEF,OAAO;QACH,MAAM,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,EAAE,EAAE,GAAG;SACV;QACD,GAAG,KAAK;KACX,CAAC;AACN,CAAC"}
|
|
@@ -11,7 +11,7 @@ export interface ReturnInfo {
|
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
|
-
* Adds return info for steps in the
|
|
14
|
+
* Adds return info for steps in the callee context, right after a return.
|
|
15
15
|
*/
|
|
16
16
|
export declare function addReturnInfo<T extends object & BasicStepInfo & ExternalFrameInfo>(vm: VM, step: InterpreterStep, state: T, trace: Array<T & ReturnInfo>, artifactManager: IArtifactManager): Promise<T & ReturnInfo>;
|
|
17
17
|
//# sourceMappingURL=ret_info.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ret_info.d.ts","sourceRoot":"","sources":["../../../../src/debug/tracers/transformers/ret_info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AASpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"ret_info.d.ts","sourceRoot":"","sources":["../../../../src/debug/tracers/transformers/ret_info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AASpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAe,MAAM,aAAa,CAAC;AAI7D,MAAM,WAAW,UAAU;IACvB,OAAO,CAAC,EAAE;QAEN,aAAa,EAAE,MAAM,CAAC;QAEtB,aAAa,EAAE,UAAU,CAAC;QAE1B,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC;KAC7B,CAAC;CACL;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,aAAa,GAAG,iBAAiB,EACpF,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,EAC5B,eAAe,EAAE,gBAAgB,GAClC,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAwFzB"}
|
|
@@ -2,29 +2,26 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.addReturnInfo = addReturnInfo;
|
|
4
4
|
const solc_typed_ast_1 = require("solc-typed-ast");
|
|
5
|
-
const
|
|
6
|
-
const decoding_1 = require("../../decoding");
|
|
5
|
+
const misc_1 = require("../../../utils/misc");
|
|
7
6
|
const opcodes_1 = require("../../opcodes");
|
|
8
7
|
const types_1 = require("../../types");
|
|
9
8
|
const ext_stack_1 = require("./ext_stack");
|
|
9
|
+
const view_1 = require("../../decoding/calldata/view");
|
|
10
|
+
const decoding_1 = require("../../decoding");
|
|
10
11
|
/**
|
|
11
|
-
* Adds return info for steps in the
|
|
12
|
+
* Adds return info for steps in the callee context, right after a return.
|
|
12
13
|
*/
|
|
13
14
|
async function addReturnInfo(vm, step, state, trace, artifactManager) {
|
|
14
|
-
if (
|
|
15
|
+
if (state.op.opcode !== opcodes_1.OPCODES.RETURN && state.op.opcode !== opcodes_1.OPCODES.STOP) {
|
|
15
16
|
return state;
|
|
16
17
|
}
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const lastFrame = (0, ext_stack_1.topExtFrame)(lastStep);
|
|
22
|
-
const callStartStep = lastFrame.startStep;
|
|
23
|
-
const rawReturnData = lastStep.op.opcode === opcodes_1.OPCODES.RETURN
|
|
24
|
-
? (0, utils_1.mustReadMem)((0, utils_1.stackTop)(lastStep.evmStack), (0, utils_1.stackInd)(lastStep.evmStack, 1), lastStep.memory)
|
|
18
|
+
const extFrame = (0, ext_stack_1.topExtFrame)(state);
|
|
19
|
+
const callStartStep = extFrame.startStep;
|
|
20
|
+
const rawReturnData = state.op.opcode === opcodes_1.OPCODES.RETURN
|
|
21
|
+
? (0, misc_1.mustReadMem)((0, misc_1.stackTop)(state.evmStack), (0, misc_1.stackInd)(state.evmStack, 1), state.memory)
|
|
25
22
|
: new Uint8Array(0);
|
|
26
23
|
// Special case: For creation frames we know that the consturctor doesn't "return anything" at the Solidity level
|
|
27
|
-
if (
|
|
24
|
+
if (extFrame.kind === types_1.FrameKind.Creation) {
|
|
28
25
|
return {
|
|
29
26
|
...state,
|
|
30
27
|
retInfo: {
|
|
@@ -34,11 +31,11 @@ async function addReturnInfo(vm, step, state, trace, artifactManager) {
|
|
|
34
31
|
}
|
|
35
32
|
};
|
|
36
33
|
}
|
|
37
|
-
if (!(
|
|
38
|
-
(
|
|
39
|
-
(
|
|
40
|
-
|
|
41
|
-
|
|
34
|
+
if (!(extFrame.info &&
|
|
35
|
+
(extFrame.callee instanceof solc_typed_ast_1.FunctionDefinition ||
|
|
36
|
+
(extFrame.callee instanceof solc_typed_ast_1.VariableDeclaration &&
|
|
37
|
+
extFrame.callee.stateVariable &&
|
|
38
|
+
extFrame.callee.visibility === solc_typed_ast_1.StateVariableVisibility.Public)))) {
|
|
42
39
|
return {
|
|
43
40
|
...state,
|
|
44
41
|
retInfo: {
|
|
@@ -47,13 +44,13 @@ async function addReturnInfo(vm, step, state, trace, artifactManager) {
|
|
|
47
44
|
}
|
|
48
45
|
};
|
|
49
46
|
}
|
|
50
|
-
const infer = artifactManager.infer(
|
|
47
|
+
const infer = artifactManager.infer(extFrame.info.artifact.compilerVersion);
|
|
51
48
|
let type;
|
|
52
49
|
try {
|
|
53
50
|
type =
|
|
54
|
-
|
|
55
|
-
? infer.funDefToType(
|
|
56
|
-
: infer.getterFunType(
|
|
51
|
+
extFrame.callee instanceof solc_typed_ast_1.FunctionDefinition
|
|
52
|
+
? infer.funDefToType(extFrame.callee)
|
|
53
|
+
: infer.getterFunType(extFrame.callee);
|
|
57
54
|
}
|
|
58
55
|
catch {
|
|
59
56
|
return {
|
|
@@ -75,30 +72,9 @@ async function addReturnInfo(vm, step, state, trace, artifactManager) {
|
|
|
75
72
|
}
|
|
76
73
|
};
|
|
77
74
|
}
|
|
78
|
-
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
try {
|
|
82
|
-
abiType = new solc_typed_ast_1.TupleType(type.returns.map((t) => infer.toABIEncodedType(t, encVer)));
|
|
83
|
-
}
|
|
84
|
-
catch {
|
|
85
|
-
return {
|
|
86
|
-
...state,
|
|
87
|
-
retInfo: {
|
|
88
|
-
callStartStep,
|
|
89
|
-
rawReturnData,
|
|
90
|
-
decodedReturnData: []
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
const decodeRes = (0, decoding_1.cd_decodeValue)(abiType, origType, { kind: types_1.DataLocationKind.CallData, address: 0n }, rawReturnData, 0n, infer);
|
|
95
|
-
let decodedReturnData;
|
|
96
|
-
if (decodeRes === undefined) {
|
|
97
|
-
decodedReturnData = (0, utils_1.repeat)(undefined, type.returns.length);
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
decodedReturnData = decodeRes[0];
|
|
101
|
-
}
|
|
75
|
+
// We treat these as in calldata, since they should already be abi-encoded in memory for the Return instruction
|
|
76
|
+
const views = (0, view_1.makeCalldataViews)(type.returns.map((t) => (0, decoding_1.simplifyType)(t, infer, solc_typed_ast_1.DataLocation.CallData)), 0n);
|
|
77
|
+
const decodedReturnData = views.map((v) => v.decode(rawReturnData));
|
|
102
78
|
return {
|
|
103
79
|
...state,
|
|
104
80
|
retInfo: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ret_info.js","sourceRoot":"","sources":["../../../../src/debug/tracers/transformers/ret_info.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"ret_info.js","sourceRoot":"","sources":["../../../../src/debug/tracers/transformers/ret_info.ts"],"names":[],"mappings":"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"}
|
package/dist/debug/types.d.ts
CHANGED
|
@@ -1,25 +1,18 @@
|
|
|
1
|
-
import { Address } from "@ethereumjs/util";
|
|
1
|
+
import { Address, PrefixedHexString } from "@ethereumjs/util";
|
|
2
2
|
import * as sol from "solc-typed-ast";
|
|
3
3
|
import { FunctionDefinition } from "solc-typed-ast";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { ArtifactInfo, ContractInfo } from "./artifact_manager";
|
|
4
|
+
import { ImmMap } from "../utils/immutable_map";
|
|
5
|
+
import { ArtifactInfo, ContractInfo } from "./artifact_manager/types";
|
|
7
6
|
import { EVMOpInfo } from "./opcodes";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
export
|
|
17
|
-
contract: DeployedContractInfo | undefined;
|
|
18
|
-
start: number;
|
|
19
|
-
length: number;
|
|
20
|
-
jump: "o" | "i" | "-";
|
|
21
|
-
file: number;
|
|
22
|
-
}
|
|
7
|
+
import { View } from "./decoding/view";
|
|
8
|
+
/**
|
|
9
|
+
* A type alias for 0x-prefixed hex strings. Used for documentation purposes.
|
|
10
|
+
*/
|
|
11
|
+
export type HexString = PrefixedHexString;
|
|
12
|
+
/**
|
|
13
|
+
* A type alias for hex strings without 0x prefix. Used for documentation purposes.
|
|
14
|
+
*/
|
|
15
|
+
export type UnprefixedHexString = string;
|
|
23
16
|
export type DecodedSolValue = {
|
|
24
17
|
value: any;
|
|
25
18
|
type: string;
|
|
@@ -56,7 +49,7 @@ export interface BaseFrame {
|
|
|
56
49
|
* If we have a `callee` try and infer where the arguments are placed in the VM state. Some arguments may not
|
|
57
50
|
* exist in the case of msg.data generated from a fuzzer for example.
|
|
58
51
|
*/
|
|
59
|
-
readonly arguments: Array<[string,
|
|
52
|
+
readonly arguments: Array<[string, View]> | undefined;
|
|
60
53
|
readonly startStep: number;
|
|
61
54
|
}
|
|
62
55
|
/**
|
|
@@ -116,6 +109,7 @@ export interface BaseMemoryLocation extends BaseDataLocation {
|
|
|
116
109
|
}
|
|
117
110
|
export interface CalldataLocation extends BaseMemoryLocation {
|
|
118
111
|
kind: DataLocationKind.CallData;
|
|
112
|
+
base: bigint;
|
|
119
113
|
}
|
|
120
114
|
export interface LinearMemoryLocation extends BaseMemoryLocation {
|
|
121
115
|
kind: DataLocationKind.Memory;
|
|
@@ -166,24 +160,71 @@ export interface StepVMState {
|
|
|
166
160
|
}
|
|
167
161
|
/**
|
|
168
162
|
* State that the debugger maintains for each trace step.
|
|
169
|
-
* It includes the basic VM state (`StepVmState`) and
|
|
170
|
-
*
|
|
171
|
-
* that may be emitted on this step.
|
|
163
|
+
* It includes the basic VM state (`StepVmState`) and all the info computed
|
|
164
|
+
* by additional transformers
|
|
172
165
|
*/
|
|
173
166
|
export interface StepState extends StepVMState {
|
|
167
|
+
/**
|
|
168
|
+
* List of external call frames
|
|
169
|
+
*/
|
|
174
170
|
stack: ExternalFrame[];
|
|
171
|
+
/**
|
|
172
|
+
* If the current instruction is a return, include return information
|
|
173
|
+
*/
|
|
175
174
|
retInfo?: {
|
|
175
|
+
/**
|
|
176
|
+
* Step at which the call that just returned started
|
|
177
|
+
*/
|
|
176
178
|
callStartStep: number;
|
|
179
|
+
/**
|
|
180
|
+
* Raw returned data
|
|
181
|
+
*/
|
|
177
182
|
rawReturnData: Uint8Array;
|
|
183
|
+
/**
|
|
184
|
+
* Decoded returned data (if ast info is available)
|
|
185
|
+
*/
|
|
178
186
|
decodedReturnData?: any[];
|
|
179
187
|
};
|
|
188
|
+
/**
|
|
189
|
+
* If the current instruction throws an exception, includes exception info
|
|
190
|
+
*/
|
|
191
|
+
excInfo?: {
|
|
192
|
+
/**
|
|
193
|
+
* Raw exception bytes
|
|
194
|
+
*/
|
|
195
|
+
data: Uint8Array;
|
|
196
|
+
};
|
|
197
|
+
/**
|
|
198
|
+
* Internal call stack at the current instruction
|
|
199
|
+
*/
|
|
180
200
|
intStack: InternalCallFrame[];
|
|
201
|
+
/**
|
|
202
|
+
* Source location for the current instruction (if a src map is available)
|
|
203
|
+
*/
|
|
181
204
|
src: sol.DecodedBytecodeSourceMapEntry | undefined;
|
|
205
|
+
/**
|
|
206
|
+
* AST node that corresponds to the source location of the current instruction (if any)
|
|
207
|
+
*/
|
|
182
208
|
astNode: sol.ASTNode | undefined;
|
|
209
|
+
/**
|
|
210
|
+
* If the current instruction emits an event, includes the raw event info
|
|
211
|
+
*/
|
|
183
212
|
emittedEvent: EventDesc | undefined;
|
|
213
|
+
/**
|
|
214
|
+
* If we were able to decode the event, include the decoded event info
|
|
215
|
+
*/
|
|
184
216
|
decodedEvent: DecodedEventDesc | undefined;
|
|
217
|
+
/**
|
|
218
|
+
* If this is the instruction after we return from a create call, add the newly created address here.
|
|
219
|
+
*/
|
|
185
220
|
contractCreated?: Address;
|
|
221
|
+
/**
|
|
222
|
+
* If this is a SELFDESTRUCT instruction, recored the destroyed contract
|
|
223
|
+
*/
|
|
186
224
|
contractKilled?: Address;
|
|
225
|
+
/**
|
|
226
|
+
* If this is a KECCAK256 instruction record the preimage and the hash
|
|
227
|
+
*/
|
|
187
228
|
keccak?: {
|
|
188
229
|
from: Uint8Array;
|
|
189
230
|
to: bigint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/debug/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/debug/types.ts"],"names":[],"mappings":"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"}
|
package/dist/debug/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/debug/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/debug/types.ts"],"names":[],"mappings":";;;AAmGA,0BAQC;AA/ED,IAAY,SAIX;AAJD,WAAY,SAAS;IACjB,0BAAa,CAAA;IACb,kCAAqB,CAAA;IACrB,2CAA8B,CAAA;AAClC,CAAC,EAJW,SAAS,yBAAT,SAAS,QAIpB;AAmED,SAAgB,OAAO,CAAC,CAAM;IAC1B,OAAO,CACH,CAAC,YAAY,MAAM;QACnB,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC;QACxB,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI;YACtB,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ;YAC7B,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,YAAY,CAAC,CACzC,CAAC;AACN,CAAC;AAED,IAAY,gBAKX;AALD,WAAY,gBAAgB;IACxB,mCAAe,CAAA;IACf,qCAAiB,CAAA;IACjB,uCAAmB,CAAA;IACnB,yCAAqB,CAAA;AACzB,CAAC,EALW,gBAAgB,gCAAhB,gBAAgB,QAK3B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EVMError, ExecResult } from "@ethereumjs/evm";
|
|
2
2
|
/**
|
|
3
3
|
* The following code has been copied from
|
|
4
4
|
*
|
|
@@ -6,7 +6,7 @@ import { EvmError, ExecResult } from "@ethereumjs/evm";
|
|
|
6
6
|
*
|
|
7
7
|
* Since its not exported by the underyling package, but we need it to hack on the VM to add foundry cheatcodes.
|
|
8
8
|
*/
|
|
9
|
-
export declare function EvmErrorResult(error:
|
|
9
|
+
export declare function EvmErrorResult(error: EVMError, gasUsed: bigint): ExecResult;
|
|
10
10
|
export declare enum ERROR {
|
|
11
11
|
OUT_OF_GAS = "out of gas",
|
|
12
12
|
CODESTORE_OUT_OF_GAS = "code store out of gas",
|