From: Evgeniy Stepanov Date: Wed, 7 May 2014 14:10:51 +0000 (+0000) Subject: [msan] Fix -fsanitize=memory -fno-integrated-as. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=8a387a7aee52221463ec0ee7a8419c6da3d15e3a;p=oota-llvm.git [msan] Fix -fsanitize=memory -fno-integrated-as. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208211 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Instrumentation/MemorySanitizer.cpp b/lib/Transforms/Instrumentation/MemorySanitizer.cpp index d8e65102b56..b8e632ead10 100644 --- a/lib/Transforms/Instrumentation/MemorySanitizer.cpp +++ b/lib/Transforms/Instrumentation/MemorySanitizer.cpp @@ -410,7 +410,7 @@ void MemorySanitizer::initializeCallbacks(Module &M) { ClWrapIndirectCalls, AnyFunctionPtrTy, AnyFunctionPtrTy, NULL); } - if (ClWrapIndirectCallsFast) { + if (WrapIndirectCalls && ClWrapIndirectCallsFast) { MsandrModuleStart = new GlobalVariable( M, IRB.getInt32Ty(), false, GlobalValue::ExternalLinkage, nullptr, "__executable_start"); diff --git a/test/Instrumentation/MemorySanitizer/do-not-emit-module-limits.ll b/test/Instrumentation/MemorySanitizer/do-not-emit-module-limits.ll new file mode 100644 index 00000000000..7d0a62a256c --- /dev/null +++ b/test/Instrumentation/MemorySanitizer/do-not-emit-module-limits.ll @@ -0,0 +1,21 @@ +; Test that MSan does not emit undefined symbol __executable_start when it is +; not needed (i.e. without -msan-wrap-indirect-calls). + +; RUN: opt < %s -msan -S | FileCheck %s + +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +; Function Attrs: nounwind uwtable +define void @_Z1fv() #0 { +entry: + ret void +} + +attributes #0 = { nounwind uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } + +!llvm.ident = !{!0} + +!0 = metadata !{metadata !"clang version 3.5.0 (208165)"} + +; CHECK-NOT: __executable_start