Lines Matching refs:cfg
54 generator func(cfg *Config, r *rand.Rand) []byte // for pseudo instructions
109 func ModeInsns(cfg *Config) []*Insn {
111 if cfg.Mode < 0 || cfg.Mode >= ModeLast {
115 insns = append(insns, modeInsns[cfg.Mode][typeUser]...)
116 if cfg.Priv {
117 insns = append(insns, modeInsns[cfg.Mode][typePriv]...)
118 if cfg.Exec {
119 insns = append(insns, modeInsns[cfg.Mode][typeExec]...)
125 func Generate(cfg *Config, r *rand.Rand) []byte {
128 for i := 0; i < cfg.Len; i++ {
129 insn := randInsn(cfg, r)
130 text = append(text, insn.Encode(cfg, r)...)
135 func Mutate(cfg *Config, r *rand.Rand, text []byte) []byte {
137 insns := split(cfg, text)
149 insn := randInsn(cfg, r)
150 text1 := insn.Encode(cfg, r)
181 case len(insns) < cfg.Len:
183 insn := randInsn(cfg, r)
184 text1 := insn.Encode(cfg, r)
200 func randInsn(cfg *Config, r *rand.Rand) *Insn {
202 if cfg.Priv && cfg.Exec {
203 insns = modeInsns[cfg.Mode][r.Intn(3)]
204 } else if cfg.Priv {
205 insns = modeInsns[cfg.Mode][r.Intn(2)]
207 insns = modeInsns[cfg.Mode][typeUser]
212 func split(cfg *Config, text []byte) [][]byte {
217 n, err := Decode(cfg.Mode, text)
236 func generateArg(cfg *Config, r *rand.Rand, size int) []byte {
237 v := generateInt(cfg, r, size)
246 func (insn *Insn) isCompatible(cfg *Config) bool {
247 if cfg.Mode < 0 || cfg.Mode >= ModeLast {
250 if insn.Priv && !cfg.Priv {
253 if insn.Pseudo && !cfg.Exec {
256 if insn.Mode&(1<<uint(cfg.Mode)) == 0 {
262 func generateInt(cfg *Config, r *rand.Rand, size int) uint64 {
281 case x < 50 && len(cfg.MemRegions) != 0:
282 mem := cfg.MemRegions[r.Intn(len(cfg.MemRegions))]