Versions in this module Expand all Collapse all v0 v0.1.0 Sep 9, 2022 Changes in this version + const AluAdd + const AluAnd + const AluDiv + const AluDivU + const AluMul + const AluMulH + const AluMulHSU + const AluMulHU + const AluOr + const AluRem + const AluRemU + const AluSll + const AluSlt + const AluSltu + const AluSra + const AluSrl + const AluSub + const AluXor + const ExitFail + const ExitMem + const ExitNone + const ExitNormal + const ExitQuiet + const ExitUnsat + const ExtByte + const ExtByteU + const ExtHalf + const ExtHalfU + const ExtWord + const InsnEbreak + const InsnEcall + const InsnNop + const OpAtomic + const OpAuipc + const OpBranch + const OpFence + const OpIarith + const OpJal + const OpJalr + const OpLoad + const OpLui + const OpRarith + const OpStore + const OpSys + const Ra0 + const Ra1 + const Ra2 + const Ra3 + const Ra4 + const Ra5 + const Ra6 + const Ra7 + const Rgp + const Rra + const Rs0 + const Rs1 + const Rs10 + const Rs11 + const Rs2 + const Rs3 + const Rs4 + const Rs5 + const Rs6 + const Rs7 + const Rs8 + const Rs9 + const Rsp + const Rt0 + const Rt1 + const Rt2 + const Rt3 + const Rt4 + const Rt5 + const Rt6 + const Rtp + const Rzero + var RegNames = map[int]string + func SetLogger(l *log.Logger) + type AluOp int + type Assignment struct + Name string + Val int32 + type Branch struct + type Checkpoint struct + type EcallFn func(*Machine, *smt.Solver) + type ElfLoader struct + func (l *ElfLoader) Load(data []byte) ([]Segment, uint32, error) + type EmuMode byte + const EmuBareMetal + const EmuLinux + const EmuUnderConstrained + type Engine struct + Stats Stats + func NewEngine(segs []Segment, entry uint32, mode EmuMode) *Engine + func (e *Engine) NumTestCases() int + func (e *Engine) Step() bool + func (e *Engine) Summary() string + func (e *Engine) TestCases() []TestCase + type ExitStatus byte + func (e ExitStatus) String() string + type FdTable struct + func NewFdTable() FdTable + func (t FdTable) Copy() FdTable + type IHexLoader struct + Entry uint32 + func (l *IHexLoader) Load(data []byte) ([]Segment, uint32, error) + type ImmType int + const ImmTypeB + const ImmTypeI + const ImmTypeJ + const ImmTypeS + const ImmTypeU + type Loader interface + Load func(data []byte) (segs []Segment, entry uint32, err error) + type Machine struct + Status Status + func NewMachine(pc int32, mem *Memory) *Machine + func Restore(cp *Checkpoint, s *smt.Solver) *Machine + func (m *Machine) AddCond(cond smt.Bool, checksat bool, s *smt.Solver) + func (m *Machine) Checkpoint(cond smt.Bool) *Checkpoint + func (m *Machine) Exec(s *smt.Solver) (isz int32) + func (m *Machine) Reg(reg uint32) smt.Int32 + func (m *Machine) RegConc(reg uint32) (int32, bool) + func (m *Machine) RegConcretize(reg uint32, s *smt.Solver) (int32, bool) + func (m *Machine) SymExit(s *smt.Solver) + func (m *Machine) SymFail(s *smt.Solver) + func (m *Machine) SymMarkArray(s *smt.Solver) + func (m *Machine) SymMarkBytes(s *smt.Solver) + func (m *Machine) SymPrint(s *smt.Solver) + func (m *Machine) SymQuietExit(s *smt.Solver) + func (m *Machine) SysBrk(s *smt.Solver) + func (m *Machine) SysClose(s *smt.Solver) + func (m *Machine) SysExit(s *smt.Solver) + func (m *Machine) SysFstat(s *smt.Solver) + func (m *Machine) SysLseek(s *smt.Solver) + func (m *Machine) SysOpen(s *smt.Solver) + func (m *Machine) SysRead(s *smt.Solver) + func (m *Machine) SysWrite(s *smt.Solver) + func (m *Machine) TestCase(s *smt.Solver) (TestCase, bool) + func (m *Machine) WriteReg(reg uint32, val smt.Int32) + type Memory struct + func NewMemory() *Memory + func (m *Memory) Copy() *Memory + func (m *Memory) MakeSymAddrRegion(base, length uint32, s *smt.Solver) + func (m *Memory) Read16(addr smt.Int32, s *smt.Solver) (smt.Int32, bool) + func (m *Memory) Read16u(addr smt.Int32, s *smt.Solver) (smt.Int32, bool) + func (m *Memory) Read8(addr smt.Int32, s *smt.Solver) (smt.Int32, bool) + func (m *Memory) Read8u(addr smt.Int32, s *smt.Solver) (smt.Int32, bool) + func (m *Memory) ReadBytes(addr uint32, data []byte, s *smt.Solver) bool + func (m *Memory) ReadWord(addr smt.Int32, s *smt.Solver) (smt.Int32, bool) + func (m *Memory) Write16(addr, val smt.Int32, s *smt.Solver) bool + func (m *Memory) Write8(addr, val smt.Int32, s *smt.Solver) bool + func (m *Memory) WriteBytes(addr uint32, data []byte, s *smt.Solver) bool + func (m *Memory) WriteWord(addr, val smt.Int32, s *smt.Solver) bool + type RawLoader struct + Entry uint32 + func (l *RawLoader) Load(data []byte) ([]Segment, uint32, error) + type Segment struct + type Stats struct + Exits map[ExitStatus]int + Forks int + Steps int + type Status struct + Br Branch + Err error + Exit ExitStatus + HasBr bool + type SymVal struct + type SysState struct + func NewSysState(brk uint32) *SysState + func (s *SysState) Copy() *SysState + type TestCase struct + Assignments []Assignment + Err error + Exit ExitStatus + Pc int32 + func (tc TestCase) String() string + func (tc TestCase) StringHex(hex bool) string