Commit 4bbf9182 authored by clabby's avatar clabby

Add all sources in the `mipsevm` source map tracer

parent bf6a9ceb
......@@ -19,6 +19,7 @@ import (
"github.com/ethereum/go-ethereum/eth/tracers/logger"
"github.com/stretchr/testify/require"
"github.com/ethereum-optimism/optimism/op-bindings/bindings"
"github.com/ethereum-optimism/optimism/op-chain-ops/srcmap"
)
......@@ -37,9 +38,18 @@ func testContractsSetup(t require.TestingT) (*Contracts, *Addresses) {
}
func SourceMapTracer(t *testing.T, contracts *Contracts, addrs *Addresses) vm.EVMLogger {
mipsSrcMap, err := contracts.MIPS.SourceMap([]string{"../../packages/contracts-bedrock/contracts/cannon/MIPS.sol"})
sources := bindings.Sources
for i, source := range sources {
// Add relative path to contracts directory if the source is not
// already relativized.
if !strings.HasPrefix(source, "..") {
sources[i] = path.Join("../../packages/contracts-bedrock", source)
}
}
mipsSrcMap, err := contracts.MIPS.SourceMap(append([]string{"contracts/cannon/MIPS.sol"}, sources...))
require.NoError(t, err)
oracleSrcMap, err := contracts.Oracle.SourceMap([]string{"../../packages/contracts-bedrock/contracts/cannon/PreimageOracle.sol"})
oracleSrcMap, err := contracts.Oracle.SourceMap(append([]string{"contracts/cannon/PreimageOracle.sol"}, sources...))
require.NoError(t, err)
return srcmap.NewSourceMapTracer(map[common.Address]*srcmap.SourceMap{addrs.MIPS: mipsSrcMap, addrs.Oracle: oracleSrcMap}, os.Stdout)
......
......@@ -84,6 +84,10 @@ func (s *SourceMap) Info(pc uint64) (source string, line uint32, col uint32) {
if instr.F < 0 {
return "generated", 0, 0
}
if instr.F >= int32(len(s.Sources)) {
source = "unknown"
return
}
source = s.Sources[instr.F]
if instr.S < 0 {
return
......
......@@ -32,7 +32,7 @@ func TestSourcemap(t *testing.T) {
for i := 0; i < len(deployedByteCode); i++ {
info := srcMap.FormattedInfo(uint64(i))
if strings.HasPrefix(info, "unexpected") {
if strings.HasPrefix(info, "unknown") {
t.Fatalf("unexpected info: %q", info)
}
}
......
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