Commit b263153e authored by George Hotz's avatar George Hotz

oracle fixup

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