aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-11-22 11:08:20 +0100
committerDmitry Vyukov <dvyukov@google.com>2017-11-22 11:46:26 +0100
commit7e076b78b466a2f4ad0ce9c20161758d9ad52087 (patch)
tree4950df62d188f56c05915fdeca634d314ca21556
parente06afd32595ba7831f6ae600fde04a4e66e37db7 (diff)
prog: export MakeData/UnionArg as we do for other arg types
Target code can use these to generate special structs.
-rw-r--r--prog/encoding.go4
-rw-r--r--prog/hints.go2
-rw-r--r--prog/mutation.go2
-rw-r--r--prog/prog.go8
-rw-r--r--prog/rand.go10
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 {