diff options
Diffstat (limited to 'pkg/ifuzz/ifuzzimpl')
| -rw-r--r-- | pkg/ifuzz/ifuzzimpl/ifuzzimpl.go | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/pkg/ifuzz/ifuzzimpl/ifuzzimpl.go b/pkg/ifuzz/ifuzzimpl/ifuzzimpl.go deleted file mode 100644 index 32f285250..000000000 --- a/pkg/ifuzz/ifuzzimpl/ifuzzimpl.go +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2017 syzkaller project authors. All rights reserved. -// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. - -package ifuzzimpl - -import ( - "math/rand" -) - -const ( - ArchX86 = "x86" - ArchPowerPC = "powerpc" -) - -var Arches = make(map[string]InsnSet) - -type ( - Mode int - Type int -) - -type Insn interface { - Info() (name string, mode Mode, pseudo, priv bool) - Encode(cfg *Config, r *rand.Rand) []byte -} - -type InsnSet interface { - GetInsns(mode Mode, typ Type) []Insn - Decode(mode Mode, text []byte) (int, error) - DecodeExt(mode Mode, text []byte) (int, error) // XED, to keep ifuzz_test happy -} - -type Config struct { - Arch string - Len int // number of instructions to generate - Mode Mode // one of ModeXXX - Priv bool // generate CPL=0 instructions (x86), HV/!PR mode (PPC) - Exec bool // generate instructions sequences interesting for execution - MemRegions []MemRegion // generated instructions will reference these regions -} - -type MemRegion struct { - Start uint64 - Size uint64 -} - -const ( - ModeLong64 Mode = iota - ModeProt32 - ModeProt16 - ModeReal16 - ModeLast -) - -const ( - TypeExec Type = iota - TypePriv - TypeUser - TypeAll - TypeLast -) - -var SpecialNumbers = [...]uint64{0, 1 << 15, 1 << 16, 1 << 31, 1 << 32, 1 << 47, 1 << 47, 1 << 63} - -type ModeInsns [ModeLast][TypeLast][]Insn - -func (modeInsns *ModeInsns) Add(insn Insn) { - _, mode, pseudo, priv := insn.Info() - for m := Mode(0); m < ModeLast; m++ { - if mode&(1<<uint(m)) == 0 { - continue - } - set := &modeInsns[m] - if pseudo { - set[TypeExec] = append(set[TypeExec], insn) - } else if priv { - set[TypePriv] = append(set[TypePriv], insn) - set[TypeAll] = append(set[TypeAll], insn) - } else { - set[TypeUser] = append(set[TypeUser], insn) - set[TypeAll] = append(set[TypeAll], insn) - } - } -} - -func (cfg *Config) IsCompatible(insn Insn) bool { - _, mode, pseudo, priv := insn.Info() - if cfg.Mode < 0 || cfg.Mode >= ModeLast { - panic("bad mode") - } - if priv && !cfg.Priv { - return false - } - if pseudo && !cfg.Exec { - return false - } - if mode&(1<<uint(cfg.Mode)) == 0 { - return false - } - return true -} |
