Commit b263153e authored by George Hotz's avatar George Hotz

oracle fixup

parent e499ee78
......@@ -24,7 +24,7 @@ func TestCompare(t *testing.T) {
//fn := "test/bin/sc.bin"
fn := "../mipigeth/minigeth.bin"
steps := 10000000
steps := 1000000000
//steps := 1165
//steps := 1180
//steps := 24
......
......@@ -11,8 +11,7 @@ import (
"time"
)
func LoadMappedFile(fn string, ram map[uint32](uint32), base uint32) {
dat, _ := ioutil.ReadFile(fn)
func LoadData(dat []byte, ram map[uint32](uint32), base uint32) {
for i := 0; i < len(dat); i += 4 {
value := binary.BigEndian.Uint32(dat[i : i+4])
if value != 0 {
......@@ -21,6 +20,11 @@ func LoadMappedFile(fn string, ram map[uint32](uint32), base uint32) {
}
}
func LoadMappedFile(fn string, ram map[uint32](uint32), base uint32) {
dat, _ := ioutil.ReadFile(fn)
LoadData(dat, ram, base)
}
func RunMinigeth(fn string, steps int, debug int) {
ram := make(map[uint32](uint32))
LoadMappedFile(fn, ram, 0)
......
......@@ -93,11 +93,10 @@ func (s *StateDB) GetState(fakeaddr common.Address, hash common.Hash) common.Has
hash := common.BytesToHash(oracle_hash)
key := fmt.Sprintf("/tmp/eth/%s", hash)
value, _ := ioutil.ReadFile(key)
ram[0x31000000] = uint32(len(value))
WriteRam(ram, 0x31000000, uint32(len(value)))
value = append(value, 0, 0, 0)
for i := uint32(0); i < ram[0x31000000]; i += 4 {
ram[0x31000004+i] = binary.BigEndian.Uint32(value[i : i+4])
WriteRam(ram, 0x31000004+i, binary.BigEndian.Uint32(value[i:i+4]))
}
} else if syscall == 4004 {
len := ram[0xc0000018]
......
......@@ -80,10 +80,17 @@ func RunUnicorn(fn string, ram map[uint32](uint32), totalSteps int, callback fun
hash := common.BytesToHash(oracle_hash)
key := fmt.Sprintf("/tmp/eth/%s", hash)
value, _ := ioutil.ReadFile(key)
tmp := []byte{0, 0, 0, 0}
binary.BigEndian.PutUint32(tmp, uint32(len(value)))
mu.MemWrite(0x31000000, tmp)
mu.MemWrite(0x31000004, value)
WriteRam(ram, 0x31000000, uint32(len(value)))
value = append(value, 0, 0, 0)
for i := uint32(0); i < ram[0x31000000]; i += 4 {
WriteRam(ram, 0x31000004+i, binary.BigEndian.Uint32(value[i:i+4]))
}
} else if syscall_no == 4004 {
fd, _ := mu.RegRead(uc.MIPS_REG_A0)
buf, _ := mu.RegRead(uc.MIPS_REG_A1)
......
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