diff options
Diffstat (limited to 'pkg/ifuzz/x86/encode.go')
| -rw-r--r-- | pkg/ifuzz/x86/encode.go | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/pkg/ifuzz/x86/encode.go b/pkg/ifuzz/x86/encode.go index b73a22c14..9258bc41c 100644 --- a/pkg/ifuzz/x86/encode.go +++ b/pkg/ifuzz/x86/encode.go @@ -8,12 +8,13 @@ package x86 import ( - "github.com/google/syzkaller/pkg/ifuzz" "math/rand" + + "github.com/google/syzkaller/pkg/ifuzz/ifuzzimpl" ) // nolint: gocyclo, nestif, gocognit, funlen -func (insn *Insn) Encode(cfg *ifuzz.Config, r *rand.Rand) []byte { +func (insn *Insn) Encode(cfg *ifuzzimpl.Config, r *rand.Rand) []byte { if !insn.IsCompatible(cfg) { panic("instruction is not suitable for this mode") } @@ -23,11 +24,11 @@ func (insn *Insn) Encode(cfg *ifuzz.Config, r *rand.Rand) []byte { var operSize, immSize, dispSize, addrSize int switch cfg.Mode { - case ifuzz.ModeLong64: + case ifuzzimpl.ModeLong64: operSize, immSize, dispSize, addrSize = 4, 4, 4, 8 - case ifuzz.ModeProt32: + case ifuzzimpl.ModeProt32: operSize, immSize, dispSize, addrSize = 4, 4, 4, 4 - case ifuzz.ModeProt16, ifuzz.ModeReal16: + case ifuzzimpl.ModeProt16, ifuzzimpl.ModeReal16: operSize, immSize, dispSize, addrSize = 2, 2, 2, 2 default: panic("bad mode") @@ -53,7 +54,7 @@ func (insn *Insn) Encode(cfg *ifuzz.Config, r *rand.Rand) []byte { if !insn.No66Prefix { prefixes = append(prefixes, 0x66) // operand size } - if cfg.Mode == ifuzz.ModeLong64 || !insn.Mem32 { + if cfg.Mode == ifuzzimpl.ModeLong64 || !insn.Mem32 { prefixes = append(prefixes, 0x67) // address size } if !insn.NoRepPrefix { @@ -70,7 +71,7 @@ func (insn *Insn) Encode(cfg *ifuzz.Config, r *rand.Rand) []byte { // REX var rex byte - if cfg.Mode == ifuzz.ModeLong64 && r.Intn(2) == 0 { + if cfg.Mode == ifuzzimpl.ModeLong64 && r.Intn(2) == 0 { // bit 0 - B // bit 1 - X // bit 2 - R @@ -118,7 +119,7 @@ func (insn *Insn) Encode(cfg *ifuzz.Config, r *rand.Rand) []byte { code = append(code, insn.Vex) vexR = byte(1) vexX = byte(1) - if cfg.Mode == ifuzz.ModeLong64 { + if cfg.Mode == ifuzzimpl.ModeLong64 { vexR = byte(r.Intn(2)) vexX = byte(r.Intn(2)) } @@ -146,7 +147,7 @@ func (insn *Insn) Encode(cfg *ifuzz.Config, r *rand.Rand) []byte { code = append(code, vexR<<7|vexX<<6|vexB<<5|insn.VexMap) code = append(code, W<<7|vvvv<<3|L<<2|pp) // TODO: short encoding - if cfg.Mode != ifuzz.ModeLong64 { + if cfg.Mode != ifuzzimpl.ModeLong64 { vvvv |= 8 } } |
