From 7e076b78b466a2f4ad0ce9c20161758d9ad52087 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Wed, 22 Nov 2017 11:08:20 +0100 Subject: prog: export MakeData/UnionArg as we do for other arg types Target code can use these to generate special structs. --- prog/encoding.go | 4 ++-- prog/hints.go | 2 +- prog/mutation.go | 2 +- prog/prog.go | 8 ++++---- prog/rand.go | 10 +++++----- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/prog/encoding.go b/prog/encoding.go index c140b89d6..936e896a1 100644 --- a/prog/encoding.go +++ b/prog/encoding.go @@ -287,7 +287,7 @@ func (target *Target) parseArg(typ Type, p *parser, vars map[string]Arg) (Arg, e if err != nil { return nil, fmt.Errorf("data arg has bad value '%v'", val) } - arg = dataArg(typ, data) + arg = MakeDataArg(typ, data) case '{': t1, ok := typ.(*StructType) if !ok { @@ -359,7 +359,7 @@ func (target *Target) parseArg(typ Type, p *parser, vars map[string]Arg) (Arg, e if err != nil { return nil, err } - arg = unionArg(typ, opt, optType) + arg = MakeUnionArg(typ, opt, optType) case 'n': p.Parse('n') p.Parse('i') diff --git a/prog/hints.go b/prog/hints.go index 87b92229d..a4eb7ba36 100644 --- a/prog/hints.go +++ b/prog/hints.go @@ -104,7 +104,7 @@ func generateHints(p *Prog, compMap CompMap, c *Call, arg Arg, exec func(p *Prog originalArg = MakeConstArg(a.Type(), a.Val) checkConstArg(a, compMap, constArgCandidate) case *DataArg: - originalArg = dataArg(a.Type(), a.Data) + originalArg = MakeDataArg(a.Type(), a.Data) checkDataArg(a, compMap, dataArgCandidate) } } diff --git a/prog/mutation.go b/prog/mutation.go index ca5cb8874..920888c2b 100644 --- a/prog/mutation.go +++ b/prog/mutation.go @@ -197,7 +197,7 @@ func (p *Prog) Mutate(rs rand.Source, ncalls int, ct *ChoiceTable, corpus []*Pro } p.removeArg(c, a.Option) opt, calls := r.generateArg(s, optType) - arg1 := unionArg(t, opt, optType) + arg1 := MakeUnionArg(t, opt, optType) p.replaceArg(c, arg, arg1, calls) case *LenType: panic("bad arg returned by mutationArgs: LenType") diff --git a/prog/prog.go b/prog/prog.go index 744947895..f8335b240 100644 --- a/prog/prog.go +++ b/prog/prog.go @@ -244,7 +244,7 @@ func MakeResultArg(t Type, r Arg, v uint64) Arg { return arg } -func dataArg(t Type, data []byte) Arg { +func MakeDataArg(t Type, data []byte) Arg { return &DataArg{ArgCommon: ArgCommon{typ: t}, Data: append([]byte{}, data...)} } @@ -256,7 +256,7 @@ func MakeGroupArg(t Type, inner []Arg) Arg { return &GroupArg{ArgCommon: ArgCommon{typ: t}, Inner: inner} } -func unionArg(t Type, opt Arg, typ Type) Arg { +func MakeUnionArg(t Type, opt Arg, typ Type) Arg { return &UnionArg{ArgCommon: ArgCommon{typ: t}, Option: opt, OptionType: typ} } @@ -275,7 +275,7 @@ func defaultArg(t Type) Arg { if typ.Kind == BufferString && typ.TypeSize != 0 { data = make([]byte, typ.TypeSize) } - return dataArg(t, data) + return MakeDataArg(t, data) case *ArrayType: return MakeGroupArg(t, nil) case *StructType: @@ -285,7 +285,7 @@ func defaultArg(t Type) Arg { } return MakeGroupArg(t, inner) case *UnionType: - return unionArg(t, defaultArg(typ.Fields[0]), typ.Fields[0]) + return MakeUnionArg(t, defaultArg(typ.Fields[0]), typ.Fields[0]) case *VmaType: return MakePointerArg(t, 0, 0, 1, nil) case *PtrType: diff --git a/prog/rand.go b/prog/rand.go index aaab54610..2b7709907 100644 --- a/prog/rand.go +++ b/prog/rand.go @@ -590,10 +590,10 @@ func (r *randGen) generateArg(s *state, typ Type) (arg Arg, calls []*Call) { data[i] = byte(r.Intn(256)) } } - return dataArg(a, data), nil + return MakeDataArg(a, data), nil case BufferString: data := r.randString(s, a.Values, a.Dir()) - return dataArg(a, data), nil + return MakeDataArg(a, data), nil case BufferFilename: var data []byte if a.Dir() == DirOut { @@ -608,9 +608,9 @@ func (r *randGen) generateArg(s *state, typ Type) (arg Arg, calls []*Call) { } else { data = []byte(r.filename(s)) } - return dataArg(a, data), nil + return MakeDataArg(a, data), nil case BufferText: - return dataArg(a, r.generateText(a.Text)), nil + return MakeDataArg(a, r.generateText(a.Text)), nil default: panic("unknown buffer kind") } @@ -670,7 +670,7 @@ func (r *randGen) generateArg(s *state, typ Type) (arg Arg, calls []*Call) { case *UnionType: optType := a.Fields[r.Intn(len(a.Fields))] opt, calls := r.generateArg(s, optType) - return unionArg(a, opt, optType), calls + return MakeUnionArg(a, opt, optType), calls case *PtrType: inner, calls := r.generateArg(s, a.Type) if a.Type.Name() == "iocb" && len(s.resources["iocbptr"]) != 0 { -- cgit mrf-deployment