[msan] Fix -fsanitize=memory -fno-integrated-as.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208211 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evgeniy Stepanov 2014-05-07 14:10:51 +00:00
parent 04a359f768
commit 8a387a7aee
2 changed files with 22 additions and 1 deletions

View File

@ -410,7 +410,7 @@ void MemorySanitizer::initializeCallbacks(Module &M) {
ClWrapIndirectCalls, AnyFunctionPtrTy, AnyFunctionPtrTy, NULL); ClWrapIndirectCalls, AnyFunctionPtrTy, AnyFunctionPtrTy, NULL);
} }
if (ClWrapIndirectCallsFast) { if (WrapIndirectCalls && ClWrapIndirectCallsFast) {
MsandrModuleStart = new GlobalVariable( MsandrModuleStart = new GlobalVariable(
M, IRB.getInt32Ty(), false, GlobalValue::ExternalLinkage, M, IRB.getInt32Ty(), false, GlobalValue::ExternalLinkage,
nullptr, "__executable_start"); nullptr, "__executable_start");

View File

@ -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