]> Cypherpunks repositories - gostls13.git/commitdiff
misc/cgo/testsanitizers: don't run some TSAN tests on GCC < 7
authorIan Lance Taylor <iant@golang.org>
Tue, 7 Jun 2016 04:44:24 +0000 (21:44 -0700)
committerIan Lance Taylor <iant@golang.org>
Wed, 8 Jun 2016 05:08:11 +0000 (05:08 +0000)
Before GCC 7 defined __SANITIZE_THREAD__ when using TSAN,
runtime/cgo/libcgo.h could not determine reliably whether TSAN was in
use when using GCC.

Fixes #15983.

Change-Id: I5581c9f88e1cde1974c280008b2230fe5e971f44
Reviewed-on: https://go-review.googlesource.com/23833
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com>
misc/cgo/testsanitizers/test.bash

index 12ddba5dfaff5f6b5aaece0c183fb73f91e20b54..78747d141a73e6b3cdfa3a512771a6ef0b2c8a0f 100755 (executable)
@@ -135,11 +135,28 @@ if test "$tsan" = "yes"; then
     testtsan tsan3.go
     testtsan tsan4.go
 
-    # This test requires rebuilding os/user with -fsanitize=thread.
-    testtsan tsan5.go "CGO_CFLAGS=-fsanitize=thread CGO_LDFLAGS=-fsanitize=thread" "-installsuffix=tsan"
+    # These tests are only reliable using clang or GCC version 7 or later.
+    # Otherwise runtime/cgo/libcgo.h can't tell whether TSAN is in use.
+    ok=false
+    if ${CC} --version | grep clang >/dev/null 2>&1; then
+       ok=true
+    else
+       ver=$($CC -dumpversion)
+       major=$(echo $ver | sed -e 's/\([0-9]*\).*/\1/')
+       if test "$major" -lt 7; then
+           echo "skipping remaining TSAN tests: GCC version $major (older than 7)"
+       else
+           ok=true
+       fi
+    fi
+
+    if test "$ok" = "true"; then
+       # This test requires rebuilding os/user with -fsanitize=thread.
+       testtsan tsan5.go "CGO_CFLAGS=-fsanitize=thread CGO_LDFLAGS=-fsanitize=thread" "-installsuffix=tsan"
 
-    # This test requires rebuilding runtime/cgo with -fsanitize=thread.
-    testtsan tsan6.go "CGO_CFLAGS=-fsanitize=thread CGO_LDFLAGS=-fsanitize=thread" "-installsuffix=tsan"
+       # This test requires rebuilding runtime/cgo with -fsanitize=thread.
+       testtsan tsan6.go "CGO_CFLAGS=-fsanitize=thread CGO_LDFLAGS=-fsanitize=thread" "-installsuffix=tsan"
+    fi
 fi
 
 exit $status