diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-02-20 10:54:03 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-02-20 10:54:03 +0100 |
| commit | c8e73b95c61fa26c0f6c2d0b96dee38ba1b13958 (patch) | |
| tree | 6383958a3a66477c92ad15a426d82de02b7ccf08 | |
| parent | c1f526e3e53eb3a29ad71b866b67ec0c2bab5e82 (diff) | |
sys/linux: fix mmap call args
Also add a test for this.
| -rw-r--r-- | pkg/ipc/ipc_test.go | 22 | ||||
| -rw-r--r-- | sys/linux/init.go | 2 |
2 files changed, 16 insertions, 8 deletions
diff --git a/pkg/ipc/ipc_test.go b/pkg/ipc/ipc_test.go index b4648f9a7..03de4ebf1 100644 --- a/pkg/ipc/ipc_test.go +++ b/pkg/ipc/ipc_test.go @@ -63,7 +63,7 @@ func initTest(t *testing.T) (*prog.Target, rand.Source, int, EnvFlags) { return target, rs, iters, flags } -func TestEmptyProg(t *testing.T) { +func TestSimpleProg(t *testing.T) { target, _, _, flags0 := initTest(t) bin := buildExecutor(t, target) @@ -79,19 +79,27 @@ func TestEmptyProg(t *testing.T) { t.Fatalf("failed to create env: %v", err) } defer env.Close() - - p := new(prog.Prog) + p := target.GenerateSimpleProg() opts := &ExecOpts{} - output, _, failed, hanged, err := env.Exec(opts, p) + output, info, failed, hanged, err := env.Exec(opts, p) if err != nil { t.Fatalf("failed to run executor: %v", err) } + if hanged { + t.Fatalf("program hanged:\n%s", output) + } + if failed { + t.Fatalf("program failed:\n%s", output) + } + if len(info) == 0 { + t.Fatalf("no calls executed:\n%s", output) + } + if info[0].Errno != 0 { + t.Fatalf("simple call failed: %v\n%s", info[0].Errno, output) + } if len(output) != 0 { t.Fatalf("output on empty program") } - if failed || hanged { - t.Fatalf("empty program failed") - } } func TestExecute(t *testing.T) { diff --git a/sys/linux/init.go b/sys/linux/init.go index a411ed97b..aee900fcc 100644 --- a/sys/linux/init.go +++ b/sys/linux/init.go @@ -109,7 +109,7 @@ func (arch *arch) makeMmap(addr, size uint64) *prog.Call { Meta: meta, Args: []prog.Arg{ prog.MakeVmaPointerArg(meta.Args[0], addr, size), - prog.MakeConstArg(meta.Args[1], addr), + prog.MakeConstArg(meta.Args[1], size), prog.MakeConstArg(meta.Args[2], arch.PROT_READ|arch.PROT_WRITE), prog.MakeConstArg(meta.Args[3], arch.MAP_ANONYMOUS|arch.MAP_PRIVATE|arch.MAP_FIXED), prog.MakeResultArg(meta.Args[4], nil, invalidFD), |
