Commit 09846e7c authored by inphi's avatar inphi

cannon: Remove unicorn references

parent a5793665
...@@ -126,31 +126,31 @@ func TestEVM(t *testing.T) { ...@@ -126,31 +126,31 @@ func TestEVM(t *testing.T) {
// set the return address ($ra) to jump into when test completes // set the return address ($ra) to jump into when test completes
state.Registers[31] = endAddr state.Registers[31] = endAddr
us := NewInstrumentedState(state, oracle, os.Stdout, os.Stderr) goState := NewInstrumentedState(state, oracle, os.Stdout, os.Stderr)
for i := 0; i < 1000; i++ { for i := 0; i < 1000; i++ {
if us.state.PC == endAddr { if goState.state.PC == endAddr {
break break
} }
if exitGroup && us.state.Exited { if exitGroup && goState.state.Exited {
break break
} }
insn := state.Memory.GetMemory(state.PC) insn := state.Memory.GetMemory(state.PC)
t.Logf("step: %4d pc: 0x%08x insn: 0x%08x", state.Step, state.PC, insn) t.Logf("step: %4d pc: 0x%08x insn: 0x%08x", state.Step, state.PC, insn)
stepWitness, err := us.Step(true) stepWitness, err := goState.Step(true)
require.NoError(t, err) require.NoError(t, err)
evmPost := evm.Step(t, stepWitness) evmPost := evm.Step(t, stepWitness)
// verify the post-state matches. // verify the post-state matches.
// TODO: maybe more readable to decode the evmPost state, and do attribute-wise comparison. // TODO: maybe more readable to decode the evmPost state, and do attribute-wise comparison.
uniPost := us.state.EncodeWitness() goPost := goState.state.EncodeWitness()
require.Equal(t, hexutil.Bytes(uniPost).String(), hexutil.Bytes(evmPost).String(), require.Equal(t, hexutil.Bytes(goPost).String(), hexutil.Bytes(evmPost).String(),
"mipsevm produced different state than EVM") "mipsevm produced different state than EVM")
} }
if exitGroup { if exitGroup {
require.NotEqual(t, uint32(endAddr), us.state.PC, "must not reach end") require.NotEqual(t, uint32(endAddr), goState.state.PC, "must not reach end")
require.True(t, us.state.Exited, "must set exited state") require.True(t, goState.state.Exited, "must set exited state")
require.Equal(t, uint8(1), us.state.ExitCode, "must exit with 1") require.Equal(t, uint8(1), goState.state.ExitCode, "must exit with 1")
} else { } else {
require.Equal(t, uint32(endAddr), state.PC, "must reach end") require.Equal(t, uint32(endAddr), state.PC, "must reach end")
// inspect test result // inspect test result
...@@ -180,8 +180,8 @@ func TestEVMFault(t *testing.T) { ...@@ -180,8 +180,8 @@ func TestEVMFault(t *testing.T) {
// set the return address ($ra) to jump into when test completes // set the return address ($ra) to jump into when test completes
state.Registers[31] = endAddr state.Registers[31] = endAddr
us := NewInstrumentedState(state, nil, os.Stdout, os.Stderr) goState := NewInstrumentedState(state, nil, os.Stdout, os.Stderr)
require.Panics(t, func() { _, _ = us.Step(true) }, "must panic on illegal instruction") require.Panics(t, func() { _, _ = goState.Step(true) }, "must panic on illegal instruction")
insnProof := initialState.Memory.MerkleProof(0) insnProof := initialState.Memory.MerkleProof(0)
stepWitness := &StepWitness{ stepWitness := &StepWitness{
...@@ -213,11 +213,11 @@ func TestHelloEVM(t *testing.T) { ...@@ -213,11 +213,11 @@ func TestHelloEVM(t *testing.T) {
require.NoError(t, PatchStack(state), "add initial stack") require.NoError(t, PatchStack(state), "add initial stack")
var stdOutBuf, stdErrBuf bytes.Buffer var stdOutBuf, stdErrBuf bytes.Buffer
us := NewInstrumentedState(state, nil, io.MultiWriter(&stdOutBuf, os.Stdout), io.MultiWriter(&stdErrBuf, os.Stderr)) goState := NewInstrumentedState(state, nil, io.MultiWriter(&stdOutBuf, os.Stdout), io.MultiWriter(&stdErrBuf, os.Stderr))
start := time.Now() start := time.Now()
for i := 0; i < 400_000; i++ { for i := 0; i < 400_000; i++ {
if us.state.Exited { if goState.state.Exited {
break break
} }
insn := state.Memory.GetMemory(state.PC) insn := state.Memory.GetMemory(state.PC)
...@@ -228,13 +228,13 @@ func TestHelloEVM(t *testing.T) { ...@@ -228,13 +228,13 @@ func TestHelloEVM(t *testing.T) {
evm := NewMIPSEVM(contracts, addrs) evm := NewMIPSEVM(contracts, addrs)
evm.SetTracer(tracer) evm.SetTracer(tracer)
stepWitness, err := us.Step(true) stepWitness, err := goState.Step(true)
require.NoError(t, err) require.NoError(t, err)
evmPost := evm.Step(t, stepWitness) evmPost := evm.Step(t, stepWitness)
// verify the post-state matches. // verify the post-state matches.
// TODO: maybe more readable to decode the evmPost state, and do attribute-wise comparison. // TODO: maybe more readable to decode the evmPost state, and do attribute-wise comparison.
uniPost := us.state.EncodeWitness() goPost := goState.state.EncodeWitness()
require.Equal(t, hexutil.Bytes(uniPost).String(), hexutil.Bytes(evmPost).String(), require.Equal(t, hexutil.Bytes(goPost).String(), hexutil.Bytes(evmPost).String(),
"mipsevm produced different state than EVM") "mipsevm produced different state than EVM")
} }
end := time.Now() end := time.Now()
...@@ -266,10 +266,10 @@ func TestClaimEVM(t *testing.T) { ...@@ -266,10 +266,10 @@ func TestClaimEVM(t *testing.T) {
oracle, expectedStdOut, expectedStdErr := claimTestOracle(t) oracle, expectedStdOut, expectedStdErr := claimTestOracle(t)
var stdOutBuf, stdErrBuf bytes.Buffer var stdOutBuf, stdErrBuf bytes.Buffer
us := NewInstrumentedState(state, oracle, io.MultiWriter(&stdOutBuf, os.Stdout), io.MultiWriter(&stdErrBuf, os.Stderr)) goState := NewInstrumentedState(state, oracle, io.MultiWriter(&stdOutBuf, os.Stdout), io.MultiWriter(&stdErrBuf, os.Stderr))
for i := 0; i < 2000_000; i++ { for i := 0; i < 2000_000; i++ {
if us.state.Exited { if goState.state.Exited {
break break
} }
...@@ -278,15 +278,15 @@ func TestClaimEVM(t *testing.T) { ...@@ -278,15 +278,15 @@ func TestClaimEVM(t *testing.T) {
t.Logf("step: %4d pc: 0x%08x insn: 0x%08x", state.Step, state.PC, insn) t.Logf("step: %4d pc: 0x%08x insn: 0x%08x", state.Step, state.PC, insn)
} }
stepWitness, err := us.Step(true) stepWitness, err := goState.Step(true)
require.NoError(t, err) require.NoError(t, err)
evm := NewMIPSEVM(contracts, addrs) evm := NewMIPSEVM(contracts, addrs)
evm.SetTracer(tracer) evm.SetTracer(tracer)
evmPost := evm.Step(t, stepWitness) evmPost := evm.Step(t, stepWitness)
uniPost := us.state.EncodeWitness() goPost := goState.state.EncodeWitness()
require.Equal(t, hexutil.Bytes(uniPost).String(), hexutil.Bytes(evmPost).String(), require.Equal(t, hexutil.Bytes(goPost).String(), hexutil.Bytes(evmPost).String(),
"mipsevm produced different state than EVM") "mipsevm produced different state than EVM")
} }
......
...@@ -37,8 +37,8 @@ func FuzzStateSyscallBrk(f *testing.F) { ...@@ -37,8 +37,8 @@ func FuzzStateSyscallBrk(f *testing.F) {
expectedRegisters := state.Registers expectedRegisters := state.Registers
expectedRegisters[2] = 0x4000_0000 expectedRegisters[2] = 0x4000_0000
us := NewInstrumentedState(state, nil, os.Stdout, os.Stderr) goState := NewInstrumentedState(state, nil, os.Stdout, os.Stderr)
stepWitness, err := us.Step(true) stepWitness, err := goState.Step(true)
require.NoError(t, err) require.NoError(t, err)
require.False(t, stepWitness.HasPreimage()) require.False(t, stepWitness.HasPreimage())
...@@ -57,8 +57,8 @@ func FuzzStateSyscallBrk(f *testing.F) { ...@@ -57,8 +57,8 @@ func FuzzStateSyscallBrk(f *testing.F) {
evm := NewMIPSEVM(contracts, addrs) evm := NewMIPSEVM(contracts, addrs)
evmPost := evm.Step(t, stepWitness) evmPost := evm.Step(t, stepWitness)
uniPost := us.state.EncodeWitness() goPost := goState.state.EncodeWitness()
require.Equal(t, hexutil.Bytes(uniPost).String(), hexutil.Bytes(evmPost).String(), require.Equal(t, hexutil.Bytes(goPost).String(), hexutil.Bytes(evmPost).String(),
"mipsevm produced different state than EVM") "mipsevm produced different state than EVM")
}) })
} }
...@@ -86,8 +86,8 @@ func FuzzStateSyscallClone(f *testing.F) { ...@@ -86,8 +86,8 @@ func FuzzStateSyscallClone(f *testing.F) {
expectedRegisters := state.Registers expectedRegisters := state.Registers
expectedRegisters[2] = 0x1 expectedRegisters[2] = 0x1
us := NewInstrumentedState(state, nil, os.Stdout, os.Stderr) goState := NewInstrumentedState(state, nil, os.Stdout, os.Stderr)
stepWitness, err := us.Step(true) stepWitness, err := goState.Step(true)
require.NoError(t, err) require.NoError(t, err)
require.False(t, stepWitness.HasPreimage()) require.False(t, stepWitness.HasPreimage())
...@@ -106,8 +106,8 @@ func FuzzStateSyscallClone(f *testing.F) { ...@@ -106,8 +106,8 @@ func FuzzStateSyscallClone(f *testing.F) {
evm := NewMIPSEVM(contracts, addrs) evm := NewMIPSEVM(contracts, addrs)
evmPost := evm.Step(t, stepWitness) evmPost := evm.Step(t, stepWitness)
uniPost := us.state.EncodeWitness() goPost := goState.state.EncodeWitness()
require.Equal(t, hexutil.Bytes(uniPost).String(), hexutil.Bytes(evmPost).String(), require.Equal(t, hexutil.Bytes(goPost).String(), hexutil.Bytes(evmPost).String(),
"mipsevm produced different state than EVM") "mipsevm produced different state than EVM")
}) })
} }
...@@ -132,8 +132,8 @@ func FuzzStateSyscallMmap(f *testing.F) { ...@@ -132,8 +132,8 @@ func FuzzStateSyscallMmap(f *testing.F) {
preStateRoot := state.Memory.MerkleRoot() preStateRoot := state.Memory.MerkleRoot()
preStateRegisters := state.Registers preStateRegisters := state.Registers
us := NewInstrumentedState(state, nil, os.Stdout, os.Stderr) goState := NewInstrumentedState(state, nil, os.Stdout, os.Stderr)
stepWitness, err := us.Step(true) stepWitness, err := goState.Step(true)
require.NoError(t, err) require.NoError(t, err)
require.False(t, stepWitness.HasPreimage()) require.False(t, stepWitness.HasPreimage())
...@@ -165,8 +165,8 @@ func FuzzStateSyscallMmap(f *testing.F) { ...@@ -165,8 +165,8 @@ func FuzzStateSyscallMmap(f *testing.F) {
evm := NewMIPSEVM(contracts, addrs) evm := NewMIPSEVM(contracts, addrs)
evmPost := evm.Step(t, stepWitness) evmPost := evm.Step(t, stepWitness)
uniPost := us.state.EncodeWitness() goPost := goState.state.EncodeWitness()
require.Equal(t, hexutil.Bytes(uniPost).String(), hexutil.Bytes(evmPost).String(), require.Equal(t, hexutil.Bytes(goPost).String(), hexutil.Bytes(evmPost).String(),
"mipsevm produced different state than EVM") "mipsevm produced different state than EVM")
}) })
} }
...@@ -193,8 +193,8 @@ func FuzzStateSyscallExitGroup(f *testing.F) { ...@@ -193,8 +193,8 @@ func FuzzStateSyscallExitGroup(f *testing.F) {
preStateRoot := state.Memory.MerkleRoot() preStateRoot := state.Memory.MerkleRoot()
preStateRegisters := state.Registers preStateRegisters := state.Registers
us := NewInstrumentedState(state, nil, os.Stdout, os.Stderr) goState := NewInstrumentedState(state, nil, os.Stdout, os.Stderr)
stepWitness, err := us.Step(true) stepWitness, err := goState.Step(true)
require.NoError(t, err) require.NoError(t, err)
require.False(t, stepWitness.HasPreimage()) require.False(t, stepWitness.HasPreimage())
...@@ -213,8 +213,8 @@ func FuzzStateSyscallExitGroup(f *testing.F) { ...@@ -213,8 +213,8 @@ func FuzzStateSyscallExitGroup(f *testing.F) {
evm := NewMIPSEVM(contracts, addrs) evm := NewMIPSEVM(contracts, addrs)
evmPost := evm.Step(t, stepWitness) evmPost := evm.Step(t, stepWitness)
uniPost := us.state.EncodeWitness() goPost := goState.state.EncodeWitness()
require.Equal(t, hexutil.Bytes(uniPost).String(), hexutil.Bytes(evmPost).String(), require.Equal(t, hexutil.Bytes(goPost).String(), hexutil.Bytes(evmPost).String(),
"mipsevm produced different state than EVM") "mipsevm produced different state than EVM")
}) })
} }
...@@ -239,8 +239,8 @@ func FuzzStateSyscallFnctl(f *testing.F) { ...@@ -239,8 +239,8 @@ func FuzzStateSyscallFnctl(f *testing.F) {
preStateRoot := state.Memory.MerkleRoot() preStateRoot := state.Memory.MerkleRoot()
preStateRegisters := state.Registers preStateRegisters := state.Registers
us := NewInstrumentedState(state, nil, os.Stdout, os.Stderr) goState := NewInstrumentedState(state, nil, os.Stdout, os.Stderr)
stepWitness, err := us.Step(true) stepWitness, err := goState.Step(true)
require.NoError(t, err) require.NoError(t, err)
require.False(t, stepWitness.HasPreimage()) require.False(t, stepWitness.HasPreimage())
...@@ -276,8 +276,8 @@ func FuzzStateSyscallFnctl(f *testing.F) { ...@@ -276,8 +276,8 @@ func FuzzStateSyscallFnctl(f *testing.F) {
evm := NewMIPSEVM(contracts, addrs) evm := NewMIPSEVM(contracts, addrs)
evmPost := evm.Step(t, stepWitness) evmPost := evm.Step(t, stepWitness)
uniPost := us.state.EncodeWitness() goPost := goState.state.EncodeWitness()
require.Equal(t, hexutil.Bytes(uniPost).String(), hexutil.Bytes(evmPost).String(), require.Equal(t, hexutil.Bytes(goPost).String(), hexutil.Bytes(evmPost).String(),
"mipsevm produced different state than EVM") "mipsevm produced different state than EVM")
}) })
} }
...@@ -307,8 +307,8 @@ func FuzzStateHintRead(f *testing.F) { ...@@ -307,8 +307,8 @@ func FuzzStateHintRead(f *testing.F) {
expectedRegisters[2] = count expectedRegisters[2] = count
oracle := staticOracle(t, preimageData) // only used for hinting oracle := staticOracle(t, preimageData) // only used for hinting
us := NewInstrumentedState(state, oracle, os.Stdout, os.Stderr) goState := NewInstrumentedState(state, oracle, os.Stdout, os.Stderr)
stepWitness, err := us.Step(true) stepWitness, err := goState.Step(true)
require.NoError(t, err) require.NoError(t, err)
require.False(t, stepWitness.HasPreimage()) require.False(t, stepWitness.HasPreimage())
...@@ -325,8 +325,8 @@ func FuzzStateHintRead(f *testing.F) { ...@@ -325,8 +325,8 @@ func FuzzStateHintRead(f *testing.F) {
evm := NewMIPSEVM(contracts, addrs) evm := NewMIPSEVM(contracts, addrs)
evmPost := evm.Step(t, stepWitness) evmPost := evm.Step(t, stepWitness)
uniPost := us.state.EncodeWitness() goPost := goState.state.EncodeWitness()
require.Equal(t, hexutil.Bytes(uniPost).String(), hexutil.Bytes(evmPost).String(), require.Equal(t, hexutil.Bytes(goPost).String(), hexutil.Bytes(evmPost).String(),
"mipsevm produced different state than EVM") "mipsevm produced different state than EVM")
}) })
} }
...@@ -364,8 +364,8 @@ func FuzzStatePreimageRead(f *testing.F) { ...@@ -364,8 +364,8 @@ func FuzzStatePreimageRead(f *testing.F) {
} }
oracle := staticOracle(t, preimageData) oracle := staticOracle(t, preimageData)
us := NewInstrumentedState(state, oracle, os.Stdout, os.Stderr) goState := NewInstrumentedState(state, oracle, os.Stdout, os.Stderr)
stepWitness, err := us.Step(true) stepWitness, err := goState.Step(true)
require.NoError(t, err) require.NoError(t, err)
require.True(t, stepWitness.HasPreimage()) require.True(t, stepWitness.HasPreimage())
...@@ -389,8 +389,8 @@ func FuzzStatePreimageRead(f *testing.F) { ...@@ -389,8 +389,8 @@ func FuzzStatePreimageRead(f *testing.F) {
evm := NewMIPSEVM(contracts, addrs) evm := NewMIPSEVM(contracts, addrs)
evmPost := evm.Step(t, stepWitness) evmPost := evm.Step(t, stepWitness)
uniPost := us.state.EncodeWitness() goPost := goState.state.EncodeWitness()
require.Equal(t, hexutil.Bytes(uniPost).String(), hexutil.Bytes(evmPost).String(), require.Equal(t, hexutil.Bytes(goPost).String(), hexutil.Bytes(evmPost).String(),
"mipsevm produced different state than EVM") "mipsevm produced different state than EVM")
}) })
} }
...@@ -424,8 +424,8 @@ func FuzzStateHintWrite(f *testing.F) { ...@@ -424,8 +424,8 @@ func FuzzStateHintWrite(f *testing.F) {
expectedRegisters[2] = count expectedRegisters[2] = count
oracle := staticOracle(t, preimageData) // only used for hinting oracle := staticOracle(t, preimageData) // only used for hinting
us := NewInstrumentedState(state, oracle, os.Stdout, os.Stderr) goState := NewInstrumentedState(state, oracle, os.Stdout, os.Stderr)
stepWitness, err := us.Step(true) stepWitness, err := goState.Step(true)
require.NoError(t, err) require.NoError(t, err)
require.False(t, stepWitness.HasPreimage()) require.False(t, stepWitness.HasPreimage())
...@@ -442,8 +442,8 @@ func FuzzStateHintWrite(f *testing.F) { ...@@ -442,8 +442,8 @@ func FuzzStateHintWrite(f *testing.F) {
evm := NewMIPSEVM(contracts, addrs) evm := NewMIPSEVM(contracts, addrs)
evmPost := evm.Step(t, stepWitness) evmPost := evm.Step(t, stepWitness)
uniPost := us.state.EncodeWitness() goPost := goState.state.EncodeWitness()
require.Equal(t, hexutil.Bytes(uniPost).String(), hexutil.Bytes(evmPost).String(), require.Equal(t, hexutil.Bytes(goPost).String(), hexutil.Bytes(evmPost).String(),
"mipsevm produced different state than EVM") "mipsevm produced different state than EVM")
}) })
} }
...@@ -476,8 +476,8 @@ func FuzzStatePreimageWrite(f *testing.F) { ...@@ -476,8 +476,8 @@ func FuzzStatePreimageWrite(f *testing.F) {
expectedRegisters[2] = sz expectedRegisters[2] = sz
oracle := staticOracle(t, preimageData) oracle := staticOracle(t, preimageData)
us := NewInstrumentedState(state, oracle, os.Stdout, os.Stderr) goState := NewInstrumentedState(state, oracle, os.Stdout, os.Stderr)
stepWitness, err := us.Step(true) stepWitness, err := goState.Step(true)
require.NoError(t, err) require.NoError(t, err)
require.False(t, stepWitness.HasPreimage()) require.False(t, stepWitness.HasPreimage())
...@@ -494,8 +494,8 @@ func FuzzStatePreimageWrite(f *testing.F) { ...@@ -494,8 +494,8 @@ func FuzzStatePreimageWrite(f *testing.F) {
evm := NewMIPSEVM(contracts, addrs) evm := NewMIPSEVM(contracts, addrs)
evmPost := evm.Step(t, stepWitness) evmPost := evm.Step(t, stepWitness)
uniPost := us.state.EncodeWitness() goPost := goState.state.EncodeWitness()
require.Equal(t, hexutil.Bytes(uniPost).String(), hexutil.Bytes(evmPost).String(), require.Equal(t, hexutil.Bytes(goPost).String(), hexutil.Bytes(evmPost).String(),
"mipsevm produced different state than EVM") "mipsevm produced different state than EVM")
}) })
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment