mirror of https://github.com/golang/go.git
cmd/cgo/internal/testsanitizers: fix msan test failing with clang >= 16
Clang 16 introduced a more aggressive behavior regarding uninitialized
memory in the memory sanitizer.
The new option -fsanitize-memory-param-retval is enabled by default
and makes the test msan8 fail, since it uses an
uninitialized variable on purpose.
Disable this behavior if we are running with clang 16+.
Fixes #64616
Change-Id: If366f978bef984ea73f6ae958f24c8fce99b59fe
GitHub-Last-Rev: 60bd64a8fb
GitHub-Pull-Request: golang/go#64691
Reviewed-on: https://go-review.googlesource.com/c/go/+/549297
Auto-Submit: Bryan Mills <bcmills@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Than McIntosh <thanm@google.com>
This commit is contained in:
parent
a7097243e4
commit
2acbdd086d
|
|
@ -71,7 +71,10 @@ func TestMSAN(t *testing.T) {
|
|||
defer dir.RemoveAll(t)
|
||||
|
||||
outPath := dir.Join(name)
|
||||
mustRun(t, config.goCmdWithExperiments("build", []string{"-o", outPath, srcPath(tc.src)}, tc.experiments))
|
||||
buildcmd := config.goCmdWithExperiments("build", []string{"-o", outPath, srcPath(tc.src)}, tc.experiments)
|
||||
// allow tests to define -f flags in CGO_CFLAGS
|
||||
replaceEnv(buildcmd, "CGO_CFLAGS_ALLOW", "-f.*")
|
||||
mustRun(t, buildcmd)
|
||||
|
||||
cmd := hangProneCmd(outPath)
|
||||
if tc.wantErr {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,13 @@
|
|||
package main
|
||||
|
||||
/*
|
||||
// For clang >= 16, uninitialized memory is more aggressively reported.
|
||||
// Restore the old behavior for this particular test as it relies on
|
||||
// uninitialized variables. See #64616
|
||||
#if __clang_major__ >= 16
|
||||
#cgo CFLAGS: -fno-sanitize-memory-param-retval
|
||||
#endif
|
||||
|
||||
#include <pthread.h>
|
||||
#include <signal.h>
|
||||
#include <stdint.h>
|
||||
|
|
|
|||
Loading…
Reference in New Issue