PR c++/86342 - -Wdeprecated-copy and system headers.
[official-gcc.git] / libgo / misc / cgo / testsanitizers / msan_test.go
blobaf5afa9ee48932779b41f4dc1c8a0d1e56a81743
1 // Copyright 2017 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
5 package sanitizers_test
7 import (
8 "strings"
9 "testing"
12 func TestMSAN(t *testing.T) {
13 t.Parallel()
14 requireOvercommit(t)
15 config := configure("memory")
16 config.skipIfCSanitizerBroken(t)
18 mustRun(t, config.goCmd("build", "std"))
20 cases := []struct {
21 src string
22 wantErr bool
24 {src: "msan.go"},
25 {src: "msan2.go"},
26 {src: "msan2_cmsan.go"},
27 {src: "msan3.go"},
28 {src: "msan4.go"},
29 {src: "msan5.go"},
30 {src: "msan_fail.go", wantErr: true},
32 for _, tc := range cases {
33 tc := tc
34 name := strings.TrimSuffix(tc.src, ".go")
35 t.Run(name, func(t *testing.T) {
36 t.Parallel()
38 dir := newTempDir(t)
39 defer dir.RemoveAll(t)
41 outPath := dir.Join(name)
42 mustRun(t, config.goCmd("build", "-o", outPath, srcPath(tc.src)))
44 cmd := hangProneCmd(outPath)
45 if tc.wantErr {
46 out, err := cmd.CombinedOutput()
47 if err != nil {
48 return
50 t.Fatalf("%#q exited without error; want MSAN failure\n%s", strings.Join(cmd.Args, " "), out)
52 mustRun(t, cmd)