From edc91428a23f24943a52c0e6cd921fd18e4677df Mon Sep 17 00:00:00 2001 From: Evgeniy Stepanov Date: Thu, 20 Jun 2013 10:49:46 +0000 Subject: [PATCH] Add -fno-assume-sane-operator-new when building with MSan. A workaroudn for PR16386. MSan's operator new aften has side-effects that are miscompiled without this flag. llvm-svn: 184410 --- clang/lib/Driver/SanitizerArgs.h | 8 ++++++-- clang/test/Driver/fsanitize.c | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/clang/lib/Driver/SanitizerArgs.h b/clang/lib/Driver/SanitizerArgs.h index 2ca93bff35f5..da6f4f6a9fb9 100644 --- a/clang/lib/Driver/SanitizerArgs.h +++ b/clang/lib/Driver/SanitizerArgs.h @@ -94,8 +94,12 @@ class SanitizerArgs { CmdArgs.push_back(Args.MakeArgString("-fsanitize-memory-track-origins")); if (AsanZeroBaseShadow) - CmdArgs.push_back(Args.MakeArgString( - "-fsanitize-address-zero-base-shadow")); + CmdArgs.push_back( + Args.MakeArgString("-fsanitize-address-zero-base-shadow")); + + // Workaround for PR16386. + if (needsMsanRt()) + CmdArgs.push_back(Args.MakeArgString("-fno-assume-sane-operator-new")); } private: diff --git a/clang/test/Driver/fsanitize.c b/clang/test/Driver/fsanitize.c index 4899a2e75be5..07e7f1e0f1d5 100644 --- a/clang/test/Driver/fsanitize.c +++ b/clang/test/Driver/fsanitize.c @@ -139,3 +139,6 @@ // RUN: %clang -target x86_64-linux-gnu -fsanitize=address,leak -fno-sanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SANA-SANL-NO-SANA // CHECK-SANA-SANL-NO-SANA: "-fsanitize=leak" + +// RUN: %clang -target x86_64-linux-gnu -fsanitize=memory %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-MSAN +// CHECK-MSAN: "-fno-assume-sane-operator-new"