From 2b854f96b1a7be5c5c563fe798aaa2f6835ad2c6 Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Mon, 23 Sep 2019 15:34:59 +0200 Subject: tools: add syz-expand The syz-expand tools allows to parse a program and print it including all the default values. This is mainly useful for debugging, like doing manual program modifications while trying to come up with a reproducer for some particular kernel behavior. --- prog/prog_test.go | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) (limited to 'prog/prog_test.go') diff --git a/prog/prog_test.go b/prog/prog_test.go index 1605f7991..a07657308 100644 --- a/prog/prog_test.go +++ b/prog/prog_test.go @@ -46,19 +46,31 @@ func TestDefaultCallArgs(t *testing.T) { } } -func TestSerialize(t *testing.T) { +func testSerialize(t *testing.T, verbose bool) { target, rs, iters := initTest(t) for i := 0; i < iters; i++ { p := target.Generate(rs, 10, nil) - data := p.Serialize() - p1, err := target.Deserialize(data, NonStrict) + var data []byte + mode := NonStrict + if verbose { + data = p.SerializeVerbose() + mode = Strict + } else { + data = p.Serialize() + } + p1, err := target.Deserialize(data, mode) if err != nil { t.Fatalf("failed to deserialize program: %v\n%s", err, data) } if p1 == nil { t.Fatalf("deserialized nil program:\n%s", data) } - data1 := p1.Serialize() + var data1 []byte + if verbose { + data1 = p1.SerializeVerbose() + } else { + data1 = p1.Serialize() + } if len(p.Calls) != len(p1.Calls) { t.Fatalf("different number of calls") } @@ -68,6 +80,14 @@ func TestSerialize(t *testing.T) { } } +func TestSerialize(t *testing.T) { + testSerialize(t, false) +} + +func TestSerializeVerbose(t *testing.T) { + testSerialize(t, true) +} + func TestVmaType(t *testing.T) { target, rs, iters := initRandomTargetTest(t, "test", "64") meta := target.SyscallMap["test$vma0"] -- cgit mrf-deployment